==> Building on mamoswine ==> Checking for remote environment... ==> Syncing package to remote host... sending incremental file list created directory packages/curl ./ .SRCINFO 1,836 100% 0.00kB/s 0:00:00 1,836 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=10/12) .nvchecker.toml 183 100% 178.71kB/s 0:00:00 183 100% 178.71kB/s 0:00:00 (xfr#2, to-chk=9/12) LICENSE 646 100% 630.86kB/s 0:00:00 646 100% 630.86kB/s 0:00:00 (xfr#3, to-chk=8/12) PKGBUILD 5,466 100% 5.21MB/s 0:00:00 5,466 100% 5.21MB/s 0:00:00 (xfr#4, to-chk=7/12) REUSE.toml 375 100% 366.21kB/s 0:00:00 375 100% 366.21kB/s 0:00:00 (xfr#5, to-chk=6/12) curl-8.17.0-1.log 845 100% 825.20kB/s 0:00:00 845 100% 825.20kB/s 0:00:00 (xfr#6, to-chk=5/12) LICENSES/ LICENSES/0BSD.txt -> ../LICENSE keys/ keys/pgp/ keys/pgp/27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2.asc 1,680 100% 1.60MB/s 0:00:00 1,680 100% 1.60MB/s 0:00:00 (xfr#7, to-chk=0/12) sent 5,647 bytes received 211 bytes 3,905.33 bytes/sec total size is 10,392 speedup is 1.77 ==> Ensuring required PGP keys are present...  -> Checking for 27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2... ==> Patching arch to riscv64... ==> Running pkgctl build --arch riscv64 --repo extra on remote host... ==> WARNING: unsupported architecture: riscv64 ==> Building curl  -> repo: extra  -> arch: riscv64  -> worker: felix-2 ==> Building curl for [extra] (riscv64) ]3008;start=93cf186096c4446aa515805d7d7ee988;user=root;hostname=mamoswine.felixc.at;machineid=308e4189ffa7440480c13f5748093936;bootid=005b36fe8b2947fd8e8f16ad3242897e;pid=3963035;pidfdid=3963335;comm=systemd-nspawn;container=arch-nspawn-3963035;type=container\]2;🔵 Container arch-nspawn-3963035 on mamoswine.felixc.at\:: Synchronizing package databases... core downloading... extra downloading... error: restricting filesystem access failed because landlock is not supported by the kernel! :: Starting full system upgrade... there is nothing to do ]3008;end=93cf186096c4446aa515805d7d7ee988\==> Building in chroot for [extra] (riscv64)... ==> Synchronizing chroot copy [/var/lib/archbuild/extra-riscv64/root] -> [felix-2]...done ==> Making package: curl 8.17.0-1 (Sat Nov 8 22:58:38 2025) ==> Retrieving sources...  -> Cloning curl git repo... Cloning into bare repository '/home/felix/packages/curl/curl'... remote: Enumerating objects: 421888 remote: Enumerating objects: 424155, done. remote: Counting objects: 0% (1/2267) remote: Counting objects: 1% (23/2267) remote: Counting objects: 2% (46/2267) remote: Counting objects: 3% (69/2267) remote: Counting objects: 4% (91/2267) remote: Counting objects: 5% (114/2267) remote: Counting objects: 6% (137/2267) remote: Counting objects: 7% (159/2267) remote: Counting objects: 8% (182/2267) remote: Counting objects: 9% (205/2267) remote: Counting objects: 10% (227/2267) remote: Counting objects: 11% (250/2267) remote: Counting objects: 12% (273/2267) remote: Counting objects: 13% (295/2267) remote: Counting objects: 14% (318/2267) remote: Counting objects: 15% (341/2267) remote: Counting objects: 16% (363/2267) remote: Counting objects: 17% (386/2267) remote: Counting objects: 18% (409/2267) remote: Counting objects: 19% (431/2267) remote: Counting objects: 20% (454/2267) remote: Counting objects: 21% (477/2267) remote: Counting objects: 22% (499/2267) remote: Counting objects: 23% (522/2267) remote: Counting objects: 24% (545/2267) remote: Counting objects: 25% (567/2267) remote: Counting objects: 26% (590/2267) remote: Counting objects: 27% (613/2267) remote: Counting objects: 28% (635/2267) remote: Counting objects: 29% (658/2267) remote: Counting objects: 30% (681/2267) remote: Counting objects: 31% (703/2267) remote: Counting objects: 32% (726/2267) remote: Counting objects: 33% (749/2267) remote: Counting objects: 34% (771/2267) remote: Counting objects: 35% (794/2267) remote: Counting objects: 36% (817/2267) remote: Counting objects: 37% (839/2267) remote: Counting objects: 38% (862/2267) remote: Counting objects: 39% (885/2267) remote: Counting objects: 40% (907/2267) remote: Counting objects: 41% (930/2267) remote: Counting objects: 42% (953/2267) remote: Counting objects: 43% (975/2267) remote: Counting objects: 44% (998/2267) remote: Counting objects: 45% (1021/2267) remote: Counting objects: 46% (1043/2267) remote: Counting objects: 47% (1066/2267) remote: Counting objects: 48% (1089/2267) remote: Counting objects: 49% (1111/2267) remote: Counting objects: 50% (1134/2267) remote: Counting objects: 51% (1157/2267) remote: Counting objects: 52% (1179/2267) remote: Counting objects: 53% (1202/2267) remote: Counting objects: 54% (1225/2267) remote: Counting objects: 55% (1247/2267) remote: Counting objects: 56% (1270/2267) remote: Counting objects: 57% (1293/2267) remote: Counting objects: 58% (1315/2267) remote: Counting objects: 59% (1338/2267) remote: Counting objects: 60% (1361/2267) remote: Counting objects: 61% (1383/2267) remote: Counting objects: 62% (1406/2267) remote: Counting objects: 63% (1429/2267) remote: Counting objects: 64% (1451/2267) remote: Counting objects: 65% (1474/2267) remote: Counting objects: 66% (1497/2267) remote: Counting objects: 67% (1519/2267) remote: Counting objects: 68% (1542/2267) remote: Counting objects: 69% (1565/2267) remote: Counting objects: 70% (1587/2267) remote: Counting objects: 71% (1610/2267) remote: Counting objects: 72% (1633/2267) remote: Counting objects: 73% (1655/2267) remote: Counting objects: 74% (1678/2267) remote: Counting objects: 75% (1701/2267) remote: Counting objects: 76% (1723/2267) remote: Counting objects: 77% (1746/2267) remote: Counting objects: 78% (1769/2267) remote: Counting objects: 79% (1791/2267) remote: Counting objects: 80% (1814/2267) remote: Counting objects: 81% (1837/2267) remote: Counting objects: 82% (1859/2267) remote: Counting objects: 83% (1882/2267) remote: Counting objects: 84% (1905/2267) remote: Counting objects: 85% (1927/2267) remote: Counting objects: 86% (1950/2267) remote: Counting objects: 87% (1973/2267) remote: Counting objects: 88% (1995/2267) remote: Counting objects: 89% (2018/2267) remote: Counting objects: 90% (2041/2267) remote: Counting objects: 91% (2063/2267) remote: Counting objects: 92% (2086/2267) remote: Counting objects: 93% (2109/2267) remote: Counting objects: 94% (2131/2267) remote: Counting objects: 95% (2154/2267) remote: Counting objects: 96% (2177/2267) remote: Counting objects: 97% (2199/2267) remote: Counting objects: 98% (2222/2267) remote: Counting objects: 99% (2245/2267) remote: Counting objects: 100% (2267/2267) remote: Counting objects: 100% (2267/2267), done. remote: Compressing objects: 0% (1/387) remote: Compressing objects: 1% (4/387) remote: Compressing objects: 2% (8/387) remote: Compressing objects: 3% (12/387) remote: Compressing objects: 4% (16/387) remote: Compressing objects: 5% (20/387) remote: Compressing objects: 6% (24/387) remote: Compressing objects: 7% (28/387) remote: Compressing objects: 8% (31/387) remote: Compressing objects: 9% (35/387) remote: Compressing objects: 10% (39/387) remote: Compressing objects: 11% (43/387) remote: Compressing objects: 12% (47/387) remote: Compressing objects: 13% (51/387) remote: Compressing objects: 14% (55/387) remote: Compressing objects: 15% (59/387) remote: Compressing objects: 16% (62/387) remote: Compressing objects: 17% (66/387) remote: Compressing objects: 18% (70/387) remote: Compressing objects: 19% (74/387) remote: Compressing objects: 20% (78/387) remote: Compressing objects: 21% (82/387) remote: Compressing objects: 22% (86/387) remote: Compressing objects: 23% (90/387) remote: Compressing objects: 24% (93/387) remote: Compressing objects: 25% (97/387) remote: Compressing objects: 26% (101/387) remote: Compressing objects: 27% (105/387) remote: Compressing objects: 28% (109/387) remote: Compressing objects: 29% (113/387) remote: Compressing objects: 30% (117/387) remote: Compressing objects: 31% (120/387) remote: Compressing objects: 32% (124/387) remote: Compressing objects: 33% (128/387) remote: Compressing objects: 34% (132/387) remote: Compressing objects: 35% (136/387) remote: Compressing objects: 36% (140/387) remote: Compressing objects: 37% (144/387) remote: Compressing objects: 38% (148/387) remote: Compressing objects: 39% (151/387) remote: Compressing objects: 40% (155/387) remote: Compressing objects: 41% (159/387) remote: Compressing objects: 42% (163/387) remote: Compressing objects: 43% (167/387) remote: Compressing objects: 44% (171/387) remote: Compressing objects: 45% (175/387) remote: Compressing objects: 46% (179/387) remote: Compressing objects: 47% (182/387) remote: Compressing objects: 48% (186/387) remote: Compressing objects: 49% (190/387) remote: Compressing objects: 50% (194/387) remote: Compressing objects: 51% (198/387) remote: Compressing objects: 52% (202/387) remote: Compressing objects: 53% (206/387) remote: Compressing objects: 54% (209/387) remote: Compressing objects: 55% (213/387) remote: Compressing objects: 56% (217/387) remote: Compressing objects: 57% (221/387) remote: Compressing objects: 58% (225/387) remote: Compressing objects: 59% (229/387) remote: Compressing objects: 60% (233/387) remote: Compressing objects: 61% (237/387) remote: Compressing objects: 62% (240/387) remote: Compressing objects: 63% (244/387) remote: Compressing objects: 64% (248/387) remote: Compressing objects: 65% (252/387) remote: Compressing objects: 66% (256/387) remote: Compressing objects: 67% (260/387) remote: Compressing objects: 68% (264/387) remote: Compressing objects: 69% (268/387) remote: Compressing objects: 70% (271/387) remote: Compressing objects: 71% (275/387) remote: Compressing objects: 72% (279/387) remote: Compressing objects: 73% (283/387) remote: Compressing objects: 74% (287/387) remote: Compressing objects: 75% (291/387) remote: Compressing objects: 76% (295/387) remote: Compressing objects: 77% (298/387) remote: Compressing objects: 78% (302/387) remote: Compressing objects: 79% (306/387) remote: Compressing objects: 80% (310/387) remote: Compressing objects: 81% (314/387) remote: Compressing objects: 82% (318/387) remote: Compressing objects: 83% (322/387) remote: Compressing objects: 84% (326/387) remote: Compressing objects: 85% (329/387) remote: Compressing objects: 86% (333/387) remote: Compressing objects: 87% (337/387) remote: Compressing objects: 88% (341/387) remote: Compressing objects: 89% (345/387) remote: Compressing objects: 90% (349/387) remote: Compressing objects: 91% (353/387) remote: Compressing objects: 92% (357/387) remote: Compressing objects: 93% (360/387) remote: Compressing objects: 94% (364/387) remote: Compressing objects: 95% (368/387) remote: Compressing objects: 96% (372/387) remote: Compressing objects: 97% (376/387) remote: Compressing objects: 98% (380/387) remote: Compressing objects: 99% (384/387) remote: Compressing objects: 100% (387/387) remote: Compressing objects: 100% (387/387), done. Receiving objects: 0% (1/424155) Receiving objects: 1% (4242/424155) Receiving objects: 2% (8484/424155) Receiving objects: 3% (12725/424155) Receiving objects: 4% (16967/424155), 9.14 MiB | 18.27 MiB/s Receiving objects: 5% (21208/424155), 9.14 MiB | 18.27 MiB/s Receiving objects: 6% (25450/424155), 9.14 MiB | 18.27 MiB/s Receiving objects: 7% (29691/424155), 9.14 MiB | 18.27 MiB/s Receiving objects: 8% (33933/424155), 9.14 MiB | 18.27 MiB/s Receiving objects: 9% (38174/424155), 9.14 MiB | 18.27 MiB/s Receiving objects: 9% (39315/424155), 9.14 MiB | 18.27 MiB/s Receiving objects: 10% (42416/424155), 17.62 MiB | 10.99 MiB/s Receiving objects: 11% (46658/424155), 17.62 MiB | 10.99 MiB/s Receiving objects: 11% (47816/424155), 17.62 MiB | 10.99 MiB/s Receiving objects: 12% (50899/424155), 23.79 MiB | 11.31 MiB/s Receiving objects: 13% (55141/424155), 27.21 MiB | 10.45 MiB/s Receiving objects: 13% (57128/424155), 27.21 MiB | 10.45 MiB/s Receiving objects: 14% (59382/424155), 30.64 MiB | 9.87 MiB/s Receiving objects: 15% (63624/424155), 34.55 MiB | 9.59 MiB/s Receiving objects: 16% (67865/424155), 34.55 MiB | 9.59 MiB/s Receiving objects: 17% (72107/424155), 34.55 MiB | 9.59 MiB/s Receiving objects: 17% (72677/424155), 34.55 MiB | 9.59 MiB/s Receiving objects: 18% (76348/424155), 34.55 MiB | 9.59 MiB/s Receiving objects: 19% (80590/424155), 45.64 MiB | 11.12 MiB/s Receiving objects: 19% (81620/424155), 49.25 MiB | 9.51 MiB/s Receiving objects: 20% (84831/424155), 49.25 MiB | 9.51 MiB/s Receiving objects: 21% (89073/424155), 49.25 MiB | 9.51 MiB/s Receiving objects: 22% (93315/424155), 49.25 MiB | 9.51 MiB/s Receiving objects: 23% (97556/424155), 49.25 MiB | 9.51 MiB/s Receiving objects: 24% (101798/424155), 58.48 MiB | 9.53 MiB/s Receiving objects: 25% (106039/424155), 58.48 MiB | 9.53 MiB/s Receiving objects: 26% (110281/424155), 58.48 MiB | 9.53 MiB/s Receiving objects: 27% (114522/424155), 58.48 MiB | 9.53 MiB/s Receiving objects: 28% (118764/424155), 58.48 MiB | 9.53 MiB/s Receiving objects: 28% (119210/424155), 58.48 MiB | 9.53 MiB/s Receiving objects: 29% (123005/424155), 58.48 MiB | 9.53 MiB/s Receiving objects: 30% (127247/424155), 69.07 MiB | 9.35 MiB/s Receiving objects: 31% (131489/424155), 69.07 MiB | 9.35 MiB/s Receiving objects: 31% (132551/424155), 69.07 MiB | 9.35 MiB/s Receiving objects: 32% (135730/424155), 69.07 MiB | 9.35 MiB/s Receiving objects: 33% (139972/424155), 69.07 MiB | 9.35 MiB/s Receiving objects: 34% (144213/424155), 73.84 MiB | 10.09 MiB/s Receiving objects: 35% (148455/424155), 73.84 MiB | 10.09 MiB/s Receiving objects: 36% (152696/424155), 73.84 MiB | 10.09 MiB/s Receiving objects: 37% (156938/424155), 73.84 MiB | 10.09 MiB/s Receiving objects: 38% (161179/424155), 73.84 MiB | 10.09 MiB/s Receiving objects: 39% (165421/424155), 73.84 MiB | 10.09 MiB/s Receiving objects: 40% (169662/424155), 73.84 MiB | 10.09 MiB/s Receiving objects: 41% (173904/424155), 83.14 MiB | 10.66 MiB/s Receiving objects: 42% (178146/424155), 83.14 MiB | 10.66 MiB/s Receiving objects: 43% (182387/424155), 83.14 MiB | 10.66 MiB/s Receiving objects: 44% (186629/424155), 83.14 MiB | 10.66 MiB/s Receiving objects: 45% (190870/424155), 83.14 MiB | 10.66 MiB/s Receiving objects: 46% (195112/424155), 83.14 MiB | 10.66 MiB/s Receiving objects: 47% (199353/424155), 83.14 MiB | 10.66 MiB/s Receiving objects: 48% (203595/424155), 83.14 MiB | 10.66 MiB/s Receiving objects: 48% (206750/424155), 83.14 MiB | 10.66 MiB/s Receiving objects: 49% (207836/424155), 83.14 MiB | 10.66 MiB/s Receiving objects: 50% (212078/424155), 88.98 MiB | 10.05 MiB/s Receiving objects: 51% (216320/424155), 88.98 MiB | 10.05 MiB/s Receiving objects: 52% (220561/424155), 88.98 MiB | 10.05 MiB/s Receiving objects: 53% (224803/424155), 88.98 MiB | 10.05 MiB/s Receiving objects: 54% (229044/424155), 88.98 MiB | 10.05 MiB/s Receiving objects: 55% (233286/424155), 88.98 MiB | 10.05 MiB/s Receiving objects: 56% (237527/424155), 88.98 MiB | 10.05 MiB/s Receiving objects: 57% (241769/424155), 88.98 MiB | 10.05 MiB/s Receiving objects: 58% (246010/424155), 88.98 MiB | 10.05 MiB/s Receiving objects: 59% (250252/424155), 88.98 MiB | 10.05 MiB/s Receiving objects: 59% (252073/424155), 88.98 MiB | 10.05 MiB/s Receiving objects: 60% (254493/424155), 88.98 MiB | 10.05 MiB/s Receiving objects: 61% (258735/424155), 88.98 MiB | 10.05 MiB/s Receiving objects: 62% (262977/424155), 97.05 MiB | 10.80 MiB/s Receiving objects: 63% (267218/424155), 97.05 MiB | 10.80 MiB/s Receiving objects: 64% (271460/424155), 97.05 MiB | 10.80 MiB/s Receiving objects: 65% (275701/424155), 97.05 MiB | 10.80 MiB/s Receiving objects: 66% (279943/424155), 104.34 MiB | 11.35 MiB/s Receiving objects: 66% (283558/424155), 104.34 MiB | 11.35 MiB/s Receiving objects: 67% (284184/424155), 104.34 MiB | 11.35 MiB/s Receiving objects: 68% (288426/424155), 104.34 MiB | 11.35 MiB/s Receiving objects: 69% (292667/424155), 109.40 MiB | 10.37 MiB/s Receiving objects: 70% (296909/424155), 109.40 MiB | 10.37 MiB/s Receiving objects: 71% (301151/424155), 109.40 MiB | 10.37 MiB/s Receiving objects: 72% (305392/424155), 109.40 MiB | 10.37 MiB/s Receiving objects: 73% (309634/424155), 109.40 MiB | 10.37 MiB/s Receiving objects: 74% (313875/424155), 109.40 MiB | 10.37 MiB/s Receiving objects: 75% (318117/424155), 114.33 MiB | 11.64 MiB/s Receiving objects: 76% (322358/424155), 114.33 MiB | 11.64 MiB/s Receiving objects: 76% (325480/424155), 114.33 MiB | 11.64 MiB/s Receiving objects: 77% (326600/424155), 116.93 MiB | 10.46 MiB/s Receiving objects: 78% (330841/424155), 116.93 MiB | 10.46 MiB/s Receiving objects: 79% (335083/424155), 116.93 MiB | 10.46 MiB/s Receiving objects: 80% (339324/424155), 116.93 MiB | 10.46 MiB/s Receiving objects: 80% (341780/424155), 123.94 MiB | 10.65 MiB/s Receiving objects: 81% (343566/424155), 129.39 MiB | 10.79 MiB/s Receiving objects: 82% (347808/424155), 129.39 MiB | 10.79 MiB/s Receiving objects: 83% (352049/424155), 129.39 MiB | 10.79 MiB/s Receiving objects: 84% (356291/424155), 129.39 MiB | 10.79 MiB/s Receiving objects: 85% (360532/424155), 129.39 MiB | 10.79 MiB/s Receiving objects: 85% (364048/424155), 138.85 MiB | 10.92 MiB/s Receiving objects: 85% (364048/424155), 147.04 MiB | 9.35 MiB/s Receiving objects: 85% (364048/424155), 157.54 MiB | 9.49 MiB/s Receiving objects: 85% (364048/424155), 168.18 MiB | 9.81 MiB/s Receiving objects: 85% (364048/424155), 177.53 MiB | 9.45 MiB/s Receiving objects: 86% (364774/424155), 177.53 MiB | 9.45 MiB/s Receiving objects: 87% (369015/424155), 177.53 MiB | 9.45 MiB/s Receiving objects: 88% (373257/424155), 177.53 MiB | 9.45 MiB/s Receiving objects: 89% (377498/424155), 182.25 MiB | 9.54 MiB/s Receiving objects: 89% (379579/424155), 182.25 MiB | 9.54 MiB/s Receiving objects: 90% (381740/424155), 182.25 MiB | 9.54 MiB/s Receiving objects: 91% (385982/424155), 182.25 MiB | 9.54 MiB/s Receiving objects: 92% (390223/424155), 187.43 MiB | 9.88 MiB/s Receiving objects: 92% (391818/424155), 192.17 MiB | 9.92 MiB/s Receiving objects: 93% (394465/424155), 197.59 MiB | 10.10 MiB/s Receiving objects: 94% (398706/424155), 197.59 MiB | 10.10 MiB/s Receiving objects: 95% (402948/424155), 202.74 MiB | 9.93 MiB/s Receiving objects: 95% (404174/424155), 202.74 MiB | 9.93 MiB/s Receiving objects: 96% (407189/424155), 202.74 MiB | 9.93 MiB/s Receiving objects: 97% (411431/424155), 202.74 MiB | 9.93 MiB/s Receiving objects: 98% (415672/424155), 207.28 MiB | 9.70 MiB/s Receiving objects: 99% (419914/424155), 207.28 MiB | 9.70 MiB/s Receiving objects: 99% (423871/424155), 211.93 MiB | 9.60 MiB/s remote: Total 424155 (delta 2142), reused 1882 (delta 1880), pack-reused 421888 (from 3) Receiving objects: 100% (424155/424155), 211.93 MiB | 9.60 MiB/s Receiving objects: 100% (424155/424155), 213.14 MiB | 10.14 MiB/s, done. Resolving deltas: 0% (0/333681) Resolving deltas: 1% (3337/333681) Resolving deltas: 2% (6675/333681) Resolving deltas: 3% (10011/333681) Resolving deltas: 4% (13348/333681) Resolving deltas: 5% (16685/333681) Resolving deltas: 6% (20021/333681) Resolving deltas: 7% (23358/333681) Resolving deltas: 8% (26695/333681) Resolving deltas: 9% (30032/333681) Resolving deltas: 9% (30046/333681) Resolving deltas: 10% (33369/333681) Resolving deltas: 11% (36705/333681) Resolving deltas: 12% (40042/333681) Resolving deltas: 13% (43379/333681) Resolving deltas: 14% (46716/333681) Resolving deltas: 15% (50053/333681) Resolving deltas: 16% (53389/333681) Resolving deltas: 17% (56726/333681) Resolving deltas: 18% (60063/333681) Resolving deltas: 19% (63400/333681) Resolving deltas: 19% (66284/333681) Resolving deltas: 20% (66737/333681) Resolving deltas: 21% (70074/333681) Resolving deltas: 22% (73410/333681) Resolving deltas: 23% (76748/333681) Resolving deltas: 24% (80084/333681) Resolving deltas: 25% (83421/333681) Resolving deltas: 26% (86758/333681) Resolving deltas: 27% (90094/333681) Resolving deltas: 28% (93431/333681) Resolving deltas: 28% (94984/333681) Resolving deltas: 29% (96768/333681) Resolving deltas: 30% (100105/333681) Resolving deltas: 31% (103442/333681) Resolving deltas: 32% (106778/333681) Resolving deltas: 33% (110115/333681) Resolving deltas: 34% (113452/333681) Resolving deltas: 35% (116789/333681) Resolving deltas: 36% (120126/333681) Resolving deltas: 37% (123462/333681) Resolving deltas: 38% (126799/333681) Resolving deltas: 39% (130136/333681) Resolving deltas: 39% (133078/333681) Resolving deltas: 40% (133473/333681) Resolving deltas: 41% (136810/333681) Resolving deltas: 42% (140147/333681) Resolving deltas: 43% (143483/333681) Resolving deltas: 44% (146820/333681) Resolving deltas: 45% (150157/333681) Resolving deltas: 46% (153494/333681) Resolving deltas: 47% (156831/333681) Resolving deltas: 48% (160167/333681) Resolving deltas: 49% (163504/333681) Resolving deltas: 50% (166841/333681) Resolving deltas: 51% (170178/333681) Resolving deltas: 52% (173515/333681) Resolving deltas: 53% (176851/333681) Resolving deltas: 54% (180188/333681) Resolving deltas: 55% (183525/333681) Resolving deltas: 56% (186862/333681) Resolving deltas: 57% (190199/333681) Resolving deltas: 58% (193536/333681) Resolving deltas: 59% (196872/333681) Resolving deltas: 59% (197006/333681) Resolving deltas: 60% (200209/333681) Resolving deltas: 61% (203546/333681) Resolving deltas: 62% (206883/333681) Resolving deltas: 63% (210220/333681) Resolving deltas: 64% (213556/333681) Resolving deltas: 65% (216894/333681) Resolving deltas: 66% (220230/333681) Resolving deltas: 67% (223567/333681) Resolving deltas: 68% (226904/333681) Resolving deltas: 69% (230240/333681) Resolving deltas: 70% (233577/333681) Resolving deltas: 71% (236914/333681) Resolving deltas: 72% (240251/333681) Resolving deltas: 73% (243588/333681) Resolving deltas: 73% (245464/333681) Resolving deltas: 74% (246924/333681) Resolving deltas: 75% (250261/333681) Resolving deltas: 76% (253599/333681) Resolving deltas: 77% (256935/333681) Resolving deltas: 78% (260272/333681) Resolving deltas: 79% (263608/333681) Resolving deltas: 80% (266945/333681) Resolving deltas: 81% (270282/333681) Resolving deltas: 82% (273619/333681) Resolving deltas: 83% (276956/333681) Resolving deltas: 83% (279859/333681) Resolving deltas: 84% (280293/333681) Resolving deltas: 85% (283629/333681) Resolving deltas: 86% (286966/333681) Resolving deltas: 87% (290303/333681) Resolving deltas: 88% (293642/333681) Resolving deltas: 89% (296977/333681) Resolving deltas: 90% (300313/333681) Resolving deltas: 91% (303650/333681) Resolving deltas: 92% (306987/333681) Resolving deltas: 93% (310324/333681) Resolving deltas: 94% (313661/333681) Resolving deltas: 95% (316997/333681) Resolving deltas: 96% (320334/333681) Resolving deltas: 97% (323671/333681) Resolving deltas: 98% (327008/333681) Resolving deltas: 99% (330345/333681) Resolving deltas: 100% (333681/333681) Resolving deltas: 100% (333681/333681), done. ==> Validating source files with sha512sums... curl ... Passed ==> Verifying source file signatures with gpg... curl git repo ... Passed ]3008;start=05d1ef4685564868b4dd8260438b4e68;user=root;hostname=mamoswine.felixc.at;machineid=308e4189ffa7440480c13f5748093936;bootid=005b36fe8b2947fd8e8f16ad3242897e;pid=3966471;pidfdid=3966771;comm=systemd-nspawn;container=arch-nspawn-3966471;type=container\]2;🔵 Container arch-nspawn-3966471 on mamoswine.felixc.at\==> Making package: curl 8.17.0-1 (Sat Nov 8 23:00:24 2025) ==> Checking runtime dependencies... ==> Checking buildtime dependencies... ==> Installing missing dependencies... resolving dependencies... looking for conflicting packages... Package (9) New Version Net Change Download Size core/debuginfod 0.193-5 0.37 MiB core/libmicrohttpd 1.0.2-1 0.57 MiB extra/perl-error 0.17030-2 0.04 MiB extra/perl-mailtools 2.22-2 0.10 MiB extra/perl-timedate 2.33-8 0.08 MiB extra/zlib-ng 2.2.5-1 0.21 MiB extra/git 2.51.2-2 28.37 MiB extra/patchelf 0.18.0-3 0.19 MiB 0.10 MiB extra/valgrind 3.25.1-3 40.52 MiB Total Download Size: 0.10 MiB Total Installed Size: 70.47 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... patchelf-0.18.0-3-riscv64 downloading... error: restricting filesystem access failed because landlock is not supported by the kernel! checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing perl-error... installing perl-timedate... installing perl-mailtools... installing zlib-ng... installing git... Optional dependencies for git git-zsh-completion: upstream zsh completion tk: gitk and git gui openssh: ssh transport and crypto man: show help with `git command --help` perl-libwww: git svn perl-term-readkey: git svn and interactive.singlekey setting perl-io-socket-ssl: git send-email TLS support perl-authen-sasl: git send-email TLS support perl-cgi: gitweb (web interface) support python: git svn & git p4 subversion: git svn org.freedesktop.secrets: keyring credential helper libsecret: libsecret credential helper [installed] less: the default pager for git installing patchelf... installing libmicrohttpd... installing debuginfod... Optional dependencies for debuginfod elfutils=0.193: for translations installing valgrind... Optional dependencies for valgrind python: cg_* scripts :: Running post-transaction hooks... (1/5) Creating system user accounts... Creating group 'git' with GID 970. Creating user 'git' (git daemon user) with UID 970 and GID 970. (2/5) Reloading system manager configuration... Skipped: Current root is not booted. (3/5) Arming ConditionNeedsUpdate... (4/5) Checking for old perl modules... (5/5) Updating the info directory file... ==> Retrieving sources... ==> WARNING: Skipping all source file integrity checks. ==> Extracting sources... -> Creating working copy of curl git repo... Cloning into 'curl'... done. Updating files: 89% (3724/4152) Updating files: 90% (3737/4152) Updating files: 91% (3779/4152) Updating files: 92% (3820/4152) Updating files: 93% (3862/4152) Updating files: 94% (3903/4152) Updating files: 95% (3945/4152) Updating files: 96% (3986/4152) Updating files: 97% (4028/4152) Updating files: 98% (4069/4152) Updating files: 99% (4111/4152) Updating files: 100% (4152/4152) Updating files: 100% (4152/4152), done. Switched to a new branch 'makepkg' ==> Starting prepare()... libtoolize: putting auxiliary files in '.'. libtoolize: copying file './ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'. libtoolize: copying file 'm4/libtool.m4' libtoolize: copying file 'm4/ltoptions.m4' libtoolize: copying file 'm4/ltsugar.m4' libtoolize: copying file 'm4/ltversion.m4' libtoolize: copying file 'm4/lt~obsolete.m4' libtoolize: Remember to add 'LT_INIT' to configure.ac. configure.ac:128: installing './compile' configure.ac:455: installing './config.guess' configure.ac:455: installing './config.sub' configure.ac:128: installing './install-sh' configure.ac:131: installing './missing' docs/examples/Makefile.am: installing './depcomp' ==> Starting build()... checking whether to enable maintainer-specific portions of Makefiles... no checking whether make supports nested variables... yes checking whether to enable debug build options... no checking whether to enable compiler optimizer... (assumed) yes checking whether to enable strict compiler warnings... no checking whether to enable compiler warnings as errors... no checking whether to enable curl debug memory tracking... no checking whether to enable hiding of library internal symbols... yes checking whether to enable c-ares for DNS lookups... no checking whether to disable dependency on -lrt... (assumed no) checking whether to enable HTTPSRR support... no checking whether to enable ECH support... no checking whether to enable SSL session export support... no checking for path separator... : checking for sed... /usr/bin/sed checking for grep... /usr/bin/grep checking that grep -E works... yes checking for ar... /usr/bin/ar checking for a BSD-compatible install... /usr/bin/install -c checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether the compiler supports GNU C... yes checking whether gcc accepts -g... yes checking for gcc option to enable C11 features... none needed checking whether gcc understands -c and -o together... yes checking how to run the C preprocessor... gcc -E checking for stdio.h... yes checking for stdlib.h... yes checking for string.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for strings.h... yes checking for sys/stat.h... yes checking for sys/types.h... yes checking for unistd.h... yes checking for stdatomic.h... yes checking if _Atomic is available... yes checking whether sleep supports fractional seconds... yes checking filesystem timestamp resolution... 0.01 checking whether build environment is sane... yes checking for a race-free mkdir -p... /usr/bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports the include directive... yes (GNU style) checking xargs -n works... yes checking whether UID '1000' is supported by ustar format... yes checking whether GID '1000' is supported by ustar format... yes checking how to create a ustar tar archive... gnutar checking dependency style of gcc... gcc3 checking curl version... 8.17.0 checking for perl... /usr/bin/perl checking for httpd... no checking for apache2... no checking for apxs... no configure: httpd/apache2 not in PATH, http tests disabled configure: apxs not in PATH, http tests disabled checking for danted... no checking for danted... no checking for nghttpx... no checking for caddy... no checking build system type... riscv64-unknown-linux-gnu checking host system type... riscv64-unknown-linux-gnu checking for egrep -e... /usr/bin/grep -E checking if OS is AIX (to define _ALL_SOURCE)... no checking if _THREAD_SAFE is already defined... no checking if _THREAD_SAFE is actually needed... no checking if _THREAD_SAFE is onwards defined... no checking if _REENTRANT is already defined... no checking if _REENTRANT is actually needed... no checking if _REENTRANT is onwards defined... no checking for gcc option to enable large file support... none needed checking how to print strings... printf checking for a sed that does not truncate output... (cached) /usr/bin/sed checking for grep that handles long lines and -e... (cached) /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for fgrep... /usr/bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert riscv64-unknown-linux-gnu file names to riscv64-unknown-linux-gnu format... func_convert_file_noop checking how to convert riscv64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for file... file checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ranlib... ranlib checking for archiver @FILE support... @ checking for strip... strip checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /usr/bin/dd checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1 checking for mt... no checking if : is a manifest tool... no checking for dlfcn.h... yes checking which variant of shared library versioning to provide... (default) aix checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking whether to build shared libraries with -version-info... yes checking whether to build shared libraries with -no-undefined... no checking whether to build shared libraries with -mimpure-text... no checking whether to build shared libraries with PIC... yes checking whether to build static libraries with PIC... no checking whether to build shared libraries only... no checking whether to build static libraries only... no checking for windres... no checking if cpp -P is needed... yes checking if cpp -P works... yes checking if compiler is DEC/Compaq/HP C... no checking if compiler is HP-UX C... no checking if compiler is IBM C... no checking if compiler is Intel C... no checking if compiler is clang... no checking if compiler is GNU C... yes checking compiler version... gcc '1502' (raw: '15.2.1') checking if compiler is SunPro C... no checking if compiler is Tiny C... no checking for code coverage support... no checking whether build target is a native Windows one... no checking if compiler accepts some basic options... yes configure: compiler options added: -Werror-implicit-function-declaration checking if compiler optimizer assumed setting might be used... no checking if compiler accepts strict warning options... yes configure: compiler options added: -Wno-system-headers checking if compiler halts on compilation errors... yes checking if compiler halts on negative sized arrays... yes checking if compiler halts on function prototype mismatch... yes checking if compiler supports hiding library internal symbols... yes checking whether build target supports Win32 crypto API... no checking whether to build libcurl and curl in "unity" mode... no checking whether to support http... yes checking whether to support ftp... yes checking whether to support file... yes checking whether to support IPFS... yes checking whether to support ldap... no checking whether to support ldaps... no checking whether to support rtsp... yes checking whether to support proxies... yes checking whether to support dict... yes checking whether to support telnet... yes checking whether to support tftp... yes checking whether to support pop3... yes checking whether to support imap... yes checking whether to support smb... yes checking whether to support smtp... yes checking whether to support gopher... yes checking whether to support mqtt... no checking whether to provide built-in manual... no checking whether to build documentation... yes checking whether to enable generation of C code... yes checking whether to use libgcc... no checking if X/Open network library is required... no checking for gethostbyname... yes checking whether build target is a native Windows one... (cached) no checking for proto/bsdsocket.h... no checking for connect in libraries... yes checking for sys/types.h... (cached) yes checking for monotonic clock_gettime... yes checking for clock_gettime in libraries... no additional lib required checking if monotonic clock_gettime works... yes checking for sys/types.h... (cached) yes checking for raw monotonic clock_gettime... yes checking for pkg-config... /usr/bin/pkg-config checking for zlib options with pkg-config... found checking for zlib.h... yes configure: found both libz and libz.h header checking for BrotliDecoderDecompress in -lbrotlidec... yes checking for brotli/decode.h... yes checking for ZSTD_createDStream in -lzstd... yes checking for zstd.h... yes checking whether to enable IPv6... yes checking if struct sockaddr_in6 has sin6_scope_id member... yes checking if argv can be written to... yes checking if GSS-API support is requested... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for mit-krb5-gssapi options with pkg-config... found checking for gss.h... no checking for gssapi/gssapi.h... yes checking for gssapi/gssapi_generic.h... yes checking for gssapi/gssapi_krb5.h... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for mit-krb5-gssapi options with pkg-config... found configure: GSS-API MIT Kerberos version detected: 1.21.3 checking if we can link against GSS-API library... yes checking whether to enable Windows native SSL/TLS... no checking whether to enable Amiga native SSL/TLS (AmiSSL v5)... no checking for pkg-config... (cached) /usr/bin/pkg-config checking for openssl options with pkg-config... found configure: pkg-config: SSL_LIBS: "-lssl -lcrypto" configure: pkg-config: SSL_LDFLAGS: "" configure: pkg-config: SSL_CPPFLAGS: "" checking for HMAC_Update in -lcrypto... yes checking for SSL_connect in -lssl... yes checking for openssl/x509.h... yes checking for openssl/rsa.h... yes checking for openssl/crypto.h... yes checking for openssl/pem.h... yes checking for openssl/ssl.h... yes checking for openssl/err.h... yes checking for BoringSSL... no checking for AWS-LC... no checking for LibreSSL... no checking for OpenSSL >= v3... yes checking for SSL_set_quic_use_legacy_codepoint... no checking for SSL_set_quic_tls_cbs... yes configure: OpenSSL with QUIC APIv2 checking for DES support in OpenSSL... yes checking for SRP support in OpenSSL... yes checking for QUIC support and OpenSSL >= 3.3... yes checking whether to enable Apple OS native certificate validation... no configure: built with one SSL backend checking default CA cert bundle/path... /etc/ssl/certs/ca-certificates.crt checking whether to use OpenSSL's built-in CA store... no checking CA cert bundle path to embed in the curl tool... no checking for pkg-config... (cached) /usr/bin/pkg-config checking for libpsl options with pkg-config... found checking for psl_builtin in -lpsl... yes checking for libpsl.h... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for libssh2 options with pkg-config... found checking for libssh2_agent_get_identity_path in -lssh2... yes checking for libssh2.h... yes checking for RTMP_Init in -lrtmp... no checking whether versioned symbols are wanted... yes checking if libraries can be versioned... yes checking whether to build with libidn2... (assumed) yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for libidn2 options with pkg-config... found configure: pkg-config: IDN_LIBS: "-lidn2" configure: pkg-config: IDN_LDFLAGS: "" configure: pkg-config: IDN_CPPFLAGS: "" configure: pkg-config: IDN_DIR: "" checking if idn2_lookup_ul can be linked... yes checking for idn2.h... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for libnghttp2 options with pkg-config... found configure: -l is -lnghttp2 configure: -I is configure: -L is checking for nghttp2_session_get_stream_local_window_size in -lnghttp2... yes checking for nghttp2/nghttp2.h... yes configure: Added to CURL_LIBRARY_PATH checking for pkg-config... (cached) /usr/bin/pkg-config checking for libnghttp3 options with pkg-config... found configure: -l is -lnghttp3 configure: -I is configure: -L is checking for nghttp3_conn_client_new_versioned in -lnghttp3... yes checking for nghttp3/nghttp3.h... yes configure: Added to CURL_LIBRARY_PATH configure: HTTP3 support is experimental checking for sys/types.h... (cached) yes checking for sys/select.h... yes checking for sys/ioctl.h... yes checking for unistd.h... (cached) yes checking for arpa/inet.h... yes checking for net/if.h... yes checking for netinet/in.h... yes checking for netinet/in6.h... no checking for sys/un.h... yes checking for linux/tcp.h... yes checking for netinet/tcp.h... yes checking for netinet/udp.h... yes checking for netdb.h... yes checking for sys/sockio.h... no checking for sys/param.h... yes checking for termios.h... yes checking for termio.h... no checking for fcntl.h... yes checking for io.h... no checking for pwd.h... yes checking for utime.h... yes checking for sys/utime.h... no checking for sys/poll.h... yes checking for poll.h... yes checking for sys/resource.h... yes checking for libgen.h... yes checking for locale.h... yes checking for stdbool.h... yes checking for stdint.h... (cached) yes checking for sys/filio.h... no checking for sys/eventfd.h... yes checking for an ANSI C-conforming const... yes checking for size_t... yes checking for sys/types.h... (cached) yes checking for struct timeval... yes checking run-time libs availability... fine checking size of size_t... 8 checking size of long... 8 checking size of int... 4 checking size of time_t... 8 checking size of off_t... 8 checking size of curl_off_t... 8 checking size of curl_socket_t... 4 checking for long long... yes checking for ssize_t... yes checking for bool... yes checking for sa_family_t... yes checking for suseconds_t... yes checking if time_t is unsigned... no checking for struct sockaddr_storage... yes checking for sys/select.h... (cached) yes checking for select... yes checking for sys/types.h... (cached) yes checking for recv... yes checking for sys/types.h... (cached) yes checking for send... yes checking for sys/types.h... (cached) yes checking for MSG_NOSIGNAL... yes checking for sys/types.h... (cached) yes checking for unistd.h... (cached) yes checking if alarm can be linked... yes checking if alarm is prototyped... yes checking if alarm is compilable... yes checking if alarm usage allowed... yes checking if alarm might be used... yes checking for sys/types.h... (cached) yes checking for strings.h... (cached) yes checking for sys/types.h... (cached) yes checking for libgen.h... (cached) yes checking if basename can be linked... yes checking if basename is prototyped... yes checking if basename is compilable... yes checking if basename usage allowed... yes checking if basename might be used... yes checking if closesocket can be linked... no checking if closesocket might be used... no checking for sys/types.h... (cached) yes checking if CloseSocket can be linked... no checking if CloseSocket might be used... no checking for sys/types.h... (cached) yes checking for unistd.h... (cached) yes checking for fcntl.h... (cached) yes checking if fcntl can be linked... yes checking if fcntl is prototyped... yes checking if fcntl is compilable... yes checking if fcntl usage allowed... yes checking if fcntl might be used... yes checking if fcntl O_NONBLOCK is compilable... yes checking if fcntl O_NONBLOCK usage allowed... yes checking if fcntl O_NONBLOCK might be used... yes checking whether build target is a native Windows one... (cached) no checking for sys/types.h... (cached) yes checking for netdb.h... (cached) yes checking if freeaddrinfo can be linked... yes checking if freeaddrinfo is prototyped... yes checking if freeaddrinfo is compilable... yes checking if freeaddrinfo usage allowed... yes checking if freeaddrinfo might be used... yes checking for sys/types.h... (cached) yes checking for sys/xattr.h... yes checking if fsetxattr can be linked... yes checking if fsetxattr is prototyped... yes checking if fsetxattr takes 5 args.... yes checking if fsetxattr is compilable... yes checking if fsetxattr usage allowed... yes checking if fsetxattr might be used... yes checking if ftruncate can be linked... yes checking if ftruncate is prototyped... yes checking if ftruncate is compilable... yes checking if ftruncate usage allowed... yes checking if ftruncate might be used... yes checking for sys/types.h... (cached) yes checking if getaddrinfo can be linked... yes checking if getaddrinfo is prototyped... yes checking if getaddrinfo is compilable... yes checking if getaddrinfo seems to work... yes checking if getaddrinfo usage allowed... yes checking if getaddrinfo might be used... yes checking if getaddrinfo is threadsafe... yes checking if gethostbyname_r can be linked... yes checking if gethostbyname_r is prototyped... yes checking if gethostbyname_r takes 3 args.... no checking if gethostbyname_r takes 5 args.... no checking if gethostbyname_r takes 6 args.... yes checking if gethostbyname_r is compilable... yes checking if gethostbyname_r usage allowed... yes checking if gethostbyname_r might be used... yes checking if gethostname can be linked... yes checking if gethostname is prototyped... yes checking if gethostname is compilable... yes checking for gethostname arg 2 data type... size_t checking if gethostname usage allowed... yes checking if gethostname might be used... yes checking for sys/types.h... (cached) yes checking for netinet/in.h... (cached) yes checking for ifaddrs.h... yes checking if getifaddrs can be linked... yes checking if getifaddrs is prototyped... yes checking if getifaddrs is compilable... yes checking if getifaddrs seems to work... yes checking if getifaddrs usage allowed... yes checking if getifaddrs might be used... yes checking if getpeername can be linked... yes checking if getpeername is prototyped... yes checking if getpeername is compilable... yes checking if getpeername usage allowed... yes checking if getpeername might be used... yes checking if getsockname can be linked... yes checking if getsockname is prototyped... yes checking if getsockname is compilable... yes checking if getsockname usage allowed... yes checking if getsockname might be used... yes checking for sys/types.h... (cached) yes checking if gmtime_r can be linked... yes checking if gmtime_r is prototyped... yes checking if gmtime_r is compilable... yes checking if gmtime_r seems to work... yes checking if gmtime_r usage allowed... yes checking if gmtime_r might be used... yes checking for sys/types.h... (cached) yes checking for unistd.h... (cached) yes checking for sys/ioctl.h... (cached) yes checking for stropts.h... no checking if ioctl can be linked... yes checking if ioctl is prototyped... yes checking if ioctl is compilable... yes checking if ioctl usage allowed... yes checking if ioctl might be used... yes checking if ioctl FIONBIO is compilable... yes checking if ioctl FIONBIO usage allowed... yes checking if ioctl FIONBIO might be used... yes checking if ioctl SIOCGIFADDR is compilable... yes checking if ioctl SIOCGIFADDR usage allowed... yes checking if ioctl SIOCGIFADDR might be used... yes checking if ioctlsocket can be linked... no checking if ioctlsocket might be used... no checking if IoctlSocket can be linked... no checking if IoctlSocket might be used... no checking if memrchr can be linked... yes checking if memrchr is prototyped... yes checking if memrchr is compilable... yes checking if memrchr usage allowed... yes checking if memrchr might be used... yes checking for sys/types.h... (cached) yes checking if sigaction can be linked... yes checking if sigaction is prototyped... yes checking if sigaction is compilable... yes checking if sigaction usage allowed... yes checking if sigaction might be used... yes checking if siginterrupt can be linked... yes checking if siginterrupt is prototyped... yes checking if siginterrupt is compilable... yes checking if siginterrupt usage allowed... yes checking if siginterrupt might be used... yes checking if signal can be linked... yes checking if signal is prototyped... yes checking if signal is compilable... yes checking if signal usage allowed... yes checking if signal might be used... yes checking for sys/types.h... (cached) yes checking if sigsetjmp can be linked... no checking if sigsetjmp seems a macro... yes checking if sigsetjmp is compilable... yes checking if sigsetjmp usage allowed... yes checking if sigsetjmp might be used... yes checking if socket can be linked... yes checking if socket is prototyped... yes checking if socket is compilable... yes checking if socket usage allowed... yes checking if socket might be used... yes checking if socketpair can be linked... yes checking if socketpair is prototyped... yes checking if socketpair is compilable... yes checking if socketpair usage allowed... yes checking if socketpair might be used... yes checking if strdup can be linked... yes checking if strdup is prototyped... yes checking if strdup is compilable... yes checking if strdup usage allowed... yes checking if strdup might be used... yes checking if strerror_r can be linked... yes checking if strerror_r is prototyped... yes checking if strerror_r is compilable... yes checking if strerror_r is glibc like... yes checking if strerror_r seems to work... yes checking if strerror_r usage allowed... yes checking if strerror_r might be used... yes checking for accept4... yes checking for eventfd... yes checking for fnmatch... yes checking for geteuid... yes checking for getpass_r... no checking for getppid... yes checking for getpwuid... yes checking for getpwuid_r... yes checking for getrlimit... yes checking for gettimeofday... yes checking for mach_absolute_time... no checking for pipe... yes checking for pipe2... yes checking for poll... yes checking for sendmmsg... yes checking for sendmsg... yes checking for setlocale... yes checking for setrlimit... yes checking for snprintf... yes checking for utime... yes checking for utimes... yes checking for if_nametoindex... yes checking for realpath... yes checking for sched_yield... yes checking for sys/types.h... (cached) yes checking for netinet/in.h... (cached) yes checking for arpa/inet.h... (cached) yes checking if inet_ntop can be linked... yes checking if inet_ntop is prototyped... yes checking if inet_ntop is compilable... yes checking if inet_ntop seems to work... yes checking if inet_ntop usage allowed... yes checking if inet_ntop might be used... yes checking if inet_pton can be linked... yes checking if inet_pton is prototyped... yes checking if inet_pton is compilable... yes checking if inet_pton seems to work... yes checking if inet_pton usage allowed... yes checking if inet_pton might be used... yes checking if strcasecmp can be linked... yes checking if strcasecmp is prototyped... yes checking if strcasecmp is compilable... yes checking if strcasecmp usage allowed... yes checking if strcasecmp might be used... yes checking if strcmpi can be linked... no checking if strcmpi might be used... no checking if stricmp can be linked... no checking if stricmp might be used... no checking for setmode... no checking for fseeko... yes checking for gcc options needed to detect all undeclared functions... none needed checking whether fseeko is declared... yes checking how to set a socket into non-blocking mode... fcntl O_NONBLOCK checking whether to enable the threaded resolver... yes checking for pthread.h... yes checking for pthread_create... yes checking for dirent.h... yes checking for opendir... yes checking convert -I options to -isystem... yes checking whether to enable verbose strings... yes checking whether to enable SSPI support (Windows native builds only)... no checking whether to enable basic authentication method... yes checking whether to enable bearer authentication method... yes checking whether to enable digest authentication method... yes checking whether to enable kerberos authentication method... yes checking whether to enable negotiate authentication method... yes checking whether to enable aws sig methods... yes checking whether to support NTLM... yes checking whether to enable TLS-SRP authentication... yes checking whether to enable Unix domain sockets... auto checking for struct sockaddr_un.sun_path... yes checking whether to support cookies... yes checking whether to support socketpair... yes checking whether to support HTTP authentication... yes checking whether to support DoH... yes checking whether to support the MIME API... yes checking whether to support binding connections locally... yes checking whether to support the form API... yes checking whether to support date parsing... yes checking whether to support netrc parsing... yes checking whether to support progress-meter... yes checking whether to support the SHA-512/256 hash algorithm... yes checking whether to support DNS shuffling... yes checking whether to support curl_easy_option*... yes checking whether to support alt-svc... yes checking whether to support headers-api... yes checking whether to support HSTS... yes checking whether to enable HTTPS-RR support... no checking for SSL_set0_wbio... yes checking whether to support WebSockets... yes checking whether hiding of library internal symbols will actually happen... yes checking if this build supports HTTPS-proxy... yes checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating docs/Makefile config.status: creating docs/examples/Makefile config.status: creating docs/libcurl/Makefile config.status: creating docs/libcurl/opts/Makefile config.status: creating docs/cmdline-opts/Makefile config.status: creating include/Makefile config.status: creating include/curl/Makefile config.status: creating src/Makefile config.status: creating lib/Makefile config.status: creating scripts/Makefile config.status: creating lib/libcurl.vers config.status: creating tests/Makefile config.status: creating tests/config config.status: creating tests/configurehelp.pm config.status: creating tests/certs/Makefile config.status: creating tests/data/Makefile config.status: creating tests/server/Makefile config.status: creating tests/libtest/Makefile config.status: creating tests/unit/Makefile config.status: creating tests/tunit/Makefile config.status: creating tests/http/config.ini config.status: creating tests/http/Makefile config.status: creating packages/Makefile config.status: creating packages/vms/Makefile config.status: creating libcurl.pc config.status: creating curl-config config.status: creating lib/curl_config.h config.status: executing depfiles commands config.status: executing libtool commands configure: Configured to build curl/libcurl: Host setup: riscv64-unknown-linux-gnu Install prefix: /usr Compiler: gcc CFLAGS: -march=rv64gc -mabi=lp64d -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fno-omit-frame-pointer -g -ffile-prefix-map=/build/curl/src=/usr/src/debug/curl -flto=auto -Werror-implicit-function-declaration -Wno-system-headers CFLAGS extras: CPPFLAGS: -D_GNU_SOURCE LDFLAGS: -Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -flto=auto curl-config: LIBS: -lnghttp3 -lnghttp2 -lidn2 -lssh2 -lssh2 -lpsl -lssl -lcrypto -lssl -lcrypto -lgssapi_krb5 -lzstd -lbrotlidec -lz curl version: 8.17.0 SSL: enabled (OpenSSL v3+) SSH: enabled (libssh2) zlib: enabled brotli: enabled (libbrotlidec) zstd: enabled (libzstd) GSS-API: enabled (MIT Kerberos) GSASL: no (--with-gsasl) TLS-SRP: enabled resolver: POSIX threaded IPv6: enabled Unix sockets: enabled IDN: enabled (libidn2) Build docs: enabled (--disable-docs) Build libcurl: Shared=yes, Static=yes Built-in manual: no (--enable-manual) --libcurl option: enabled (--disable-libcurl-option) Verbose errors: enabled (--disable-verbose) Code coverage: disabled SSPI: no (--enable-sspi) ca native: no ca cert bundle: /etc/ssl/certs/ca-certificates.crt ca cert path: no ca cert embed: no ca fallback: no LDAP: no (--enable-ldap / --with-ldap-lib / --with-lber-lib) LDAPS: no (--enable-ldaps) IPFS/IPNS: enabled RTSP: enabled RTMP: no (--with-librtmp) PSL: enabled Alt-svc: enabled (--disable-alt-svc) Headers API: enabled (--disable-headers-api) HSTS: enabled (--disable-hsts) HTTP1: enabled (internal) HTTP2: enabled (nghttp2) HTTP3: enabled (openssl + nghttp3) ECH: no (--enable-ech) HTTPS RR: no (--enable-httpsrr) SSLS-EXPORT: no (--enable-ssls-export) Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd configure: WARNING: HTTP3 is enabled but marked EXPERIMENTAL. Use with caution! Making all in lib make[1]: Entering directory '/build/curl/src/build-curl/lib' make all-am make[2]: Entering directory '/build/curl/src/build-curl/lib' CC libcurl_la-altsvc.lo CC libcurl_la-amigaos.lo CC libcurl_la-asyn-ares.lo CC libcurl_la-asyn-base.lo CC libcurl_la-asyn-thrdd.lo CC libcurl_la-bufref.lo CC libcurl_la-cf-h1-proxy.lo CC libcurl_la-bufq.lo CC libcurl_la-cf-h2-proxy.lo CC libcurl_la-cf-haproxy.lo CC libcurl_la-cf-https-connect.lo CC libcurl_la-cf-ip-happy.lo CC libcurl_la-cf-socket.lo CC libcurl_la-cfilters.lo CC libcurl_la-conncache.lo CC libcurl_la-connect.lo CC libcurl_la-content_encoding.lo CC libcurl_la-cookie.lo CC libcurl_la-cshutdn.lo CC libcurl_la-curl_addrinfo.lo CC libcurl_la-curl_endian.lo CC libcurl_la-curl_fnmatch.lo CC libcurl_la-curl_fopen.lo CC libcurl_la-curl_get_line.lo CC libcurl_la-curl_gethostname.lo CC libcurl_la-curl_gssapi.lo CC libcurl_la-curl_memrchr.lo CC libcurl_la-curl_ntlm_core.lo CC libcurl_la-curl_range.lo CC libcurl_la-curl_rtmp.lo CC libcurl_la-curl_sasl.lo CC libcurl_la-curl_sha512_256.lo CC libcurl_la-curl_sspi.lo CC libcurl_la-curl_threads.lo CC libcurl_la-curl_trc.lo CC libcurl_la-cw-out.lo CC libcurl_la-cw-pause.lo CC libcurl_la-dict.lo CC libcurl_la-doh.lo CC libcurl_la-dynhds.lo CC libcurl_la-easy.lo CC libcurl_la-easygetopt.lo CC libcurl_la-easyoptions.lo CC libcurl_la-escape.lo CC libcurl_la-fake_addrinfo.lo CC libcurl_la-file.lo CC libcurl_la-fileinfo.lo CC libcurl_la-formdata.lo CC libcurl_la-ftp.lo CC libcurl_la-ftplistparser.lo CC libcurl_la-getenv.lo CC libcurl_la-getinfo.lo CC libcurl_la-gopher.lo CC libcurl_la-hash.lo CC libcurl_la-headers.lo CC libcurl_la-hmac.lo CC libcurl_la-hostip.lo CC libcurl_la-hostip4.lo CC libcurl_la-hostip6.lo CC libcurl_la-hsts.lo CC libcurl_la-http.lo CC libcurl_la-http1.lo CC libcurl_la-http2.lo CC libcurl_la-http_aws_sigv4.lo CC libcurl_la-http_chunks.lo CC libcurl_la-http_digest.lo CC libcurl_la-http_negotiate.lo CC libcurl_la-http_ntlm.lo CC libcurl_la-http_proxy.lo CC libcurl_la-httpsrr.lo CC libcurl_la-idn.lo CC libcurl_la-if2ip.lo CC libcurl_la-imap.lo CC libcurl_la-ldap.lo CC libcurl_la-llist.lo CC libcurl_la-macos.lo CC libcurl_la-md4.lo CC libcurl_la-md5.lo CC libcurl_la-memdebug.lo CC libcurl_la-mime.lo CC libcurl_la-mprintf.lo CC libcurl_la-mqtt.lo CC libcurl_la-multi.lo CC libcurl_la-multi_ev.lo CC libcurl_la-multi_ntfy.lo CC libcurl_la-netrc.lo CC libcurl_la-noproxy.lo CC libcurl_la-openldap.lo CC libcurl_la-parsedate.lo CC libcurl_la-pingpong.lo CC libcurl_la-pop3.lo CC libcurl_la-progress.lo CC libcurl_la-psl.lo CC libcurl_la-rand.lo CC libcurl_la-rename.lo CC libcurl_la-request.lo CC libcurl_la-rtsp.lo CC libcurl_la-select.lo CC libcurl_la-sendf.lo CC libcurl_la-setopt.lo CC libcurl_la-sha256.lo CC libcurl_la-share.lo CC libcurl_la-slist.lo CC libcurl_la-smb.lo CC libcurl_la-smtp.lo CC libcurl_la-socketpair.lo CC libcurl_la-socks.lo CC libcurl_la-socks_gssapi.lo CC libcurl_la-socks_sspi.lo CC libcurl_la-speedcheck.lo CC libcurl_la-splay.lo CC libcurl_la-strcase.lo CC libcurl_la-strdup.lo CC libcurl_la-strequal.lo CC libcurl_la-strerror.lo CC libcurl_la-system_win32.lo CC libcurl_la-telnet.lo CC libcurl_la-tftp.lo CC libcurl_la-transfer.lo CC libcurl_la-uint-bset.lo CC libcurl_la-uint-hash.lo CC libcurl_la-uint-spbset.lo CC libcurl_la-uint-table.lo CC libcurl_la-url.lo CC libcurl_la-urlapi.lo CC libcurl_la-version.lo CC libcurl_la-ws.lo CC libcurlu_la-altsvc.lo CC libcurlu_la-amigaos.lo CC libcurlu_la-asyn-ares.lo CC libcurlu_la-asyn-base.lo CC libcurlu_la-asyn-thrdd.lo CC libcurlu_la-bufq.lo CC libcurlu_la-bufref.lo CC libcurlu_la-cf-h1-proxy.lo CC libcurlu_la-cf-h2-proxy.lo CC libcurlu_la-cf-haproxy.lo CC libcurlu_la-cf-https-connect.lo CC libcurlu_la-cf-ip-happy.lo CC libcurlu_la-cf-socket.lo CC libcurlu_la-cfilters.lo CC libcurlu_la-conncache.lo CC libcurlu_la-connect.lo CC libcurlu_la-content_encoding.lo CC libcurlu_la-cookie.lo CC libcurlu_la-cshutdn.lo CC libcurlu_la-curl_addrinfo.lo CC libcurlu_la-curl_endian.lo CC libcurlu_la-curl_fnmatch.lo CC libcurlu_la-curl_fopen.lo CC libcurlu_la-curl_get_line.lo CC libcurlu_la-curl_gethostname.lo CC libcurlu_la-curl_gssapi.lo CC libcurlu_la-curl_memrchr.lo CC libcurlu_la-curl_ntlm_core.lo CC libcurlu_la-curl_range.lo CC libcurlu_la-curl_rtmp.lo CC libcurlu_la-curl_sasl.lo CC libcurlu_la-curl_sha512_256.lo CC libcurlu_la-curl_sspi.lo CC libcurlu_la-curl_threads.lo CC libcurlu_la-curl_trc.lo CC libcurlu_la-cw-out.lo CC libcurlu_la-cw-pause.lo CC libcurlu_la-dict.lo CC libcurlu_la-doh.lo CC libcurlu_la-dynhds.lo CC libcurlu_la-easy.lo CC libcurlu_la-easygetopt.lo CC libcurlu_la-easyoptions.lo CC libcurlu_la-escape.lo CC libcurlu_la-fake_addrinfo.lo CC libcurlu_la-file.lo CC libcurlu_la-fileinfo.lo CC libcurlu_la-formdata.lo CC libcurlu_la-ftp.lo CC libcurlu_la-ftplistparser.lo CC libcurlu_la-getenv.lo CC libcurlu_la-getinfo.lo CC libcurlu_la-gopher.lo CC libcurlu_la-hash.lo CC libcurlu_la-headers.lo CC libcurlu_la-hmac.lo CC libcurlu_la-hostip.lo CC libcurlu_la-hostip4.lo CC libcurlu_la-hostip6.lo CC libcurlu_la-hsts.lo CC libcurlu_la-http.lo CC libcurlu_la-http1.lo CC libcurlu_la-http2.lo CC libcurlu_la-http_aws_sigv4.lo CC libcurlu_la-http_chunks.lo CC libcurlu_la-http_digest.lo CC libcurlu_la-http_negotiate.lo CC libcurlu_la-http_ntlm.lo CC libcurlu_la-http_proxy.lo CC libcurlu_la-httpsrr.lo CC libcurlu_la-idn.lo CC libcurlu_la-if2ip.lo CC libcurlu_la-imap.lo CC libcurlu_la-ldap.lo CC libcurlu_la-llist.lo CC libcurlu_la-macos.lo CC libcurlu_la-md4.lo CC libcurlu_la-md5.lo CC libcurlu_la-memdebug.lo CC libcurlu_la-mime.lo CC libcurlu_la-mprintf.lo CC libcurlu_la-mqtt.lo CC libcurlu_la-multi.lo CC libcurlu_la-multi_ev.lo CC libcurlu_la-multi_ntfy.lo CC libcurlu_la-netrc.lo CC libcurlu_la-noproxy.lo CC libcurlu_la-openldap.lo CC libcurlu_la-parsedate.lo CC libcurlu_la-pingpong.lo CC libcurlu_la-pop3.lo CC libcurlu_la-progress.lo CC libcurlu_la-psl.lo CC libcurlu_la-rand.lo CC libcurlu_la-rename.lo CC libcurlu_la-request.lo CC libcurlu_la-rtsp.lo CC libcurlu_la-select.lo CC libcurlu_la-sendf.lo CC libcurlu_la-setopt.lo CC libcurlu_la-sha256.lo CC libcurlu_la-share.lo CC libcurlu_la-slist.lo CC libcurlu_la-smb.lo CC libcurlu_la-smtp.lo CC libcurlu_la-socketpair.lo CC libcurlu_la-socks.lo CC libcurlu_la-socks_gssapi.lo CC libcurlu_la-socks_sspi.lo CC libcurlu_la-speedcheck.lo CC libcurlu_la-splay.lo CC libcurlu_la-strcase.lo CC libcurlu_la-strdup.lo CC libcurlu_la-strequal.lo CC libcurlu_la-strerror.lo CC libcurlu_la-system_win32.lo CC libcurlu_la-telnet.lo CC libcurlu_la-tftp.lo CC libcurlu_la-transfer.lo CC libcurlu_la-uint-bset.lo CC libcurlu_la-uint-hash.lo CC libcurlu_la-uint-spbset.lo CC libcurlu_la-uint-table.lo CC libcurlu_la-url.lo CC libcurlu_la-urlapi.lo CC libcurlu_la-version.lo CC libcurlu_la-ws.lo CC vauth/libcurlu_la-cleartext.lo CC vauth/libcurlu_la-cram.lo CC vauth/libcurlu_la-digest.lo CC vauth/libcurlu_la-digest_sspi.lo CC vauth/libcurlu_la-gsasl.lo CC vauth/libcurlu_la-krb5_gssapi.lo CC vauth/libcurlu_la-krb5_sspi.lo CC vauth/libcurlu_la-ntlm.lo CC vauth/libcurlu_la-ntlm_sspi.lo CC vauth/libcurlu_la-oauth2.lo CC vauth/libcurlu_la-spnego_gssapi.lo CC vauth/libcurlu_la-spnego_sspi.lo CC vauth/libcurlu_la-vauth.lo CC vtls/libcurlu_la-apple.lo CC vtls/libcurlu_la-cipher_suite.lo CC vtls/libcurlu_la-gtls.lo CC vtls/libcurlu_la-hostcheck.lo CC vtls/libcurlu_la-keylog.lo CC vtls/libcurlu_la-mbedtls.lo CC vtls/libcurlu_la-mbedtls_threadlock.lo CC vtls/libcurlu_la-openssl.lo CC vtls/libcurlu_la-rustls.lo CC vtls/libcurlu_la-schannel.lo CC vtls/libcurlu_la-schannel_verify.lo CC vtls/libcurlu_la-vtls.lo CC vtls/libcurlu_la-vtls_scache.lo CC vtls/libcurlu_la-vtls_spack.lo CC vtls/libcurlu_la-wolfssl.lo CC vtls/libcurlu_la-x509asn1.lo CC vquic/libcurlu_la-curl_ngtcp2.lo CC vquic/libcurlu_la-curl_osslq.lo CC vquic/libcurlu_la-curl_quiche.lo CC vquic/libcurlu_la-vquic.lo CC vquic/libcurlu_la-vquic-tls.lo CC vssh/libcurlu_la-libssh.lo CC vssh/libcurlu_la-libssh2.lo CC vssh/libcurlu_la-curl_path.lo CC curlx/libcurlu_la-base64.lo CC curlx/libcurlu_la-dynbuf.lo CC curlx/libcurlu_la-fopen.lo CC curlx/libcurlu_la-inet_ntop.lo CC curlx/libcurlu_la-inet_pton.lo CC curlx/libcurlu_la-multibyte.lo CC curlx/libcurlu_la-nonblock.lo CC curlx/libcurlu_la-strerr.lo CC curlx/libcurlu_la-strparse.lo CC curlx/libcurlu_la-timediff.lo CC curlx/libcurlu_la-timeval.lo CC curlx/libcurlu_la-version_win32.lo CC curlx/libcurlu_la-wait.lo CC curlx/libcurlu_la-warnless.lo CC curlx/libcurlu_la-winapi.lo CC vauth/libcurl_la-cleartext.lo CC vauth/libcurl_la-cram.lo CC vauth/libcurl_la-digest.lo CC vauth/libcurl_la-gsasl.lo CC vauth/libcurl_la-digest_sspi.lo CC vauth/libcurl_la-krb5_gssapi.lo CC vauth/libcurl_la-krb5_sspi.lo CC vauth/libcurl_la-ntlm.lo CC vauth/libcurl_la-ntlm_sspi.lo CC vauth/libcurl_la-oauth2.lo CC vauth/libcurl_la-spnego_gssapi.lo CC vauth/libcurl_la-spnego_sspi.lo CC vauth/libcurl_la-vauth.lo CC vtls/libcurl_la-apple.lo CC vtls/libcurl_la-cipher_suite.lo CC vtls/libcurl_la-gtls.lo CC vtls/libcurl_la-hostcheck.lo CC vtls/libcurl_la-keylog.lo CC vtls/libcurl_la-mbedtls.lo CC vtls/libcurl_la-mbedtls_threadlock.lo CC vtls/libcurl_la-openssl.lo CC vtls/libcurl_la-rustls.lo CC vtls/libcurl_la-schannel.lo CC vtls/libcurl_la-schannel_verify.lo CC vtls/libcurl_la-vtls.lo CC vtls/libcurl_la-vtls_scache.lo CC vtls/libcurl_la-vtls_spack.lo CC vtls/libcurl_la-wolfssl.lo CC vtls/libcurl_la-x509asn1.lo CC vquic/libcurl_la-curl_ngtcp2.lo CC vquic/libcurl_la-curl_osslq.lo CC vquic/libcurl_la-curl_quiche.lo CC vquic/libcurl_la-vquic.lo CC vquic/libcurl_la-vquic-tls.lo CC vssh/libcurl_la-libssh.lo CC vssh/libcurl_la-libssh2.lo CC vssh/libcurl_la-curl_path.lo CC curlx/libcurl_la-base64.lo CC curlx/libcurl_la-dynbuf.lo CC curlx/libcurl_la-fopen.lo CC curlx/libcurl_la-inet_ntop.lo CC curlx/libcurl_la-inet_pton.lo CC curlx/libcurl_la-multibyte.lo CC curlx/libcurl_la-nonblock.lo CC curlx/libcurl_la-strerr.lo CC curlx/libcurl_la-strparse.lo CC curlx/libcurl_la-timediff.lo CC curlx/libcurl_la-timeval.lo CC curlx/libcurl_la-version_win32.lo CC curlx/libcurl_la-wait.lo CC curlx/libcurl_la-warnless.lo CC curlx/libcurl_la-winapi.lo CCLD libcurlu.la CCLD libcurl.la make[2]: Leaving directory '/build/curl/src/build-curl/lib' make[1]: Leaving directory '/build/curl/src/build-curl/lib' Making all in docs make[1]: Entering directory '/build/curl/src/build-curl/docs' RENDER mk-ca-bundle.1 RENDER runtests.1 RENDER curl-config.1 RENDER testcurl.1 Making all in . make[2]: Entering directory '/build/curl/src/build-curl/docs' RENDER wcurl.1 make[2]: Leaving directory '/build/curl/src/build-curl/docs' Making all in cmdline-opts make[2]: Entering directory '/build/curl/src/build-curl/docs/cmdline-opts' GENERATE curl.1 GENERATE curl.txt make[2]: Leaving directory '/build/curl/src/build-curl/docs/cmdline-opts' Making all in libcurl make[2]: Entering directory '/build/curl/src/build-curl/docs/libcurl' Making all in opts make[3]: Entering directory '/build/curl/src/build-curl/docs/libcurl/opts' RENDER CURLINFO_ACTIVESOCKET.3 RENDER CURLINFO_APPCONNECT_TIME.3 RENDER CURLINFO_APPCONNECT_TIME_T.3 RENDER CURLINFO_CAINFO.3 RENDER CURLINFO_CAPATH.3 RENDER CURLINFO_CERTINFO.3 RENDER CURLINFO_CONDITION_UNMET.3 RENDER CURLINFO_CONNECT_TIME.3 RENDER CURLINFO_CONN_ID.3 RENDER CURLINFO_CONNECT_TIME_T.3 RENDER CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 RENDER CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3 RENDER CURLINFO_CONTENT_LENGTH_UPLOAD_T.3 RENDER CURLINFO_CONTENT_LENGTH_UPLOAD.3 RENDER CURLINFO_CONTENT_TYPE.3 RENDER CURLINFO_COOKIELIST.3 RENDER CURLINFO_EARLYDATA_SENT_T.3 RENDER CURLINFO_EFFECTIVE_METHOD.3 RENDER CURLINFO_EFFECTIVE_URL.3 RENDER CURLINFO_FILETIME.3 RENDER CURLINFO_HEADER_SIZE.3 RENDER CURLINFO_HTTP_CONNECTCODE.3 RENDER CURLINFO_FTP_ENTRY_PATH.3 RENDER CURLINFO_FILETIME_T.3 RENDER CURLINFO_HTTP_VERSION.3 RENDER CURLINFO_HTTPAUTH_AVAIL.3 RENDER CURLINFO_HTTPAUTH_USED.3 RENDER CURLINFO_LASTSOCKET.3 RENDER CURLINFO_LOCAL_PORT.3 RENDER CURLINFO_LOCAL_IP.3 RENDER CURLINFO_NAMELOOKUP_TIME.3 RENDER CURLINFO_NAMELOOKUP_TIME_T.3 RENDER CURLINFO_NUM_CONNECTS.3 RENDER CURLINFO_OS_ERRNO.3 RENDER CURLINFO_PRETRANSFER_TIME.3 RENDER CURLINFO_POSTTRANSFER_TIME_T.3 RENDER CURLINFO_PRETRANSFER_TIME_T.3 RENDER CURLINFO_PRIMARY_IP.3 RENDER CURLINFO_PRIMARY_PORT.3 RENDER CURLINFO_PRIVATE.3 RENDER CURLINFO_PROXY_ERROR.3 RENDER CURLINFO_PROTOCOL.3 RENDER CURLINFO_PROXYAUTH_AVAIL.3 RENDER CURLINFO_PROXY_SSL_VERIFYRESULT.3 RENDER CURLINFO_PROXYAUTH_USED.3 RENDER CURLINFO_QUEUE_TIME_T.3 RENDER CURLINFO_REDIRECT_TIME.3 RENDER CURLINFO_REDIRECT_COUNT.3 RENDER CURLINFO_REDIRECT_TIME_T.3 RENDER CURLINFO_REDIRECT_URL.3 RENDER CURLINFO_REFERER.3 RENDER CURLINFO_RETRY_AFTER.3 RENDER CURLINFO_REQUEST_SIZE.3 RENDER CURLINFO_RESPONSE_CODE.3 RENDER CURLINFO_RTSP_CLIENT_CSEQ.3 RENDER CURLINFO_RTSP_CSEQ_RECV.3 RENDER CURLINFO_RTSP_SERVER_CSEQ.3 RENDER CURLINFO_RTSP_SESSION_ID.3 RENDER CURLINFO_SCHEME.3 RENDER CURLINFO_SIZE_DOWNLOAD.3 RENDER CURLINFO_SIZE_DOWNLOAD_T.3 RENDER CURLINFO_SIZE_UPLOAD.3 RENDER CURLINFO_SIZE_UPLOAD_T.3 RENDER CURLINFO_SPEED_DOWNLOAD.3 RENDER CURLINFO_SPEED_DOWNLOAD_T.3 RENDER CURLINFO_SPEED_UPLOAD.3 RENDER CURLINFO_SPEED_UPLOAD_T.3 RENDER CURLINFO_SSL_ENGINES.3 RENDER CURLINFO_SSL_VERIFYRESULT.3 RENDER CURLINFO_STARTTRANSFER_TIME.3 RENDER CURLINFO_STARTTRANSFER_TIME_T.3 RENDER CURLINFO_TLS_SESSION.3 RENDER CURLINFO_TLS_SSL_PTR.3 RENDER CURLINFO_TOTAL_TIME.3 RENDER CURLINFO_TOTAL_TIME_T.3 RENDER CURLINFO_XFER_ID.3 RENDER CURLMINFO_XFERS_ADDED.3 RENDER CURLINFO_USED_PROXY.3 RENDER CURLMINFO_XFERS_CURRENT.3 RENDER CURLMINFO_XFERS_DONE.3 RENDER CURLMINFO_XFERS_PENDING.3 RENDER CURLMINFO_XFERS_RUNNING.3 RENDER CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 RENDER CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 RENDER CURLMOPT_MAX_CONCURRENT_STREAMS.3 RENDER CURLMOPT_MAX_HOST_CONNECTIONS.3 RENDER CURLMOPT_MAX_PIPELINE_LENGTH.3 RENDER CURLMOPT_MAX_TOTAL_CONNECTIONS.3 RENDER CURLMOPT_MAXCONNECTS.3 RENDER CURLMOPT_NETWORK_CHANGED.3 RENDER CURLMOPT_NOTIFYDATA.3 RENDER CURLMOPT_NOTIFYFUNCTION.3 RENDER CURLMOPT_PIPELINING_SERVER_BL.3 RENDER CURLMOPT_PIPELINING.3 RENDER CURLMOPT_PIPELINING_SITE_BL.3 RENDER CURLMOPT_PUSHDATA.3 RENDER CURLMOPT_PUSHFUNCTION.3 RENDER CURLMOPT_SOCKETDATA.3 RENDER CURLMOPT_SOCKETFUNCTION.3 RENDER CURLMOPT_TIMERDATA.3 RENDER CURLMOPT_TIMERFUNCTION.3 RENDER CURLOPT_ABSTRACT_UNIX_SOCKET.3 RENDER CURLOPT_ACCEPT_ENCODING.3 RENDER CURLOPT_ACCEPTTIMEOUT_MS.3 RENDER CURLOPT_ADDRESS_SCOPE.3 RENDER CURLOPT_ALTSVC.3 RENDER CURLOPT_APPEND.3 RENDER CURLOPT_ALTSVC_CTRL.3 RENDER CURLOPT_AUTOREFERER.3 RENDER CURLOPT_AWS_SIGV4.3 RENDER CURLOPT_BUFFERSIZE.3 RENDER CURLOPT_CAINFO.3 RENDER CURLOPT_CAINFO_BLOB.3 RENDER CURLOPT_CAPATH.3 RENDER CURLOPT_CA_CACHE_TIMEOUT.3 RENDER CURLOPT_CERTINFO.3 RENDER CURLOPT_CHUNK_BGN_FUNCTION.3 RENDER CURLOPT_CHUNK_DATA.3 RENDER CURLOPT_CHUNK_END_FUNCTION.3 RENDER CURLOPT_CLOSESOCKETDATA.3 RENDER CURLOPT_CLOSESOCKETFUNCTION.3 RENDER CURLOPT_CONNECT_ONLY.3 RENDER CURLOPT_CONNECT_TO.3 RENDER CURLOPT_CONNECTTIMEOUT_MS.3 RENDER CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 RENDER CURLOPT_CONNECTTIMEOUT.3 RENDER CURLOPT_CONV_FROM_UTF8_FUNCTION.3 RENDER CURLOPT_CONV_TO_NETWORK_FUNCTION.3 RENDER CURLOPT_COOKIE.3 RENDER CURLOPT_COOKIEFILE.3 RENDER CURLOPT_COOKIEJAR.3 RENDER CURLOPT_COOKIELIST.3 RENDER CURLOPT_COOKIESESSION.3 RENDER CURLOPT_COPYPOSTFIELDS.3 RENDER CURLOPT_CRLF.3 RENDER CURLOPT_CRLFILE.3 RENDER CURLOPT_CURLU.3 RENDER CURLOPT_CUSTOMREQUEST.3 RENDER CURLOPT_DEBUGDATA.3 RENDER CURLOPT_DEBUGFUNCTION.3 RENDER CURLOPT_DEFAULT_PROTOCOL.3 RENDER CURLOPT_DIRLISTONLY.3 RENDER CURLOPT_DISALLOW_USERNAME_IN_URL.3 RENDER CURLOPT_DNS_CACHE_TIMEOUT.3 RENDER CURLOPT_DNS_INTERFACE.3 RENDER CURLOPT_DNS_LOCAL_IP4.3 RENDER CURLOPT_DNS_LOCAL_IP6.3 RENDER CURLOPT_DNS_SERVERS.3 RENDER CURLOPT_DNS_SHUFFLE_ADDRESSES.3 RENDER CURLOPT_DNS_USE_GLOBAL_CACHE.3 RENDER CURLOPT_DOH_SSL_VERIFYHOST.3 RENDER CURLOPT_DOH_SSL_VERIFYPEER.3 RENDER CURLOPT_DOH_SSL_VERIFYSTATUS.3 RENDER CURLOPT_ECH.3 RENDER CURLOPT_DOH_URL.3 RENDER CURLOPT_EGDSOCKET.3 RENDER CURLOPT_ERRORBUFFER.3 RENDER CURLOPT_EXPECT_100_TIMEOUT_MS.3 RENDER CURLOPT_FAILONERROR.3 RENDER CURLOPT_FILETIME.3 RENDER CURLOPT_FNMATCH_DATA.3 RENDER CURLOPT_FNMATCH_FUNCTION.3 RENDER CURLOPT_FOLLOWLOCATION.3 RENDER CURLOPT_FORBID_REUSE.3 RENDER CURLOPT_FRESH_CONNECT.3 RENDER CURLOPT_FTP_ACCOUNT.3 RENDER CURLOPT_FTP_ALTERNATIVE_TO_USER.3 RENDER CURLOPT_FTP_CREATE_MISSING_DIRS.3 RENDER CURLOPT_FTP_FILEMETHOD.3 RENDER CURLOPT_FTP_SKIP_PASV_IP.3 RENDER CURLOPT_FTP_SSL_CCC.3 RENDER CURLOPT_FTP_USE_EPRT.3 RENDER CURLOPT_FTP_USE_EPSV.3 RENDER CURLOPT_FTP_USE_PRET.3 RENDER CURLOPT_FTPPORT.3 RENDER CURLOPT_FTPSSLAUTH.3 RENDER CURLOPT_GSSAPI_DELEGATION.3 RENDER CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 RENDER CURLOPT_HAPROXYPROTOCOL.3 RENDER CURLOPT_HAPROXY_CLIENT_IP.3 RENDER CURLOPT_HEADER.3 RENDER CURLOPT_HEADERDATA.3 RENDER CURLOPT_HEADERFUNCTION.3 RENDER CURLOPT_HEADEROPT.3 RENDER CURLOPT_HSTS.3 RENDER CURLOPT_HSTS_CTRL.3 RENDER CURLOPT_HSTSREADDATA.3 RENDER CURLOPT_HSTSREADFUNCTION.3 RENDER CURLOPT_HSTSWRITEDATA.3 RENDER CURLOPT_HSTSWRITEFUNCTION.3 RENDER CURLOPT_HTTP09_ALLOWED.3 RENDER CURLOPT_HTTP200ALIASES.3 RENDER CURLOPT_HTTP_CONTENT_DECODING.3 RENDER CURLOPT_HTTP_TRANSFER_DECODING.3 RENDER CURLOPT_HTTP_VERSION.3 RENDER CURLOPT_HTTPGET.3 RENDER CURLOPT_HTTPAUTH.3 RENDER CURLOPT_HTTPHEADER.3 RENDER CURLOPT_HTTPPOST.3 RENDER CURLOPT_HTTPPROXYTUNNEL.3 RENDER CURLOPT_IGNORE_CONTENT_LENGTH.3 RENDER CURLOPT_INFILESIZE.3 RENDER CURLOPT_INFILESIZE_LARGE.3 RENDER CURLOPT_INTERLEAVEDATA.3 RENDER CURLOPT_INTERFACE.3 RENDER CURLOPT_INTERLEAVEFUNCTION.3 RENDER CURLOPT_IOCTLDATA.3 RENDER CURLOPT_IOCTLFUNCTION.3 RENDER CURLOPT_IPRESOLVE.3 RENDER CURLOPT_ISSUERCERT.3 RENDER CURLOPT_ISSUERCERT_BLOB.3 RENDER CURLOPT_KEEP_SENDING_ON_ERROR.3 RENDER CURLOPT_KEYPASSWD.3 RENDER CURLOPT_KRBLEVEL.3 RENDER CURLOPT_LOCALPORT.3 RENDER CURLOPT_LOCALPORTRANGE.3 RENDER CURLOPT_LOGIN_OPTIONS.3 RENDER CURLOPT_LOW_SPEED_LIMIT.3 RENDER CURLOPT_LOW_SPEED_TIME.3 RENDER CURLOPT_MAIL_AUTH.3 RENDER CURLOPT_MAIL_FROM.3 RENDER CURLOPT_MAIL_RCPT.3 RENDER CURLOPT_MAIL_RCPT_ALLOWFAILS.3 RENDER CURLOPT_MAX_RECV_SPEED_LARGE.3 RENDER CURLOPT_MAX_SEND_SPEED_LARGE.3 RENDER CURLOPT_MAXAGE_CONN.3 RENDER CURLOPT_MAXCONNECTS.3 RENDER CURLOPT_MAXFILESIZE.3 RENDER CURLOPT_MAXFILESIZE_LARGE.3 RENDER CURLOPT_MAXREDIRS.3 RENDER CURLOPT_MAXLIFETIME_CONN.3 RENDER CURLOPT_MIME_OPTIONS.3 RENDER CURLOPT_MIMEPOST.3 RENDER CURLOPT_NETRC.3 RENDER CURLOPT_NETRC_FILE.3 RENDER CURLOPT_NEW_DIRECTORY_PERMS.3 RENDER CURLOPT_NEW_FILE_PERMS.3 RENDER CURLOPT_NOBODY.3 RENDER CURLOPT_NOPROGRESS.3 RENDER CURLOPT_NOPROXY.3 RENDER CURLOPT_NOSIGNAL.3 RENDER CURLOPT_OPENSOCKETDATA.3 RENDER CURLOPT_OPENSOCKETFUNCTION.3 RENDER CURLOPT_PASSWORD.3 RENDER CURLOPT_PATH_AS_IS.3 RENDER CURLOPT_PINNEDPUBLICKEY.3 RENDER CURLOPT_PIPEWAIT.3 RENDER CURLOPT_PORT.3 RENDER CURLOPT_POST.3 RENDER CURLOPT_POSTFIELDS.3 RENDER CURLOPT_POSTFIELDSIZE.3 RENDER CURLOPT_POSTFIELDSIZE_LARGE.3 RENDER CURLOPT_POSTQUOTE.3 RENDER CURLOPT_POSTREDIR.3 RENDER CURLOPT_PRE_PROXY.3 RENDER CURLOPT_PREQUOTE.3 RENDER CURLOPT_PREREQDATA.3 RENDER CURLOPT_PREREQFUNCTION.3 RENDER CURLOPT_PRIVATE.3 RENDER CURLOPT_PROGRESSDATA.3 RENDER CURLOPT_PROGRESSFUNCTION.3 RENDER CURLOPT_PROTOCOLS.3 RENDER CURLOPT_PROTOCOLS_STR.3 RENDER CURLOPT_PROXY.3 RENDER CURLOPT_PROXY_CAINFO.3 RENDER CURLOPT_PROXY_CAINFO_BLOB.3 RENDER CURLOPT_PROXY_CAPATH.3 RENDER CURLOPT_PROXY_CRLFILE.3 RENDER CURLOPT_PROXY_ISSUERCERT.3 RENDER CURLOPT_PROXY_ISSUERCERT_BLOB.3 RENDER CURLOPT_PROXY_KEYPASSWD.3 RENDER CURLOPT_PROXY_PINNEDPUBLICKEY.3 RENDER CURLOPT_PROXY_SERVICE_NAME.3 RENDER CURLOPT_PROXY_SSL_CIPHER_LIST.3 RENDER CURLOPT_PROXY_SSL_OPTIONS.3 RENDER CURLOPT_PROXY_SSL_VERIFYHOST.3 RENDER CURLOPT_PROXY_SSL_VERIFYPEER.3 RENDER CURLOPT_PROXY_SSLCERT.3 RENDER CURLOPT_PROXY_SSLCERT_BLOB.3 RENDER CURLOPT_PROXY_SSLCERTTYPE.3 RENDER CURLOPT_PROXY_SSLKEY.3 RENDER CURLOPT_PROXY_SSLKEY_BLOB.3 RENDER CURLOPT_PROXY_SSLKEYTYPE.3 RENDER CURLOPT_PROXY_SSLVERSION.3 RENDER CURLOPT_PROXY_TLS13_CIPHERS.3 RENDER CURLOPT_PROXY_TLSAUTH_PASSWORD.3 RENDER CURLOPT_PROXY_TLSAUTH_TYPE.3 RENDER CURLOPT_PROXY_TLSAUTH_USERNAME.3 RENDER CURLOPT_PROXY_TRANSFER_MODE.3 RENDER CURLOPT_PROXYAUTH.3 RENDER CURLOPT_PROXYHEADER.3 RENDER CURLOPT_PROXYPASSWORD.3 RENDER CURLOPT_PROXYPORT.3 RENDER CURLOPT_PROXYTYPE.3 RENDER CURLOPT_PROXYUSERNAME.3 RENDER CURLOPT_PROXYUSERPWD.3 RENDER CURLOPT_PUT.3 RENDER CURLOPT_QUICK_EXIT.3 RENDER CURLOPT_QUOTE.3 RENDER CURLOPT_RANDOM_FILE.3 RENDER CURLOPT_RANGE.3 RENDER CURLOPT_READDATA.3 RENDER CURLOPT_READFUNCTION.3 RENDER CURLOPT_REDIR_PROTOCOLS.3 RENDER CURLOPT_REDIR_PROTOCOLS_STR.3 RENDER CURLOPT_REFERER.3 RENDER CURLOPT_REQUEST_TARGET.3 RENDER CURLOPT_RESOLVE.3 RENDER CURLOPT_RESOLVER_START_DATA.3 RENDER CURLOPT_RESOLVER_START_FUNCTION.3 RENDER CURLOPT_RESUME_FROM.3 RENDER CURLOPT_RESUME_FROM_LARGE.3 RENDER CURLOPT_RTSP_CLIENT_CSEQ.3 RENDER CURLOPT_RTSP_REQUEST.3 RENDER CURLOPT_RTSP_SERVER_CSEQ.3 RENDER CURLOPT_RTSP_SESSION_ID.3 RENDER CURLOPT_RTSP_STREAM_URI.3 RENDER CURLOPT_RTSP_TRANSPORT.3 RENDER CURLOPT_SASL_AUTHZID.3 RENDER CURLOPT_SASL_IR.3 RENDER CURLOPT_SEEKDATA.3 RENDER CURLOPT_SEEKFUNCTION.3 RENDER CURLOPT_SERVER_RESPONSE_TIMEOUT.3 RENDER CURLOPT_SERVER_RESPONSE_TIMEOUT_MS.3 RENDER CURLOPT_SERVICE_NAME.3 RENDER CURLOPT_SHARE.3 RENDER CURLOPT_SOCKOPTDATA.3 RENDER CURLOPT_SOCKOPTFUNCTION.3 RENDER CURLOPT_SOCKS5_AUTH.3 RENDER CURLOPT_SOCKS5_GSSAPI_NEC.3 RENDER CURLOPT_SOCKS5_GSSAPI_SERVICE.3 RENDER CURLOPT_SSH_AUTH_TYPES.3 RENDER CURLOPT_SSH_COMPRESSION.3 RENDER CURLOPT_SSH_HOSTKEYDATA.3 RENDER CURLOPT_SSH_HOSTKEYFUNCTION.3 RENDER CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 RENDER CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3 RENDER CURLOPT_SSH_KEYDATA.3 RENDER CURLOPT_SSH_KEYFUNCTION.3 RENDER CURLOPT_SSH_KNOWNHOSTS.3 RENDER CURLOPT_SSH_PRIVATE_KEYFILE.3 RENDER CURLOPT_SSH_PUBLIC_KEYFILE.3 RENDER CURLOPT_SSL_CIPHER_LIST.3 RENDER CURLOPT_SSL_CTX_DATA.3 RENDER CURLOPT_SSL_CTX_FUNCTION.3 RENDER CURLOPT_SSL_EC_CURVES.3 RENDER CURLOPT_SSL_ENABLE_ALPN.3 RENDER CURLOPT_SSL_ENABLE_NPN.3 RENDER CURLOPT_SSL_FALSESTART.3 RENDER CURLOPT_SSL_OPTIONS.3 RENDER CURLOPT_SSL_SESSIONID_CACHE.3 RENDER CURLOPT_SSL_SIGNATURE_ALGORITHMS.3 RENDER CURLOPT_SSL_VERIFYHOST.3 RENDER CURLOPT_SSL_VERIFYPEER.3 RENDER CURLOPT_SSL_VERIFYSTATUS.3 RENDER CURLOPT_SSLCERT.3 RENDER CURLOPT_SSLCERT_BLOB.3 RENDER CURLOPT_SSLCERTTYPE.3 RENDER CURLOPT_SSLENGINE.3 RENDER CURLOPT_SSLENGINE_DEFAULT.3 RENDER CURLOPT_SSLKEY.3 RENDER CURLOPT_SSLKEY_BLOB.3 RENDER CURLOPT_SSLKEYTYPE.3 RENDER CURLOPT_SSLVERSION.3 RENDER CURLOPT_STDERR.3 RENDER CURLOPT_STREAM_DEPENDS.3 RENDER CURLOPT_STREAM_DEPENDS_E.3 RENDER CURLOPT_STREAM_WEIGHT.3 RENDER CURLOPT_SUPPRESS_CONNECT_HEADERS.3 RENDER CURLOPT_TCP_FASTOPEN.3 RENDER CURLOPT_TCP_KEEPALIVE.3 RENDER CURLOPT_TCP_KEEPIDLE.3 RENDER CURLOPT_TCP_KEEPINTVL.3 RENDER CURLOPT_TCP_NODELAY.3 RENDER CURLOPT_TCP_KEEPCNT.3 RENDER CURLOPT_TELNETOPTIONS.3 RENDER CURLOPT_TFTP_BLKSIZE.3 RENDER CURLOPT_TFTP_NO_OPTIONS.3 RENDER CURLOPT_TIMECONDITION.3 RENDER CURLOPT_TIMEOUT.3 RENDER CURLOPT_TIMEOUT_MS.3 RENDER CURLOPT_TIMEVALUE.3 RENDER CURLOPT_TIMEVALUE_LARGE.3 RENDER CURLOPT_TLS13_CIPHERS.3 RENDER CURLOPT_TLSAUTH_PASSWORD.3 RENDER CURLOPT_TLSAUTH_TYPE.3 RENDER CURLOPT_TLSAUTH_USERNAME.3 RENDER CURLOPT_TRAILERDATA.3 RENDER CURLOPT_TRAILERFUNCTION.3 RENDER CURLOPT_TRANSFER_ENCODING.3 RENDER CURLOPT_TRANSFERTEXT.3 RENDER CURLOPT_UNIX_SOCKET_PATH.3 RENDER CURLOPT_UNRESTRICTED_AUTH.3 RENDER CURLOPT_UPKEEP_INTERVAL_MS.3 RENDER CURLOPT_UPLOAD.3 RENDER CURLOPT_UPLOAD_BUFFERSIZE.3 RENDER CURLOPT_UPLOAD_FLAGS.3 RENDER CURLOPT_URL.3 RENDER CURLOPT_USE_SSL.3 RENDER CURLOPT_USERAGENT.3 RENDER CURLOPT_USERNAME.3 RENDER CURLOPT_USERPWD.3 RENDER CURLOPT_VERBOSE.3 RENDER CURLOPT_WILDCARDMATCH.3 RENDER CURLOPT_WRITEDATA.3 RENDER CURLOPT_WRITEFUNCTION.3 RENDER CURLOPT_WS_OPTIONS.3 RENDER CURLOPT_XFERINFODATA.3 RENDER CURLOPT_XFERINFOFUNCTION.3 RENDER CURLOPT_XOAUTH2_BEARER.3 RENDER CURLSHOPT_LOCKFUNC.3 RENDER CURLSHOPT_SHARE.3 RENDER CURLSHOPT_UNLOCKFUNC.3 RENDER CURLSHOPT_UNSHARE.3 RENDER CURLSHOPT_USERDATA.3 make[3]: Leaving directory '/build/curl/src/build-curl/docs/libcurl/opts' make[3]: Entering directory '/build/curl/src/build-curl/docs/libcurl' RENDER curl_easy_cleanup.3 RENDER curl_easy_escape.3 RENDER curl_easy_duphandle.3 RENDER curl_easy_getinfo.3 RENDER curl_easy_init.3 RENDER curl_easy_nextheader.3 RENDER curl_easy_header.3 RENDER curl_easy_option_by_id.3 RENDER curl_easy_option_by_name.3 RENDER curl_easy_option_next.3 RENDER curl_easy_pause.3 RENDER curl_easy_perform.3 RENDER curl_easy_recv.3 RENDER curl_easy_reset.3 RENDER curl_easy_send.3 RENDER curl_easy_setopt.3 RENDER curl_easy_ssls_export.3 RENDER curl_easy_ssls_import.3 RENDER curl_easy_strerror.3 RENDER curl_easy_unescape.3 RENDER curl_easy_upkeep.3 RENDER curl_formadd.3 RENDER curl_escape.3 RENDER curl_formfree.3 RENDER curl_formget.3 RENDER curl_free.3 RENDER curl_getdate.3 RENDER curl_getenv.3 RENDER curl_global_cleanup.3 RENDER curl_global_init.3 RENDER curl_global_init_mem.3 RENDER curl_global_sslset.3 RENDER curl_global_trace.3 RENDER curl_mime_data.3 RENDER curl_mime_addpart.3 RENDER curl_mime_data_cb.3 RENDER curl_mime_encoder.3 RENDER curl_mime_filename.3 RENDER curl_mime_filedata.3 RENDER curl_mime_free.3 RENDER curl_mime_headers.3 RENDER curl_mime_name.3 RENDER curl_mime_init.3 RENDER curl_mime_subparts.3 RENDER curl_mime_type.3 RENDER curl_mprintf.3 RENDER curl_multi_add_handle.3 RENDER curl_multi_assign.3 RENDER curl_multi_cleanup.3 RENDER curl_multi_fdset.3 RENDER curl_multi_get_handles.3 RENDER curl_multi_get_offt.3 RENDER curl_multi_info_read.3 RENDER curl_multi_init.3 RENDER curl_multi_notify_disable.3 RENDER curl_multi_notify_enable.3 RENDER curl_multi_perform.3 RENDER curl_multi_poll.3 RENDER curl_multi_setopt.3 RENDER curl_multi_remove_handle.3 RENDER curl_multi_socket.3 RENDER curl_multi_socket_action.3 RENDER curl_multi_socket_all.3 RENDER curl_multi_strerror.3 RENDER curl_multi_wait.3 RENDER curl_multi_timeout.3 RENDER curl_multi_waitfds.3 RENDER curl_multi_wakeup.3 RENDER curl_pushheader_byname.3 RENDER curl_pushheader_bynum.3 RENDER curl_share_cleanup.3 RENDER curl_share_init.3 RENDER curl_share_strerror.3 RENDER curl_share_setopt.3 RENDER curl_slist_free_all.3 RENDER curl_slist_append.3 RENDER curl_strequal.3 RENDER curl_strnequal.3 RENDER curl_unescape.3 RENDER curl_url.3 RENDER curl_url_dup.3 RENDER curl_url_cleanup.3 RENDER curl_url_get.3 RENDER curl_url_set.3 RENDER curl_url_strerror.3 RENDER curl_version.3 RENDER curl_version_info.3 RENDER curl_ws_meta.3 RENDER curl_ws_recv.3 RENDER curl_ws_send.3 RENDER curl_ws_start_frame.3 RENDER libcurl-easy.3 RENDER libcurl-env-dbg.3 RENDER libcurl-env.3 RENDER libcurl-errors.3 RENDER libcurl-multi.3 RENDER libcurl-security.3 RENDER libcurl-share.3 RENDER libcurl-symbols.md RENDER libcurl-thread.3 RENDER libcurl-tutorial.3 RENDER libcurl-url.3 RENDER libcurl-ws.3 RENDER libcurl.3 RENDER libcurl-symbols.3 make[3]: Leaving directory '/build/curl/src/build-curl/docs/libcurl' make[2]: Leaving directory '/build/curl/src/build-curl/docs/libcurl' make[1]: Leaving directory '/build/curl/src/build-curl/docs' Making all in src make[1]: Entering directory '/build/curl/src/build-curl/src' CC curl-tool_cb_dbg.o CC curl-config2setopts.o CC curl-terminal.o CC curl-slist_wc.o CC curl-tool_cb_hdr.o CC curl-tool_cb_prg.o CC curl-tool_bname.o CC curl-tool_cb_rea.o CC curl-tool_cb_see.o CC curl-tool_cb_soc.o CC curl-tool_cb_wrt.o CC curl-tool_cfgable.o CC curl-tool_dirhie.o CC curl-tool_doswin.o CC curl-tool_easysrc.o CC curl-tool_filetime.o CC curl-tool_findfile.o CC curl-tool_formparse.o CC curl-tool_getparam.o CC curl-tool_getpass.o CC curl-tool_help.o CC curl-tool_helpers.o CC curl-tool_ipfs.o CC curl-tool_libinfo.o CC curl-tool_listhelp.o CC curl-tool_main.o CC curl-tool_msgs.o CC curl-tool_operate.o CC curl-tool_operhlp.o CC curl-tool_paramhlp.o CC curl-tool_parsecfg.o CC curl-tool_progress.o CC curl-tool_setopt.o CC curl-tool_ssls.o CC curl-tool_stderr.o CC curl-tool_strdup.o CC curl-tool_urlglob.o CC curl-tool_util.o CC curl-tool_vms.o CC curl-tool_writeout.o CC curl-tool_writeout_json.o CC curl-tool_xattr.o CC curl-var.o echo '/* !checksrc! disable COPYRIGHT all */' > tool_hugehelp.c; \ echo '#include "tool_hugehelp.h"' >> tool_hugehelp.c echo '/* !checksrc! disable COPYRIGHT all */' > tool_ca_embed.c echo 'extern const void *curl_ca_embed; const void *curl_ca_embed;' >> tool_ca_embed.c CC ../lib/curlx/curl-base64.o CC ../lib/curlx/curl-dynbuf.o CC ../lib/curlx/curl-fopen.o CC ../lib/curlx/curl-multibyte.o CC ../lib/curlx/curl-nonblock.o CC ../lib/curlx/curl-strerr.o CC ../lib/curlx/curl-strparse.o CC ../lib/curlx/curl-timediff.o CC ../lib/curlx/curl-timeval.o CC ../lib/curlx/curl-version_win32.o CC ../lib/curlx/curl-wait.o CC ../lib/curlx/curl-warnless.o CC ../lib/curlx/curl-winapi.o CC curlinfo.o CC libcurltool_la-config2setopts.lo CC libcurltool_la-slist_wc.lo CC libcurltool_la-terminal.lo CC libcurltool_la-tool_bname.lo CC libcurltool_la-tool_cb_hdr.lo CC libcurltool_la-tool_cb_dbg.lo CC libcurltool_la-tool_cb_prg.lo CC libcurltool_la-tool_cb_rea.lo CC libcurltool_la-tool_cb_see.lo CC libcurltool_la-tool_cb_soc.lo CC libcurltool_la-tool_cb_wrt.lo CC libcurltool_la-tool_cfgable.lo CC libcurltool_la-tool_dirhie.lo CC libcurltool_la-tool_doswin.lo CC libcurltool_la-tool_easysrc.lo CC libcurltool_la-tool_filetime.lo CC libcurltool_la-tool_findfile.lo CC libcurltool_la-tool_formparse.lo CC libcurltool_la-tool_getparam.lo CC libcurltool_la-tool_getpass.lo CC libcurltool_la-tool_help.lo CC libcurltool_la-tool_helpers.lo CC libcurltool_la-tool_ipfs.lo CC libcurltool_la-tool_libinfo.lo CC libcurltool_la-tool_listhelp.lo CC libcurltool_la-tool_main.lo CC libcurltool_la-tool_msgs.lo CC libcurltool_la-tool_operate.lo CC libcurltool_la-tool_operhlp.lo CC libcurltool_la-tool_paramhlp.lo CC libcurltool_la-tool_parsecfg.lo CC libcurltool_la-tool_progress.lo CC libcurltool_la-tool_setopt.lo CC libcurltool_la-tool_ssls.lo CC libcurltool_la-tool_stderr.lo CC libcurltool_la-tool_strdup.lo CC libcurltool_la-tool_urlglob.lo CC libcurltool_la-tool_util.lo CC libcurltool_la-tool_vms.lo CC libcurltool_la-tool_writeout.lo CC libcurltool_la-tool_writeout_json.lo CC libcurltool_la-tool_xattr.lo CC libcurltool_la-var.lo CC ../lib/curlx/libcurltool_la-base64.lo CC ../lib/curlx/libcurltool_la-dynbuf.lo CC ../lib/curlx/libcurltool_la-fopen.lo CC ../lib/curlx/libcurltool_la-multibyte.lo CC ../lib/curlx/libcurltool_la-nonblock.lo CC ../lib/curlx/libcurltool_la-strerr.lo CC ../lib/curlx/libcurltool_la-strparse.lo CC ../lib/curlx/libcurltool_la-timediff.lo CC ../lib/curlx/libcurltool_la-timeval.lo CC ../lib/curlx/libcurltool_la-version_win32.lo CC ../lib/curlx/libcurltool_la-wait.lo CC ../lib/curlx/libcurltool_la-warnless.lo CC ../lib/curlx/libcurltool_la-winapi.lo CC curl-tool_hugehelp.o CC curl-tool_ca_embed.o CCLD curlinfo CCLD curl CCLD libcurltool.la make[1]: Leaving directory '/build/curl/src/build-curl/src' Making all in scripts make[1]: Entering directory '/build/curl/src/build-curl/scripts' /usr/bin/perl /build/curl/src/curl/scripts/completion.pl --opts-dir /build/curl/src/curl/docs/cmdline-opts --shell zsh > _curl /usr/bin/perl /build/curl/src/curl/scripts/completion.pl --opts-dir /build/curl/src/curl/docs/cmdline-opts --shell fish > curl.fish make[1]: Leaving directory '/build/curl/src/build-curl/scripts' make[1]: Entering directory '/build/curl/src/build-curl' make[1]: Nothing to be done for 'all-am'. make[1]: Leaving directory '/build/curl/src/build-curl' checking whether to enable maintainer-specific portions of Makefiles... no checking whether make supports nested variables... yes checking whether to enable debug build options... no checking whether to enable compiler optimizer... (assumed) yes checking whether to enable strict compiler warnings... no checking whether to enable compiler warnings as errors... no checking whether to enable curl debug memory tracking... no checking whether to enable hiding of library internal symbols... yes checking whether to enable c-ares for DNS lookups... no checking whether to disable dependency on -lrt... (assumed no) checking whether to enable HTTPSRR support... no checking whether to enable ECH support... no checking whether to enable SSL session export support... no checking for path separator... : checking for sed... /usr/bin/sed checking for grep... /usr/bin/grep checking that grep -E works... yes checking for ar... /usr/bin/ar checking for a BSD-compatible install... /usr/bin/install -c checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether the compiler supports GNU C... yes checking whether gcc accepts -g... yes checking for gcc option to enable C11 features... none needed checking whether gcc understands -c and -o together... yes checking how to run the C preprocessor... gcc -E checking for stdio.h... yes checking for stdlib.h... yes checking for string.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for strings.h... yes checking for sys/stat.h... yes checking for sys/types.h... yes checking for unistd.h... yes checking for stdatomic.h... yes checking if _Atomic is available... yes checking whether sleep supports fractional seconds... yes checking filesystem timestamp resolution... 0.01 checking whether build environment is sane... yes checking for a race-free mkdir -p... /usr/bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports the include directive... yes (GNU style) checking xargs -n works... yes checking whether UID '1000' is supported by ustar format... yes checking whether GID '1000' is supported by ustar format... yes checking how to create a ustar tar archive... gnutar checking dependency style of gcc... gcc3 checking curl version... 8.17.0 checking for perl... /usr/bin/perl checking for httpd... no checking for apache2... no checking for apxs... no configure: httpd/apache2 not in PATH, http tests disabled configure: apxs not in PATH, http tests disabled checking for danted... no checking for danted... no checking for nghttpx... no checking for caddy... no checking build system type... riscv64-unknown-linux-gnu checking host system type... riscv64-unknown-linux-gnu checking for egrep -e... /usr/bin/grep -E checking if OS is AIX (to define _ALL_SOURCE)... no checking if _THREAD_SAFE is already defined... no checking if _THREAD_SAFE is actually needed... no checking if _THREAD_SAFE is onwards defined... no checking if _REENTRANT is already defined... no checking if _REENTRANT is actually needed... no checking if _REENTRANT is onwards defined... no checking for gcc option to enable large file support... none needed checking how to print strings... printf checking for a sed that does not truncate output... (cached) /usr/bin/sed checking for grep that handles long lines and -e... (cached) /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for fgrep... /usr/bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert riscv64-unknown-linux-gnu file names to riscv64-unknown-linux-gnu format... func_convert_file_noop checking how to convert riscv64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for file... file checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ranlib... ranlib checking for archiver @FILE support... @ checking for strip... strip checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /usr/bin/dd checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1 checking for mt... no checking if : is a manifest tool... no checking for dlfcn.h... yes checking which variant of shared library versioning to provide... (default) aix checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking whether to build shared libraries with -version-info... yes checking whether to build shared libraries with -no-undefined... no checking whether to build shared libraries with -mimpure-text... no checking whether to build shared libraries with PIC... yes checking whether to build static libraries with PIC... no checking whether to build shared libraries only... no checking whether to build static libraries only... no checking for windres... no checking if cpp -P is needed... yes checking if cpp -P works... yes checking if compiler is DEC/Compaq/HP C... no checking if compiler is HP-UX C... no checking if compiler is IBM C... no checking if compiler is Intel C... no checking if compiler is clang... no checking if compiler is GNU C... yes checking compiler version... gcc '1502' (raw: '15.2.1') checking if compiler is SunPro C... no checking if compiler is Tiny C... no checking for code coverage support... no checking whether build target is a native Windows one... no checking if compiler accepts some basic options... yes configure: compiler options added: -Werror-implicit-function-declaration checking if compiler optimizer assumed setting might be used... no checking if compiler accepts strict warning options... yes configure: compiler options added: -Wno-system-headers checking if compiler halts on compilation errors... yes checking if compiler halts on negative sized arrays... yes checking if compiler halts on function prototype mismatch... yes checking if compiler supports hiding library internal symbols... yes checking whether build target supports Win32 crypto API... no checking whether to build libcurl and curl in "unity" mode... no checking whether to support http... yes checking whether to support ftp... yes checking whether to support file... yes checking whether to support IPFS... yes checking whether to support ldap... no checking whether to support ldaps... no checking whether to support rtsp... yes checking whether to support proxies... yes checking whether to support dict... yes checking whether to support telnet... yes checking whether to support tftp... yes checking whether to support pop3... yes checking whether to support imap... yes checking whether to support smb... yes checking whether to support smtp... yes checking whether to support gopher... yes checking whether to support mqtt... no checking whether to provide built-in manual... no checking whether to build documentation... yes checking whether to enable generation of C code... yes checking whether to use libgcc... no checking if X/Open network library is required... no checking for gethostbyname... yes checking whether build target is a native Windows one... (cached) no checking for proto/bsdsocket.h... no checking for connect in libraries... yes checking for sys/types.h... (cached) yes checking for monotonic clock_gettime... yes checking for clock_gettime in libraries... no additional lib required checking if monotonic clock_gettime works... yes checking for sys/types.h... (cached) yes checking for raw monotonic clock_gettime... yes checking for pkg-config... /usr/bin/pkg-config checking for zlib options with pkg-config... found checking for zlib.h... yes configure: found both libz and libz.h header checking for BrotliDecoderDecompress in -lbrotlidec... yes checking for brotli/decode.h... yes checking for ZSTD_createDStream in -lzstd... yes checking for zstd.h... yes checking whether to enable IPv6... yes checking if struct sockaddr_in6 has sin6_scope_id member... yes checking if argv can be written to... yes checking if GSS-API support is requested... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for mit-krb5-gssapi options with pkg-config... found checking for gss.h... no checking for gssapi/gssapi.h... yes checking for gssapi/gssapi_generic.h... yes checking for gssapi/gssapi_krb5.h... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for mit-krb5-gssapi options with pkg-config... found configure: GSS-API MIT Kerberos version detected: 1.21.3 checking if we can link against GSS-API library... yes checking whether to enable Windows native SSL/TLS... no checking whether to enable Amiga native SSL/TLS (AmiSSL v5)... no checking for pkg-config... (cached) /usr/bin/pkg-config checking for openssl options with pkg-config... found configure: pkg-config: SSL_LIBS: "-lssl -lcrypto" configure: pkg-config: SSL_LDFLAGS: "" configure: pkg-config: SSL_CPPFLAGS: "" checking for HMAC_Update in -lcrypto... yes checking for SSL_connect in -lssl... yes checking for openssl/x509.h... yes checking for openssl/rsa.h... yes checking for openssl/crypto.h... yes checking for openssl/pem.h... yes checking for openssl/ssl.h... yes checking for openssl/err.h... yes checking for BoringSSL... no checking for AWS-LC... no checking for LibreSSL... no checking for OpenSSL >= v3... yes checking for SSL_set_quic_use_legacy_codepoint... no checking for SSL_set_quic_tls_cbs... yes configure: OpenSSL with QUIC APIv2 checking for DES support in OpenSSL... yes checking for SRP support in OpenSSL... yes checking for QUIC support and OpenSSL >= 3.3... yes checking whether to enable Apple OS native certificate validation... no configure: built with one SSL backend checking default CA cert bundle/path... /etc/ssl/certs/ca-certificates.crt checking whether to use OpenSSL's built-in CA store... no checking CA cert bundle path to embed in the curl tool... no checking for pkg-config... (cached) /usr/bin/pkg-config checking for libpsl options with pkg-config... found checking for psl_builtin in -lpsl... yes checking for libpsl.h... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for libssh2 options with pkg-config... found checking for libssh2_agent_get_identity_path in -lssh2... yes checking for libssh2.h... yes checking for RTMP_Init in -lrtmp... no checking whether versioned symbols are wanted... no checking whether to build with libidn2... (assumed) yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for libidn2 options with pkg-config... found configure: pkg-config: IDN_LIBS: "-lidn2" configure: pkg-config: IDN_LDFLAGS: "" configure: pkg-config: IDN_CPPFLAGS: "" configure: pkg-config: IDN_DIR: "" checking if idn2_lookup_ul can be linked... yes checking for idn2.h... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for libnghttp2 options with pkg-config... found configure: -l is -lnghttp2 configure: -I is configure: -L is checking for nghttp2_session_get_stream_local_window_size in -lnghttp2... yes checking for nghttp2/nghttp2.h... yes configure: Added to CURL_LIBRARY_PATH checking for pkg-config... (cached) /usr/bin/pkg-config checking for libnghttp3 options with pkg-config... found configure: -l is -lnghttp3 configure: -I is configure: -L is checking for nghttp3_conn_client_new_versioned in -lnghttp3... yes checking for nghttp3/nghttp3.h... yes configure: Added to CURL_LIBRARY_PATH configure: HTTP3 support is experimental checking for sys/types.h... (cached) yes checking for sys/select.h... yes checking for sys/ioctl.h... yes checking for unistd.h... (cached) yes checking for arpa/inet.h... yes checking for net/if.h... yes checking for netinet/in.h... yes checking for netinet/in6.h... no checking for sys/un.h... yes checking for linux/tcp.h... yes checking for netinet/tcp.h... yes checking for netinet/udp.h... yes checking for netdb.h... yes checking for sys/sockio.h... no checking for sys/param.h... yes checking for termios.h... yes checking for termio.h... no checking for fcntl.h... yes checking for io.h... no checking for pwd.h... yes checking for utime.h... yes checking for sys/utime.h... no checking for sys/poll.h... yes checking for poll.h... yes checking for sys/resource.h... yes checking for libgen.h... yes checking for locale.h... yes checking for stdbool.h... yes checking for stdint.h... (cached) yes checking for sys/filio.h... no checking for sys/eventfd.h... yes checking for an ANSI C-conforming const... yes checking for size_t... yes checking for sys/types.h... (cached) yes checking for struct timeval... yes checking run-time libs availability... fine checking size of size_t... 8 checking size of long... 8 checking size of int... 4 checking size of time_t... 8 checking size of off_t... 8 checking size of curl_off_t... 8 checking size of curl_socket_t... 4 checking for long long... yes checking for ssize_t... yes checking for bool... yes checking for sa_family_t... yes checking for suseconds_t... yes checking if time_t is unsigned... no checking for struct sockaddr_storage... yes checking for sys/select.h... (cached) yes checking for select... yes checking for sys/types.h... (cached) yes checking for recv... yes checking for sys/types.h... (cached) yes checking for send... yes checking for sys/types.h... (cached) yes checking for MSG_NOSIGNAL... yes checking for sys/types.h... (cached) yes checking for unistd.h... (cached) yes checking if alarm can be linked... yes checking if alarm is prototyped... yes checking if alarm is compilable... yes checking if alarm usage allowed... yes checking if alarm might be used... yes checking for sys/types.h... (cached) yes checking for strings.h... (cached) yes checking for sys/types.h... (cached) yes checking for libgen.h... (cached) yes checking if basename can be linked... yes checking if basename is prototyped... yes checking if basename is compilable... yes checking if basename usage allowed... yes checking if basename might be used... yes checking if closesocket can be linked... no checking if closesocket might be used... no checking for sys/types.h... (cached) yes checking if CloseSocket can be linked... no checking if CloseSocket might be used... no checking for sys/types.h... (cached) yes checking for unistd.h... (cached) yes checking for fcntl.h... (cached) yes checking if fcntl can be linked... yes checking if fcntl is prototyped... yes checking if fcntl is compilable... yes checking if fcntl usage allowed... yes checking if fcntl might be used... yes checking if fcntl O_NONBLOCK is compilable... yes checking if fcntl O_NONBLOCK usage allowed... yes checking if fcntl O_NONBLOCK might be used... yes checking whether build target is a native Windows one... (cached) no checking for sys/types.h... (cached) yes checking for netdb.h... (cached) yes checking if freeaddrinfo can be linked... yes checking if freeaddrinfo is prototyped... yes checking if freeaddrinfo is compilable... yes checking if freeaddrinfo usage allowed... yes checking if freeaddrinfo might be used... yes checking for sys/types.h... (cached) yes checking for sys/xattr.h... yes checking if fsetxattr can be linked... yes checking if fsetxattr is prototyped... yes checking if fsetxattr takes 5 args.... yes checking if fsetxattr is compilable... yes checking if fsetxattr usage allowed... yes checking if fsetxattr might be used... yes checking if ftruncate can be linked... yes checking if ftruncate is prototyped... yes checking if ftruncate is compilable... yes checking if ftruncate usage allowed... yes checking if ftruncate might be used... yes checking for sys/types.h... (cached) yes checking if getaddrinfo can be linked... yes checking if getaddrinfo is prototyped... yes checking if getaddrinfo is compilable... yes checking if getaddrinfo seems to work... yes checking if getaddrinfo usage allowed... yes checking if getaddrinfo might be used... yes checking if getaddrinfo is threadsafe... yes checking if gethostbyname_r can be linked... yes checking if gethostbyname_r is prototyped... yes checking if gethostbyname_r takes 3 args.... no checking if gethostbyname_r takes 5 args.... no checking if gethostbyname_r takes 6 args.... yes checking if gethostbyname_r is compilable... yes checking if gethostbyname_r usage allowed... yes checking if gethostbyname_r might be used... yes checking if gethostname can be linked... yes checking if gethostname is prototyped... yes checking if gethostname is compilable... yes checking for gethostname arg 2 data type... size_t checking if gethostname usage allowed... yes checking if gethostname might be used... yes checking for sys/types.h... (cached) yes checking for netinet/in.h... (cached) yes checking for ifaddrs.h... yes checking if getifaddrs can be linked... yes checking if getifaddrs is prototyped... yes checking if getifaddrs is compilable... yes checking if getifaddrs seems to work... yes checking if getifaddrs usage allowed... yes checking if getifaddrs might be used... yes checking if getpeername can be linked... yes checking if getpeername is prototyped... yes checking if getpeername is compilable... yes checking if getpeername usage allowed... yes checking if getpeername might be used... yes checking if getsockname can be linked... yes checking if getsockname is prototyped... yes checking if getsockname is compilable... yes checking if getsockname usage allowed... yes checking if getsockname might be used... yes checking for sys/types.h... (cached) yes checking if gmtime_r can be linked... yes checking if gmtime_r is prototyped... yes checking if gmtime_r is compilable... yes checking if gmtime_r seems to work... yes checking if gmtime_r usage allowed... yes checking if gmtime_r might be used... yes checking for sys/types.h... (cached) yes checking for unistd.h... (cached) yes checking for sys/ioctl.h... (cached) yes checking for stropts.h... no checking if ioctl can be linked... yes checking if ioctl is prototyped... yes checking if ioctl is compilable... yes checking if ioctl usage allowed... yes checking if ioctl might be used... yes checking if ioctl FIONBIO is compilable... yes checking if ioctl FIONBIO usage allowed... yes checking if ioctl FIONBIO might be used... yes checking if ioctl SIOCGIFADDR is compilable... yes checking if ioctl SIOCGIFADDR usage allowed... yes checking if ioctl SIOCGIFADDR might be used... yes checking if ioctlsocket can be linked... no checking if ioctlsocket might be used... no checking if IoctlSocket can be linked... no checking if IoctlSocket might be used... no checking if memrchr can be linked... yes checking if memrchr is prototyped... yes checking if memrchr is compilable... yes checking if memrchr usage allowed... yes checking if memrchr might be used... yes checking for sys/types.h... (cached) yes checking if sigaction can be linked... yes checking if sigaction is prototyped... yes checking if sigaction is compilable... yes checking if sigaction usage allowed... yes checking if sigaction might be used... yes checking if siginterrupt can be linked... yes checking if siginterrupt is prototyped... yes checking if siginterrupt is compilable... yes checking if siginterrupt usage allowed... yes checking if siginterrupt might be used... yes checking if signal can be linked... yes checking if signal is prototyped... yes checking if signal is compilable... yes checking if signal usage allowed... yes checking if signal might be used... yes checking for sys/types.h... (cached) yes checking if sigsetjmp can be linked... no checking if sigsetjmp seems a macro... yes checking if sigsetjmp is compilable... yes checking if sigsetjmp usage allowed... yes checking if sigsetjmp might be used... yes checking if socket can be linked... yes checking if socket is prototyped... yes checking if socket is compilable... yes checking if socket usage allowed... yes checking if socket might be used... yes checking if socketpair can be linked... yes checking if socketpair is prototyped... yes checking if socketpair is compilable... yes checking if socketpair usage allowed... yes checking if socketpair might be used... yes checking if strdup can be linked... yes checking if strdup is prototyped... yes checking if strdup is compilable... yes checking if strdup usage allowed... yes checking if strdup might be used... yes checking if strerror_r can be linked... yes checking if strerror_r is prototyped... yes checking if strerror_r is compilable... yes checking if strerror_r is glibc like... yes checking if strerror_r seems to work... yes checking if strerror_r usage allowed... yes checking if strerror_r might be used... yes checking for accept4... yes checking for eventfd... yes checking for fnmatch... yes checking for geteuid... yes checking for getpass_r... no checking for getppid... yes checking for getpwuid... yes checking for getpwuid_r... yes checking for getrlimit... yes checking for gettimeofday... yes checking for mach_absolute_time... no checking for pipe... yes checking for pipe2... yes checking for poll... yes checking for sendmmsg... yes checking for sendmsg... yes checking for setlocale... yes checking for setrlimit... yes checking for snprintf... yes checking for utime... yes checking for utimes... yes checking for if_nametoindex... yes checking for realpath... yes checking for sched_yield... yes checking for sys/types.h... (cached) yes checking for netinet/in.h... (cached) yes checking for arpa/inet.h... (cached) yes checking if inet_ntop can be linked... yes checking if inet_ntop is prototyped... yes checking if inet_ntop is compilable... yes checking if inet_ntop seems to work... yes checking if inet_ntop usage allowed... yes checking if inet_ntop might be used... yes checking if inet_pton can be linked... yes checking if inet_pton is prototyped... yes checking if inet_pton is compilable... yes checking if inet_pton seems to work... yes checking if inet_pton usage allowed... yes checking if inet_pton might be used... yes checking if strcasecmp can be linked... yes checking if strcasecmp is prototyped... yes checking if strcasecmp is compilable... yes checking if strcasecmp usage allowed... yes checking if strcasecmp might be used... yes checking if strcmpi can be linked... no checking if strcmpi might be used... no checking if stricmp can be linked... no checking if stricmp might be used... no checking for setmode... no checking for fseeko... yes checking for gcc options needed to detect all undeclared functions... none needed checking whether fseeko is declared... yes checking how to set a socket into non-blocking mode... fcntl O_NONBLOCK checking whether to enable the threaded resolver... yes checking for pthread.h... yes checking for pthread_create... yes checking for dirent.h... yes checking for opendir... yes checking convert -I options to -isystem... yes checking whether to enable verbose strings... yes checking whether to enable SSPI support (Windows native builds only)... no checking whether to enable basic authentication method... yes checking whether to enable bearer authentication method... yes checking whether to enable digest authentication method... yes checking whether to enable kerberos authentication method... yes checking whether to enable negotiate authentication method... yes checking whether to enable aws sig methods... yes checking whether to support NTLM... yes checking whether to enable TLS-SRP authentication... yes checking whether to enable Unix domain sockets... auto checking for struct sockaddr_un.sun_path... yes checking whether to support cookies... yes checking whether to support socketpair... yes checking whether to support HTTP authentication... yes checking whether to support DoH... yes checking whether to support the MIME API... yes checking whether to support binding connections locally... yes checking whether to support the form API... yes checking whether to support date parsing... yes checking whether to support netrc parsing... yes checking whether to support progress-meter... yes checking whether to support the SHA-512/256 hash algorithm... yes checking whether to support DNS shuffling... yes checking whether to support curl_easy_option*... yes checking whether to support alt-svc... yes checking whether to support headers-api... yes checking whether to support HSTS... yes checking whether to enable HTTPS-RR support... no checking for SSL_set0_wbio... yes checking whether to support WebSockets... yes checking whether hiding of library internal symbols will actually happen... yes checking if this build supports HTTPS-proxy... yes checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating docs/Makefile config.status: creating docs/examples/Makefile config.status: creating docs/libcurl/Makefile config.status: creating docs/libcurl/opts/Makefile config.status: creating docs/cmdline-opts/Makefile config.status: creating include/Makefile config.status: creating include/curl/Makefile config.status: creating src/Makefile config.status: creating lib/Makefile config.status: creating scripts/Makefile config.status: creating lib/libcurl.vers config.status: creating tests/Makefile config.status: creating tests/config config.status: creating tests/configurehelp.pm config.status: creating tests/certs/Makefile config.status: creating tests/data/Makefile config.status: creating tests/server/Makefile config.status: creating tests/libtest/Makefile config.status: creating tests/unit/Makefile config.status: creating tests/tunit/Makefile config.status: creating tests/http/config.ini config.status: creating tests/http/Makefile config.status: creating packages/Makefile config.status: creating packages/vms/Makefile config.status: creating libcurl.pc config.status: creating curl-config config.status: creating lib/curl_config.h config.status: executing depfiles commands config.status: executing libtool commands configure: Configured to build curl/libcurl: Host setup: riscv64-unknown-linux-gnu Install prefix: /usr Compiler: gcc CFLAGS: -march=rv64gc -mabi=lp64d -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fno-omit-frame-pointer -g -ffile-prefix-map=/build/curl/src=/usr/src/debug/curl -flto=auto -Werror-implicit-function-declaration -Wno-system-headers CFLAGS extras: CPPFLAGS: -D_GNU_SOURCE LDFLAGS: -Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -flto=auto curl-config: LIBS: -lnghttp3 -lnghttp2 -lidn2 -lssh2 -lssh2 -lpsl -lssl -lcrypto -lssl -lcrypto -lgssapi_krb5 -lzstd -lbrotlidec -lz curl version: 8.17.0 SSL: enabled (OpenSSL v3+) SSH: enabled (libssh2) zlib: enabled brotli: enabled (libbrotlidec) zstd: enabled (libzstd) GSS-API: enabled (MIT Kerberos) GSASL: no (--with-gsasl) TLS-SRP: enabled resolver: POSIX threaded IPv6: enabled Unix sockets: enabled IDN: enabled (libidn2) Build docs: enabled (--disable-docs) Build libcurl: Shared=yes, Static=yes Built-in manual: no (--enable-manual) --libcurl option: enabled (--disable-libcurl-option) Verbose errors: enabled (--disable-verbose) Code coverage: disabled SSPI: no (--enable-sspi) ca native: no ca cert bundle: /etc/ssl/certs/ca-certificates.crt ca cert path: no ca cert embed: no ca fallback: no LDAP: no (--enable-ldap / --with-ldap-lib / --with-lber-lib) LDAPS: no (--enable-ldaps) IPFS/IPNS: enabled RTSP: enabled RTMP: no (--with-librtmp) PSL: enabled Alt-svc: enabled (--disable-alt-svc) Headers API: enabled (--disable-headers-api) HSTS: enabled (--disable-hsts) HTTP1: enabled (internal) HTTP2: enabled (nghttp2) HTTP3: enabled (openssl + nghttp3) ECH: no (--enable-ech) HTTPS RR: no (--enable-httpsrr) SSLS-EXPORT: no (--enable-ssls-export) Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd configure: WARNING: HTTP3 is enabled but marked EXPERIMENTAL. Use with caution! make: Entering directory '/build/curl/src/build-curl-compat/lib' make all-am make[1]: Entering directory '/build/curl/src/build-curl-compat/lib' CC libcurl_la-altsvc.lo CC libcurl_la-asyn-ares.lo CC libcurl_la-amigaos.lo CC libcurl_la-asyn-base.lo CC libcurl_la-asyn-thrdd.lo CC libcurl_la-bufq.lo CC libcurl_la-bufref.lo CC libcurl_la-cf-h1-proxy.lo CC libcurl_la-cf-h2-proxy.lo CC libcurl_la-cf-haproxy.lo CC libcurl_la-cf-https-connect.lo CC libcurl_la-cf-ip-happy.lo CC libcurl_la-cf-socket.lo CC libcurl_la-cfilters.lo CC libcurl_la-conncache.lo CC libcurl_la-connect.lo CC libcurl_la-content_encoding.lo CC libcurl_la-cookie.lo CC libcurl_la-cshutdn.lo CC libcurl_la-curl_addrinfo.lo CC libcurl_la-curl_endian.lo CC libcurl_la-curl_fnmatch.lo CC libcurl_la-curl_fopen.lo CC libcurl_la-curl_get_line.lo CC libcurl_la-curl_gethostname.lo CC libcurl_la-curl_gssapi.lo CC libcurl_la-curl_memrchr.lo CC libcurl_la-curl_ntlm_core.lo CC libcurl_la-curl_range.lo CC libcurl_la-curl_rtmp.lo CC libcurl_la-curl_sasl.lo CC libcurl_la-curl_sha512_256.lo CC libcurl_la-curl_sspi.lo CC libcurl_la-curl_threads.lo CC libcurl_la-curl_trc.lo CC libcurl_la-cw-out.lo CC libcurl_la-cw-pause.lo CC libcurl_la-dict.lo CC libcurl_la-doh.lo CC libcurl_la-dynhds.lo CC libcurl_la-easy.lo CC libcurl_la-easygetopt.lo CC libcurl_la-easyoptions.lo CC libcurl_la-escape.lo CC libcurl_la-fake_addrinfo.lo CC libcurl_la-file.lo CC libcurl_la-fileinfo.lo CC libcurl_la-formdata.lo CC libcurl_la-ftp.lo CC libcurl_la-ftplistparser.lo CC libcurl_la-getenv.lo CC libcurl_la-getinfo.lo CC libcurl_la-gopher.lo CC libcurl_la-hash.lo CC libcurl_la-headers.lo CC libcurl_la-hmac.lo CC libcurl_la-hostip.lo CC libcurl_la-hostip4.lo CC libcurl_la-hostip6.lo CC libcurl_la-hsts.lo CC libcurl_la-http.lo CC libcurl_la-http1.lo CC libcurl_la-http2.lo CC libcurl_la-http_aws_sigv4.lo CC libcurl_la-http_chunks.lo CC libcurl_la-http_digest.lo CC libcurl_la-http_negotiate.lo CC libcurl_la-http_ntlm.lo CC libcurl_la-http_proxy.lo CC libcurl_la-httpsrr.lo CC libcurl_la-idn.lo CC libcurl_la-if2ip.lo CC libcurl_la-imap.lo CC libcurl_la-ldap.lo CC libcurl_la-llist.lo CC libcurl_la-macos.lo CC libcurl_la-md4.lo CC libcurl_la-md5.lo CC libcurl_la-memdebug.lo CC libcurl_la-mime.lo CC libcurl_la-mprintf.lo CC libcurl_la-mqtt.lo CC libcurl_la-multi.lo CC libcurl_la-multi_ev.lo CC libcurl_la-multi_ntfy.lo CC libcurl_la-netrc.lo CC libcurl_la-noproxy.lo CC libcurl_la-openldap.lo CC libcurl_la-parsedate.lo CC libcurl_la-pingpong.lo CC libcurl_la-pop3.lo CC libcurl_la-progress.lo CC libcurl_la-psl.lo CC libcurl_la-rand.lo CC libcurl_la-rename.lo CC libcurl_la-request.lo CC libcurl_la-rtsp.lo CC libcurl_la-select.lo CC libcurl_la-sendf.lo CC libcurl_la-setopt.lo CC libcurl_la-share.lo CC libcurl_la-sha256.lo CC libcurl_la-slist.lo CC libcurl_la-smb.lo CC libcurl_la-smtp.lo CC libcurl_la-socketpair.lo CC libcurl_la-socks.lo CC libcurl_la-socks_gssapi.lo CC libcurl_la-socks_sspi.lo CC libcurl_la-speedcheck.lo CC libcurl_la-splay.lo CC libcurl_la-strcase.lo CC libcurl_la-strdup.lo CC libcurl_la-strequal.lo CC libcurl_la-strerror.lo CC libcurl_la-system_win32.lo CC libcurl_la-telnet.lo CC libcurl_la-tftp.lo CC libcurl_la-transfer.lo CC libcurl_la-uint-bset.lo CC libcurl_la-uint-hash.lo CC libcurl_la-uint-spbset.lo CC libcurl_la-uint-table.lo CC libcurl_la-url.lo CC libcurl_la-urlapi.lo CC libcurl_la-version.lo CC libcurl_la-ws.lo CC libcurlu_la-altsvc.lo CC libcurlu_la-amigaos.lo CC libcurlu_la-asyn-ares.lo CC libcurlu_la-asyn-base.lo CC libcurlu_la-asyn-thrdd.lo CC libcurlu_la-bufq.lo CC libcurlu_la-bufref.lo CC libcurlu_la-cf-h1-proxy.lo CC libcurlu_la-cf-h2-proxy.lo CC libcurlu_la-cf-haproxy.lo CC libcurlu_la-cf-https-connect.lo CC libcurlu_la-cf-ip-happy.lo CC libcurlu_la-cf-socket.lo CC libcurlu_la-cfilters.lo CC libcurlu_la-conncache.lo CC libcurlu_la-connect.lo CC libcurlu_la-content_encoding.lo CC libcurlu_la-cookie.lo CC libcurlu_la-cshutdn.lo CC libcurlu_la-curl_addrinfo.lo CC libcurlu_la-curl_endian.lo CC libcurlu_la-curl_fnmatch.lo CC libcurlu_la-curl_fopen.lo CC libcurlu_la-curl_get_line.lo CC libcurlu_la-curl_gethostname.lo CC libcurlu_la-curl_gssapi.lo CC libcurlu_la-curl_memrchr.lo CC libcurlu_la-curl_ntlm_core.lo CC libcurlu_la-curl_range.lo CC libcurlu_la-curl_rtmp.lo CC libcurlu_la-curl_sasl.lo CC libcurlu_la-curl_sha512_256.lo CC libcurlu_la-curl_sspi.lo CC libcurlu_la-curl_threads.lo CC libcurlu_la-curl_trc.lo CC libcurlu_la-cw-out.lo CC libcurlu_la-cw-pause.lo CC libcurlu_la-dict.lo CC libcurlu_la-doh.lo CC libcurlu_la-dynhds.lo CC libcurlu_la-easy.lo CC libcurlu_la-easygetopt.lo CC libcurlu_la-easyoptions.lo CC libcurlu_la-escape.lo CC libcurlu_la-fake_addrinfo.lo CC libcurlu_la-file.lo CC libcurlu_la-fileinfo.lo CC libcurlu_la-formdata.lo CC libcurlu_la-ftp.lo CC libcurlu_la-ftplistparser.lo CC libcurlu_la-getenv.lo CC libcurlu_la-getinfo.lo CC libcurlu_la-gopher.lo CC libcurlu_la-hash.lo CC libcurlu_la-headers.lo CC libcurlu_la-hmac.lo CC libcurlu_la-hostip.lo CC libcurlu_la-hostip4.lo CC libcurlu_la-hostip6.lo CC libcurlu_la-hsts.lo CC libcurlu_la-http.lo CC libcurlu_la-http1.lo CC libcurlu_la-http2.lo CC libcurlu_la-http_aws_sigv4.lo CC libcurlu_la-http_chunks.lo CC libcurlu_la-http_digest.lo CC libcurlu_la-http_negotiate.lo CC libcurlu_la-http_ntlm.lo CC libcurlu_la-http_proxy.lo CC libcurlu_la-httpsrr.lo CC libcurlu_la-idn.lo CC libcurlu_la-if2ip.lo CC libcurlu_la-imap.lo CC libcurlu_la-ldap.lo CC libcurlu_la-llist.lo CC libcurlu_la-macos.lo CC libcurlu_la-md4.lo CC libcurlu_la-md5.lo CC libcurlu_la-memdebug.lo CC libcurlu_la-mime.lo CC libcurlu_la-mprintf.lo CC libcurlu_la-mqtt.lo CC libcurlu_la-multi.lo CC libcurlu_la-multi_ev.lo CC libcurlu_la-multi_ntfy.lo CC libcurlu_la-netrc.lo CC libcurlu_la-noproxy.lo CC libcurlu_la-openldap.lo CC libcurlu_la-parsedate.lo CC libcurlu_la-pingpong.lo CC libcurlu_la-pop3.lo CC libcurlu_la-progress.lo CC libcurlu_la-psl.lo CC libcurlu_la-rand.lo CC libcurlu_la-rename.lo CC libcurlu_la-request.lo CC libcurlu_la-rtsp.lo CC libcurlu_la-select.lo CC libcurlu_la-sendf.lo CC libcurlu_la-setopt.lo CC libcurlu_la-sha256.lo CC libcurlu_la-share.lo CC libcurlu_la-slist.lo CC libcurlu_la-smb.lo CC libcurlu_la-smtp.lo CC libcurlu_la-socketpair.lo CC libcurlu_la-socks.lo CC libcurlu_la-socks_gssapi.lo CC libcurlu_la-socks_sspi.lo CC libcurlu_la-speedcheck.lo CC libcurlu_la-splay.lo CC libcurlu_la-strcase.lo CC libcurlu_la-strdup.lo CC libcurlu_la-strequal.lo CC libcurlu_la-strerror.lo CC libcurlu_la-system_win32.lo CC libcurlu_la-telnet.lo CC libcurlu_la-tftp.lo CC libcurlu_la-transfer.lo CC libcurlu_la-uint-bset.lo CC libcurlu_la-uint-hash.lo CC libcurlu_la-uint-spbset.lo CC libcurlu_la-uint-table.lo CC libcurlu_la-url.lo CC libcurlu_la-urlapi.lo CC libcurlu_la-version.lo CC libcurlu_la-ws.lo CC vauth/libcurlu_la-cleartext.lo CC vauth/libcurlu_la-cram.lo CC vauth/libcurlu_la-digest.lo CC vauth/libcurlu_la-digest_sspi.lo CC vauth/libcurlu_la-gsasl.lo CC vauth/libcurlu_la-krb5_gssapi.lo CC vauth/libcurlu_la-krb5_sspi.lo CC vauth/libcurlu_la-ntlm.lo CC vauth/libcurlu_la-ntlm_sspi.lo CC vauth/libcurlu_la-oauth2.lo CC vauth/libcurlu_la-spnego_gssapi.lo CC vauth/libcurlu_la-spnego_sspi.lo CC vauth/libcurlu_la-vauth.lo CC vtls/libcurlu_la-apple.lo CC vtls/libcurlu_la-cipher_suite.lo CC vtls/libcurlu_la-gtls.lo CC vtls/libcurlu_la-hostcheck.lo CC vtls/libcurlu_la-keylog.lo CC vtls/libcurlu_la-mbedtls.lo CC vtls/libcurlu_la-mbedtls_threadlock.lo CC vtls/libcurlu_la-openssl.lo CC vtls/libcurlu_la-rustls.lo CC vtls/libcurlu_la-schannel.lo CC vtls/libcurlu_la-schannel_verify.lo CC vtls/libcurlu_la-vtls.lo CC vtls/libcurlu_la-vtls_scache.lo CC vtls/libcurlu_la-vtls_spack.lo CC vtls/libcurlu_la-wolfssl.lo CC vtls/libcurlu_la-x509asn1.lo CC vquic/libcurlu_la-curl_ngtcp2.lo CC vquic/libcurlu_la-curl_osslq.lo CC vquic/libcurlu_la-curl_quiche.lo CC vquic/libcurlu_la-vquic.lo CC vquic/libcurlu_la-vquic-tls.lo CC vssh/libcurlu_la-libssh.lo CC vssh/libcurlu_la-libssh2.lo CC vssh/libcurlu_la-curl_path.lo CC curlx/libcurlu_la-base64.lo CC curlx/libcurlu_la-dynbuf.lo CC curlx/libcurlu_la-fopen.lo CC curlx/libcurlu_la-inet_ntop.lo CC curlx/libcurlu_la-inet_pton.lo CC curlx/libcurlu_la-multibyte.lo CC curlx/libcurlu_la-nonblock.lo CC curlx/libcurlu_la-strerr.lo CC curlx/libcurlu_la-strparse.lo CC curlx/libcurlu_la-timediff.lo CC curlx/libcurlu_la-timeval.lo CC curlx/libcurlu_la-version_win32.lo CC curlx/libcurlu_la-wait.lo CC curlx/libcurlu_la-warnless.lo CC curlx/libcurlu_la-winapi.lo CC vauth/libcurl_la-cleartext.lo CC vauth/libcurl_la-cram.lo CC vauth/libcurl_la-digest.lo CC vauth/libcurl_la-digest_sspi.lo CC vauth/libcurl_la-gsasl.lo CC vauth/libcurl_la-krb5_gssapi.lo CC vauth/libcurl_la-krb5_sspi.lo CC vauth/libcurl_la-ntlm.lo CC vauth/libcurl_la-ntlm_sspi.lo CC vauth/libcurl_la-oauth2.lo CC vauth/libcurl_la-spnego_gssapi.lo CC vauth/libcurl_la-spnego_sspi.lo CC vauth/libcurl_la-vauth.lo CC vtls/libcurl_la-apple.lo CC vtls/libcurl_la-cipher_suite.lo CC vtls/libcurl_la-gtls.lo CC vtls/libcurl_la-hostcheck.lo CC vtls/libcurl_la-keylog.lo CC vtls/libcurl_la-mbedtls.lo CC vtls/libcurl_la-mbedtls_threadlock.lo CC vtls/libcurl_la-openssl.lo CC vtls/libcurl_la-rustls.lo CC vtls/libcurl_la-schannel.lo CC vtls/libcurl_la-schannel_verify.lo CC vtls/libcurl_la-vtls.lo CC vtls/libcurl_la-vtls_scache.lo CC vtls/libcurl_la-vtls_spack.lo CC vtls/libcurl_la-wolfssl.lo CC vtls/libcurl_la-x509asn1.lo CC vquic/libcurl_la-curl_ngtcp2.lo CC vquic/libcurl_la-curl_osslq.lo CC vquic/libcurl_la-curl_quiche.lo CC vquic/libcurl_la-vquic.lo CC vquic/libcurl_la-vquic-tls.lo CC vssh/libcurl_la-libssh.lo CC vssh/libcurl_la-libssh2.lo CC vssh/libcurl_la-curl_path.lo CC curlx/libcurl_la-base64.lo CC curlx/libcurl_la-dynbuf.lo CC curlx/libcurl_la-fopen.lo CC curlx/libcurl_la-inet_ntop.lo CC curlx/libcurl_la-inet_pton.lo CC curlx/libcurl_la-multibyte.lo CC curlx/libcurl_la-nonblock.lo CC curlx/libcurl_la-strerr.lo CC curlx/libcurl_la-strparse.lo CC curlx/libcurl_la-timediff.lo CC curlx/libcurl_la-timeval.lo CC curlx/libcurl_la-version_win32.lo CC curlx/libcurl_la-wait.lo CC curlx/libcurl_la-warnless.lo CC curlx/libcurl_la-winapi.lo CCLD libcurlu.la CCLD libcurl.la /usr/bin/nm: .libs/libcurl_la-amigaos.o: no symbols /usr/bin/nm: .libs/libcurl_la-asyn-ares.o: no symbols /usr/bin/nm: .libs/libcurl_la-curl_memrchr.o: no symbols /usr/bin/nm: .libs/libcurl_la-curl_rtmp.o: no symbols /usr/bin/nm: .libs/libcurl_la-curl_sspi.o: no symbols /usr/bin/nm: .libs/libcurl_la-fake_addrinfo.o: no symbols /usr/bin/nm: .libs/libcurl_la-hostip4.o: no symbols /usr/bin/nm: .libs/libcurl_la-hostip6.o: no symbols /usr/bin/nm: .libs/libcurl_la-httpsrr.o: no symbols /usr/bin/nm: .libs/libcurl_la-ldap.o: no symbols /usr/bin/nm: .libs/libcurl_la-macos.o: no symbols /usr/bin/nm: .libs/libcurl_la-memdebug.o: no symbols /usr/bin/nm: .libs/libcurl_la-openldap.o: no symbols /usr/bin/nm: .libs/libcurl_la-socks_sspi.o: no symbols /usr/bin/nm: .libs/libcurl_la-system_win32.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-digest_sspi.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-gsasl.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-krb5_sspi.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-ntlm_sspi.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-spnego_sspi.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-apple.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-cipher_suite.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-gtls.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-mbedtls.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-mbedtls_threadlock.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-rustls.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-schannel.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-schannel_verify.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-vtls_spack.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-wolfssl.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-x509asn1.o: no symbols /usr/bin/nm: vquic/.libs/libcurl_la-curl_ngtcp2.o: no symbols /usr/bin/nm: vquic/.libs/libcurl_la-curl_quiche.o: no symbols /usr/bin/nm: vssh/.libs/libcurl_la-libssh.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-inet_ntop.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-inet_pton.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-multibyte.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-version_win32.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-winapi.o: no symbols make[1]: Leaving directory '/build/curl/src/build-curl-compat/lib' make: Leaving directory '/build/curl/src/build-curl-compat/lib' checking whether to enable maintainer-specific portions of Makefiles... no checking whether make supports nested variables... yes checking whether to enable debug build options... no checking whether to enable compiler optimizer... (assumed) yes checking whether to enable strict compiler warnings... no checking whether to enable compiler warnings as errors... no checking whether to enable curl debug memory tracking... no checking whether to enable hiding of library internal symbols... yes checking whether to enable c-ares for DNS lookups... no checking whether to disable dependency on -lrt... (assumed no) checking whether to enable HTTPSRR support... no checking whether to enable ECH support... no checking whether to enable SSL session export support... no checking for path separator... : checking for sed... /usr/bin/sed checking for grep... /usr/bin/grep checking that grep -E works... yes checking for ar... /usr/bin/ar checking for a BSD-compatible install... /usr/bin/install -c checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether the compiler supports GNU C... yes checking whether gcc accepts -g... yes checking for gcc option to enable C11 features... none needed checking whether gcc understands -c and -o together... yes checking how to run the C preprocessor... gcc -E checking for stdio.h... yes checking for stdlib.h... yes checking for string.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for strings.h... yes checking for sys/stat.h... yes checking for sys/types.h... yes checking for unistd.h... yes checking for stdatomic.h... yes checking if _Atomic is available... yes checking whether sleep supports fractional seconds... yes checking filesystem timestamp resolution... 0.01 checking whether build environment is sane... yes checking for a race-free mkdir -p... /usr/bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports the include directive... yes (GNU style) checking xargs -n works... yes checking whether UID '1000' is supported by ustar format... yes checking whether GID '1000' is supported by ustar format... yes checking how to create a ustar tar archive... gnutar checking dependency style of gcc... gcc3 checking curl version... 8.17.0 checking for perl... /usr/bin/perl checking for httpd... no checking for apache2... no checking for apxs... no configure: httpd/apache2 not in PATH, http tests disabled configure: apxs not in PATH, http tests disabled checking for danted... no checking for danted... no checking for nghttpx... no checking for caddy... no checking build system type... riscv64-unknown-linux-gnu checking host system type... riscv64-unknown-linux-gnu checking for egrep -e... /usr/bin/grep -E checking if OS is AIX (to define _ALL_SOURCE)... no checking if _THREAD_SAFE is already defined... no checking if _THREAD_SAFE is actually needed... no checking if _THREAD_SAFE is onwards defined... no checking if _REENTRANT is already defined... no checking if _REENTRANT is actually needed... no checking if _REENTRANT is onwards defined... no checking for gcc option to enable large file support... none needed checking how to print strings... printf checking for a sed that does not truncate output... (cached) /usr/bin/sed checking for grep that handles long lines and -e... (cached) /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for fgrep... /usr/bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert riscv64-unknown-linux-gnu file names to riscv64-unknown-linux-gnu format... func_convert_file_noop checking how to convert riscv64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for file... file checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ranlib... ranlib checking for archiver @FILE support... @ checking for strip... strip checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /usr/bin/dd checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1 checking for mt... no checking if : is a manifest tool... no checking for dlfcn.h... yes checking which variant of shared library versioning to provide... (default) aix checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking whether to build shared libraries with -version-info... yes checking whether to build shared libraries with -no-undefined... no checking whether to build shared libraries with -mimpure-text... no checking whether to build shared libraries with PIC... yes checking whether to build static libraries with PIC... no checking whether to build shared libraries only... no checking whether to build static libraries only... no checking for windres... no checking if cpp -P is needed... yes checking if cpp -P works... yes checking if compiler is DEC/Compaq/HP C... no checking if compiler is HP-UX C... no checking if compiler is IBM C... no checking if compiler is Intel C... no checking if compiler is clang... no checking if compiler is GNU C... yes checking compiler version... gcc '1502' (raw: '15.2.1') checking if compiler is SunPro C... no checking if compiler is Tiny C... no checking for code coverage support... no checking whether build target is a native Windows one... no checking if compiler accepts some basic options... yes configure: compiler options added: -Werror-implicit-function-declaration checking if compiler optimizer assumed setting might be used... no checking if compiler accepts strict warning options... yes configure: compiler options added: -Wno-system-headers checking if compiler halts on compilation errors... yes checking if compiler halts on negative sized arrays... yes checking if compiler halts on function prototype mismatch... yes checking if compiler supports hiding library internal symbols... yes checking whether build target supports Win32 crypto API... no checking whether to build libcurl and curl in "unity" mode... no checking whether to support http... yes checking whether to support ftp... yes checking whether to support file... yes checking whether to support IPFS... yes checking whether to support ldap... no checking whether to support ldaps... no checking whether to support rtsp... yes checking whether to support proxies... yes checking whether to support dict... yes checking whether to support telnet... yes checking whether to support tftp... yes checking whether to support pop3... yes checking whether to support imap... yes checking whether to support smb... yes checking whether to support smtp... yes checking whether to support gopher... yes checking whether to support mqtt... no checking whether to provide built-in manual... no checking whether to build documentation... yes checking whether to enable generation of C code... yes checking whether to use libgcc... no checking if X/Open network library is required... no checking for gethostbyname... yes checking whether build target is a native Windows one... (cached) no checking for proto/bsdsocket.h... no checking for connect in libraries... yes checking for sys/types.h... (cached) yes checking for monotonic clock_gettime... yes checking for clock_gettime in libraries... no additional lib required checking if monotonic clock_gettime works... yes checking for sys/types.h... (cached) yes checking for raw monotonic clock_gettime... yes checking for pkg-config... /usr/bin/pkg-config checking for zlib options with pkg-config... found checking for zlib.h... yes configure: found both libz and libz.h header checking for BrotliDecoderDecompress in -lbrotlidec... yes checking for brotli/decode.h... yes checking for ZSTD_createDStream in -lzstd... yes checking for zstd.h... yes checking whether to enable IPv6... yes checking if struct sockaddr_in6 has sin6_scope_id member... yes checking if argv can be written to... yes checking if GSS-API support is requested... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for mit-krb5-gssapi options with pkg-config... found checking for gss.h... no checking for gssapi/gssapi.h... yes checking for gssapi/gssapi_generic.h... yes checking for gssapi/gssapi_krb5.h... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for mit-krb5-gssapi options with pkg-config... found configure: GSS-API MIT Kerberos version detected: 1.21.3 checking if we can link against GSS-API library... yes checking whether to enable Windows native SSL/TLS... no checking whether to enable Amiga native SSL/TLS (AmiSSL v5)... no checking for pkg-config... (cached) /usr/bin/pkg-config checking for gnutls options with pkg-config... found checking for gnutls_x509_crt_get_dn2 in -lgnutls... yes configure: detected GnuTLS version 3.8.10 checking for nettle_MD5Init in -lgnutls... no checking for nettle_MD5Init in -lnettle... yes checking for gnutls_srp_verifier in -lgnutls... yes checking whether to enable Apple OS native certificate validation... no configure: built with one SSL backend checking default CA cert bundle/path... /etc/ssl/certs/ca-certificates.crt checking whether to use OpenSSL's built-in CA store... no checking CA cert bundle path to embed in the curl tool... no checking for pkg-config... (cached) /usr/bin/pkg-config checking for libpsl options with pkg-config... found checking for psl_builtin in -lpsl... yes checking for libpsl.h... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for libssh2 options with pkg-config... found checking for libssh2_agent_get_identity_path in -lssh2... yes checking for libssh2.h... yes checking for RTMP_Init in -lrtmp... no checking whether versioned symbols are wanted... no checking whether to build with libidn2... (assumed) yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for libidn2 options with pkg-config... found configure: pkg-config: IDN_LIBS: "-lidn2" configure: pkg-config: IDN_LDFLAGS: "" configure: pkg-config: IDN_CPPFLAGS: "" configure: pkg-config: IDN_DIR: "" checking if idn2_lookup_ul can be linked... yes checking for idn2.h... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for libnghttp2 options with pkg-config... found configure: -l is -lnghttp2 configure: -I is configure: -L is checking for nghttp2_session_get_stream_local_window_size in -lnghttp2... yes checking for nghttp2/nghttp2.h... yes configure: Added to CURL_LIBRARY_PATH checking for sys/types.h... (cached) yes checking for sys/select.h... yes checking for sys/ioctl.h... yes checking for unistd.h... (cached) yes checking for arpa/inet.h... yes checking for net/if.h... yes checking for netinet/in.h... yes checking for netinet/in6.h... no checking for sys/un.h... yes checking for linux/tcp.h... yes checking for netinet/tcp.h... yes checking for netinet/udp.h... yes checking for netdb.h... yes checking for sys/sockio.h... no checking for sys/param.h... yes checking for termios.h... yes checking for termio.h... no checking for fcntl.h... yes checking for io.h... no checking for pwd.h... yes checking for utime.h... yes checking for sys/utime.h... no checking for sys/poll.h... yes checking for poll.h... yes checking for sys/resource.h... yes checking for libgen.h... yes checking for locale.h... yes checking for stdbool.h... yes checking for stdint.h... (cached) yes checking for sys/filio.h... no checking for sys/eventfd.h... yes checking for an ANSI C-conforming const... yes checking for size_t... yes checking for sys/types.h... (cached) yes checking for struct timeval... yes checking run-time libs availability... fine checking size of size_t... 8 checking size of long... 8 checking size of int... 4 checking size of time_t... 8 checking size of off_t... 8 checking size of curl_off_t... 8 checking size of curl_socket_t... 4 checking for long long... yes checking for ssize_t... yes checking for bool... yes checking for sa_family_t... yes checking for suseconds_t... yes checking if time_t is unsigned... no checking for struct sockaddr_storage... yes checking for sys/select.h... (cached) yes checking for select... yes checking for sys/types.h... (cached) yes checking for recv... yes checking for sys/types.h... (cached) yes checking for send... yes checking for sys/types.h... (cached) yes checking for MSG_NOSIGNAL... yes checking for sys/types.h... (cached) yes checking for unistd.h... (cached) yes checking if alarm can be linked... yes checking if alarm is prototyped... yes checking if alarm is compilable... yes checking if alarm usage allowed... yes checking if alarm might be used... yes checking for sys/types.h... (cached) yes checking for strings.h... (cached) yes checking for sys/types.h... (cached) yes checking for libgen.h... (cached) yes checking if basename can be linked... yes checking if basename is prototyped... yes checking if basename is compilable... yes checking if basename usage allowed... yes checking if basename might be used... yes checking if closesocket can be linked... no checking if closesocket might be used... no checking for sys/types.h... (cached) yes checking if CloseSocket can be linked... no checking if CloseSocket might be used... no checking for sys/types.h... (cached) yes checking for unistd.h... (cached) yes checking for fcntl.h... (cached) yes checking if fcntl can be linked... yes checking if fcntl is prototyped... yes checking if fcntl is compilable... yes checking if fcntl usage allowed... yes checking if fcntl might be used... yes checking if fcntl O_NONBLOCK is compilable... yes checking if fcntl O_NONBLOCK usage allowed... yes checking if fcntl O_NONBLOCK might be used... yes checking whether build target is a native Windows one... (cached) no checking for sys/types.h... (cached) yes checking for netdb.h... (cached) yes checking if freeaddrinfo can be linked... yes checking if freeaddrinfo is prototyped... yes checking if freeaddrinfo is compilable... yes checking if freeaddrinfo usage allowed... yes checking if freeaddrinfo might be used... yes checking for sys/types.h... (cached) yes checking for sys/xattr.h... yes checking if fsetxattr can be linked... yes checking if fsetxattr is prototyped... yes checking if fsetxattr takes 5 args.... yes checking if fsetxattr is compilable... yes checking if fsetxattr usage allowed... yes checking if fsetxattr might be used... yes checking if ftruncate can be linked... yes checking if ftruncate is prototyped... yes checking if ftruncate is compilable... yes checking if ftruncate usage allowed... yes checking if ftruncate might be used... yes checking for sys/types.h... (cached) yes checking if getaddrinfo can be linked... yes checking if getaddrinfo is prototyped... yes checking if getaddrinfo is compilable... yes checking if getaddrinfo seems to work... yes checking if getaddrinfo usage allowed... yes checking if getaddrinfo might be used... yes checking if getaddrinfo is threadsafe... yes checking if gethostbyname_r can be linked... yes checking if gethostbyname_r is prototyped... yes checking if gethostbyname_r takes 3 args.... no checking if gethostbyname_r takes 5 args.... no checking if gethostbyname_r takes 6 args.... yes checking if gethostbyname_r is compilable... yes checking if gethostbyname_r usage allowed... yes checking if gethostbyname_r might be used... yes checking if gethostname can be linked... yes checking if gethostname is prototyped... yes checking if gethostname is compilable... yes checking for gethostname arg 2 data type... size_t checking if gethostname usage allowed... yes checking if gethostname might be used... yes checking for sys/types.h... (cached) yes checking for netinet/in.h... (cached) yes checking for ifaddrs.h... yes checking if getifaddrs can be linked... yes checking if getifaddrs is prototyped... yes checking if getifaddrs is compilable... yes checking if getifaddrs seems to work... yes checking if getifaddrs usage allowed... yes checking if getifaddrs might be used... yes checking if getpeername can be linked... yes checking if getpeername is prototyped... yes checking if getpeername is compilable... yes checking if getpeername usage allowed... yes checking if getpeername might be used... yes checking if getsockname can be linked... yes checking if getsockname is prototyped... yes checking if getsockname is compilable... yes checking if getsockname usage allowed... yes checking if getsockname might be used... yes checking for sys/types.h... (cached) yes checking if gmtime_r can be linked... yes checking if gmtime_r is prototyped... yes checking if gmtime_r is compilable... yes checking if gmtime_r seems to work... yes checking if gmtime_r usage allowed... yes checking if gmtime_r might be used... yes checking for sys/types.h... (cached) yes checking for unistd.h... (cached) yes checking for sys/ioctl.h... (cached) yes checking for stropts.h... no checking if ioctl can be linked... yes checking if ioctl is prototyped... yes checking if ioctl is compilable... yes checking if ioctl usage allowed... yes checking if ioctl might be used... yes checking if ioctl FIONBIO is compilable... yes checking if ioctl FIONBIO usage allowed... yes checking if ioctl FIONBIO might be used... yes checking if ioctl SIOCGIFADDR is compilable... yes checking if ioctl SIOCGIFADDR usage allowed... yes checking if ioctl SIOCGIFADDR might be used... yes checking if ioctlsocket can be linked... no checking if ioctlsocket might be used... no checking if IoctlSocket can be linked... no checking if IoctlSocket might be used... no checking if memrchr can be linked... yes checking if memrchr is prototyped... yes checking if memrchr is compilable... yes checking if memrchr usage allowed... yes checking if memrchr might be used... yes checking for sys/types.h... (cached) yes checking if sigaction can be linked... yes checking if sigaction is prototyped... yes checking if sigaction is compilable... yes checking if sigaction usage allowed... yes checking if sigaction might be used... yes checking if siginterrupt can be linked... yes checking if siginterrupt is prototyped... yes checking if siginterrupt is compilable... yes checking if siginterrupt usage allowed... yes checking if siginterrupt might be used... yes checking if signal can be linked... yes checking if signal is prototyped... yes checking if signal is compilable... yes checking if signal usage allowed... yes checking if signal might be used... yes checking for sys/types.h... (cached) yes checking if sigsetjmp can be linked... no checking if sigsetjmp seems a macro... yes checking if sigsetjmp is compilable... yes checking if sigsetjmp usage allowed... yes checking if sigsetjmp might be used... yes checking if socket can be linked... yes checking if socket is prototyped... yes checking if socket is compilable... yes checking if socket usage allowed... yes checking if socket might be used... yes checking if socketpair can be linked... yes checking if socketpair is prototyped... yes checking if socketpair is compilable... yes checking if socketpair usage allowed... yes checking if socketpair might be used... yes checking if strdup can be linked... yes checking if strdup is prototyped... yes checking if strdup is compilable... yes checking if strdup usage allowed... yes checking if strdup might be used... yes checking if strerror_r can be linked... yes checking if strerror_r is prototyped... yes checking if strerror_r is compilable... yes checking if strerror_r is glibc like... yes checking if strerror_r seems to work... yes checking if strerror_r usage allowed... yes checking if strerror_r might be used... yes checking for accept4... yes checking for eventfd... yes checking for fnmatch... yes checking for geteuid... yes checking for getpass_r... no checking for getppid... yes checking for getpwuid... yes checking for getpwuid_r... yes checking for getrlimit... yes checking for gettimeofday... yes checking for mach_absolute_time... no checking for pipe... yes checking for pipe2... yes checking for poll... yes checking for sendmmsg... yes checking for sendmsg... yes checking for setlocale... yes checking for setrlimit... yes checking for snprintf... yes checking for utime... yes checking for utimes... yes checking for if_nametoindex... yes checking for realpath... yes checking for sched_yield... yes checking for sys/types.h... (cached) yes checking for netinet/in.h... (cached) yes checking for arpa/inet.h... (cached) yes checking if inet_ntop can be linked... yes checking if inet_ntop is prototyped... yes checking if inet_ntop is compilable... yes checking if inet_ntop seems to work... yes checking if inet_ntop usage allowed... yes checking if inet_ntop might be used... yes checking if inet_pton can be linked... yes checking if inet_pton is prototyped... yes checking if inet_pton is compilable... yes checking if inet_pton seems to work... yes checking if inet_pton usage allowed... yes checking if inet_pton might be used... yes checking if strcasecmp can be linked... yes checking if strcasecmp is prototyped... yes checking if strcasecmp is compilable... yes checking if strcasecmp usage allowed... yes checking if strcasecmp might be used... yes checking if strcmpi can be linked... no checking if strcmpi might be used... no checking if stricmp can be linked... no checking if stricmp might be used... no checking for setmode... no checking for fseeko... yes checking for gcc options needed to detect all undeclared functions... none needed checking whether fseeko is declared... yes checking how to set a socket into non-blocking mode... fcntl O_NONBLOCK checking whether to enable the threaded resolver... yes checking for pthread.h... yes checking for pthread_create... yes checking for dirent.h... yes checking for opendir... yes checking convert -I options to -isystem... yes checking whether to enable verbose strings... yes checking whether to enable SSPI support (Windows native builds only)... no checking whether to enable basic authentication method... yes checking whether to enable bearer authentication method... yes checking whether to enable digest authentication method... yes checking whether to enable kerberos authentication method... yes checking whether to enable negotiate authentication method... yes checking whether to enable aws sig methods... yes checking whether to support NTLM... yes checking whether to enable TLS-SRP authentication... yes checking whether to enable Unix domain sockets... auto checking for struct sockaddr_un.sun_path... yes checking whether to support cookies... yes checking whether to support socketpair... yes checking whether to support HTTP authentication... yes checking whether to support DoH... yes checking whether to support the MIME API... yes checking whether to support binding connections locally... yes checking whether to support the form API... yes checking whether to support date parsing... yes checking whether to support netrc parsing... yes checking whether to support progress-meter... yes checking whether to support the SHA-512/256 hash algorithm... yes checking whether to support DNS shuffling... yes checking whether to support curl_easy_option*... yes checking whether to support alt-svc... yes checking whether to support headers-api... yes checking whether to support HSTS... yes checking whether to enable HTTPS-RR support... no checking whether to support WebSockets... yes checking whether hiding of library internal symbols will actually happen... yes checking if this build supports HTTPS-proxy... yes checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating docs/Makefile config.status: creating docs/examples/Makefile config.status: creating docs/libcurl/Makefile config.status: creating docs/libcurl/opts/Makefile config.status: creating docs/cmdline-opts/Makefile config.status: creating include/Makefile config.status: creating include/curl/Makefile config.status: creating src/Makefile config.status: creating lib/Makefile config.status: creating scripts/Makefile config.status: creating lib/libcurl.vers config.status: creating tests/Makefile config.status: creating tests/config config.status: creating tests/configurehelp.pm config.status: creating tests/certs/Makefile config.status: creating tests/data/Makefile config.status: creating tests/server/Makefile config.status: creating tests/libtest/Makefile config.status: creating tests/unit/Makefile config.status: creating tests/tunit/Makefile config.status: creating tests/http/config.ini config.status: creating tests/http/Makefile config.status: creating packages/Makefile config.status: creating packages/vms/Makefile config.status: creating libcurl.pc config.status: creating curl-config config.status: creating lib/curl_config.h config.status: executing depfiles commands config.status: executing libtool commands configure: Configured to build curl/libcurl: Host setup: riscv64-unknown-linux-gnu Install prefix: /usr Compiler: gcc CFLAGS: -march=rv64gc -mabi=lp64d -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fno-omit-frame-pointer -g -ffile-prefix-map=/build/curl/src=/usr/src/debug/curl -flto=auto -Werror-implicit-function-declaration -Wno-system-headers CFLAGS extras: CPPFLAGS: -D_GNU_SOURCE -isystem /usr/include/p11-kit-1 LDFLAGS: -Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -flto=auto curl-config: LIBS: -lnghttp2 -lidn2 -lssh2 -lssh2 -lpsl -lnettle -lgnutls -lgssapi_krb5 -lzstd -lbrotlidec -lz curl version: 8.17.0 SSL: enabled (GnuTLS) SSH: enabled (libssh2) zlib: enabled brotli: enabled (libbrotlidec) zstd: enabled (libzstd) GSS-API: enabled (MIT Kerberos) GSASL: no (--with-gsasl) TLS-SRP: enabled resolver: POSIX threaded IPv6: enabled Unix sockets: enabled IDN: enabled (libidn2) Build docs: enabled (--disable-docs) Build libcurl: Shared=yes, Static=yes Built-in manual: no (--enable-manual) --libcurl option: enabled (--disable-libcurl-option) Verbose errors: enabled (--disable-verbose) Code coverage: disabled SSPI: no (--enable-sspi) ca native: no ca cert bundle: /etc/ssl/certs/ca-certificates.crt ca cert path: no ca cert embed: no ca fallback: no LDAP: no (--enable-ldap / --with-ldap-lib / --with-lber-lib) LDAPS: no (--enable-ldaps) IPFS/IPNS: enabled RTSP: enabled RTMP: no (--with-librtmp) PSL: enabled Alt-svc: enabled (--disable-alt-svc) Headers API: enabled (--disable-headers-api) HSTS: enabled (--disable-hsts) HTTP1: enabled (internal) HTTP2: enabled (nghttp2) HTTP3: no (--with-ngtcp2 --with-nghttp3, --with-quiche, --with-openssl-quic) ECH: no (--enable-ech) HTTPS RR: no (--enable-httpsrr) SSLS-EXPORT: no (--enable-ssls-export) Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd make: Entering directory '/build/curl/src/build-curl-gnutls/lib' make all-am make[1]: Entering directory '/build/curl/src/build-curl-gnutls/lib' CC libcurl_la-altsvc.lo CC libcurl_la-asyn-ares.lo CC libcurl_la-amigaos.lo CC libcurl_la-asyn-base.lo CC libcurl_la-asyn-thrdd.lo CC libcurl_la-bufref.lo CC libcurl_la-bufq.lo CC libcurl_la-cf-h1-proxy.lo CC libcurl_la-cf-h2-proxy.lo CC libcurl_la-cf-haproxy.lo CC libcurl_la-cf-https-connect.lo CC libcurl_la-cf-ip-happy.lo CC libcurl_la-cf-socket.lo CC libcurl_la-cfilters.lo CC libcurl_la-conncache.lo CC libcurl_la-connect.lo CC libcurl_la-content_encoding.lo CC libcurl_la-cookie.lo CC libcurl_la-cshutdn.lo CC libcurl_la-curl_addrinfo.lo CC libcurl_la-curl_endian.lo CC libcurl_la-curl_fnmatch.lo CC libcurl_la-curl_fopen.lo CC libcurl_la-curl_get_line.lo CC libcurl_la-curl_gethostname.lo CC libcurl_la-curl_gssapi.lo CC libcurl_la-curl_memrchr.lo CC libcurl_la-curl_ntlm_core.lo CC libcurl_la-curl_range.lo CC libcurl_la-curl_rtmp.lo CC libcurl_la-curl_sasl.lo CC libcurl_la-curl_sha512_256.lo CC libcurl_la-curl_sspi.lo CC libcurl_la-curl_threads.lo CC libcurl_la-curl_trc.lo CC libcurl_la-cw-out.lo CC libcurl_la-cw-pause.lo CC libcurl_la-dict.lo CC libcurl_la-doh.lo CC libcurl_la-dynhds.lo CC libcurl_la-easy.lo CC libcurl_la-easygetopt.lo CC libcurl_la-easyoptions.lo CC libcurl_la-escape.lo CC libcurl_la-fake_addrinfo.lo CC libcurl_la-file.lo CC libcurl_la-fileinfo.lo CC libcurl_la-formdata.lo CC libcurl_la-ftp.lo CC libcurl_la-ftplistparser.lo CC libcurl_la-getenv.lo CC libcurl_la-getinfo.lo CC libcurl_la-gopher.lo CC libcurl_la-hash.lo CC libcurl_la-headers.lo CC libcurl_la-hmac.lo CC libcurl_la-hostip.lo CC libcurl_la-hostip4.lo CC libcurl_la-hostip6.lo CC libcurl_la-hsts.lo CC libcurl_la-http.lo CC libcurl_la-http1.lo CC libcurl_la-http2.lo CC libcurl_la-http_aws_sigv4.lo CC libcurl_la-http_chunks.lo CC libcurl_la-http_digest.lo CC libcurl_la-http_negotiate.lo CC libcurl_la-http_ntlm.lo CC libcurl_la-http_proxy.lo CC libcurl_la-httpsrr.lo CC libcurl_la-idn.lo CC libcurl_la-if2ip.lo CC libcurl_la-imap.lo CC libcurl_la-ldap.lo CC libcurl_la-llist.lo CC libcurl_la-macos.lo CC libcurl_la-md4.lo CC libcurl_la-md5.lo CC libcurl_la-memdebug.lo CC libcurl_la-mime.lo CC libcurl_la-mprintf.lo CC libcurl_la-mqtt.lo CC libcurl_la-multi.lo CC libcurl_la-multi_ev.lo CC libcurl_la-multi_ntfy.lo CC libcurl_la-netrc.lo CC libcurl_la-noproxy.lo CC libcurl_la-openldap.lo CC libcurl_la-parsedate.lo CC libcurl_la-pingpong.lo CC libcurl_la-pop3.lo CC libcurl_la-progress.lo CC libcurl_la-psl.lo CC libcurl_la-rand.lo CC libcurl_la-rename.lo CC libcurl_la-request.lo CC libcurl_la-rtsp.lo CC libcurl_la-select.lo CC libcurl_la-sendf.lo CC libcurl_la-setopt.lo CC libcurl_la-sha256.lo CC libcurl_la-share.lo CC libcurl_la-slist.lo CC libcurl_la-smb.lo CC libcurl_la-smtp.lo CC libcurl_la-socketpair.lo CC libcurl_la-socks.lo CC libcurl_la-socks_gssapi.lo CC libcurl_la-socks_sspi.lo CC libcurl_la-speedcheck.lo CC libcurl_la-splay.lo CC libcurl_la-strcase.lo CC libcurl_la-strdup.lo CC libcurl_la-strequal.lo CC libcurl_la-strerror.lo CC libcurl_la-system_win32.lo CC libcurl_la-telnet.lo CC libcurl_la-tftp.lo CC libcurl_la-transfer.lo CC libcurl_la-uint-bset.lo CC libcurl_la-uint-hash.lo CC libcurl_la-uint-spbset.lo CC libcurl_la-uint-table.lo CC libcurl_la-url.lo CC libcurl_la-urlapi.lo CC libcurl_la-version.lo CC libcurl_la-ws.lo CC libcurlu_la-altsvc.lo CC libcurlu_la-amigaos.lo CC libcurlu_la-asyn-ares.lo CC libcurlu_la-asyn-base.lo CC libcurlu_la-asyn-thrdd.lo CC libcurlu_la-bufq.lo CC libcurlu_la-bufref.lo CC libcurlu_la-cf-h1-proxy.lo CC libcurlu_la-cf-h2-proxy.lo CC libcurlu_la-cf-haproxy.lo CC libcurlu_la-cf-https-connect.lo CC libcurlu_la-cf-ip-happy.lo CC libcurlu_la-cf-socket.lo CC libcurlu_la-cfilters.lo CC libcurlu_la-conncache.lo CC libcurlu_la-connect.lo CC libcurlu_la-content_encoding.lo CC libcurlu_la-cookie.lo CC libcurlu_la-cshutdn.lo CC libcurlu_la-curl_addrinfo.lo CC libcurlu_la-curl_endian.lo CC libcurlu_la-curl_fnmatch.lo CC libcurlu_la-curl_fopen.lo CC libcurlu_la-curl_get_line.lo CC libcurlu_la-curl_gethostname.lo CC libcurlu_la-curl_gssapi.lo CC libcurlu_la-curl_memrchr.lo CC libcurlu_la-curl_ntlm_core.lo CC libcurlu_la-curl_range.lo CC libcurlu_la-curl_rtmp.lo CC libcurlu_la-curl_sasl.lo CC libcurlu_la-curl_sha512_256.lo CC libcurlu_la-curl_sspi.lo CC libcurlu_la-curl_threads.lo CC libcurlu_la-curl_trc.lo CC libcurlu_la-cw-out.lo CC libcurlu_la-cw-pause.lo CC libcurlu_la-dict.lo CC libcurlu_la-doh.lo CC libcurlu_la-dynhds.lo CC libcurlu_la-easy.lo CC libcurlu_la-easygetopt.lo CC libcurlu_la-easyoptions.lo CC libcurlu_la-escape.lo CC libcurlu_la-fake_addrinfo.lo CC libcurlu_la-file.lo CC libcurlu_la-fileinfo.lo CC libcurlu_la-formdata.lo CC libcurlu_la-ftp.lo CC libcurlu_la-ftplistparser.lo CC libcurlu_la-getenv.lo CC libcurlu_la-getinfo.lo CC libcurlu_la-gopher.lo CC libcurlu_la-hash.lo CC libcurlu_la-headers.lo CC libcurlu_la-hmac.lo CC libcurlu_la-hostip.lo CC libcurlu_la-hostip4.lo CC libcurlu_la-hostip6.lo CC libcurlu_la-hsts.lo CC libcurlu_la-http.lo CC libcurlu_la-http1.lo CC libcurlu_la-http2.lo CC libcurlu_la-http_aws_sigv4.lo CC libcurlu_la-http_chunks.lo CC libcurlu_la-http_digest.lo CC libcurlu_la-http_negotiate.lo CC libcurlu_la-http_ntlm.lo CC libcurlu_la-http_proxy.lo CC libcurlu_la-httpsrr.lo CC libcurlu_la-idn.lo CC libcurlu_la-if2ip.lo CC libcurlu_la-imap.lo CC libcurlu_la-ldap.lo CC libcurlu_la-llist.lo CC libcurlu_la-macos.lo CC libcurlu_la-md4.lo CC libcurlu_la-md5.lo CC libcurlu_la-memdebug.lo CC libcurlu_la-mime.lo CC libcurlu_la-mprintf.lo CC libcurlu_la-mqtt.lo CC libcurlu_la-multi.lo CC libcurlu_la-multi_ev.lo CC libcurlu_la-multi_ntfy.lo CC libcurlu_la-netrc.lo CC libcurlu_la-noproxy.lo CC libcurlu_la-openldap.lo CC libcurlu_la-parsedate.lo CC libcurlu_la-pingpong.lo CC libcurlu_la-pop3.lo CC libcurlu_la-progress.lo CC libcurlu_la-psl.lo CC libcurlu_la-rand.lo CC libcurlu_la-rename.lo CC libcurlu_la-request.lo CC libcurlu_la-rtsp.lo CC libcurlu_la-select.lo CC libcurlu_la-sendf.lo CC libcurlu_la-setopt.lo CC libcurlu_la-sha256.lo CC libcurlu_la-share.lo CC libcurlu_la-slist.lo CC libcurlu_la-smb.lo CC libcurlu_la-smtp.lo CC libcurlu_la-socketpair.lo CC libcurlu_la-socks.lo CC libcurlu_la-socks_gssapi.lo CC libcurlu_la-socks_sspi.lo CC libcurlu_la-speedcheck.lo CC libcurlu_la-splay.lo CC libcurlu_la-strcase.lo CC libcurlu_la-strdup.lo CC libcurlu_la-strequal.lo CC libcurlu_la-strerror.lo CC libcurlu_la-system_win32.lo CC libcurlu_la-telnet.lo CC libcurlu_la-tftp.lo CC libcurlu_la-transfer.lo CC libcurlu_la-uint-bset.lo CC libcurlu_la-uint-hash.lo CC libcurlu_la-uint-spbset.lo CC libcurlu_la-uint-table.lo CC libcurlu_la-url.lo CC libcurlu_la-urlapi.lo CC libcurlu_la-version.lo CC libcurlu_la-ws.lo CC vauth/libcurlu_la-cleartext.lo CC vauth/libcurlu_la-cram.lo CC vauth/libcurlu_la-digest.lo CC vauth/libcurlu_la-digest_sspi.lo CC vauth/libcurlu_la-gsasl.lo CC vauth/libcurlu_la-krb5_gssapi.lo CC vauth/libcurlu_la-krb5_sspi.lo CC vauth/libcurlu_la-ntlm.lo CC vauth/libcurlu_la-ntlm_sspi.lo CC vauth/libcurlu_la-spnego_gssapi.lo CC vauth/libcurlu_la-oauth2.lo CC vauth/libcurlu_la-spnego_sspi.lo CC vauth/libcurlu_la-vauth.lo CC vtls/libcurlu_la-apple.lo CC vtls/libcurlu_la-cipher_suite.lo CC vtls/libcurlu_la-gtls.lo CC vtls/libcurlu_la-hostcheck.lo CC vtls/libcurlu_la-keylog.lo CC vtls/libcurlu_la-mbedtls.lo CC vtls/libcurlu_la-mbedtls_threadlock.lo CC vtls/libcurlu_la-openssl.lo CC vtls/libcurlu_la-rustls.lo CC vtls/libcurlu_la-schannel.lo CC vtls/libcurlu_la-schannel_verify.lo CC vtls/libcurlu_la-vtls.lo CC vtls/libcurlu_la-vtls_scache.lo CC vtls/libcurlu_la-vtls_spack.lo CC vtls/libcurlu_la-wolfssl.lo CC vtls/libcurlu_la-x509asn1.lo CC vquic/libcurlu_la-curl_ngtcp2.lo CC vquic/libcurlu_la-curl_osslq.lo CC vquic/libcurlu_la-curl_quiche.lo CC vquic/libcurlu_la-vquic.lo CC vquic/libcurlu_la-vquic-tls.lo CC vssh/libcurlu_la-libssh.lo CC vssh/libcurlu_la-libssh2.lo CC vssh/libcurlu_la-curl_path.lo CC curlx/libcurlu_la-base64.lo CC curlx/libcurlu_la-dynbuf.lo CC curlx/libcurlu_la-fopen.lo CC curlx/libcurlu_la-inet_ntop.lo CC curlx/libcurlu_la-inet_pton.lo CC curlx/libcurlu_la-multibyte.lo CC curlx/libcurlu_la-nonblock.lo CC curlx/libcurlu_la-strerr.lo CC curlx/libcurlu_la-strparse.lo CC curlx/libcurlu_la-timediff.lo CC curlx/libcurlu_la-timeval.lo CC curlx/libcurlu_la-version_win32.lo CC curlx/libcurlu_la-wait.lo CC curlx/libcurlu_la-winapi.lo CC curlx/libcurlu_la-warnless.lo CC vauth/libcurl_la-cleartext.lo CC vauth/libcurl_la-cram.lo CC vauth/libcurl_la-digest.lo CC vauth/libcurl_la-digest_sspi.lo CC vauth/libcurl_la-gsasl.lo CC vauth/libcurl_la-krb5_gssapi.lo CC vauth/libcurl_la-krb5_sspi.lo CC vauth/libcurl_la-ntlm.lo CC vauth/libcurl_la-ntlm_sspi.lo CC vauth/libcurl_la-oauth2.lo CC vauth/libcurl_la-spnego_gssapi.lo CC vauth/libcurl_la-spnego_sspi.lo CC vauth/libcurl_la-vauth.lo CC vtls/libcurl_la-apple.lo CC vtls/libcurl_la-cipher_suite.lo CC vtls/libcurl_la-gtls.lo CC vtls/libcurl_la-hostcheck.lo CC vtls/libcurl_la-keylog.lo CC vtls/libcurl_la-mbedtls.lo CC vtls/libcurl_la-mbedtls_threadlock.lo CC vtls/libcurl_la-openssl.lo CC vtls/libcurl_la-rustls.lo CC vtls/libcurl_la-schannel.lo CC vtls/libcurl_la-schannel_verify.lo CC vtls/libcurl_la-vtls.lo CC vtls/libcurl_la-vtls_scache.lo CC vtls/libcurl_la-vtls_spack.lo CC vtls/libcurl_la-wolfssl.lo CC vtls/libcurl_la-x509asn1.lo CC vquic/libcurl_la-curl_ngtcp2.lo CC vquic/libcurl_la-curl_osslq.lo CC vquic/libcurl_la-curl_quiche.lo CC vquic/libcurl_la-vquic.lo CC vquic/libcurl_la-vquic-tls.lo CC vssh/libcurl_la-libssh.lo CC vssh/libcurl_la-libssh2.lo CC vssh/libcurl_la-curl_path.lo CC curlx/libcurl_la-base64.lo CC curlx/libcurl_la-dynbuf.lo CC curlx/libcurl_la-fopen.lo CC curlx/libcurl_la-inet_ntop.lo CC curlx/libcurl_la-inet_pton.lo CC curlx/libcurl_la-multibyte.lo CC curlx/libcurl_la-nonblock.lo CC curlx/libcurl_la-strerr.lo CC curlx/libcurl_la-strparse.lo CC curlx/libcurl_la-timediff.lo CC curlx/libcurl_la-timeval.lo CC curlx/libcurl_la-version_win32.lo CC curlx/libcurl_la-wait.lo CC curlx/libcurl_la-warnless.lo CC curlx/libcurl_la-winapi.lo CCLD libcurlu.la CCLD libcurl.la /usr/bin/nm: .libs/libcurl_la-amigaos.o: no symbols /usr/bin/nm: .libs/libcurl_la-asyn-ares.o: no symbols /usr/bin/nm: .libs/libcurl_la-curl_memrchr.o: no symbols /usr/bin/nm: .libs/libcurl_la-curl_rtmp.o: no symbols /usr/bin/nm: .libs/libcurl_la-curl_sspi.o: no symbols /usr/bin/nm: .libs/libcurl_la-fake_addrinfo.o: no symbols /usr/bin/nm: .libs/libcurl_la-hostip4.o: no symbols /usr/bin/nm: .libs/libcurl_la-hostip6.o: no symbols /usr/bin/nm: .libs/libcurl_la-httpsrr.o: no symbols /usr/bin/nm: .libs/libcurl_la-ldap.o: no symbols /usr/bin/nm: .libs/libcurl_la-macos.o: no symbols /usr/bin/nm: .libs/libcurl_la-memdebug.o: no symbols /usr/bin/nm: .libs/libcurl_la-openldap.o: no symbols /usr/bin/nm: .libs/libcurl_la-socks_sspi.o: no symbols /usr/bin/nm: .libs/libcurl_la-system_win32.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-digest_sspi.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-gsasl.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-krb5_sspi.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-ntlm_sspi.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-spnego_sspi.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-apple.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-cipher_suite.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-hostcheck.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-mbedtls.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-mbedtls_threadlock.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-openssl.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-rustls.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-schannel.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-schannel_verify.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-vtls_spack.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-wolfssl.o: no symbols /usr/bin/nm: vquic/.libs/libcurl_la-curl_ngtcp2.o: no symbols /usr/bin/nm: vquic/.libs/libcurl_la-curl_osslq.o: no symbols /usr/bin/nm: vquic/.libs/libcurl_la-curl_quiche.o: no symbols /usr/bin/nm: vquic/.libs/libcurl_la-vquic-tls.o: no symbols /usr/bin/nm: vssh/.libs/libcurl_la-libssh.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-inet_ntop.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-inet_pton.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-multibyte.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-version_win32.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-winapi.o: no symbols make[1]: Leaving directory '/build/curl/src/build-curl-gnutls/lib' make: Leaving directory '/build/curl/src/build-curl-gnutls/lib' ==> Starting check()... make[1]: Entering directory '/build/curl/src/build-curl/tests' Making all in certs make[2]: Entering directory '/build/curl/src/build-curl/tests/certs' /usr/bin/perl /build/curl/src/curl/tests/certs/genserv.pl test test-localhost.prm test-localhost.nn.prm test-localhost0h.prm test-localhost-san-first.prm test-localhost-san-last.prm test-client-cert.prm test-client-eku-only.prm /usr/bin/openssl OpenSSL 3.6.0 1 Oct 2025 (Library: OpenSSL 3.6.0 1 Oct 2025) Certificate request self-signature ok subject=C=NN, O=Edel Curl Arctic Illudium Research Cloud, CN=Northern Nowhere Trust Anchor CA root generated: test 6000 days prime256v1 Certificate generated: CA=test 300days prime256v1 test-localhost Certificate generated: CA=test 300days prime256v1 test-localhost.nn Certificate generated: CA=test 300days prime256v1 test-localhost0h Certificate generated: CA=test 300days prime256v1 test-localhost-san-first Certificate generated: CA=test 300days prime256v1 test-localhost-san-last Certificate generated: CA=test 300days prime256v1 test-client-cert Certificate generated: CA=test 300days prime256v1 test-client-eku-only make[2]: Leaving directory '/build/curl/src/build-curl/tests/certs' Making all in data make[2]: Entering directory '/build/curl/src/build-curl/tests/data' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory '/build/curl/src/build-curl/tests/data' Making all in server make[2]: Entering directory '/build/curl/src/build-curl/tests/server' /usr/bin/perl /build/curl/src/curl/scripts/mk-unity.pl --include getpart.c util.c ../../lib/curlx/base64.c ../../lib/curlx/fopen.c ../../lib/curlx/inet_ntop.c ../../lib/curlx/inet_pton.c ../../lib/curlx/multibyte.c ../../lib/curlx/nonblock.c ../../lib/curlx/strerr.c ../../lib/curlx/strparse.c ../../lib/curlx/timediff.c ../../lib/curlx/timeval.c ../../lib/curlx/version_win32.c ../../lib/curlx/wait.c ../../lib/curlx/warnless.c ../../lib/curlx/winapi.c --test dnsd.c mqttd.c resolve.c rtspd.c sockfilt.c socksd.c sws.c tftpd.c > servers.c RUN checksrc CC servers.o CCLD servers make[2]: Leaving directory '/build/curl/src/build-curl/tests/server' Making all in libtest make[2]: Entering directory '/build/curl/src/build-curl/tests/libtest' /usr/bin/perl /build/curl/src/curl/tests/libtest/mk-lib1521.pl < /build/curl/src/curl/include/curl/curl.h lib1521.c /usr/bin/perl /build/curl/src/curl/scripts/mk-unity.pl --include memptr.c testutil.c testtrace.c ../../lib/curl_threads.c ../../lib/curlx/fopen.c ../../lib/curlx/multibyte.c ../../lib/curlx/strerr.c ../../lib/curlx/timediff.c ../../lib/curlx/timeval.c ../../lib/curlx/version_win32.c ../../lib/curlx/wait.c ../../lib/curlx/warnless.c ../../lib/curlx/winapi.c --test cli_h2_pausing.c cli_h2_serverpush.c cli_h2_upgrade_extreme.c cli_hx_download.c cli_hx_upload.c cli_tls_session_reuse.c cli_upload_pausing.c cli_ws_data.c cli_ws_pingpong.c lib500.c lib501.c lib502.c lib503.c lib504.c lib505.c lib506.c lib507.c lib508.c lib509.c lib510.c lib511.c lib512.c lib513.c lib514.c lib515.c lib516.c lib517.c lib518.c lib519.c lib520.c lib521.c lib523.c lib524.c lib525.c lib526.c lib530.c lib533.c lib536.c lib537.c lib539.c lib540.c lib541.c lib542.c lib543.c lib544.c lib547.c lib549.c lib552.c lib553.c lib554.c lib555.c lib556.c lib557.c lib558.c lib559.c lib560.c lib562.c lib564.c lib566.c lib567.c lib568.c lib569.c lib570.c lib571.c lib572.c lib573.c lib574.c lib575.c lib576.c lib578.c lib579.c lib582.c lib583.c lib586.c lib589.c lib590.c lib591.c lib597.c lib598.c lib599.c lib643.c lib650.c lib651.c lib652.c lib653.c lib654.c lib655.c lib658.c lib659.c lib661.c lib666.c lib667.c lib668.c lib670.c lib674.c lib676.c lib677.c lib678.c lib694.c lib695.c lib751.c lib753.c lib758.c lib757.c lib766.c lib1156.c lib1301.c lib1308.c lib1485.c lib1500.c lib1501.c lib1502.c lib1506.c lib1507.c lib1508.c lib1509.c lib1510.c lib1511.c lib1512.c lib1513.c lib1514.c lib1515.c lib1517.c lib1518.c lib1520.c lib1522.c lib1523.c lib1525.c lib1526.c lib1527.c lib1528.c lib1529.c lib1530.c lib1531.c lib1532.c lib1533.c lib1534.c lib1535.c lib1536.c lib1537.c lib1538.c lib1540.c lib1541.c lib1542.c lib1545.c lib1549.c lib1550.c lib1551.c lib1552.c lib1553.c lib1554.c lib1555.c lib1556.c lib1557.c lib1558.c lib1559.c lib1560.c lib1564.c lib1565.c lib1567.c lib1568.c lib1569.c lib1571.c lib1576.c lib1582.c lib1591.c lib1592.c lib1593.c lib1594.c lib1597.c lib1598.c lib1599.c lib1662.c lib1900.c lib1901.c lib1902.c lib1903.c lib1905.c lib1906.c lib1907.c lib1908.c lib1910.c lib1911.c lib1912.c lib1913.c lib1915.c lib1916.c lib1918.c lib1919.c lib1933.c lib1934.c lib1935.c lib1936.c lib1937.c lib1938.c lib1939.c lib1940.c lib1945.c lib1947.c lib1948.c lib1955.c lib1956.c lib1957.c lib1958.c lib1959.c lib1960.c lib1964.c lib1970.c lib1971.c lib1972.c lib1973.c lib1974.c lib1975.c lib1977.c lib1978.c lib2023.c lib2032.c lib2082.c lib2301.c lib2302.c lib2304.c lib2306.c lib2308.c lib2309.c lib2402.c lib2404.c lib2405.c lib2502.c lib2700.c lib3010.c lib3025.c lib3026.c lib3027.c lib3033.c lib3034.c lib3100.c lib3101.c lib3102.c lib3103.c lib3104.c lib3105.c lib3207.c lib3208.c lib1521.c > libtests.c RUN checksrc CC libtests.o CCLD libtests make[2]: Leaving directory '/build/curl/src/build-curl/tests/libtest' Making all in http make[2]: Entering directory '/build/curl/src/build-curl/tests/http' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory '/build/curl/src/build-curl/tests/http' Making all in unit make[2]: Entering directory '/build/curl/src/build-curl/tests/unit' (cd ../../lib && make unitprotos.h) RUN checksrc make[3]: Entering directory '/build/curl/src/build-curl/lib' UNITPR unitprotos.h make[3]: Leaving directory '/build/curl/src/build-curl/lib' /usr/bin/perl /build/curl/src/curl/scripts/mk-unity.pl --test unit1300.c unit1302.c unit1303.c unit1304.c unit1305.c unit1307.c unit1309.c unit1323.c unit1330.c unit1395.c unit1396.c unit1397.c unit1398.c unit1399.c unit1600.c unit1601.c unit1602.c unit1603.c unit1605.c unit1606.c unit1607.c unit1608.c unit1609.c unit1610.c unit1611.c unit1612.c unit1614.c unit1615.c unit1616.c unit1620.c unit1650.c unit1651.c unit1652.c unit1653.c unit1654.c unit1655.c unit1656.c unit1657.c unit1658.c unit1660.c unit1661.c unit1663.c unit1664.c unit1979.c unit1980.c unit2600.c unit2601.c unit2602.c unit2603.c unit2604.c unit3200.c unit3205.c unit3211.c unit3212.c unit3213.c unit3214.c > units.c CC units.o CCLD units make[2]: Leaving directory '/build/curl/src/build-curl/tests/unit' Making all in tunit make[2]: Entering directory '/build/curl/src/build-curl/tests/tunit' /usr/bin/perl /build/curl/src/curl/scripts/mk-unity.pl --test tool1394.c tool1604.c tool1621.c > tunits.c RUN checksrc CC tunits.o CCLD tunits make[2]: Leaving directory '/build/curl/src/build-curl/tests/tunit' make[2]: Entering directory '/build/curl/src/build-curl/tests' (cd certs && make) make[3]: Entering directory '/build/curl/src/build-curl/tests/certs' make[3]: Nothing to be done for 'all'. make[3]: Leaving directory '/build/curl/src/build-curl/tests/certs' make[2]: Leaving directory '/build/curl/src/build-curl/tests' srcdir=/build/curl/src/curl/tests /usr/bin/perl -I/build/curl/src/curl/tests /build/curl/src/curl/tests/runtests.pl -a -p ~flaky ~timing-dependent -v -a -k -p -j8 !433 Using curl: ../src/curl CMD (256): valgrind >/dev/null 2>&1 CMD (0): valgrind --help 2>&1 | grep -- --tool >/dev/null 2>&1 CMD (0): ../src/curl --version 1>log/curlverout.log 2>log/curlvererr.log ********* System characteristics ******** * curl 8.17.0 (riscv64-unknown-linux-gnu) * libcurl/8.17.0 OpenSSL/3.6.0 zlib/1.3.1 brotli/1.1.0 zstd/1.5.7 libidn2/2.3.7 libpsl/0.21.5 libssh2/1.11.1 nghttp2/1.68.0 nghttp3/1.12.0 mit-krb5/1.21.3 * Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss * Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd * Disabled: win32-ca-searchpath, win32-ca-search-safe, override-dns * Host: * System: Linux arch-nspawn-3966471 6.12.53-1-4k #1 SMP PREEMPT_DYNAMIC Fri, 17 Oct 2025 08:26:48 +0000 riscv64 GNU/Linux * OS: linux * Perl: v5.42.0 (/usr/bin/perl) * Args: -a -p ~flaky ~timing-dependent -v -a -k -p -j8 !433 * Jobs: 8 * Env: Valgrind * Seed: 220977 * Servers: HTTP-IPv6 HTTP-unix FTP-IPv6 ***************************************** DISABLED: test 323 DISABLED: test 594 DISABLED: test 836 DISABLED: test 882 DISABLED: test 938 DISABLED: test 1182 DISABLED: test 1184 DISABLED: test 1209 DISABLED: test 1211 DISABLED: test 1307 DISABLED: test 1316 DISABLED: test 1512 DISABLED: test 1801 DISABLED: test 2043 test 0096 SKIPPED: curl lacks TrackMemory support test 0159 SKIPPED: curl lacks Debug support test 0356 SKIPPED: curl lacks Debug support test 0358 SKIPPED: curl lacks Debug support test 0375 SKIPPED: curl has proxy support test 0445 SKIPPED: curl lacks ldap support test 0506 SKIPPED: curl has threaded-resolver support test 0558 SKIPPED: curl lacks TrackMemory support Warning: test573 result is ignored due to flaky Warning: test587 result is ignored due to flaky Warning: test776 result is ignored due to flaky test 0959 SKIPPED: curl has IDN support test 0960 SKIPPED: curl has IDN support test 0961 SKIPPED: curl has IDN support test 1026 SKIPPED: curl lacks manual support Warning: test1086 result is ignored due to flaky Warning: test1086 result is ignored due to timing-dependent Warning: test1112 result is ignored due to timing-dependent Warning: test1113 result is ignored due to flaky Warning: test1162 result is ignored due to flaky Warning: test1163 result is ignored due to flaky test 1179 SKIPPED: curl lacks manual support Warning: test1208 result is ignored due to flaky Warning: test1208 result is ignored due to timing-dependent test 1330 SKIPPED: curl lacks TrackMemory support test 1454 SKIPPED: curl has IPv6 support test 1461 SKIPPED: curl lacks manual support Warning: test1510 result is ignored due to flaky test 1560 SKIPPED: curl lacks ldap support Warning: test1592 result is ignored due to flaky Warning: test1592 result is ignored due to timing-dependent Warning: test1631 result is ignored due to flaky Warning: test1632 result is ignored due to flaky test 1703 SKIPPED: curl lacks Unicode support Warning: test2032 result is ignored due to flaky Warning: test2032 result is ignored due to timing-dependent test 2033 SKIPPED: curl lacks Schannel support test 2070 SKIPPED: curl lacks Schannel support test 2079 SKIPPED: curl lacks Schannel support test 2102 SKIPPED: curl lacks override-dns support test 2103 SKIPPED: curl lacks override-dns support test 2104 SKIPPED: curl lacks override-dns support test 2500 SKIPPED: curl lacks nghttpx-h3 support test 2503 SKIPPED: curl lacks nghttpx-h3 support test 4000 SKIPPED: curl lacks ECH support test 4001 SKIPPED: curl lacks ECH support Runner 185920 starting Runner 185918 starting Runner 185916 starting Runner 185914 starting Runner 185912 starting Runner 185910 starting Runner 185908 starting Runner 185906 starting CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind7 ../src/curl -q --output log/2/curl7.out --include --trace-ascii log/2/trace7 --trace-time http://127.0.0.1:39863/we/want/7 -b none -D log/2/heads7.txt > log/2/stdout7 2> log/2/stderr7 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 8 in state 4 Runner 2 (id 185908) running test 7 in state 4 Runner 3 (id 185910) running test 6 in state 4 Runner 4 (id 185912) running test 5 in state 4 Runner 5 (id 185914) running test 4 in state 4 Runner 6 (id 185916) running test 3 in state 4 Runner 7 (id 185918) running test 2 in state 4 Runner 8 (id 185920) running test 1 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 8 in state 4 Runner 2 (id 185908) running test 7 in state 4 Runner 3 (id 185910) running test 6 in state 4 Runner 4 (id 185912) running test 5 in state 4 Runner 5 (id 185914) running test 4 in state 4 Runner 6 (id 185916) running test 3 in state 4 Runner 7 (id 185918) running test 2 in state 4 Runner 8 (id 185920) running test 1 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 8 in state 4 Runner 2 (id 185908) running test 7 in state 4 Runner 3 (id 185910) running test 6 in state 4 Runner 4 (id 185912) running test 5 in state 4 Runner 5 (id 185914) running test 4 in state 4 Runner 6 (id 185916) running test 3 in state 4 Runner 7 (id 185918) running test 2 in state 4 Runner 8 (id 185920) running test 1 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 8 in state 4 Runner 2 (id 185908) running test 7 in state 4 Runner 3 (id 185910) running test 6 in state 4 Runner 4 (id 185912) running test 5 in state 4 Runner 5 (id 185914) running test 4 in state 4 Runner 6 (id 185916) running test 3 in state 4 Runner 7 (id 185918) running test 2 in state 4 Runner 8 (id 185920) running test 1 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 8 in state 4 Runner 2 (id 185908) running test 7 in state 4 Runner 3 (id 185910) running test 6 in state 4 Runner 4 (id 185912) running test 5 in state 4 Runner 5 (id 185914) running test 4 in state 4 Runner 6 (id 185916) running test 3 in state 4 Runner 7 (id 185918) running test 2 in state 4 Runner 8 (id 185920) running test 1 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 8 in state 4 Runner 2 (id 185908) running test 7 in state 4 Runner 3 (id 185910) running test 6 in state 4 Runner 4 (id 185912) running test 5 in state 4 Runner 5 (id 185914) running test 4 in state 4 Runner 6 (id 185916) running test 3 in state 4 Runner 7 (id 185918) running test 2 in state 4 Runner 8 (id 185920) running test 1 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 8 in state 4 Runner 2 (id 185908) running test 7 in state 4 Runner 3 (id 185910) running test 6 in state 4 Runner 4 (id 185912) running test 5 in state 4 Runner 5 (id 185914) running test 4 in state 4 Runner 6 (id 185916) running test 3 in state 4 Runner 7 (id 185918) running test 2 in state 4 Runner 8 (id 185920) running test 1 in state 4 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/2/server/http_server.pid" --logfile "log/2/http_server.log" --logdir "log/2" --portfile log/2/server/http_server.port --config log/2/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 185946 port 39863 * pid http => 185946 185946 test 0007...[HTTP with cookie parser and header recording] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind7 ../src/curl -q --output log/2/curl7.out --include --trace-ascii log/2/trace7 --trace-time http://127.0.0.1:39863/we/want/7 -b none -D log/2/heads7.txt > log/2/stdout7 2> log/2/stderr7 valgrind ERROR ==186128== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 7 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind7 ../src/curl -q --output log/2/curl7.out --include --trace-ascii log/2/trace7 --trace-time http://127.0.0.1:39863/we/want/7 -b none -D log/2/heads7.txt > log/2/stdout7 2> log/2/stderr7 === End of file commands.log === Start of file curl7.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Funny-head: yesyes swsclose Set-Cookie: foobar=name; domain=127.0.0.1; path=/; Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/"; Set-Cookie: partmatch=present; domain=.0.0.1; path=/; === End of file curl7.out === Start of file heads7.txt HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Funny-head: yesyes swsclose Set-Cookie: foobar=name; domain=127.0.0.1; path=/; Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/"; Set-Cookie: partmatch=present; domain=.0.0.1; path=/; === End of file heads7.txt === Start of file http_server.log 00:33:15.853555 Running HTTP IPv4 version on port 39863 00:33:15.861293 Wrote pid 185946 to log/2/server/http_server.pid 00:33:15.861609 Wrote port 39863 to log/2/server/http_server.port 00:34:20.000255 ====> Client connect 00:34:20.000476 accept_connection 3 returned 4 00:34:20.000692 accept_connection 3 returned 0 00:34:21.038853 Read 88 bytes 00:34:21.039642 Process 88 bytes request 00:34:21.041674 Got request: GET /we/want/7 HTTP/1.1 00:34:21.042041 Serve test number 7 part 0 00:34:21.048003 - request found to be complete (7) 00:34:21.049412 Wrote request (88 bytes) input to log/2/server.input 00:34:21.053324 Send response test7 section 00:34:21.054897 connection close instruction "swsclose" found in response 00:34:21.055571 Response sent (296 bytes) and written to log/2/server.response 00:34:21.055766 instructed to close connection after server-reply 00:34:21.055862 ====> Client disconnect 0 === End of file http_server.log === Start of file server.cmd Testnum 7 === End of file server.cmd === Start of file server.input GET /we/want/7 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Funny-head: yesyes swsclose Set-Cookie: foobar=name; domain=127.0.0.1; path=/; Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/"; Set-Cookie: partmatch=present; domain=.0.0.1; path=/; === End of file server.response === Start of file stderr7 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr7 === Start of file trace7 00:34:17.098229 * WARNING: failed to open cookie file "none" 00:34:19.280503 * Trying 127.0.0.1:39863... 00:34:19.954577 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 33826 00:34:20.068429 * using HTTP/1.x 00:34:20.470715 => Send header, 88 bytes (0x58) 0000: GET /we/want/7 HTTP/1.1 0019: HoCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1 ../src/curl -q --output log/8/curl1.out --include --trace-ascii log/8/trace1 --trace-time http://127.0.0.1:39461/1 > log/8/stdout1 2> log/8/stderr1 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind2 ../src/curl -q --output log/7/curl2.out --include --trace-ascii log/7/trace2 --trace-time -u fake:user http://127.0.0.1:34897/2 > log/7/stdout2 2> log/7/stderr2 st: 127.0.0.1:39863 0030: User-Agent: curl/8.17.0 0049: Accept: */* 0056: 00:34:20.832426 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:34:21.169998 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:34:21.287641 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:34:21.357274 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:34:21.363525 <= Recv header, 28 bytes (0x1c) 0000: Funny-head: yesyes swsclose. 00:34:21.543663 * Added cookie foobar="name" for domain 127.0.0.1, path /, expire 0 00:34:21.562914 <= Recv header, 51 bytes (0x33) 0000: Set-Cookie: foobar=name; domain=127.0.0.1; path=/;. 00:34:21.612566 * Added cookie mismatch="this" for domain 127.0.0.1, path "/silly/", expire 0 00:34:21.615294 <= Recv header, 61 bytes (0x3d) 0000: Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/";. 00:34:21.636431 * skipped cookie with bad tailmatch domain: 0.0.1; path=/; 00:34:21.653045 <= Recv header, 54 bytes (0x36) 0000: Set-Cookie: partmatch=present; domain=.0.0.1; path=/;. 00:34:21.694762 * no chunk, no close, no size. Assume close to signal end 00:34:21.755106 <= Recv header, 1 bytes (0x1) 0000: . 00:34:21.864051 * abort upload 00:34:21.904152 <= Recv data, 0 bytes (0x0) 00:34:22.439791 * shutting down connection #0 === End of file trace7 === Start of file valgrind7 ==186128== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind7 Warning: 185920: cleardir(log/8/lock) failed startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/8/server/http_server.pid" --logfile "log/8/http_server.log" --logdir "log/8" --portfile log/8/server/http_server.port --config log/8/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 185922 port 39461 * pid http => 185922 185922 test 0001...[HTTP GET] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1 ../src/curl -q --output log/8/curl1.out --include --trace-ascii log/8/trace1 --trace-time http://127.0.0.1:39461/1 > log/8/stdout1 2> log/8/stderr1 valgrind ERROR ==185974== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 1 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1 ../src/curl -q --output log/8/curl1.out --include --trace-ascii log/8/trace1 --trace-time http://127.0.0.1:39461/1 > log/8/stdout1 2> log/8/stderr1 === End of file commands.log === Start of file curl1.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl1.out === Start of file http_server.log 00:33:14.094216 Running HTTP IPv4 version on port 39461 00:33:14.099455 Wrote pid 185922 to log/8/server/http_server.pid 00:33:14.099689 Wrote port 39461 to log/8/server/http_server.port 00:34:19.510339 ====> Client connect 00:34:19.510545 accept_connection 3 returned 4 00:34:19.510755 accept_connection 3 returned 0 00:34:20.555732 Read 80 bytes 00:34:20.556538 Process 80 bytes request 00:34:20.558493 Got request: GET /1 HTTP/1.1 00:34:20.558835 Serve test number 1 part 0 00:34:20.564817 - request found to be complete (1) 00:34:20.566227 Wrote request (80 bytes) input to log/8/server.input 00:34:20.570142 Send response test1 section 00:34:20.572283 Response sent (267 bytes) and written to log/8/server.response 00:34:20.572513 => persistent connection request ended, awaits new request 00:34:22.577832 Connection closed by client 00:34:22.578097 ====> Client disconnect 0 === End of file http_server.log === Start of file server.cmd Testnum 1 === End of file server.cmd === Start of file server.input GET /1 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr1 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr1 === Start of file trace1 00:34:19.560533 * Trying 127.0.0.1:39461... 00:34:20.478362 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 47438 00:34:20.619062 * using HTTP/1.x 00:34:20.988835 => Send header, 80 bytes (0x50) 0000: GET /1 HTTP/1.1 0011: Host: 127.0.0.1:39461 0028: User-Agent: curl/8.17.0 0041: Accept: */* 004e: 00:34:21.337894 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:34:21.660568 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:34:21.762906 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 00:34:21.790019 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 00:34:21.798823 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 00:34:21.806532 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 00:34:21.842893 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 00:34:21.904839 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:34:21.942019 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:34:21.947064 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 00:34:22.034272 <= Recv header, 2 bytes (0x2) 0000: 00:34:22.097122 <= Recv data, 6 bytes (0x6) 0000: -foo-. 00:34:22.212785 * we are done reading and this is set to close, stop send 00:34:22.245167 * abort upload 00:34:22.752074 * shutting down connection #0 === End of file trace1 === Start of file valgrind1 ==185974== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind1 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/7/server/http_server.pid" --logfile "log/7/http_server.log" --logdir "log/7" --portfile log/7/server/http_server.port --config log/7/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 185925 port 34897 * pid http => 185925 185925 test 0002...[HTTP GET with user and password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind2 ../src/curl -q --output log/7/curl2.out --include --trace-ascii log/7/trace2 --trace-time -u fake:user http://127.0.0.1:34897/2 > log/7/stdout2 2> log/7/stderr2 valgrind ERROR ==185979== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 2 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind2 ../src/curl -q --output log/7/curl2.out --include --trace-ascii log/7/trace2 --trace-time -u fake:user http://127.0.0.1:34897/2 > log/7/stdout2 2> log/7/stderr2 === End of file commands.log === Start of file curl2.out HTTP/1.1 200 Date: Tue, 09CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind5 ../src/curl -q --output log/4/curl5.out --include --trace-ascii log/4/trace5 --trace-time http://127.0.0.1:42621/we/want/that/page/5#5 -x 127.0.0.1:42621 > log/4/stdout5 2> log/4/stderr5 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes === End of file curl2.out === Start of file http_server.log 00:33:14.301145 Running HTTP IPv4 version on port 34897 00:33:14.309096 Wrote pid 185925 to log/7/server/http_server.pid 00:33:14.309421 Wrote port 34897 to log/7/server/http_server.port 00:34:19.530407 ====> Client connect 00:34:19.530639 accept_connection 3 returned 4 00:34:19.530852 accept_connection 3 returned 0 00:34:20.675084 Read 115 bytes 00:34:20.675909 Process 115 bytes request 00:34:20.677946 Got request: GET /2 HTTP/1.1 00:34:20.678308 Serve test number 2 part 0 00:34:20.684185 - request found to be complete (2) 00:34:20.685586 Wrote request (115 bytes) input to log/7/server.input 00:34:20.686128 Send response test2 section 00:34:20.690776 connection close instruction "swsclose" found in response 00:34:20.691410 Response sent (133 bytes) and written to log/7/server.response 00:34:20.691607 instructed to close connection after server-reply 00:34:20.691700 ====> Client disconnect 0 === End of file http_server.log === Start of file server.cmd Testnum 2 === End of file server.cmd === Start of file server.input GET /2 HTTP/1.1 Host: 127.0.0.1:34897 Authorization: Basic ZmFrZTp1c2Vy User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes === End of file server.response === Start of file stderr2 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr2 === Start of file trace2 00:34:19.580129 * Trying 127.0.0.1:34897... 00:34:20.502251 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 59312 00:34:20.644811 * using HTTP/1.x 00:34:20.785545 * Server auth using Basic with user 'fake' 00:34:21.095343 => Send header, 115 bytes (0x73) 0000: GET /2 HTTP/1.1 0011: Host: 127.0.0.1:34897 0028: Authorization: Basic ZmFrZTp1c2Vy 004b: User-Agent: curl/8.17.0 0064: Accept: */* 0071: 00:34:21.461736 <= Recv header, 14 bytes (0xe) 0000: HTTP/1.1 200 00:34:21.785788 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:34:21.889488 <= Recv header, 35 bytes (0x23) 0000: Server: test-server/fake swsclose 00:34:21.960510 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:34:21.967454 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 00:34:22.007509 * no chunk, no close, no size. Assume close to signal end 00:34:22.076429 <= Recv header, 2 bytes (0x2) 0000: 00:34:22.184538 * abort upload 00:34:22.224379 <= Recv data, 0 bytes (0x0) 00:34:22.764320 * shutting down connection #0 === End of file trace2 === Start of file valgrind2 ==185979== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind2 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/4/server/http_server.pid" --logfile "log/4/http_server.log" --logdir "log/4" --portfile log/4/server/http_server.port --config log/4/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 185938 port 42621 * pid http => 185938 185938 test 0005...[HTTP over proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind5 ../src/curl -q --output log/4/curl5.out --include --trace-ascii log/4/trace5 --trace-time http://127.0.0.1:42621/we/want/that/page/5#5 -x 127.0.0.1:42621 > log/4/stdout5 2> log/4/stderr5 valgrind ERROR ==186030== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 5 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind5 ../src/curl -q --output log/4/curl5.out --include --trace-ascii log/4/trace5 --trace-time http://127.0.0.1:42621/we/want/that/page/5#5 -x 127.0.0.1:42621 > log/4/stdout5 2> log/4/stderr5 === End of file commands.log === Start of file curl5.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes === End of file curl5.out === Start of file http_server.log 00:33:15.739899 Running HTTP IPv4 version on port 42621 00:33:15.747586 Wrote pid 185938 to log/4/server/http_server.pid 00:33:15.747925 Wrote port 42621 to log/4/server/http_server.port 00:34:20.697651 ====> Client connect 00:34:20.697870 accept_connection 3 returned 4 00:34:20.698086 accept_connection 3 returned 0 00:34:21.861214 Read 150 bytes 00:34:21.862014 Process 150 bytes request 00:34:21.863984 Got request: GET http://127.0.0.1:42621/we/want/that/page/5 HTTP/1.1 00:34:21.864383 Serve test number 5 part 0 00:34:21.873565 - request found to be complete (5) 00:34:21.875039 Wrote request (150 bytes) input to log/4/server.input 00:34:21.875570 Send response test5 section 00:34:21.880169 connection close instruction "swsclose" found in response 00:34:21.880847 Response sent (130 bytes) and written to log/4/server.response 00:34:21.881057 instructed to close connection after server-reply 00:34:21.881160 ====> Client disconnect 0 === End of file http_server.log === Start of file server.cmd Testnum 5 === End of file server.cmd === Start of file server.input GET http://127.0.0.1:42621/we/want/that/page/5 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes === End of file server.response === Start of file stderr5 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 === End of file stderr5 === Start of file trace5 00:34:19.742838 * Trying 127.0.0.1:42621... 00:34:20.690839 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 47502 00:34:20.828501 * using HTTP/1.x 00:34:21.282161 => Send header, 150 bytes (0x96) 0000: GET http://127.0.0.1:42621/we/want/that/page/5 HTTP/1.1 0039: Host: 127.0.0.1:42621 0050: User-Agent: curl/8.17.0 0069: Accept: */* 0076: Proxy-Connection: Keep-Alive 0094: 00:34:21.678930 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:34:22.001495 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:34:22.113062 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 00:34:22.182067 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:34:22.188970 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:34:22.227169 * no chunk, no close, no size. Assume close to signal end 00:34:22.290993 <= Recv header, 1 bytes (0x1) 0000: . 00:34:22.400168 * abort upload 00:34:2CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind3 ../src/curl -q --output log/6/curl3.out --include --trace-ascii log/6/trace3 --trace-time -d "fooo=mooo&pooo=clue&doo=%20%20%20++++" -u "fake:-user" http://127.0.0.1:38277/3 > log/6/stdout3 2> log/6/stderr3 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind6 ../src/curl -q --output log/3/curl6.out --include --trace-ascii log/3/trace6 --trace-time http://127.0.0.1:44791/we/want/that/page/6 -b "name=contents;name2=content2" -b name3=content3 > log/3/stdout6 2> log/3/stderr6 2.462090 <= Recv data, 0 bytes (0x0) 00:34:22.998510 * shutting down connection #0 === End of file trace5 === Start of file valgrind5 ==186030== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind5 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/6/server/http_server.pid" --logfile "log/6/http_server.log" --logdir "log/6" --portfile log/6/server/http_server.port --config log/6/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 185930 port 38277 * pid http => 185930 185930 test 0003...[HTTP POST with auth and contents but with content-length set to 0] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind3 ../src/curl -q --output log/6/curl3.out --include --trace-ascii log/6/trace3 --trace-time -d "fooo=mooo&pooo=clue&doo=%20%20%20++++" -u "fake:-user" http://127.0.0.1:38277/3 > log/6/stdout3 2> log/6/stderr3 valgrind ERROR ==185992== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 3 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind3 ../src/curl -q --output log/6/curl3.out --include --trace-ascii log/6/trace3 --trace-time -d "fooo=mooo&pooo=clue&doo=%20%20%20++++" -u "fake:-user" http://127.0.0.1:38277/3 > log/6/stdout3 2> log/6/stderr3 === End of file commands.log === Start of file curl3.out HTTP/1.0 200 OK Server: test-server/fake Content-Type: text/html Content-Length: 0 === End of file curl3.out === Start of file http_server.log 00:33:14.379397 Running HTTP IPv4 version on port 38277 00:33:14.387249 Wrote pid 185930 to log/6/server/http_server.pid 00:33:14.387570 Wrote port 38277 to log/6/server/http_server.port 00:34:19.847389 ====> Client connect 00:34:19.847630 accept_connection 3 returned 4 00:34:19.847845 accept_connection 3 returned 0 00:34:21.161539 Read 226 bytes 00:34:21.162383 Process 226 bytes request 00:34:21.164455 Got request: POST /3 HTTP/1.1 00:34:21.164832 Serve test number 3 part 0 00:34:21.174153 - request found to be complete (3) 00:34:21.174793 Found Content-Length: 37 in the request 00:34:21.175999 Wrote request (226 bytes) input to log/6/server.input 00:34:21.176572 Send response test3 section 00:34:21.181769 Response sent (144 bytes) and written to log/6/server.response 00:34:21.181989 => persistent connection request ended, awaits new request 00:34:23.151366 Connection closed by client 00:34:23.151636 ====> Client disconnect 0 === End of file http_server.log === Start of file server.cmd Testnum 3 === End of file server.cmd === Start of file server.input POST /3 HTTP/1.1 Host: 127.0.0.1:38277 Authorization: Basic ZmFrZTotdXNlcg== User-Agent: curl/8.17.0 Accept: */* Content-Length: 37 Content-Type: application/x-www-form-urlencoded fooo=mooo&pooo=clue&doo=%20%20%20++++ === End of file server.input === Start of file server.response HTTP/1.0 200 OK Server: test-server/fake Content-Type: text/html Content-Length: 0 this is data even though Content-Length is set to zero === End of file server.response === Start of file stderr3 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 37 0 0 100 37 0 9 0:00:04 0:00:03 0:00:01 14 100 37 0 0 100 37 0 7 0:00:05 0:00:04 0:00:01 10 100 37 0 0 100 37 0 7 0:00:05 0:00:05 --:--:-- 9 === End of file stderr3 === Start of file trace3 00:34:19.890399 * Trying 127.0.0.1:38277... 00:34:20.823151 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 54458 00:34:20.961177 * using HTTP/1.x 00:34:21.120891 * Server auth using Basic with user 'fake' 00:34:21.582474 => Send header, 189 bytes (0xbd) 0000: POST /3 HTTP/1.1 0012: Host: 127.0.0.1:38277 0029: Authorization: Basic ZmFrZTotdXNlcg== 0050: User-Agent: curl/8.17.0 0069: Accept: */* 0076: Content-Length: 37 008a: Content-Type: application/x-www-form-urlencoded 00bb: 00:34:21.692878 => Send data, 37 bytes (0x25) 0000: fooo=mooo&pooo=clue&doo=%20%20%20++++ 00:34:21.775469 * upload completely sent off: 37 bytes 00:34:22.076030 * HTTP 1.0, assume close after body 00:34:22.101087 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.0 200 OK 00:34:22.431486 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 00:34:22.575653 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:34:22.613960 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 0 00:34:22.708830 <= Recv header, 2 bytes (0x2) 0000: 00:34:22.768470 <= Recv data, 55 bytes (0x37) 0000: this is data even though Content-Length is set to zero. 00:34:22.806795 * Excess found writing body: excess = 55, size = 0, maxdownload = 0, bytecount = 0 00:34:23.323237 * shutting down connection #0 === End of file trace3 === Start of file valgrind3 ==185992== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind3 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/3/server/http_server.pid" --logfile "log/3/http_server.log" --logdir "log/3" --portfile log/3/server/http_server.port --config log/3/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 185941 port 44791 * pid http => 185941 185941 test 0006...[HTTP with simple cookie send] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind6 ../src/curl -q --output log/3/curl6.out --include --trace-ascii log/3/trace6 --trace-time http://127.0.0.1:44791/we/want/that/page/6 -b "name=contents;name2=content2" -b name3=content3 > log/3/stdout6 2> log/3/stderr6 valgrind ERROR ==186053== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 6 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind6 ../src/curl -q --output log/3/curl6.out --include --trace-ascii log/3/trace6 --trace-time http://127.0.0.1:44791/we/want/that/page/6 -b "name=contents;name2=content2" -b name3=content3 > log/3/stdout6 2> log/3/stderr6 === End of file commands.log === Start of file curl6.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Funny-head: yesyes swsclose: booo === End of file curl6.out === Start of file http_server.log 00:33:15.889129 Running HTTP IPv4 version on port 44791 00:33:15.894224 Wrote pid 185941 to log/3/server/http_server.pid 00:33:15.894456 Wrote port 44791 to log/3/server/http_server.port 00:34:21.335005 ====> Client connect 00:34:21.335231 accept_connection 3 returned 4 00:34:21.335452 accept_connection 3 returned 0 00:34:22.435156 Read 151 bytes 00:34:22.436023 Process 151 bytes request 00:34:22.441436 Got request: GET /we/want/that/page/6 HTTP/1.1 00:34:22.441841 Serve test number 6 part 0 00:34:22.447742 - request found to be complete (6) 00:34:22.449260 Wrote request (151 bytes) input to log/3/server.input 00:34:22.449797 Send response test6 section 00:34:22.454493 connection close instruction "swsclose" found in response 00:34:22.455113 Response sent (136 bytes) and written to log/3/server.response 00:34:22.455308 instructed to close connection after server-reply 00:34:22.455403 ====> CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind8 ../src/curl -q --output log/1/curl8.out --include --trace-ascii log/1/trace8 --trace-time http://127.0.0.1:40641/we/want/8 -b log/1/heads8.txt > log/1/stdout8 2> log/1/stderr8 Client disconnect 0 === End of file http_server.log === Start of file server.cmd Testnum 6 === End of file server.cmd === Start of file server.input GET /we/want/that/page/6 HTTP/1.1 Host: 127.0.0.1:44791 User-Agent: curl/8.17.0 Accept: */* Cookie: name=contents;name2=content2;name3=content3 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Funny-head: yesyes swsclose: booo === End of file server.response === Start of file stderr6 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr6 === Start of file trace6 00:34:20.378450 * Trying 127.0.0.1:44791... 00:34:21.317461 * Established connection to 127.0.0.1 (127.0.0.1 port 44791) from 127.0.0.1 port 40982 00:34:21.458952 * using HTTP/1.x 00:34:21.855349 => Send header, 151 bytes (0x97) 0000: GET /we/want/that/page/6 HTTP/1.1 0023: Host: 127.0.0.1:44791 003a: User-Agent: curl/8.17.0 0053: Accept: */* 0060: Cookie: name=contents;name2=content2;name3=content3 0095: 00:34:22.207163 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:34:22.541735 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:34:22.647508 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:34:22.716771 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:34:22.723861 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:34:22.728850 <= Recv header, 15 bytes (0xf) 0000: swsclose: booo. 00:34:22.766152 * no chunk, no close, no size. Assume close to signal end 00:34:22.828929 <= Recv header, 1 bytes (0x1) 0000: . 00:34:22.936908 * abort upload 00:34:22.975055 <= Recv data, 0 bytes (0x0) 00:34:23.521364 * shutting down connection #0 === End of file trace6 === Start of file valgrind6 ==186053== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind6 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/1/server/http_server.pid" --logfile "log/1/http_server.log" --logdir "log/1" --portfile log/1/server/http_server.port --config log/1/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 185951 port 40641 * pid http => 185951 185951 prechecked /usr/bin/perl -e 'if("127.0.0.1" !~ /\.0\.0\.1$/) {print "Test only works for HOSTIPs ending with .0.0.1"; exit(1)}' test 0008...[HTTP with cookie parsing from header file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind8 ../src/curl -q --output log/1/curl8.out --include --trace-ascii log/1/trace8 --trace-time http://127.0.0.1:40641/we/want/8 -b log/1/heads8.txt > log/1/stdout8 2> log/1/stderr8 valgrind ERROR ==186461== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 8 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind8 ../src/curl -q --output log/1/curl8.out --include --trace-ascii log/1/trace8 --trace-time http://127.0.0.1:40641/we/want/8 -b log/1/heads8.txt > log/1/stdout8 2> log/1/stderr8 === End of file commands.log === Start of file curl8.out HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake === End of file curl8.out === Start of file heads8.txt HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Funny-head: yesyes Set-Cookie: foobar=name; domain=127.0.0.1; path=/; Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/"; Set-Cookie: partmatch=present; domain=.0.0.1; path=/w; Set-Cookie: duplicate=test; domain=.0.0.1; domain=.0.0.1; path=/donkey; Set-Cookie: cookie=yes; path=/we; Set-Cookie: cookie=perhaps; path=/we/want; Set-Cookie: name with space=is weird but; path=/we/want; Set-Cookie: trailingspace = removed; path=/we/want; Set-Cookie: nocookie=yes; path=/WE; Set-Cookie: blexp=yesyes; domain=127.0.0.1; domain=127.0.0.1; expiry=totally bad; Set-Cookie: partialip=nono; domain=.0.0.1; Set-Cookie: cookie1=-junk Set-Cookie: cookie2=-junk Set-Cookie: cookie3=-junk Set-Cookie: cookie4=-junk Set-Cookie: cookie5=-junk Set-Cookie: cookie6=-junk Set-Cookie: cookie7=-junk Set-Cookie: cookie8=-junk Set-Cookie: cookie9=junk-- Set-Cookie: cookie11= -junk Set-Cookie: cookie12= -junk Set-Cookie: cookie14=-junk Set-Cookie: cookie15=-junk Set-Cookie: cookie16=-junk Set-Cookie: cookie17=-junk Set-Cookie: cookie18=-junk Set-Cookie: cookie19=-junk Set-Cookie: cookie20=-junk Set-Cookie: cookie21=-junk Set-Cookie: cookie22=-junk Set-Cookie: cookie23=-junk Set-Cookie: cookie24=-junk Set-Cookie: cookie25=-junk Set-Cookie: cookie26= -junk Set-Cookie: cookie27=-junk Set-Cookie: cookie28=-junk Set-Cookie: cookie29=-junk Set-Cookie: cookie30=-junk Set-Cookie: cookie31=-junk Set-Cookie: cookie31=-junk === End of file heads8.txt === Start of file http_server.log 00:33:15.920584 Running HTTP IPv4 version on port 40641 00:33:15.925689 Wrote pid 185951 to log/1/server/http_server.pid 00:33:15.925929 Wrote port 40641 to log/1/server/http_server.port 00:34:25.515170 ====> Client connect 00:34:25.540065 accept_connection 3 returned 4 00:34:25.540395 accept_connection 3 returned 0 00:34:26.776980 Read 220 bytes 00:34:26.777868 Process 220 bytes request 00:34:26.779896 Got request: GET /we/want/8 HTTP/1.1 00:34:26.783641 Serve test number 8 part 0 00:34:26.790470 - request found to be complete (8) 00:34:26.792528 Wrote request (220 bytes) input to log/1/server.input 00:34:26.793049 Send response test8 section 00:34:26.793984 connection close instruction "swsclose" found in response 00:34:26.794604 Response sent (87 bytes) and written to log/1/server.response 00:34:26.794824 instructed to close connection after server-reply 00:34:26.794930 ====> Client disconnect 0 === End of file http_server.log === Start of file server.cmd Testnum 8 === End of file server.cmd === Start of file server.input GET /we/want/8 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* Cookie: name with space=is weird but; trailingspace=removed; cookie=perhaps; cookie=yes; foobar=name; blexp=yesyes; cookie9=junk-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake === End of file server.response === Start of file stderr8 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr8 === Start of file trace8 00:34:22.524867 * invalid octets in name/value, cookie dropped 00:34:22.864357 * invalid octets in name/value, cookie dropped 00:34:22.876161 * invalid octets in name/value, cookie dropped 00:34:22.879069 * invalid octets in name/value, cookie dropped 00:34:22.881103 * invalid octets in name/value, cookie dropped 00:34:22.883068 *CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind4 ../src/curl -q --output log/5/curl4.out --include --trace-ascii log/5/trace4 --trace-time -H "extra-header: here" -H "Accept: replaced" -H "X-Custom-Header;" -H "X-Test: foo; " -H "X-Test:" -H "X-Test2: foo;" -H "X-Test3: " -H "X-Test4; " -H "X-Test5;ignored" http://127.0.0.1:46263/4 http://127.0.0.1:46263/4 > log/5/stdout4 2> log/5/stderr4 invalid octets in name/value, cookie dropped 00:34:22.885296 * invalid octets in name/value, cookie dropped 00:34:22.887229 * invalid octets in name/value, cookie dropped 00:34:22.891975 * invalid octets in name/value, cookie dropped 00:34:22.894000 * invalid octets in name/value, cookie dropped 00:34:22.895944 * invalid octets in name/value, cookie dropped 00:34:22.897900 * invalid octets in name/value, cookie dropped 00:34:22.899827 * invalid octets in name/value, cookie dropped 00:34:22.901786 * invalid octets in name/value, cookie dropped 00:34:22.903728 * invalid octets in name/value, cookie dropped 00:34:22.905601 * invalid octets in name/value, cookie dropped 00:34:22.907491 * invalid octets in name/value, cookie dropped 00:34:22.909372 * invalid octets in name/value, cookie dropped 00:34:22.911276 * invalid octets in name/value, cookie dropped 00:34:22.913181 * invalid octets in name/value, cookie dropped 00:34:22.915100 * invalid octets in name/value, cookie dropped 00:34:22.916984 * invalid octets in name/value, cookie dropped 00:34:22.918891 * invalid octets in name/value, cookie dropped 00:34:22.920779 * invalid octets in name/value, cookie dropped 00:34:22.922690 * invalid octets in name/value, cookie dropped 00:34:22.924581 * invalid octets in name/value, cookie dropped 00:34:22.926450 * invalid octets in name/value, cookie dropped 00:34:22.928367 * invalid octets in name/value, cookie dropped 00:34:22.930451 * invalid octets in name/value, cookie dropped 00:34:24.794835 * Trying 127.0.0.1:40641... 00:34:25.484023 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 49282 00:34:25.618008 * using HTTP/1.x 00:34:26.195837 => Send header, 220 bytes (0xdc) 0000: GET /we/want/8 HTTP/1.1 0019: Host: 127.0.0.1:40641 0030: User-Agent: curl/8.17.0 0049: Accept: */* 0056: Cookie: name with space=is weird but; trailingspace=removed; coo 0096: kie=perhaps; cookie=yes; foobar=name; blexp=yesyes; cookie9=junk 00d6: -- 00da: 00:34:26.526742 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 00:34:26.767424 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:34:26.848033 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:34:26.882107 * no chunk, no close, no size. Assume close to signal end 00:34:26.928746 <= Recv header, 1 bytes (0x1) 0000: . 00:34:27.012733 * abort upload 00:34:27.055179 <= Recv data, 0 bytes (0x0) 00:34:27.570619 * shutting down connection #0 === End of file trace8 === Start of file valgrind8 ==186461== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind8 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/5/server/http_server.pid" --logfile "log/5/http_server.log" --logdir "log/5" --portfile log/5/server/http_server.port --config log/5/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 185934 port 46263 * pid http => 185934 185934 test 0004...[Replaced internal and added custom HTTP headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind4 ../src/curl -q --output log/5/curl4.out --include --trace-ascii log/5/trace4 --trace-time -H "extra-header: here" -H "Accept: replaced" -H "X-Custom-Header;" -H "X-Test: foo; " -H "X-Test:" -H "X-Test2: foo;" -H "X-Test3: " -H "X-Test4; " -H "X-Test5;ignored" http://127.0.0.1:46263/4 http://127.0.0.1:46263/4 > log/5/stdout4 2> log/5/stderr4 valgrind ERROR ==186010== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 4 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind4 ../src/curl -q --output log/5/curl4.out --include --trace-ascii log/5/trace4 --trace-time -H "extra-header: here" -H "Accept: replaced" -H "X-Custom-Header;" -H "X-Test: foo; " -H "X-Test:" -H "X-Test2: foo;" -H "X-Test3: " -H "X-Test4; " -H "X-Test5;ignored" http://127.0.0.1:46263/4 http://127.0.0.1:46263/4 > log/5/stdout4 2> log/5/stderr4 === End of file commands.log === Start of file curl4.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes === End of file curl4.out === Start of file http_server.log 00:33:14.574470 Running HTTP IPv4 version on port 46263 00:33:14.582717 Wrote pid 185934 to log/5/server/http_server.pid 00:33:14.583089 Wrote port 46263 to log/5/server/http_server.port 00:34:26.218836 ====> Client connect 00:34:26.219071 accept_connection 3 returned 4 00:34:26.219297 accept_connection 3 returned 0 00:34:27.205966 Read 153 bytes 00:34:27.206758 Process 153 bytes request 00:34:27.208759 Got request: GET /4 HTTP/1.1 00:34:27.209109 Serve test number 4 part 0 00:34:27.212442 - request found to be complete (4) 00:34:27.214482 Wrote request (153 bytes) input to log/5/server.input 00:34:27.214985 Send response test4 section 00:34:27.215768 connection close instruction "swsclose" found in response 00:34:27.216360 Response sent (130 bytes) and written to log/5/server.response 00:34:27.216561 instructed to close connection after server-reply 00:34:27.216702 ====> Client disconnect 0 00:34:30.466534 ====> Client connect 00:34:30.466711 accept_connection 3 returned 4 00:34:30.466800 accept_connection 3 returned 0 00:34:30.549954 Read 153 bytes 00:34:30.550266 Process 153 bytes request 00:34:30.550383 Got request: GET /4 HTTP/1.1 00:34:30.550465 Serve test number 4 part 0 00:34:30.550695 - request found to be complete (4) 00:34:30.550932 Wrote request (153 bytes) input to log/5/server.input 00:34:30.551034 Send response test4 section 00:34:30.551281 connection close instruction "swsclose" found in response 00:34:30.551514 Response sent (130 bytes) and written to log/5/server.response 00:34:30.551591 instructed to close connection after server-reply 00:34:30.551661 ====> Client disconnect 0 === End of file http_server.log === Start of file server.cmd Testnum 4 === End of file server.cmd === Start of file server.input GET /4 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 extra-header: here Accept: replaced X-Custom-Header: X-Test: foo; X-Test2: foo; GET /4 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 extra-header: here Accept: replaced X-Custom-Header: X-Test: foo; X-Test2: foo; === End of file server.input === Start of file server.response HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes === End of file server.response === Start of file stderr4 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 === End of file stderr4 === Start of file stdout4 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes === End of file stdout4 === Start of file traceCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind13 ../src/curl -q --output log/6/curl13.out --include --trace-ascii log/6/trace13 --trace-time http://127.0.0.1:38277/want/13 -X DELETE > log/6/stdout13 2> log/6/stderr13 4 00:34:26.311964 * Trying 127.0.0.1:46263... 00:34:27.046559 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 36810 00:34:27.168628 * using HTTP/1.x 00:34:27.625395 => Send header, 153 bytes (0x99) 0000: GET /4 HTTP/1.1 0011: Host: 127.0.0.1:46263 0028: User-Agent: curl/8.17.0 0041: extra-header: here 0055: Accept: replaced 0067: X-Custom-Header: 0079: X-Test: foo; 0088: X-Test2: foo; 0097: 00:34:28.041393 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:34:28.404712 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:34:28.516705 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 00:34:28.581007 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:34:28.587308 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:34:28.626217 * no chunk, no close, no size. Assume close to signal end 00:34:28.688272 <= Recv header, 1 bytes (0x1) 0000: . 00:34:28.795679 * abort upload 00:34:28.832914 <= Recv data, 0 bytes (0x0) 00:34:29.438954 * shutting down connection #0 00:34:30.771016 * Hostname 127.0.0.1 was found in DNS cache 00:34:30.840287 * Trying 127.0.0.1:46263... 00:34:30.884545 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 36818 00:34:30.892882 * using HTTP/1.x 00:34:30.931421 => Send header, 153 bytes (0x99) 0000: GET /4 HTTP/1.1 0011: Host: 127.0.0.1:46263 0028: User-Agent: curl/8.17.0 0041: extra-header: here 0055: Accept: replaced 0067: X-Custom-Header: 0079: X-Test: foo; 0088: X-Test2: foo; 0097: 00:34:30.972538 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:34:30.986671 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:34:30.998096 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 00:34:31.007080 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:34:31.014038 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:34:31.021558 * no chunk, no close, no size. Assume close to signal end 00:34:31.029011 <= Recv header, 1 bytes (0x1) 0000: . 00:34:31.043366 * abort upload 00:34:31.050240 <= Recv data, 0 bytes (0x0) 00:34:31.099888 * shutting down connection #1 === End of file trace4 === Start of file valgrind4 ==186010== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 15 in state 4 Runner 2 (id 185908) running test 9 in state 4 Runner 3 (id 185910) running test 14 in state 4 Runner 4 (id 185912) running test 12 in state 4 Runner 5 (id 185914) running test 16 in state 4 Runner 6 (id 185916) running test 13 in state 4 Runner 7 (id 185918) running test 11 in state 4 Runner 8 (id 185920) running test 10 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 15 in state 4 Runner 2 (id 185908) running test 9 in state 4 Runner 3 (id 185910) running test 14 in state 4 Runner 4 (id 185912) running test 12 in state 4 Runner 5 (id 185914) running test 16 in state 4 Runner 6 (id 185916) running test 13 in state 4 Runner 7 (id 185918) running test 11 in state 4 Runner 8 (id 185920) running test 10 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 15 in state 4 Runner 2 (id 185908) running test 9 in state 4 Runner 3 (id 185910) running test 14 in state 4 Runner 4 (id 185912) running test 12 in state 4 Runner 5 (id 185914) running test 16 in state 4 Runner 6 (id 185916) running test 13 in state 4 Runner 7 (id 185918) running test 11 in state 4 Runner 8 (id 185920) running test 10 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 15 in state 4 Runner 2 (id 185908) running test 9 in state 4 Runner 3 (id 185910) running test 14 in state 4 Runner 4 (id 185912) running test 12 in state 4 Runner 5 (id 185914) running test 16 in state 4 Runner 6 (id 185916) running test 13 in state 4 Runner 7 (id 185918) running test 11 in state 4 Runner 8 (id 185920) running test 10 in state 4 test 0013...[HTTP custom request 'DELETE'] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind13 ../src/curl -q --output log/6/curl13.out --include --trace-ascii log/6/trace13 --trace-time http://127.0.0.1:38277/want/13 -X DELETE > log/6/stdout13 2> log/6/stderr13 valgrind ERROR ==187457== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 13 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind13 ../src/curl -q --output log/6/curl13.out --include --trace-ascii log/6/trace13 --trace-time http://127.0.0.1:38277/want/13 -X DELETE > log/6/stdout13 2> log/6/stderr13 === End of file commands.log === Start of file curl13.out HTTP/1.1 200 Read you Content-Length: 29 Deleted: suppose we got a header like this! ;-) blabla custom request result === End of file curl13.out === Start of file http_server.log 00:34:29.101490 ====> Client connect 00:34:29.101673 accept_connection 3 returned 4 00:34:29.101758 accept_connection 3 returned 0 00:34:29.109640 Read 93 bytes 00:34:29.109795 Process 93 bytes request 00:34:29.109922 Got request: GET /verifiedserver HTTP/1.1 00:34:29.110143 Are-we-friendly question received 00:34:29.110326 Wrote request (93 bytes) input to log/6/server.input 00:34:29.110475 Identifying ourselves as friends 00:34:29.110861 Response sent (57 bytes) and written to log/6/server.response 00:34:29.110954 special request received, no persistency 00:34:29.111040 ====> Client disconnect 0 00:35:16.572478 ====> Client connect 00:35:16.572607 accept_connection 3 returned 4 00:35:16.572682 accept_connection 3 returned 0 00:35:17.640800 Read 89 bytes 00:35:17.641002 Process 89 bytes request 00:35:17.641104 Got request: DELETE /want/13 HTTP/1.1 00:35:17.641175 Serve test number 13 part 0 00:35:17.641388 - request found to be complete (13) 00:35:17.641701 Wrote request (89 bytes) input to log/6/server.input 00:35:17.641810 Send response test13 section 00:35:17.642111 Response sent (123 bytes) and written to log/6/server.response 00:35:17.642184 => persistent connection request ended, awaits new request 00:35:20.108434 Connection closed by client 00:35:20.108653 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 46334 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 13 === End of file server.cmd === Start of file server.input DELETE /want/13 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 Read you Content-Length: 29 Deleted: suppose we got a header like this! ;-) blabla custom request result === End of file server.response === Start of file stderr13 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind14 ../src/curl -q --output log/3/curl14.out --include --trace-ascii log/3/trace14 --trace-time http://127.0.0.1:44791/want/14 -i --head > log/3/stdout14 2> log/3/stderr14 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind12 ../src/curl -q --output log/4/curl12.out --include --trace-ascii log/4/trace12 --trace-time http://127.0.0.1:42621/want/12 -r 100-200 > log/4/stdout12 2> log/4/stderr12 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 29 100 29 0 0 6 0 0:00:04 0:00:04 --:--:-- 8 100 29 100 29 0 0 6 0 0:00:04 0:00:04 --:--:-- 8 === End of file stderr13 === Start of file trace13 00:35:16.614645 * Trying 127.0.0.1:38277... 00:35:17.562388 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 37756 00:35:17.704281 * using HTTP/1.x 00:35:18.064798 => Send header, 89 bytes (0x59) 0000: DELETE /want/13 HTTP/1.1 001a: Host: 127.0.0.1:38277 0031: User-Agent: curl/8.17.0 004a: Accept: */* 0057: 00:35:18.419639 <= Recv header, 23 bytes (0x17) 0000: HTTP/1.1 200 Read you 00:35:18.765592 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 29 00:35:18.855291 <= Recv header, 49 bytes (0x31) 0000: Deleted: suppose we got a header like this! ;-) 00:35:18.954616 <= Recv header, 2 bytes (0x2) 0000: 00:35:19.016772 <= Recv data, 29 bytes (0x1d) 0000: blabla custom request result. 00:35:19.616621 * Connection #0 to host 127.0.0.1:38277 left intact === End of file trace13 === Start of file valgrind13 ==187457== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind13 test 0014...[HTTP HEAD with Connection: close] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind14 ../src/curl -q --output log/3/curl14.out --include --trace-ascii log/3/trace14 --trace-time http://127.0.0.1:44791/want/14 -i --head > log/3/stdout14 2> log/3/stderr14 valgrind ERROR ==187492== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 14 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind14 ../src/curl -q --output log/3/curl14.out --include --trace-ascii log/3/trace14 --trace-time http://127.0.0.1:44791/want/14 -i --head > log/3/stdout14 2> log/3/stderr14 === End of file commands.log === Start of file curl14.out HTTP/1.1 200 OK Server: thebest/1.0 Connection: close === End of file curl14.out === Start of file http_server.log 00:34:30.174964 ====> Client connect 00:34:30.175150 accept_connection 3 returned 4 00:34:30.175239 accept_connection 3 returned 0 00:34:30.183618 Read 93 bytes 00:34:30.183745 Process 93 bytes request 00:34:30.183848 Got request: GET /verifiedserver HTTP/1.1 00:34:30.184050 Are-we-friendly question received 00:34:30.184226 Wrote request (93 bytes) input to log/3/server.input 00:34:30.184397 Identifying ourselves as friends 00:34:30.184856 Response sent (57 bytes) and written to log/3/server.response 00:34:30.184947 special request received, no persistency 00:34:30.185034 ====> Client disconnect 0 00:35:17.824099 ====> Client connect 00:35:17.824252 accept_connection 3 returned 4 00:35:17.824341 accept_connection 3 returned 0 00:35:18.859648 Read 87 bytes 00:35:18.859857 Process 87 bytes request 00:35:18.859969 Got request: HEAD /want/14 HTTP/1.1 00:35:18.860045 Serve test number 14 part 0 00:35:18.860206 - request found to be complete (14) 00:35:18.860478 Wrote request (87 bytes) input to log/3/server.input 00:35:18.860585 Send response test14 section 00:35:18.860874 Response sent (55 bytes) and written to log/3/server.response 00:35:18.860985 => persistent connection request ended, awaits new request 00:35:20.660613 Connection closed by client 00:35:20.660876 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44791... * Established connection to 127.0.0.1 (127.0.0.1 port 44791) from 127.0.0.1 port 50024 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44791 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:44791 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185941 === End of file http_verify.out === Start of file server.cmd Testnum 14 === End of file server.cmd === Start of file server.input HEAD /want/14 HTTP/1.1 Host: 127.0.0.1:44791 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185941 HTTP/1.1 200 OK Server: thebest/1.0 Connection: close === End of file server.response === Start of file stderr14 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr14 === Start of file trace14 00:35:16.864864 * Trying 127.0.0.1:44791... 00:35:17.790444 * Established connection to 127.0.0.1 (127.0.0.1 port 44791) from 127.0.0.1 port 33264 00:35:17.927241 * using HTTP/1.x 00:35:18.282446 => Send header, 87 bytes (0x57) 0000: HEAD /want/14 HTTP/1.1 0018: Host: 127.0.0.1:44791 002f: User-Agent: curl/8.17.0 0048: Accept: */* 0055: 00:35:18.651122 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:35:18.983151 <= Recv header, 20 bytes (0x14) 0000: Server: thebest/1.0. 00:35:19.132310 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:35:19.225917 <= Recv header, 1 bytes (0x1) 0000: . 00:35:19.316227 * we are done reading and this is set to close, stop send 00:35:19.348625 * abort upload 00:35:19.834472 * shutting down connection #0 === End of file trace14 === Start of file valgrind14 ==187492== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind14 test 0012...[HTTP range support] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind12 ../src/curl -q --output log/4/curl12.out --include --trace-ascii log/4/trace12 --trace-time http://127.0.0.1:42621/want/12 -r 100-200 > log/4/stdout12 2> log/4/stderr12 valgrind ERROR ==187338== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 12 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind12 ../src/curl -q --output log/4/curl12.out --include --trace-ascii log/4/trace12 --trace-time http://127.0.0.1:42621/want/12 -r 100-200 > log/4/stdout12 2> log/4/stderr12 === End of file commands.log === Start of file curl12.out HTTP/1.1 206 Partial Content Date: Mon, 13 Nov 2000 13:41:09 GMT Server: Apache/1.3.11 (Unix) PHP/3.0.14 Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 101 Content-Range: bytes 100-200/3527 Connection: close Content-Type: text/html ..partial data returned from the server as a result of setting an explicit byte range in the request === End of file curl12.out === Start of file http_server.log 00:34:29.571440 ====> Client connect 00:34:29.571625 accept_connection 3 returned 4 00:34:29.571714 accept_connection 3 returned 0 00:34:29.582842 Read 93 bytes 00:34:29.582971 Process 93 bytes request 00:34:29.583080 Got request: GET /verifiedserver HTTP/1.1 00:34:29.583322 Are-we-friendly question received 00:34:29.583502 Wrote request (93 bytes) input to log/4/server.input 00:34:29.583653 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind11 ../src/curl -q --output log/7/curl11.out --include --trace-ascii log/7/trace11 --trace-time http://127.0.0.1:34897/want/11 -L > log/7/stdout11 2> log/7/stderr11 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind10 ../src/curl -q --output log/8/curl10.out --include --trace-ascii log/8/trace10 --trace-time http://127.0.0.1:39461/we/want/10 -T log/8/test10.txt > log/8/stdout10 2> log/8/stderr10 Identifying ourselves as friends 00:34:29.584071 Response sent (57 bytes) and written to log/4/server.response 00:34:29.584166 special request received, no persistency 00:34:29.584258 ====> Client disconnect 0 00:35:17.571504 ====> Client connect 00:35:17.571649 accept_connection 3 returned 4 00:35:17.571731 accept_connection 3 returned 0 00:35:18.657678 Read 108 bytes 00:35:18.657876 Process 108 bytes request 00:35:18.657984 Got request: GET /want/12 HTTP/1.1 00:35:18.658063 Serve test number 12 part 0 00:35:18.658295 - request found to be complete (12) 00:35:18.658557 Wrote request (108 bytes) input to log/4/server.input 00:35:18.658669 Send response test12 section 00:35:18.659563 Response sent (407 bytes) and written to log/4/server.response 00:35:18.659670 => persistent connection request ended, awaits new request 00:35:20.727354 Connection closed by client 00:35:20.727608 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 46996 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 12 === End of file server.cmd === Start of file server.input GET /want/12 HTTP/1.1 Host: 127.0.0.1:42621 Range: bytes=100-200 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 206 Partial Content Date: Mon, 13 Nov 2000 13:41:09 GMT Server: Apache/1.3.11 (Unix) PHP/3.0.14 Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 101 Content-Range: bytes 100-200/3527 Connection: close Content-Type: text/html ..partial data returned from the server as a result of setting an explicit byte range in the request === End of file server.response === Start of file stderr12 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 101 100 101 0 0 21 0 0:00:04 0:00:04 --:--:-- 29 100 101 100 101 0 0 20 0 0:00:05 0:00:04 0:00:01 28 === End of file stderr12 === Start of file trace12 00:35:16.612278 * Trying 127.0.0.1:42621... 00:35:17.562647 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 53400 00:35:17.704277 * using HTTP/1.x 00:35:18.079548 => Send header, 108 bytes (0x6c) 0000: GET /want/12 HTTP/1.1 0017: Host: 127.0.0.1:42621 002e: Range: bytes=100-200 0044: User-Agent: curl/8.17.0 005d: Accept: */* 006a: 00:35:18.449399 <= Recv header, 30 bytes (0x1e) 0000: HTTP/1.1 206 Partial Content 00:35:18.767711 <= Recv header, 37 bytes (0x25) 0000: Date: Mon, 13 Nov 2000 13:41:09 GMT 00:35:18.871635 <= Recv header, 41 bytes (0x29) 0000: Server: Apache/1.3.11 (Unix) PHP/3.0.14 00:35:18.900957 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 00:35:18.909763 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 00:35:18.917381 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 00:35:18.950900 <= Recv header, 21 bytes (0x15) 0000: Content-Length: 101 00:35:18.980673 <= Recv header, 35 bytes (0x23) 0000: Content-Range: bytes 100-200/3527 00:35:19.034751 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:35:19.072238 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:35:19.156563 <= Recv header, 2 bytes (0x2) 0000: 00:35:19.218767 <= Recv data, 101 bytes (0x65) 0000: ..partial data returned from the.server as a result of setting a 0040: n explicit byte range.in the request. 00:35:19.352157 * we are done reading and this is set to close, stop send 00:35:19.385303 * abort upload 00:35:19.897554 * shutting down connection #0 === End of file trace12 === Start of file valgrind12 ==187338== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind12 test 0011...[simple HTTP Location: following] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind11 ../src/curl -q --output log/7/curl11.out --include --trace-ascii log/7/trace11 --trace-time http://127.0.0.1:34897/want/11 -L > log/7/stdout11 2> log/7/stderr11 valgrind ERROR ==187332== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 11 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind11 ../src/curl -q --output log/7/curl11.out --include --trace-ascii log/7/trace11 --trace-time http://127.0.0.1:34897/want/11 -L > log/7/stdout11 2> log/7/stderr11 === End of file commands.log === Start of file curl11.out HTTP/1.1 301 This is a weirdo text message swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: data/110002.txt?coolsite=yes Connection: close HTTP/1.1 200 Followed here fine swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 52 If this is received, the location following worked === End of file curl11.out === Start of file http_server.log 00:34:28.446079 ====> Client connect 00:34:28.446257 accept_connection 3 returned 4 00:34:28.446344 accept_connection 3 returned 0 00:34:28.454199 Read 93 bytes 00:34:28.454314 Process 93 bytes request 00:34:28.454416 Got request: GET /verifiedserver HTTP/1.1 00:34:28.454617 Are-we-friendly question received 00:34:28.454783 Wrote request (93 bytes) input to log/7/server.input 00:34:28.454917 Identifying ourselves as friends 00:34:28.455293 Response sent (57 bytes) and written to log/7/server.response 00:34:28.455384 special request received, no persistency 00:34:28.455469 ====> Client disconnect 0 00:35:16.321645 ====> Client connect 00:35:16.321793 accept_connection 3 returned 4 00:35:16.321876 accept_connection 3 returned 0 00:35:17.387646 Read 86 bytes 00:35:17.387861 Process 86 bytes request 00:35:17.387960 Got request: GET /want/11 HTTP/1.1 00:35:17.388036 Serve test number 11 part 0 00:35:17.388316 - request found to be complete (11) 00:35:17.388776 Wrote request (86 bytes) input to log/7/server.input 00:35:17.388895 Send response test11 section 00:35:17.389128 connection close instruction "swsclose" found in response 00:35:17.389374 Response sent (234 bytes) and written to log/7/server.response 00:35:17.389442 instructed to close connection after server-reply 00:35:17.389503 ====> Client disconnect 0 00:35:19.778636 ====> Client connect 00:35:19.778784 accept_connection 3 returned 4 00:35:19.778867 accept_connection 3 returned 0 00:35:19.857816 Read 112 bytes 00:35:19.858032 Process 112 bytes request 00:35:19.858142 Got request: GET /want/data/110002.txt?coolsite=yes HTTP/1.1 00:35:19.858273 Serve test number 11 part 2 00:35:19.858466 - request found to be complete (11) 00:35:19.858680 Wrote request (112 bytes) input to log/7/server.input 00:35:19.858803 Send response test11 section 00:35:19.859037 connection close instruction "swsclose" found in response 00:35:19.859258 Response sent (174 bytes) and written to log/7/server.response 00:35:19.859332 instructed to close connection after server-reply 00:35:19.859396 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 40190 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 11 === End of file server.cmd === Start of file server.input GET /want/11 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* GET /want/data/110002.txt?coolsite=yes HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 301 This is a weirdo text message swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: data/110002.txt?coolsite=yes Connection: close This server reply is for testing a simple Location: following HTTP/1.1 200 Followed here fine swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 52 If this is received, the location following worked === End of file server.response === Start of file stderr11 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 52 100 52 0 0 8 0 0:00:06 0:00:06 --:--:-- 136 100 52 100 52 0 0 8 0 0:00:06 0:00:06 --:--:-- 114 === End of file stderr11 === Start of file trace11 00:35:16.361572 * Trying 127.0.0.1:34897... 00:35:17.308736 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 59332 00:35:17.449357 * using HTTP/1.x 00:35:17.808216 => Send header, 86 bytes (0x56) 0000: GET /want/11 HTTP/1.1 0017: Host: 127.0.0.1:34897 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 00:35:18.155525 <= Recv header, 52 bytes (0x34) 0000: HTTP/1.1 301 This is a weirdo text message swsclose. 00:35:18.480233 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:35:18.584600 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:35:18.675068 <= Recv header, 39 bytes (0x27) 0000: Location: data/110002.txt?coolsite=yes. 00:35:18.732389 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:35:18.813991 <= Recv header, 1 bytes (0x1) 0000: . 00:35:19.064840 * Request completely sent off 00:35:19.334702 * shutting down connection #0 00:35:19.931873 * Issue another request to this URL: 'http://127.0.0.1:34897/want/data/110002.txt?coolsite=yes' 00:35:20.110392 * Hostname 127.0.0.1 was found in DNS cache 00:35:20.153856 * Trying 127.0.0.1:34897... 00:35:20.191180 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 59348 00:35:20.197747 * using HTTP/1.x 00:35:20.240894 => Send header, 112 bytes (0x70) 0000: GET /want/data/110002.txt?coolsite=yes HTTP/1.1 0031: Host: 127.0.0.1:34897 0048: User-Agent: curl/8.17.0 0061: Accept: */* 006e: 00:35:20.280325 <= Recv header, 41 bytes (0x29) 0000: HTTP/1.1 200 Followed here fine swsclose. 00:35:20.289895 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:35:20.297795 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:35:20.324843 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 52. 00:35:20.348837 <= Recv header, 1 bytes (0x1) 0000: . 00:35:20.372727 <= Recv data, 52 bytes (0x34) 0000: If this is received, the location following worked.. 00:35:20.649256 * Connection #1 to host 127.0.0.1:34897 left intact === End of file trace11 === Start of file valgrind11 ==187332== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind11 test 0010...[simple HTTP PUT from file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind10 ../src/curl -q --output log/8/curl10.out --include --trace-ascii log/8/trace10 --trace-time http://127.0.0.1:39461/we/want/10 -T log/8/test10.txt > log/8/stdout10 2> log/8/stderr10 valgrind ERROR ==187305== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 10 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind10 ../src/curl -q --output log/8/curl10.out --include --trace-ascii log/8/trace10 --trace-time http://127.0.0.1:39461/we/want/10 -T log/8/test10.txt > log/8/stdout10 2> log/8/stderr10 === End of file commands.log === Start of file curl10.out HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file curl10.out === Start of file http_server.log 00:34:28.368334 ====> Client connect 00:34:28.368506 accept_connection 3 returned 4 00:34:28.368593 accept_connection 3 returned 0 00:34:28.382239 Read 93 bytes 00:34:28.382371 Process 93 bytes request 00:34:28.382473 Got request: GET /verifiedserver HTTP/1.1 00:34:28.382688 Are-we-friendly question received 00:34:28.382853 Wrote request (93 bytes) input to log/8/server.input 00:34:28.382986 Identifying ourselves as friends 00:34:28.383331 Response sent (57 bytes) and written to log/8/server.response 00:34:28.383427 special request received, no persistency 00:34:28.383516 ====> Client disconnect 0 00:35:17.000737 ====> Client connect 00:35:17.000882 accept_connection 3 returned 4 00:35:17.000966 accept_connection 3 returned 0 00:35:18.229928 Read 187 bytes 00:35:18.230136 Process 187 bytes request 00:35:18.230231 Got request: PUT /we/want/10 HTTP/1.1 00:35:18.230303 Serve test number 10 part 0 00:35:18.230539 - request found to be complete (10) 00:35:18.230897 Found Content-Length: 78 in the request 00:35:18.231139 Wrote request (187 bytes) input to log/8/server.input 00:35:18.231249 Send response test10 section 00:35:18.231858 connection close instruction "swsclose" found in response 00:35:18.232072 Response sent (98 bytes) and written to log/8/server.response 00:35:18.232161 instructed to close connection after server-reply 00:35:18.232244 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 46372 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 10 === End of file server.cmd === Start of file server.input PUT /we/want/10 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* Content-Length: 78 Weird file to upload for testing the PUT feature === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file server.response === Start of file stderr10 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload TotCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind15 ../src/curl -q --include --trace-ascii log/1/trace15 --trace-time http://127.0.0.1:40641/want/15 --write-out "%{url_effective} %{http_code} %{size_download}\n" > log/1/stdout15 2> log/1/stderr15 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind16 ../src/curl -q --output log/5/curl16.out --include --trace-ascii log/5/trace16 --trace-time -U fake@user:loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong -x 127.0.0.1:46263 http://we.want.that.site.com/16 > log/5/stdout16 2> log/5/stderr16 al Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 78 0 0 100 78 0 20 0:00:03 0:00:03 --:--:-- 31 100 89 0 11 100 78 2 16 0:00:04 0:00:04 --:--:-- 25 100 89 0 11 100 78 2 15 0:00:05 0:00:04 0:00:01 24 === End of file stderr10 === Start of file test10.txt Weird file to upload for testing the PUT feature === End of file test10.txt === Start of file trace10 00:35:17.039310 * Trying 127.0.0.1:39461... 00:35:17.984872 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 37960 00:35:18.102451 * using HTTP/1.x 00:35:18.651790 => Send header, 109 bytes (0x6d) 0000: PUT /we/want/10 HTTP/1.1 001a: Host: 127.0.0.1:39461 0031: User-Agent: curl/8.17.0 004a: Accept: */* 0057: Content-Length: 78 006b: 00:35:18.753805 => Send data, 78 bytes (0x4e) 0000: Weird. file. to. upload.for. testing.the. PUT. 0040: feature. 00:35:18.844143 * upload completely sent off: 78 bytes 00:35:19.130201 * HTTP 1.0, assume close after body 00:35:19.155603 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.0 200 OK swsclose. 00:35:19.472748 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:35:19.577896 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:35:19.671318 <= Recv header, 1 bytes (0x1) 0000: . 00:35:19.731335 <= Recv data, 11 bytes (0xb) 0000: blablabla.. 00:35:19.841521 <= Recv data, 0 bytes (0x0) 00:35:20.347922 * shutting down connection #0 === End of file trace10 === Start of file valgrind10 ==187305== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind10 test 0015...[--write-out test] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind15 ../src/curl -q --include --trace-ascii log/1/trace15 --trace-time http://127.0.0.1:40641/want/15 --write-out "%{url_effective} %{http_code} %{size_download}\n" > log/1/stdout15 2> log/1/stderr15 valgrind ERROR ==188022== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 15 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind15 ../src/curl -q --include --trace-ascii log/1/trace15 --trace-time http://127.0.0.1:40641/want/15 --write-out "%{url_effective} %{http_code} %{size_download}\n" > log/1/stdout15 2> log/1/stderr15 === End of file commands.log === Start of file http_server.log 00:34:32.918783 ====> Client connect 00:34:32.918943 accept_connection 3 returned 4 00:34:32.919018 accept_connection 3 returned 0 00:34:32.925870 Read 93 bytes 00:34:32.925984 Process 93 bytes request 00:34:32.926081 Got request: GET /verifiedserver HTTP/1.1 00:34:32.926266 Are-we-friendly question received 00:34:32.926413 Wrote request (93 bytes) input to log/1/server.input 00:34:32.926530 Identifying ourselves as friends 00:34:32.926886 Response sent (57 bytes) and written to log/1/server.response 00:34:32.926965 special request received, no persistency 00:34:32.927044 ====> Client disconnect 0 00:35:20.248072 ====> Client connect 00:35:20.248218 accept_connection 3 returned 4 00:35:20.248296 accept_connection 3 returned 0 00:35:21.309364 Read 86 bytes 00:35:21.309580 Process 86 bytes request 00:35:21.309678 Got request: GET /want/15 HTTP/1.1 00:35:21.309753 Serve test number 15 part 0 00:35:21.310045 - request found to be complete (15) 00:35:21.310304 Wrote request (86 bytes) input to log/1/server.input 00:35:21.310413 Send response test15 section 00:35:21.310734 Response sent (98 bytes) and written to log/1/server.response 00:35:21.310835 => persistent connection request ended, awaits new request 00:35:23.945812 Connection closed by client 00:35:23.946081 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 57450 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 15 === End of file server.cmd === Start of file server.input GET /want/15 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Fake: yes Fake: yes Fake: yes Content-Length: 26 Repeated nonsense-headers === End of file server.response === Start of file stderr15 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 7 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 7 === End of file stderr15 === Start of file stdout15 HTTP/1.1 200 OK Fake: yes Fake: yes Fake: yes Content-Length: 26 Repeated nonsense-headers http://127.0.0.1:40641/want/15 200 26 === End of file stdout15 === Start of file trace15 00:35:19.266875 * Trying 127.0.0.1:40641... 00:35:20.226533 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 39578 00:35:20.354326 * using HTTP/1.x 00:35:20.731692 => Send header, 86 bytes (0x56) 0000: GET /want/15 HTTP/1.1 0017: Host: 127.0.0.1:40641 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 00:35:21.098406 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:35:21.433032 <= Recv header, 11 bytes (0xb) 0000: Fake: yes 00:35:21.525902 <= Recv header, 11 bytes (0xb) 0000: Fake: yes 00:35:21.542750 <= Recv header, 11 bytes (0xb) 0000: Fake: yes 00:35:21.574958 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 00:35:21.658151 <= Recv header, 2 bytes (0x2) 0000: 00:35:21.720582 <= Recv data, 26 bytes (0x1a) 0000: Repeated nonsense-headers. 00:35:22.303965 * Connection #0 to host 127.0.0.1:40641 left intact === End of file trace15 === Start of file valgrind15 ==188022== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind15 test 0016...[HTTP with proxy authorization] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind16 ../src/curl -q --output log/5/curl16.out --include --trace-ascii log/5/trace16 --trace-time -U fake@user:loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong -x 127.0.0.1:46263 http://we.want.that.site.com/16 > log/5/stdout16 2> log/5/stderr16 valgrind ERROR ==188175== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 16 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind16 ../src/curl -q --output log/5/curl16.out --include --trace-ascii log/5/trace16 --trace-time -U fake@user:looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind9 ../src/curl -q --output log/2/curl9.out --include --trace-ascii log/2/trace9 --trace-time http://127.0.0.1:39863/we/want/9 -F name=daniel -F tool=curl -F file=@log/2/test9.txt > log/2/stdout9 2> log/2/stderr9 oooooooooooooooooooooooooooooooooooooooooooooong -x 127.0.0.1:46263 http://we.want.that.site.com/16 > log/5/stdout16 2> log/5/stderr16 === End of file commands.log === Start of file curl16.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Funny-head: yesyes Content-Length: 22 the content goes here === End of file curl16.out === Start of file http_server.log 00:34:34.173648 ====> Client connect 00:34:34.173818 accept_connection 3 returned 4 00:34:34.173890 accept_connection 3 returned 0 00:34:34.180075 Read 93 bytes 00:34:34.180193 Process 93 bytes request 00:34:34.180285 Got request: GET /verifiedserver HTTP/1.1 00:34:34.180453 Are-we-friendly question received 00:34:34.180601 Wrote request (93 bytes) input to log/5/server.input 00:34:34.180719 Identifying ourselves as friends 00:34:34.181050 Response sent (57 bytes) and written to log/5/server.response 00:34:34.181132 special request received, no persistency 00:34:34.181207 ====> Client disconnect 0 00:35:21.207708 ====> Client connect 00:35:21.207857 accept_connection 3 returned 4 00:35:21.207937 accept_connection 3 returned 0 00:35:22.460880 Read 418 bytes 00:35:22.461097 Process 418 bytes request 00:35:22.461195 Got request: GET http://we.want.that.site.com/16 HTTP/1.1 00:35:22.461361 Serve test number 16 part 0 00:35:22.461662 - request found to be complete (16) 00:35:22.462200 Wrote request (418 bytes) input to log/5/server.input 00:35:22.462321 Send response test16 section 00:35:22.462710 Response sent (169 bytes) and written to log/5/server.response 00:35:22.462817 => persistent connection request ended, awaits new request 00:35:25.414098 Connection closed by client 00:35:25.414347 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 49424 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 16 === End of file server.cmd === Start of file server.input GET http://we.want.that.site.com/16 HTTP/1.1 Host: we.want.that.site.com Proxy-Authorization: Basic ZmFrZUB1c2VyOmxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZw== User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Funny-head: yesyes Content-Length: 22 the content goes here === End of file server.response === Start of file stderr16 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 22 100 22 0 0 4 0 0:00:05 0:00:05 --:--:-- 5 100 22 100 22 0 0 4 0 0:00:05 0:00:05 --:--:-- 5 100 22 100 22 0 0 4 0 0:00:05 0:00:05 --:--:-- 5 === End of file stderr16 === Start of file trace16 00:35:21.254677 * Trying 127.0.0.1:46263... 00:35:22.184402 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 38024 00:35:22.311931 * using HTTP/1.x 00:35:22.474019 * Proxy auth using Basic with user 'fake@user' 00:35:22.883097 => Send header, 418 bytes (0x1a2) 0000: GET http://we.want.that.site.com/16 HTTP/1.1 002e: Host: we.want.that.site.com 004b: Proxy-Authorization: Basic ZmFrZUB1c2VyOmxvb29vb29vb29vb29vb29vb 008b: 29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb 00cb: 29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb 010b: 29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb 014b: 29vb29vb29uZw== 015c: User-Agent: curl/8.17.0 0175: Accept: */* 0182: Proxy-Connection: Keep-Alive 01a0: 00:35:23.292582 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:35:23.655438 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:35:23.810497 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 00:35:23.894206 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:35:23.900997 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 00:35:23.931454 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 22 00:35:24.015061 <= Recv header, 2 bytes (0x2) 0000: 00:35:24.081914 <= Recv data, 22 bytes (0x16) 0000: the content goes here. 00:35:24.764520 * Connection #0 to host 127.0.0.1:46263 left intact === End of file trace16 === Start of file valgrind16 ==188175== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind16 test 0009...[HTTP RFC1867-type formposting] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind9 ../src/curl -q --output log/2/curl9.out --include --trace-ascii log/2/trace9 --trace-time http://127.0.0.1:39863/we/want/9 -F name=daniel -F tool=curl -F file=@log/2/test9.txt > log/2/stdout9 2> log/2/stderr9 valgrind ERROR ==187253== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 9 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind9 ../src/curl -q --output log/2/curl9.out --include --trace-ascii log/2/trace9 --trace-time http://127.0.0.1:39863/we/want/9 -F name=daniel -F tool=curl -F file=@log/2/test9.txt > log/2/stdout9 2> log/2/stderr9 === End of file commands.log === Start of file curl9.out HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file curl9.out === Start of file http_server.log 00:34:28.888587 ====> Client connect 00:34:28.888750 accept_connection 3 returned 4 00:34:28.888828 accept_connection 3 returned 0 00:34:28.895476 Read 93 bytes 00:34:28.895667 Process 93 bytes request 00:34:28.895767 Got request: GET /verifiedserver HTTP/1.1 00:34:28.895958 Are-we-friendly question received 00:34:28.896130 Wrote request (93 bytes) input to log/2/server.input 00:34:28.896273 Identifying ourselves as friends 00:34:28.896650 Response sent (57 bytes) and written to log/2/server.response 00:34:28.896740 special request received, no persistency 00:34:28.896823 ====> Client disconnect 0 00:35:23.899239 ====> Client connect 00:35:23.899395 accept_connection 3 returned 4 00:35:23.899473 accept_connection 3 returned 0 00:35:25.705880 Read 633 bytes 00:35:25.706122 Process 633 bytes request 00:35:25.706235 Got request: POST /we/want/9 HTTP/1.1 00:35:25.706317 Serve test number 9 part 0 00:35:25.706641 - request found to be complete (9) 00:35:25.707064 Found Content-Length: 431 in the request 00:35:25.707359 Wrote request (633 bytes) input to log/2/server.input 00:35:25.707484 Send response test9 section 00:35:25.708154 connection close instruction "swsclose" found in response 00:35:25.708360 Response sent (98 bytes) and written to log/2/server.response 00:35:25.708433 instructed to close connection after server-reply 00:35:25.708501 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:3CMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind21 ../src/curl -q --output log/8/curl21.out --include --trace-ascii log/8/trace21 --trace-time -I -d FOOO -F moo=moo localhost > log/8/stdout21 2> log/8/stderr21 CMD (1792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind19 ../src/curl -q --output log/4/curl19.out --include --trace-ascii log/4/trace19 --trace-time --trace-config all 127.0.0.1:47 > log/4/stdout19 2> log/4/stderr19 9863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 45134 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 9 === End of file server.cmd === Start of file server.input POST /we/want/9 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* Content-Length: 431 Content-Type: multipart/form-data; boundary=------------------------XMuG7Ki2wbIMuE4s31bcoc --------------------------XMuG7Ki2wbIMuE4s31bcoc Content-Disposition: form-data; name="name" daniel --------------------------XMuG7Ki2wbIMuE4s31bcoc Content-Disposition: form-data; name="tool" curl --------------------------XMuG7Ki2wbIMuE4s31bcoc Content-Disposition: form-data; name="file"; filename="test9.txt" Content-Type: text/plain foo- This is a moo- bar --------------------------XMuG7Ki2wbIMuE4s31bcoc-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file server.response === Start of file stderr9 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 431 0 0 100 431 0 95 0:00:04 0:00:04 --:--:-- 135 100 442 0 11 100 431 1 76 0:00:05 0:00:05 --:--:-- 102 100 442 0 11 100 431 1 74 0:00:05 0:00:05 --:--:-- 99 === End of file stderr9 === Start of file test9.txt foo- This is a moo- bar === End of file test9.txt === Start of file trace9 00:35:22.944211 * Trying 127.0.0.1:39863... 00:35:23.923508 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 51648 00:35:24.054340 * using HTTP/1.x 00:35:25.140202 => Send header, 202 bytes (0xca) 0000: POST /we/want/9 HTTP/1.1 001a: Host: 127.0.0.1:39863 0031: User-Agent: curl/8.17.0 004a: Accept: */* 0057: Content-Length: 431 006c: Content-Type: multipart/form-data; boundary=-------------------- 00ac: ----XMuG7Ki2wbIMuE4s31bcoc 00c8: 00:35:25.266956 => Send data, 431 bytes (0x1af) 0000: --------------------------XMuG7Ki2wbIMuE4s31bcoc 0032: Content-Disposition: form-data; name="name" 005f: 0061: daniel 0069: --------------------------XMuG7Ki2wbIMuE4s31bcoc 009b: Content-Disposition: form-data; name="tool" 00c8: 00ca: curl 00d0: --------------------------XMuG7Ki2wbIMuE4s31bcoc 0102: Content-Disposition: form-data; name="file"; filename="test9.txt 0142: " 0145: Content-Type: text/plain 015f: 0161: foo-.This is a moo-.bar. 017b: --------------------------XMuG7Ki2wbIMuE4s31bcoc-- 00:35:25.407594 * upload completely sent off: 431 bytes 00:35:25.731207 * HTTP 1.0, assume close after body 00:35:25.755173 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.0 200 OK swsclose. 00:35:26.114977 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:35:26.240109 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:35:26.345304 <= Recv header, 1 bytes (0x1) 0000: . 00:35:26.406809 <= Recv data, 11 bytes (0xb) 0000: blablabla.. 00:35:26.523547 <= Recv data, 0 bytes (0x0) 00:35:27.051005 * shutting down connection #0 === End of file trace9 === Start of file valgrind9 ==187253== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind9 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 22 in state 4 Runner 2 (id 185908) running test 24 in state 4 Runner 3 (id 185910) running test 18 in state 4 Runner 4 (id 185912) running test 19 in state 4 Runner 5 (id 185914) running test 23 in state 4 Runner 6 (id 185916) running test 17 in state 4 Runner 7 (id 185918) running test 20 in state 4 Runner 8 (id 185920) running test 21 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 22 in state 4 Runner 2 (id 185908) running test 24 in state 4 Runner 3 (id 185910) running test 18 in state 4 Runner 4 (id 185912) running test 19 in state 4 Runner 5 (id 185914) running test 23 in state 4 Runner 6 (id 185916) running test 17 in state 4 Runner 7 (id 185918) running test 20 in state 4 Runner 8 (id 185920) running test 21 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 22 in state 4 Runner 2 (id 185908) running test 24 in state 4 Runner 3 (id 185910) running test 18 in state 4 Runner 4 (id 185912) running test 19 in state 4 Runner 5 (id 185914) running test 23 in state 4 Runner 6 (id 185916) running test 17 in state 4 Runner 7 (id 185918) running test 20 in state 4 Runner 8 (id 185920) running test 21 in state 4 test 0021...[use curl with multiple request methods] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind21 ../src/curl -q --output log/8/curl21.out --include --trace-ascii log/8/trace21 --trace-time -I -d FOOO -F moo=moo localhost > log/8/stdout21 2> log/8/stderr21 valgrind ERROR ==188768== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 21 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind21 ../src/curl -q --output log/8/curl21.out --include --trace-ascii log/8/trace21 --trace-time -I -d FOOO -F moo=moo localhost > log/8/stdout21 2> log/8/stderr21 === End of file commands.log === Start of file http_server.log 00:35:24.377883 ====> Client connect 00:35:24.378051 accept_connection 3 returned 4 00:35:24.378128 accept_connection 3 returned 0 00:35:24.386582 Read 93 bytes 00:35:24.386781 Process 93 bytes request 00:35:24.386875 Got request: GET /verifiedserver HTTP/1.1 00:35:24.386944 Are-we-friendly question received 00:35:24.387093 Wrote request (93 bytes) input to log/8/server.input 00:35:24.387204 Identifying ourselves as friends 00:35:24.387386 Response sent (57 bytes) and written to log/8/server.response 00:35:24.387450 special request received, no persistency 00:35:24.387505 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 43000 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 21 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 === End of file server.response === Start of file stderr21 Warning: You can only select one HTTP request method! You asked for both Warning: multipart formpost (-F, --form) and HEAD (-I, --head). curl: option -F: is badly used here curl: try 'curl --help' for more information === End of file stderr21 === Start of file valgrind21 ==188768== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind21 test 0019...[attempt connect to non-listCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind23 ../src/curl -q --output log/5/curl23.out --include --trace-ascii log/5/trace23 --trace-time htfp://127.0.0.1:46263/none.htfml > log/5/stdout23 2> log/5/stderr23 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind17 ../src/curl -q --output log/6/curl17.out --include --trace-ascii log/6/trace17 --trace-time -K - 127.0.0.1:38277/that.site.com/17 log/6/stdout17 2> log/6/stderr17 ening socket] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind19 ../src/curl -q --output log/4/curl19.out --include --trace-ascii log/4/trace19 --trace-time --trace-config all 127.0.0.1:47 > log/4/stdout19 2> log/4/stderr19 valgrind ERROR ==188428== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 19 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind19 ../src/curl -q --output log/4/curl19.out --include --trace-ascii log/4/trace19 --trace-time --trace-config all 127.0.0.1:47 > log/4/stdout19 2> log/4/stderr19 === End of file commands.log === Start of file server.cmd Testnum 19 === End of file server.cmd === Start of file stderr19 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 curl: (7) Failed to connect to 127.0.0.1 port 47 after 2756 ms: Could not connect to server === End of file stderr19 === Start of file trace19 00:36:08.034160 [0-x] * [MULTI] [INIT] added to multi, mid=1, running=1, total=2 00:36:08.546889 [0-x] * [MULTI] [INIT] multi_wait(fds=1, timeout=0) tinternal=0 00:36:08.798075 [0-x] * [MULTI] [INIT] -> [SETUP] 00:36:08.824566 [0-x] * [MULTI] [SETUP] -> [CONNECT] 00:36:08.868321 [0-x] * [READ] client_reset, clear readers 00:36:09.585507 [0-0] * [MULTI] [CONNECT] [CPOOL] added connection 0. The cache now contains 1 members 00:36:09.978853 [0-0] * [SETUP] added 00:36:10.111397 [0-0] * [MULTI] [CONNECT] -> [CONNECTING] 00:36:10.484525 [0-0] * [HAPPY-EYEBALLS] init ip ballers for transport 3 00:36:10.586464 [0-0] * [HAPPY-EYEBALLS] starting first attempt for ipv4 -> 0 00:36:10.693784 [0-0] * Trying 127.0.0.1:47... 00:36:10.774275 [0-0] * [TCP] cf_socket_open() -> 0, fd=5 00:36:10.831135 [0-0] * [TCP] local address 127.0.0.1 port 46392... 00:36:10.863046 [0-0] * [HAPPY-EYEBALLS] checked connect attempts: 1 ongoing, 0 inconclusive 00:36:10.903012 [0-0] * [SETUP] Curl_conn_connect(block=0) -> 0, done=0 00:36:11.101341 [0-0] * [TCP] adjust_pollset, !connected, POLLOUT fd=5 00:36:11.122756 [0-0] * [HAPPY-EYEBALLS] adjust_pollset -> 0, 1 socks 00:36:11.160756 [0-0] * [MULTI] [CONNECTING] multi_wait pollset[fd=5 OUT], timeouts=0 00:36:11.221538 [0-0] * [MULTI] [CONNECTING] multi_wait(fds=2, timeout=1000) tinternal=-1 00:36:11.470247 [0-0] * connect to 127.0.0.1 port 47 from 127.0.0.1 port 46392 failed: Connection refused 00:36:11.491829 [0-0] * [MULTI] [CONNECTING] Curl_multi_will_close fd=5 00:36:11.522557 [0-0] * [HAPPY-EYEBALLS] checked connect attempts: 0 ongoing, 0 inconclusive 00:36:11.541680 [0-0] * [HAPPY-EYEBALLS] no more attempts to try 00:36:11.555470 [0-0] * [HAPPY-EYEBALLS] baller 0: result=7 00:36:11.615055 [0-0] * Failed to connect to 127.0.0.1 port 47 after 2756 ms: Could not connect to server 00:36:11.631895 [0-0] * [SETUP] Curl_conn_connect(block=0) -> 7, done=0 00:36:11.643463 [0-0] * [SETUP] Curl_conn_connect(), filter returned 7 00:36:11.716956 [0-0] * [MULTI] [CONNECTING] multi_done: status: 7 prem: 1 done: 0 00:36:11.791557 [0-0] * [WRITE] [OUT] done 00:36:11.905128 [0-x] * [MULTI] [CONNECTING] multi_done_locked, in use=0 00:36:12.003853 [0-0] * [MULTI] [CONNECTING] multi_done, terminating conn #0 to 127.0.0.1:47, forbid=0, close=0, premature=1, conn_multiplex=0 00:36:12.123514 [0-0] * closing connection #0 00:36:12.372947 [0-0] * [MULTI] [CONNECTING] -> [COMPLETED] 00:36:12.426513 [0-0] * [MULTI] [COMPLETED] -> [MSGSENT] 00:36:12.562271 [0-0] * [MULTI] [COMPLETED] removed from multi, mid=1, running=0, total=1 === End of file trace19 === Start of file valgrind19 ==188428== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind19 test 0023...[unsupported protocol:// URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind23 ../src/curl -q --output log/5/curl23.out --include --trace-ascii log/5/trace23 --trace-time htfp://127.0.0.1:46263/none.htfml > log/5/stdout23 2> log/5/stderr23 valgrind ERROR ==189259== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 23 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind23 ../src/curl -q --output log/5/curl23.out --include --trace-ascii log/5/trace23 --trace-time htfp://127.0.0.1:46263/none.htfml > log/5/stdout23 2> log/5/stderr23 === End of file commands.log === Start of file http_server.log 00:35:28.954490 ====> Client connect 00:35:28.954675 accept_connection 3 returned 4 00:35:28.954759 accept_connection 3 returned 0 00:35:28.961123 Read 93 bytes 00:35:28.961217 Process 93 bytes request 00:35:28.961322 Got request: GET /verifiedserver HTTP/1.1 00:35:28.961397 Are-we-friendly question received 00:35:28.961525 Wrote request (93 bytes) input to log/5/server.input 00:35:28.961626 Identifying ourselves as friends 00:35:28.961832 Response sent (57 bytes) and written to log/5/server.response 00:35:28.961904 special request received, no persistency 00:35:28.961969 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 59162 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 23 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 === End of file server.response === Start of file stderr23 curl: (1) Protocol "htfp" not supported === End of file stderr23 === Start of file trace23 00:36:14.170602 * Protocol "htfp" not supported 00:36:14.581229 * closing connection #-1 === End of file trace23 === Start of file valgrind23 ==189259== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind23 test 0017...[HTTP with config file on stdin] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind17 ../src/curl -q --output log/6/curl17.out --include --trace-ascii log/6/trace17 --trace-time -K - 127.0.0.1:38277/that.site.com/17 log/6/stdout17 2> log/6/stderr17 valgrind ERROR ==188609== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 17 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind17 ../src/curl -q --output log/6/curl17.out --include --trace-ascii log/6/trace17 --trace-time -K - 127.0.0.1:38277/that.site.com/17 log/6/stdout17 2> log/6/stderr17 === End of file commands.log === Start of file curl17.out HTTP/1.1 200 OK Funny-head: yesyes Content-Length: 27 This is the proof it works === End of file curl17.out === Start of file http_server.log 00:35:23.633290 ====> Client connect 00:35:23.633461 accept_connection 3 returned 4 00:35:23.633548 accept_conneCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind18 ../src/curl -q --include --trace-ascii log/3/trace18 --trace-time "127.0.0.1:44791/{18,180002,180003}" > log/3/stdout18 2> log/3/stderr18 ction 3 returned 0 00:35:23.639378 Read 93 bytes 00:35:23.639525 Process 93 bytes request 00:35:23.639623 Got request: GET /verifiedserver HTTP/1.1 00:35:23.639696 Are-we-friendly question received 00:35:23.639845 Wrote request (93 bytes) input to log/6/server.input 00:35:23.639971 Identifying ourselves as friends 00:35:23.640172 Response sent (57 bytes) and written to log/6/server.response 00:35:23.640241 special request received, no persistency 00:35:23.640304 ====> Client disconnect 0 00:36:11.384407 ====> Client connect 00:36:11.384545 accept_connection 3 returned 4 00:36:11.384621 accept_connection 3 returned 0 00:36:12.502079 Read 111 bytes 00:36:12.502301 Process 111 bytes request 00:36:12.502405 Got request: MOOO /that.site.com/17 HTTP/1.1 00:36:12.502478 Serve test number 17 part 0 00:36:12.502652 - request found to be complete (17) 00:36:12.502904 Wrote request (111 bytes) input to log/6/server.input 00:36:12.503015 Send response test17 section 00:36:12.506765 Response sent (82 bytes) and written to log/6/server.response 00:36:12.506839 => persistent connection request ended, awaits new request 00:36:15.000769 Connection closed by client 00:36:15.000980 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 51522 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 17 === End of file server.cmd === Start of file server.input MOOO /that.site.com/17 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: agent007 license to drill Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Funny-head: yesyes Content-Length: 27 This is the proof it works === End of file server.response === Start of file stderr17 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 27 100 27 0 0 5 0 0:00:05 0:00:04 0:00:01 8 100 27 100 27 0 0 5 0 0:00:05 0:00:04 0:00:01 7 === End of file stderr17 === Start of file stdin-for-17 # # Use a silly request without '--': request MOOO # # Set the user-agent using a short-option: -A "agent007 license to drill\t" # # long option *with* '--': --max-time 180 === End of file stdin-for-17 === Start of file trace17 00:36:11.426088 * Trying 127.0.0.1:38277... 00:36:12.442080 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 46886 00:36:12.576196 * using HTTP/1.x 00:36:12.922442 => Send header, 111 bytes (0x6f) 0000: MOOO /that.site.com/17 HTTP/1.1 0021: Host: 127.0.0.1:38277 0038: User-Agent: agent007 license to drill. 0060: Accept: */* 006d: 00:36:13.277116 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:36:13.619040 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:36:13.731899 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 27. 00:36:13.820858 <= Recv header, 1 bytes (0x1) 0000: . 00:36:13.880624 <= Recv data, 27 bytes (0x1b) 0000: This is the proof it works. 00:36:14.480169 * Connection #0 to host 127.0.0.1:38277 left intact === End of file trace17 === Start of file valgrind17 ==188609== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind17 test 0018...[multiple requests using {} in URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind18 ../src/curl -q --include --trace-ascii log/3/trace18 --trace-time "127.0.0.1:44791/{18,180002,180003}" > log/3/stdout18 2> log/3/stderr18 valgrind ERROR ==188690== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 18 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind18 ../src/curl -q --include --trace-ascii log/3/trace18 --trace-time "127.0.0.1:44791/{18,180002,180003}" > log/3/stdout18 2> log/3/stderr18 === End of file commands.log === Start of file http_server.log 00:35:24.795931 ====> Client connect 00:35:24.796093 accept_connection 3 returned 4 00:35:24.796169 accept_connection 3 returned 0 00:35:24.804497 Read 93 bytes 00:35:24.804691 Process 93 bytes request 00:35:24.804786 Got request: GET /verifiedserver HTTP/1.1 00:35:24.804854 Are-we-friendly question received 00:35:24.804995 Wrote request (93 bytes) input to log/3/server.input 00:35:24.805101 Identifying ourselves as friends 00:35:24.805285 Response sent (57 bytes) and written to log/3/server.response 00:35:24.805351 special request received, no persistency 00:35:24.805410 ====> Client disconnect 0 00:36:12.649517 ====> Client connect 00:36:12.649668 accept_connection 3 returned 4 00:36:12.649760 accept_connection 3 returned 0 00:36:13.743422 Read 81 bytes 00:36:13.743662 Process 81 bytes request 00:36:13.743760 Got request: GET /18 HTTP/1.1 00:36:13.743868 Serve test number 18 part 0 00:36:13.744073 - request found to be complete (18) 00:36:13.744349 Wrote request (81 bytes) input to log/3/server.input 00:36:13.744468 Send response test18 section 00:36:13.744808 Response sent (62 bytes) and written to log/3/server.response 00:36:13.744876 => persistent connection request ended, awaits new request 00:36:16.399760 Read 85 bytes 00:36:16.399962 Process 85 bytes request 00:36:16.400062 Got request: GET /180002 HTTP/1.1 00:36:16.400187 Serve test number 18 part 2 00:36:16.400387 - request found to be complete (18) 00:36:16.400601 Wrote request (85 bytes) input to log/3/server.input 00:36:16.400711 Send response test18 section 00:36:16.401067 Response sent (62 bytes) and written to log/3/server.response 00:36:16.401137 => persistent connection request ended, awaits new request 00:36:16.682107 Read 85 bytes 00:36:16.682287 Process 85 bytes request 00:36:16.682383 Got request: GET /180003 HTTP/1.1 00:36:16.682455 Serve test number 18 part 3 00:36:16.682636 - request found to be complete (18) 00:36:16.682859 Wrote request (85 bytes) input to log/3/server.input 00:36:16.682948 Send response test18 section 00:36:16.683286 Response sent (62 bytes) and written to log/3/server.response 00:36:16.683355 => persistent connection request ended, awaits new request 00:36:17.074275 Connection closed by client 00:36:17.074474 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44791... * Established connection to 127.0.0.1 (127.0.0.1 port 44791) from 127.0.0.1 port 44462 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44791 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:44791 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185941 === End of file http_verify.out === Start of file server.cmd Testnum 18 === End of file server.cmd === Start of file server.input GET /18 HTTP/1.1 Host: 127.0.0.1:44791 User-Agent: curl/8.17.0 Accept: */* GET /180002 HTTP/1.1 Host: 127.0.0.1:44791 User-Agent: curl/8.17.0 Accept: */* GET /180003 HTTP/1.1 Host: 127.0.0.1:44791 User-Agent: curl/8.17.0 Accept: */* === End of file sCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind22 ../src/curl -q --output log/1/curl22.out --include --trace-ascii log/1/trace22 --trace-time 127.0.0.1:40641/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/22 > log/1/stdout22 2> log/1/stderr22 erver.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185941 HTTP/1.1 200 OK Funny-head: yesyes Content-Length: 4 moo HTTP/1.1 200 OK Funny-head: yesyes Content-Length: 4 foo HTTP/1.1 200 OK Funny-head: yesyes Content-Length: 4 hoo === End of file server.response === Start of file stderr18 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 4 100 4 0 0 7 0 --:--:-- --:--:-- --:--:-- 28 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 4 100 4 0 0 37 0 --:--:-- --:--:-- --:--:-- 59 === End of file stderr18 === Start of file stdout18 HTTP/1.1 200 OK Funny-head: yesyes Content-Length: 4 moo HTTP/1.1 200 OK Funny-head: yesyes Content-Length: 4 foo HTTP/1.1 200 OK Funny-head: yesyes Content-Length: 4 hoo === End of file stdout18 === Start of file trace18 00:36:11.652420 * Trying 127.0.0.1:44791... 00:36:12.682541 * Established connection to 127.0.0.1 (127.0.0.1 port 44791) from 127.0.0.1 port 54328 00:36:12.816354 * using HTTP/1.x 00:36:13.165957 => Send header, 81 bytes (0x51) 0000: GET /18 HTTP/1.1 0012: Host: 127.0.0.1:44791 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: 00:36:13.511809 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:36:13.802095 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 00:36:13.914184 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 4 00:36:14.012277 <= Recv header, 2 bytes (0x2) 0000: 00:36:14.076867 <= Recv data, 4 bytes (0x4) 0000: moo. 00:36:14.650039 * Connection #0 to host 127.0.0.1:44791 left intact 00:36:15.693873 * Reusing existing http: connection with host 127.0.0.1 00:36:15.782954 => Send header, 85 bytes (0x55) 0000: GET /180002 HTTP/1.1 0016: Host: 127.0.0.1:44791 002d: User-Agent: curl/8.17.0 0046: Accept: */* 0053: 00:36:15.814332 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:36:15.822993 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 00:36:15.831226 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 4 00:36:15.840074 <= Recv header, 2 bytes (0x2) 0000: 00:36:15.845099 <= Recv data, 4 bytes (0x4) 0000: foo. 00:36:15.900101 * Connection #0 to host 127.0.0.1:44791 left intact 00:36:16.027034 * Reusing existing http: connection with host 127.0.0.1 00:36:16.063553 => Send header, 85 bytes (0x55) 0000: GET /180003 HTTP/1.1 0016: Host: 127.0.0.1:44791 002d: User-Agent: curl/8.17.0 0046: Accept: */* 0053: 00:36:16.080762 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:36:16.084894 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 00:36:16.089007 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 4 00:36:16.093007 <= Recv header, 2 bytes (0x2) 0000: 00:36:16.094912 <= Recv data, 4 bytes (0x4) 0000: hoo. 00:36:16.113418 * Connection #0 to host 127.0.0.1:44791 left intact === End of file trace18 === Start of file valgrind18 ==188690== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind18 test 0022...[get HTTP with URL > 10000 bytes] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind22 ../src/curl -q --output log/1/curl22.out --include --trace-ascii log/1/trace22 --trace-time 127.0.0.1:40641/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/22 > log/1/stdout22 2> log/1/stderr22 valgrind ERROR ==189106== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 22 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind22 ../src/curl -q --output log/1/curl22.out --include --trace-ascii log/1/trace22 --trace-time 127.0.0.1:40641/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/22 > log/1/stdout22 2> log/1/stderr22 === End of file commands.log === Start of file curl22.out HTTP/1.1 200 OK Funny-head: yesyes Content-Length: 27 This is the proof it works === End of file curl22.out === Start of file http_server.log 00:35:27.779641 ====> Client connect 00:35:27.779848 accept_connection 3 returned 4 00:35:27.779939 accept_connection 3 returned 0 00:35:27.788642 Read 93 bytes 00:35:27.788897 Process 93 bytes request 00:35:27.789005 Got request: GET /verifiedserver HTTP/1.1 00:35:27.789076 Are-we-friendly question received 00:35:27.789238 Wrote request (93 bytes) input to log/1/server.input 00:35:27.789368 Identifying ourselves as friends 00:35:27.789557 Response sent (57 bytes) and written to log/1/server.response 00:35:27.789620 special request received, no persistency 00:35:27.789676 ====> Client disconnect 0 00:36:15.911771 ====> Client connect 00:36:15.912305 accept_connection 3 returned 4 00:36:15.912388 accept_connection 3 returned 0 00:36:16.903077 Read 11082 bytes 00:36:16.903274 Process 11082 bytes request 00:36:16.903405 Got a *HUGE* request HTTP/1.1 00:36:16.903490 Serve test number 22 part 0 00:36:16.903923 - request found to be complete (22) 00:36:16.904401 Wrote request (11082 bytes) input to log/1/server.input 00:36:16.904491 Send response test22 section 00:36:16.904921 Response sent (86 bytes) and written to log/1/server.response 00:36:16.904990 => persistent connection request ended, awaits new request 00:36:20.671465 Connection closed by client 00:36:20.671684 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 59444 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 22 === End of file server.cmd === Start of file server.input GET /aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/22 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Funny-head: yesyes Content-Length: 27 This is the proof it works === End of file server.response === Start of file stderr22 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 27 100 27 0 0 4 0 0:00:06 0:00:06 --:--:-- 6 100 27 100 27 0 0 4 0 0:00:06 0:00:06 --:--:-- 5 === End of file stderr22 === Start of file trace22 00:36:14.949037 * Trying 127.0.0.1:40641... 00:36:15.889991 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 50184 00:36:16.017568 * using HTTP/1.x 00:36:16.315921 => Send header, 11082 bytes (0x2b4a) 0000: GET /aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0040: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0080: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 00c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0100: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0140: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0180: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0200: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0240: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0280: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 02c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0300: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0340: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0380: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 03c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0400: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0440: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0480: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 04c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0500: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0540: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0580: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 05c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0600: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0640: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0680: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 06c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0700: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0740: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0780: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 07c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0800: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0840: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0880: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 08c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0900: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0940: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0980: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 09c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0a00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0a40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0a80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0ac0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0b00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0b40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0b80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0bc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0c00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0c40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0c80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0cc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0d00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0d40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0d80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0dc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0e00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0e40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0e80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0ec0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0f00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0f40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0f80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0fc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1000: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1040: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1080: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 10c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1100: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1140: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1180: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 11c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1200: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1240: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1280: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 12c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1300: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1340: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1380: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 13c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1400: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1440: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1480: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 14c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1500: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1540: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1580: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 15c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1600: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1640: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1680: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 16c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1700: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1740: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1780: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 17c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1800: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1840: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1880: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 18c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1900: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1940: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1980: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 19c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1a00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1a40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1a80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1ac0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1b00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1b40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1b80: aaaaaaaaaaaaCMD (5632): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind24 ../src/curl -q --output log/2/curl24.out --include --trace-ascii log/2/trace24 --trace-time http://127.0.0.1:39863/24 --fail --silent --show-error > log/2/stdout24 2> log/2/stderr24 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1bc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1c00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1c40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1c80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1cc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1d00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1d40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1d80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1dc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1e00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1e40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1e80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1ec0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1f00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1f40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1f80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1fc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2000: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2040: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2080: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 20c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2100: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2140: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2180: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 21c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2200: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2240: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2280: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 22c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2300: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2340: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2380: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 23c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2400: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2440: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2480: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 24c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2500: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2540: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2580: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 25c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2600: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2640: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2680: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 26c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2700: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2740: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2780: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 27c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2800: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2840: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2880: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2900: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2940: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2980: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 29c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2a00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2a40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2a80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2ac0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/22 2b00: HTTP/1.1 2b0b: Host: 127.0.0.1:40641 2b22: User-Agent: curl/8.17.0 2b3b: Accept: */* 2b48: 00:36:17.865738 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:36:18.216541 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 00:36:18.350643 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 27 00:36:18.452313 <= Recv header, 2 bytes (0x2) 0000: 00:36:18.519954 <= Recv data, 27 bytes (0x1b) 0000: This is the proof it works. 00:36:19.128245 * Connection #0 to host 127.0.0.1:40641 left intact === End of file trace22 === Start of file valgrind22 ==189106== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind22 test 0024...[HTTP GET fail silently on HTTP error return] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind24 ../src/curl -q --output log/2/curl24.out --include --trace-ascii log/2/trace24 --trace-time http://127.0.0.1:39863/24 --fail --silent --show-error > log/2/stdout24 2> log/2/stderr24 valgrind ERROR ==189421== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 24 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind24 ../src/curl -q --output log/2/curl24.out --include --trace-ascii log/2/trace24 --trace-time http://127.0.0.1:39863/24 --fail --silent --show-error > log/2/stdout24 2> log/2/stderr24 === End of file commands.log === Start of file curl24.out HTTP/1.0 404 BAD BOY Content-Type: text/html === End of file curl24.out === Start of file http_server.log 00:35:32.235313 ====> Client connect 00:35:32.235471 accept_connection 3 returned 4 00:35:32.235549 accept_connection 3 returned 0 00:35:32.242072 Read 93 bytes 00:35:32.242164 Process 93 bytes request 00:35:32.242257 Got request: GET /verifiedserver HTTP/1.1 00:35:32.242326 Are-we-friendly question received 00:35:32.242444 Wrote request (93 bytes) input to log/2/server.input 00:35:32.242542 Identifying ourselves as friends 00:35:32.242729 Response sent (57 bytes) and written to log/2/server.response 00:35:32.242792 special request received, no persistency 00:35:32.242847 ====> Client disconnect 0 00:36:19.466573 ====> Client connect 00:36:19.466721 accept_connection 3 returned 4 00:36:19.466799 accept_connection 3 returned 0 00:36:20.546241 Read 81 bytes 00:36:20.546460 Process 81 bytes request 00:36:20.546563 Got request: GET /24 HTTP/1.1 00:36:20.546675 Serve test number 24 part 0 00:36:20.546856 - request found to be complete (24) 00:36:20.547102 Wrote request (81 bytes) input to log/2/server.input 00:36:20.547210 Send response test24 section 00:36:20.547542 Response sent (112 bytes) and written to log/2/server.response 00:36:20.547650 => persistent connection request ended, awaits new request 00:36:21.998025 Connection closed by client 00:36:21.998284 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 51652 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 24 === End of file server.cmd === Start oCMD (1536): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind20 ../src/curl -q --output log/7/curl20.out --include --trace-ascii log/7/trace20 --trace-time --ipv4 non-existing-host.haxx.se. > log/7/stdout20 2> log/7/stderr20 CMD (12032): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind25 ../src/curl -q --output log/8/curl25.out --include --trace-ascii log/8/trace25 --trace-time http://127.0.0.1:39461/want/25 -L --max-redirs 5 > log/8/stdout25 2> log/8/stderr25 f file server.input GET /24 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.0 404 BAD BOY Content-Type: text/html This silly page doesn't reaaaaaly exist so you should not get it. === End of file server.response === Start of file stderr24 curl: (22) The requested URL returned error: 404 === End of file stderr24 === Start of file trace24 00:36:18.442017 * Trying 127.0.0.1:39863... 00:36:19.463223 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 41854 00:36:19.613805 * using HTTP/1.x 00:36:19.965018 => Send header, 81 bytes (0x51) 0000: GET /24 HTTP/1.1 0012: Host: 127.0.0.1:39863 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: 00:36:20.351110 * HTTP 1.0, assume close after body 00:36:20.371911 <= Recv header, 21 bytes (0x15) 0000: HTTP/1.0 404 BAD BOY. 00:36:20.732934 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:36:20.895548 * The requested URL returned error: 404 00:36:20.910583 <= Recv header, 1 bytes (0x1) 0000: . 00:36:21.282001 * closing connection #0 === End of file trace24 === Start of file valgrind24 ==189421== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind24 test 0020...[attempt connect to non-existing host name] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind20 ../src/curl -q --output log/7/curl20.out --include --trace-ascii log/7/trace20 --trace-time --ipv4 non-existing-host.haxx.se. > log/7/stdout20 2> log/7/stderr20 valgrind ERROR ==188506== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 20 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind20 ../src/curl -q --output log/7/curl20.out --include --trace-ascii log/7/trace20 --trace-time --ipv4 non-existing-host.haxx.se. > log/7/stdout20 2> log/7/stderr20 === End of file commands.log === Start of file server.cmd Testnum 20 === End of file server.cmd === Start of file stderr20 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:08 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:13 --:--:-- 0curl: (6) Could not resolve host: non-existing-host.haxx.se. === End of file stderr20 === Start of file trace20 00:36:23.535012 * Could not resolve host: non-existing-host.haxx.se. 00:36:23.984852 * Store negative name resolve for non-existing-host.haxx.se.:80 00:36:24.120682 * shutting down connection #0 === End of file trace20 === Start of file valgrind20 ==188506== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind20 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 30 in state 4 Runner 2 (id 185908) running test 31 in state 4 Runner 3 (id 185910) running test 29 in state 4 Runner 4 (id 185912) running test 26 in state 4 Runner 5 (id 185914) running test 27 in state 4 Runner 6 (id 185916) running test 28 in state 4 Runner 7 (id 185918) running test 32 in state 4 Runner 8 (id 185920) running test 25 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 30 in state 4 Runner 2 (id 185908) running test 31 in state 4 Runner 3 (id 185910) running test 29 in state 4 Runner 4 (id 185912) running test 26 in state 4 Runner 5 (id 185914) running test 27 in state 4 Runner 6 (id 185916) running test 28 in state 4 Runner 7 (id 185918) running test 32 in state 4 Runner 8 (id 185920) running test 25 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 30 in state 4 Runner 2 (id 185908) running test 31 in state 4 Runner 3 (id 185910) running test 29 in state 4 Runner 4 (id 185912) running test 26 in state 4 Runner 5 (id 185914) running test 27 in state 4 Runner 6 (id 185916) running test 28 in state 4 Runner 7 (id 185918) running test 32 in state 4 Runner 8 (id 185920) running test 25 in state 4 test 0025...[looping HTTP Location: following with --max-redirs] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind25 ../src/curl -q --output log/8/curl25.out --include --trace-ascii log/8/trace25 --trace-time http://127.0.0.1:39461/want/25 -L --max-redirs 5 > log/8/stdout25 2> log/8/stderr25 valgrind ERROR ==189653== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 25 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind25 ../src/curl -q --output log/8/curl25.out --include --trace-ascii log/8/trace25 --trace-time http://127.0.0.1:39461/want/25 -L --max-redirs 5 > log/8/stdout25 2> log/8/stderr25 === End of file commands.log === Start of file curl25.out HTTP/1.1 301 This is a weirdo text message Server: test-server/fake Location: data/reply/25 Content-Length: 32 Connection: close HTTP/1.1 301 This is a weirdo text message Server: test-server/fake Location: data/reply/25 Content-Length: 32 Connection: close HTTP/1.1 301 This is a weirdo text message Server: test-server/fake Location: data/reply/25 Content-Length: 32 Connection: close HTTP/1.1 301 This is a weirdo text message Server: test-server/fake Location: data/reply/25 Content-Length: 32 Connection: close HTTP/1.1 301 This is a weirdo text message Server: test-server/fake Location: data/reply/25 Content-Length: 32 Connection: close HTTP/1.1 301 This is a weirdo text message Server: test-server/fake Location: data/reply/25 Content-Length: 32 Connection: close === End of file curl25.out === Start of file http_server.log 00:36:10.382122 ====> Client connect 00:36:10.382288 accept_connection 3 returned 4 00:36:10.382366 accept_connection 3 returned 0 00:36:10.389301 Read 93 bytes 00:36:10.389456 Process 93 bytes request 00:36:10.389547 Got request: GET /verifiedserver HTTP/1.1 00:36:10.389612 Are-we-friendly question received 00:36:10.389754 Wrote request (93 bytes) input to log/8/server.input 00:36:10.389854 Identifying ourselves as friends 00:36:10.390039 Response sent (57 bytes) and written to log/8/server.response 00:36:10.390105 special request received, no persistency 00:36:10.390164 ====> Client disconnect 0 00:36:57.965016 ====> Client connect 00:36:57.965163 accept_connection 3 returned 4 00:36:57.965243 accept_connection 3 returned 0 00:36:58.997409 Read 86 bytes 00:36:58.997614 Process 86 bytes request 00:36:58.997711 Got request: GET /want/25 HTTP/1.1 00:36:58.997784 Serve test number 25 part 0 00:36:58.998044 - request found to be complete (25) 00:36:58.998327 Wrote request (86 bytes) input to log/8/server.input 00:36:58.998440 Send response test25 section 00:36:58.998851 Response sent (162 bytes) and written to log/8/server.response 00:36:58.998923 => persistent connection request ended, awaits new request 00:37:00.793063 Connection closed by client 00:37:00.793306 ====> Client disconnect 0 00:37:01.397202 ====> Client connect 00:37:01.397343 accept_connection 3 returned 4 00:37:01.397425 accept_connection 3 returned 0 00:37:01.458360 Read 97 bytes 00:37:01.458558 Process 97 bytes request 00:37:01.458654 Got request: GET /want/data/reply/25 HTTP/1.1 00:37:01.458731 Serve test number 25 part 0 00:37:01.458960 - request found to be complete (25) 00:37:01.459215 Wrote request (97 bytes) input to log/8/server.input 00:37:01.459307 Send response test25 section 00:37:01.459721 Response sent (162 bytes) and written to log/8/server.response 00:37:01.459796 => persistent connection request ended, awaits new request 00:37:01.596718 Connection closed by client 00:37:01.596924 ====> Client disconnect 0 00:37:01.665496 ====> Client connect 00:37:01.665649 accept_connection 3 returned 4 00:37:01.665728 accept_connection 3 returned 0 00:37:01.676309 Read 108 bytes 00:37:01.676530 Process 108 bytes request 00:37:01.676631 Got request: GET /want/data/reply/data/reply/25 HTTP/1.1 00:37:01.676701 Serve test number 25 part 0 00:37:01.676914 - request found to be complete (25) 00:37:01.677141 Wrote request (108 bytes) input to log/8/server.input 00:37:01.677227 Send response test25 section 00:37:01.677653 Response sent (162 bytes) and written to log/8/server.response 00:37:01.677729 => persistent connection request ended, awaits new request 00:37:01.739647 Connection closed by client 00:37:01.739834 ====> Client disconnect 0 00:37:01.765232 ====> Client connect 00:37:01.765374 accept_connection 3 returned 4 00:37:01.765455 accept_connection 3 returned 0 00:37:01.774319 Read 119 bytes 00:37:01.774506 Process 119 bytes request 00:37:01.774613 Got request: GET /want/data/reply/data/reply/data/reply/25 HTTP/1.1 00:37:01.774694 Serve test number 25 part 0 00:37:01.774926 - request found to be complete (25) 00:37:01.775153 Wrote request (119 bytes) input to log/8/server.input 00:37:01.775242 Send response test25 section 00:37:01.775645 Response sent (162 bytes) and written to log/8/server.response 00:37:01.775715 => persistent connection request ended, awaits new request 00:37:01.834078 Connection closed by client 00:37:01.834255 ====> Client disconnect 0 00:37:01.863130 ====> Client connect 00:37:01.863272 accept_connection 3 returned 4 00:37:01.863352 accept_connection 3 returned 0 00:37:01.871284 Read 130 bytes 00:37:01.871440 Process 130 bytes request 00:37:01.871529 Got request: GET /want/data/reply/data/reply/data/reply/data/reply/25 HTTP/1.1 00:37:01.871599 Serve test number 25 part 0 00:37:01.871799 - request found to be complete (25) 00:37:01.872017 Wrote request (130 bytes) input to log/8/server.input 00:37:01.872102 Send response test25 section 00:37:01.872477 Response sent (162 bytes) and written to log/8/server.response 00:37:01.872564 => persistent connection request ended, awaits new request 00:37:01.932577 Connection closed by client 00:37:01.932757 ====> Client disconnect 0 00:37:01.963134 ====> Client connect 00:37:01.963269 accept_connection 3 returned 4 00:37:01.963344 accept_connection 3 returned 0 00:37:01.982066 Read 141 bytes 00:37:01.982281 Process 141 bytes request 00:37:01.982375 Got request: GET /want/data/reply/data/reply/data/reply/data/reply/data/reply/25 HTTP/1.1 00:37:01.982544 Serve test number 25 part 0 00:37:01.982758 - request found to be complete (25) 00:37:01.983001 Wrote request (141 bytes) input to log/8/server.input 00:37:01.983095 Send response test25 section 00:37:01.983494 Response sent (162 bytes) and written to log/8/server.response 00:37:01.983566 => persistent connection request ended, awaits new request 00:37:02.066310 Connection closed by client 00:37:02.066482 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 43440 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 25 === End of file server.cmd === Start of file server.input GET /want/25 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* GET /want/data/reply/25 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* GET /want/data/reply/data/reply/25 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* GET /want/data/reply/data/reply/data/reply/25 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* GET /want/data/reply/data/reply/data/reply/data/reply/25 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* GET /want/data/reply/data/reply/data/reply/data/reply/data/reply/25 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 301 This is a weirdo text message Server: test-server/fake Location: data/reply/25 Content-Length: 32 Connection: close Redirect to the same URL again HTTP/1.1 301 This is a weirdo text message Server: test-server/fake Location: data/reply/25 Content-Length: 32 Connection: close Redirect to the same URL again HTTP/1.1 301 This is a weirdo text message Server: test-server/fake Location: data/reply/25 Content-Length: 32 Connection: close Redirect to the same URL again HTTP/1.1 301 This is a weirdo text message Server: test-server/fake Location: data/reply/25 Content-Length: 32 Connection: close Redirect to the same URL again HTTP/1.1 301 This is a weirdo text message Server: test-server/fake Location: data/reply/25 Content-Length: 32 Connection: close Redirect to the same URL again HTTP/1.1 301 This is a weirdo text message Server: test-server/fake Location: data/reply/25 Content-Length: 32 Connection: close Redirect to the same URL again === End of file server.response === Start of file stderr25 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 32 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 32 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 32 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 0 32 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 0 32 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 0 32 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 curl: (47) Maximum (5) redirects followed === End of file stderr25 === Start of file trace25 00:36:58.016538 * Trying 127.0.0.1:39461... 00:36:58.936978 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 44804 00:36:59.061011 * using HTTP/1.x 00:36:59.436499 => Send header, 86 bytes (0x56) 0000: GET /want/25 HTTP/1.1 0017: Host: 127.0.0.1:39461 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 00:36:59.781362 <= Recv header, 43 bytes (0x2b) 0000: HTTP/1.1 301 This is a weirdo text message. 00:37:00.100689 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:37:00.262746 <= Recv header, 24 bytes (0x18) 0000: Location: data/reply/25. 00:37:00.306744 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 32. 00:37:00.355551 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:37:00.461089 <= Recv header, 1 bytes (0x1) 0000: . 00:37:00.712653 * Request completely sent off 00:37:00.971628 * shutting down connection #0 00:37:01.560777 * IssueCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind26 ../src/curl -q --output log/4/curl26.out --include --trace-ascii log/4/trace26 --trace-time http://127.0.0.1:42621/want/26 -o - -o - > log/4/stdout26 2> log/4/stderr26 another request to this URL: 'http://127.0.0.1:39461/want/data/reply/25' 00:37:01.730171 * Hostname 127.0.0.1 was found in DNS cache 00:37:01.772665 * Trying 127.0.0.1:39461... 00:37:01.810040 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 44808 00:37:01.816745 * using HTTP/1.x 00:37:01.841870 => Send header, 97 bytes (0x61) 0000: GET /want/data/reply/25 HTTP/1.1 0022: Host: 127.0.0.1:39461 0039: User-Agent: curl/8.17.0 0052: Accept: */* 005f: 00:37:01.879913 <= Recv header, 43 bytes (0x2b) 0000: HTTP/1.1 301 This is a weirdo text message. 00:37:01.889566 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:37:01.900036 <= Recv header, 24 bytes (0x18) 0000: Location: data/reply/25. 00:37:01.906550 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 32. 00:37:01.913385 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:37:01.922143 <= Recv header, 1 bytes (0x1) 0000: . 00:37:01.948598 * Request completely sent off 00:37:01.965048 * shutting down connection #1 00:37:02.011439 * Issue another request to this URL: 'http://127.0.0.1:39461/want/data/reply/data/reply/25' 00:37:02.041233 * Hostname 127.0.0.1 was found in DNS cache 00:37:02.045276 * Trying 127.0.0.1:39461... 00:37:02.050544 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 44820 00:37:02.052660 * using HTTP/1.x 00:37:02.057286 => Send header, 108 bytes (0x6c) 0000: GET /want/data/reply/data/reply/25 HTTP/1.1 002d: Host: 127.0.0.1:39461 0044: User-Agent: curl/8.17.0 005d: Accept: */* 006a: 00:37:02.077267 <= Recv header, 43 bytes (0x2b) 0000: HTTP/1.1 301 This is a weirdo text message. 00:37:02.084234 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:37:02.089593 <= Recv header, 24 bytes (0x18) 0000: Location: data/reply/25. 00:37:02.094238 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 32. 00:37:02.098413 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:37:02.102515 <= Recv header, 1 bytes (0x1) 0000: . 00:37:02.114721 * Request completely sent off 00:37:02.117003 * shutting down connection #2 00:37:02.128546 * Issue another request to this URL: 'http://127.0.0.1:39461/want/data/reply/data/reply/data/reply/25' 00:37:02.141506 * Hostname 127.0.0.1 was found in DNS cache 00:37:02.145034 * Trying 127.0.0.1:39461... 00:37:02.150093 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 44828 00:37:02.152223 * using HTTP/1.x 00:37:02.155869 => Send header, 119 bytes (0x77) 0000: GET /want/data/reply/data/reply/data/reply/25 HTTP/1.1 0038: Host: 127.0.0.1:39461 004f: User-Agent: curl/8.17.0 0068: Accept: */* 0075: 00:37:02.174230 <= Recv header, 43 bytes (0x2b) 0000: HTTP/1.1 301 This is a weirdo text message. 00:37:02.180928 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:37:02.186189 <= Recv header, 24 bytes (0x18) 0000: Location: data/reply/25. 00:37:02.190841 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 32. 00:37:02.195186 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:37:02.199312 <= Recv header, 1 bytes (0x1) 0000: . 00:37:02.211632 * Request completely sent off 00:37:02.213865 * shutting down connection #3 00:37:02.226216 * Issue another request to this URL: 'http://127.0.0.1:39461/want/data/reply/data/reply/data/reply/data/reply/25' 00:37:02.238896 * Hostname 127.0.0.1 was found in DNS cache 00:37:02.242302 * Trying 127.0.0.1:39461... 00:37:02.247231 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 44842 00:37:02.249364 * using HTTP/1.x 00:37:02.252819 => Send header, 130 bytes (0x82) 0000: GET /want/data/reply/data/reply/data/reply/data/reply/25 HTTP/1. 0040: 1 0043: Host: 127.0.0.1:39461 005a: User-Agent: curl/8.17.0 0073: Accept: */* 0080: 00:37:02.272593 <= Recv header, 43 bytes (0x2b) 0000: HTTP/1.1 301 This is a weirdo text message. 00:37:02.279380 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:37:02.284552 <= Recv header, 24 bytes (0x18) 0000: Location: data/reply/25. 00:37:02.289284 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 32. 00:37:02.293424 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:37:02.297964 <= Recv header, 1 bytes (0x1) 0000: . 00:37:02.310230 * Request completely sent off 00:37:02.312433 * shutting down connection #4 00:37:02.325472 * Issue another request to this URL: 'http://127.0.0.1:39461/want/data/reply/data/reply/data/reply/data/reply/data/reply/25' 00:37:02.338678 * Hostname 127.0.0.1 was found in DNS cache 00:37:02.342221 * Trying 127.0.0.1:39461... 00:37:02.347110 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 36196 00:37:02.349202 * using HTTP/1.x 00:37:02.363629 => Send header, 141 bytes (0x8d) 0000: GET /want/data/reply/data/reply/data/reply/data/reply/data/reply 0040: /25 HTTP/1.1 004e: Host: 127.0.0.1:39461 0065: User-Agent: curl/8.17.0 007e: Accept: */* 008b: 00:37:02.384640 <= Recv header, 43 bytes (0x2b) 0000: HTTP/1.1 301 This is a weirdo text message. 00:37:02.391558 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:37:02.396697 <= Recv header, 24 bytes (0x18) 0000: Location: data/reply/25. 00:37:02.401593 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 32. 00:37:02.405896 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:37:02.429978 <= Recv header, 1 bytes (0x1) 0000: . 00:37:02.442508 * Request completely sent off 00:37:02.444697 * shutting down connection #5 00:37:02.500651 * Maximum (5) redirects followed === End of file trace25 === Start of file valgrind25 ==189653== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind25 test 0026...[specify more -o than URLs] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind26 ../src/curl -q --output log/4/curl26.out --include --trace-ascii log/4/trace26 --trace-time http://127.0.0.1:42621/want/26 -o - -o - > log/4/stdout26 2> log/4/stderr26 valgrind ERROR ==189810== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 26 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind26 ../src/curl -q --output log/4/curl26.out --include --trace-ascii log/4/trace26 --trace-time http://127.0.0.1:42621/want/26 -o - -o - > log/4/stdout26 2> log/4/stderr26 === End of file commands.log === Start of file curl26.out HTTP/1.0 200 Mooo swsclose Server: test-server/fake Connection: close *flopp* === End of file curl26.out === Start of file http_server.log 00:36:16.713296 ====> Client connect 00:36:16.713456 accept_connection 3 returned 4 00:36:16.713531 accept_connection 3 returned 0 00:36:16.720821 Read 93 bytes 00:36:16.720988 Process 93 bytes request 00:36:16.721081 Got request: GET /verifiedserver HTTP/1.1 00:36:16.721147 Are-we-friendly question received 00:36:16.721276 Wrote request (93 bytes) input to log/4/server.input 00:36:16.721377 Identifying ourselves as friends 00:36:16.721563 Response sent (57 bytes) and written to log/4/server.response 00:36:16.721633 special request received, no persistency 00:36:16.721698 ====> Client disconnect 0 00:37:03.771559 ====> Client connect 00:37:03.771710 accept_connection 3 returned 4 00:37:03.771801 accept_connection 3 returned 0 00:37:04.803563 Read 86 bytes 00:37:04.803769 Process 86 bytes request 00:37:04.803863 Got request: GET /want/26 HTTP/1.1 00:37:04.803937 Serve test number 26 part 0 00:37:04.804103 - request found to be complete (26) 00:37:04.804337 Wrote request (86 bytes) input to log/4/server.input 00:37:04.804442 Send response test26 section 00:37:04.804639 connection close instruction "swsclose" found in response 00:37:04.804776 Response sent (79 bytes) and written to log/4/server.response CMD (7168): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind29 ../src/curl -q --output log/3/curl29.out --include --trace-ascii log/3/trace29 --trace-time http://127.0.0.1:44791/want/29 -m 2 > log/3/stdout29 2> log/3/stderr29 RUN: Process with pid 185941 signalled to die RUN: Process with pid 185941 gracefully died CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind28 ../src/curl -q --output log/6/curl28.out --include --trace-ascii log/6/trace28 --trace-time http://127.0.0.1:38277/want/28 -L > log/6/stdout28 2> log/6/stderr28 00:37:04.804841 instructed to close connection after server-reply 00:37:04.804900 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 33582 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 26 === End of file server.cmd === Start of file server.input GET /want/26 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.0 200 Mooo swsclose Server: test-server/fake Connection: close *flopp* === End of file server.response === Start of file stderr26 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 8 0 8 0 0 1 0 --:--:-- 0:00:04 --:--:-- 2 100 8 0 8 0 0 1 0 --:--:-- 0:00:04 --:--:-- 2 Warning: Got more output options than URLs === End of file stderr26 === Start of file trace26 00:37:02.818645 * Trying 127.0.0.1:42621... 00:37:03.732472 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 50986 00:37:03.867732 * using HTTP/1.x 00:37:04.227138 => Send header, 86 bytes (0x56) 0000: GET /want/26 HTTP/1.1 0017: Host: 127.0.0.1:42621 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 00:37:04.561502 * HTTP 1.0, assume close after body 00:37:04.585169 <= Recv header, 27 bytes (0x1b) 0000: HTTP/1.0 200 Mooo swsclose. 00:37:04.914851 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:37:05.065552 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:37:05.157994 <= Recv header, 1 bytes (0x1) 0000: . 00:37:05.217034 <= Recv data, 8 bytes (0x8) 0000: *flopp*. 00:37:05.343182 * abort upload 00:37:05.367563 <= Recv data, 0 bytes (0x0) 00:37:05.877937 * shutting down connection #0 === End of file trace26 === Start of file valgrind26 ==189810== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind26 test 0029...[HTTP with 2 secs timeout] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind29 ../src/curl -q --output log/3/curl29.out --include --trace-ascii log/3/trace29 --trace-time http://127.0.0.1:44791/want/29 -m 2 > log/3/stdout29 2> log/3/stderr29 29: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 28 == Contents of files in the log/3/ dir after test 29 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind29 ../src/curl -q --output log/3/curl29.out --include --trace-ascii log/3/trace29 --trace-time http://127.0.0.1:44791/want/29 -m 2 > log/3/stdout29 2> log/3/stderr29 === End of file commands.log === Start of file http_server.log 00:36:20.516077 ====> Client connect 00:36:20.516271 accept_connection 3 returned 4 00:36:20.516369 accept_connection 3 returned 0 00:36:20.526402 Read 93 bytes 00:36:20.526566 Process 93 bytes request 00:36:20.526668 Got request: GET /verifiedserver HTTP/1.1 00:36:20.526742 Are-we-friendly question received 00:36:20.526891 Wrote request (93 bytes) input to log/3/server.input 00:36:20.527006 Identifying ourselves as friends 00:36:20.527205 Response sent (57 bytes) and written to log/3/server.response 00:36:20.527279 special request received, no persistency 00:36:20.527343 ====> Client disconnect 0 00:37:07.453719 ====> Client connect 00:37:07.453867 accept_connection 3 returned 4 00:37:07.453945 accept_connection 3 returned 0 00:37:08.403133 Connection closed by client 00:37:08.403342 ====> Client disconnect 0 exit_signal_handler: called 00:37:11.562409 signalled to die 00:37:11.563062 ========> IPv4 sws (port 44791 pid: 185941) exits with signal (15) 00:37:11.563332 ========> sws quits === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44791... * Established connection to 127.0.0.1 (127.0.0.1 port 44791) from 127.0.0.1 port 46242 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44791 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:44791 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185941 === End of file http_verify.out === Start of file server.cmd Testnum 29 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185941 === End of file server.response === Start of file stderr29 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 curl: (28) Connection timed out after 2775 milliseconds === End of file stderr29 === Start of file trace29 00:37:06.464883 * Trying 127.0.0.1:44791... 00:37:07.305830 * Connection timed out after 2775 milliseconds 00:37:07.668750 * closing connection #0 === End of file trace29 === Start of file valgrind29 ==190229== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind29 test 0028...[HTTP Location: following with extra spaces in header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind28 ../src/curl -q --output log/6/curl28.out --include --trace-ascii log/6/trace28 --trace-time http://127.0.0.1:38277/want/28 -L > log/6/stdout28 2> log/6/stderr28 valgrind ERROR ==190028== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 28 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind28 ../src/curl -q --output log/6/curl28.out --include --trace-ascii log/6/trace28 --trace-time http://127.0.0.1:38277/want/28 -L > log/6/stdout28 2> log/6/stderr28 === End of file commands.log === Start of file curl28.out HTTP/1.1 301 This is a weirdo text message swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: /online/1,1795,Welcome,00.html/280002.txt?logout=TRUE Connection: close HTTP/1.1 200 Followed here fine swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 52 If this is received, the location following worked === End of file curl28.out === Start of file http_server.log 00:36:18.390473 ====> Client connect 00:36:18.390640 accept_connection 3 returned 4 00:36:18.390724 accept_connection 3 returned 0 00:36:18.398157 Read 93 bytes 00:36:18.398267 Process 93 bytes request 00:36:18.398359 Got request: GET /verifiedserver HTTP/1.1 00:36:18.398425 Are-we-friendly question received 00:36:18.398542 Wrote request (93 bytes) input to log/6/server.input 00:36CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind27 ../src/curl -q --output log/5/curl27.out --include --trace-ascii log/5/trace27 --trace-time "http://127.0.0.1:46263/want/{27,27,27}" -b none > log/5/stdout27 2> log/5/stderr27 :18.398637 Identifying ourselves as friends 00:36:18.398805 Response sent (57 bytes) and written to log/6/server.response 00:36:18.398868 special request received, no persistency 00:36:18.398924 ====> Client disconnect 0 00:37:05.657095 ====> Client connect 00:37:05.657233 accept_connection 3 returned 4 00:37:05.657308 accept_connection 3 returned 0 00:37:06.712977 Read 86 bytes 00:37:06.713198 Process 86 bytes request 00:37:06.713297 Got request: GET /want/28 HTTP/1.1 00:37:06.713376 Serve test number 28 part 0 00:37:06.713573 - request found to be complete (28) 00:37:06.713882 Wrote request (86 bytes) input to log/6/server.input 00:37:06.714006 Send response test28 section 00:37:06.714708 connection close instruction "swsclose" found in response 00:37:06.715014 Response sent (260 bytes) and written to log/6/server.response 00:37:06.715108 instructed to close connection after server-reply 00:37:06.715194 ====> Client disconnect 0 00:37:09.160404 ====> Client connect 00:37:09.160551 accept_connection 3 returned 4 00:37:09.160636 accept_connection 3 returned 0 00:37:09.244461 Read 131 bytes 00:37:09.244681 Process 131 bytes request 00:37:09.244782 Got request: GET /online/1,1795,Welcome,00.html/280002.txt?logout=TRUE HTTP/1.1 00:37:09.244901 Serve test number 28 part 2 00:37:09.245088 - request found to be complete (28) 00:37:09.245446 Wrote request (131 bytes) input to log/6/server.input 00:37:09.245552 Send response test28 section 00:37:09.245802 connection close instruction "swsclose" found in response 00:37:09.246042 Response sent (174 bytes) and written to log/6/server.response 00:37:09.246109 instructed to close connection after server-reply 00:37:09.246170 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 42486 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 28 === End of file server.cmd === Start of file server.input GET /want/28 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* GET /online/1,1795,Welcome,00.html/280002.txt?logout=TRUE HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 301 This is a weirdo text message swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: /online/1,1795,Welcome,00.html/280002.txt?logout=TRUE Connection: close This server reply is for testing a simple Location: following HTTP/1.1 200 Followed here fine swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 52 If this is received, the location following worked === End of file server.response === Start of file stderr28 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 52 100 52 0 0 8 0 0:00:06 0:00:06 --:--:-- 103 === End of file stderr28 === Start of file trace28 00:37:05.652429 * Trying 127.0.0.1:38277... 00:37:06.629793 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 53716 00:37:06.772130 * using HTTP/1.x 00:37:07.134030 => Send header, 86 bytes (0x56) 0000: GET /want/28 HTTP/1.1 0017: Host: 127.0.0.1:38277 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 00:37:07.493943 <= Recv header, 52 bytes (0x34) 0000: HTTP/1.1 301 This is a weirdo text message swsclose. 00:37:07.864300 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:37:07.970042 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:37:08.066856 <= Recv header, 65 bytes (0x41) 0000: Location: /online/1,1795,Welcome,00.html/280002.txt?logout=TRUE 0040: . 00:37:08.129185 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:37:08.212282 <= Recv header, 1 bytes (0x1) 0000: . 00:37:08.463435 * Request completely sent off 00:37:08.729583 * shutting down connection #0 00:37:09.312418 * Issue another request to this URL: 'http://127.0.0.1:38277/online/1,1795,Welcome,00.html/280002.txt?logout=TRUE' 00:37:09.494469 * Hostname 127.0.0.1 was found in DNS cache 00:37:09.535688 * Trying 127.0.0.1:38277... 00:37:09.573677 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 53724 00:37:09.580596 * using HTTP/1.x 00:37:09.627765 => Send header, 131 bytes (0x83) 0000: GET /online/1,1795,Welcome,00.html/280002.txt?logout=TRUE HTTP/1 0040: .1 0044: Host: 127.0.0.1:38277 005b: User-Agent: curl/8.17.0 0074: Accept: */* 0081: 00:37:09.669300 <= Recv header, 41 bytes (0x29) 0000: HTTP/1.1 200 Followed here fine swsclose. 00:37:09.678763 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:37:09.686633 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:37:09.715320 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 52. 00:37:09.768128 <= Recv header, 1 bytes (0x1) 0000: . 00:37:09.816986 <= Recv data, 52 bytes (0x34) 0000: If this is received, the location following worked.. 00:37:10.110489 * Connection #1 to host 127.0.0.1:38277 left intact === End of file trace28 === Start of file valgrind28 ==190028== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind28 test 0027...[Get same cookie page several times] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind27 ../src/curl -q --output log/5/curl27.out --include --trace-ascii log/5/trace27 --trace-time "http://127.0.0.1:46263/want/{27,27,27}" -b none > log/5/stdout27 2> log/5/stderr27 valgrind ERROR ==190016== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 27 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind27 ../src/curl -q --output log/5/curl27.out --include --trace-ascii log/5/trace27 --trace-time "http://127.0.0.1:46263/want/{27,27,27}" -b none > log/5/stdout27 2> log/5/stderr27 === End of file commands.log === Start of file curl27.out HTTP/1.1 200 Mooo swsclose Connection: close Set-Cookie: thewinneris=nowayyouwin; path=/; Content-Length: 8 *flopp* === End of file curl27.out === Start of file http_server.log 00:36:18.256260 ====> Client connect 00:36:18.256446 accept_connection 3 returned 4 00:36:18.256527 accept_connection 3 returned 0 00:36:18.263384 Read 93 bytes 00:36:18.263518 Process 93 bytes request 00:36:18.263613 Got request: GET /verifiedserver HTTP/1.1 00:36:18.263682 Are-we-friendly question received 00:36:18.263821 Wrote request (93 bytes) input to log/5/server.input 00:36:18.263922 Identifying ourselves as friends 00:36:18.264103 Response sent (57 bytes) and written to log/5/server.response 00:36:18.264169 special request received, no persistency 00:36:18.264226 ====> Client disconnect 0 00:37:06.224653 ====> Client connect 00:37:06.224814 accept_connection 3 returned 4 00:37:06.224902 accept_connection 3 returned 0 00:37:07.325800 Read 86 bytes 00:37:07.326024 Process 86 bytes request 00:37:07.326129 Got request: GET /want/27 HTTP/1.1 00:37:07.326207 Serve test number 27 part 0 00:37:07.326419 - request found to be complete (27) 00:37:07.326674 Wrote request (86 bytes) input to log/5/server.input 00:37:07.326793 Send response test27 section 00:37:07.326999 connection close instruction "swsclose" found in response 00:37:07.327186 Response sent (117 bytes) and written to log/5/server.response 00:37:07.327252 instructed to close connection after server-reply 00:37:07.327312 ====> Client disconnect 0 00:37:10.470096 ====> Client connect 00:37:10.470233 accept_connection 3 returned 4 00:37:10.470312 accept_connection 3 returned 0 00:37:10.606989 Read 119 bytes 00:37:10.607212 Process 119 bytes request 00:37:10.607314 Got request: GET /want/27 HTTP/1.1 00:37:10.607391 Serve test number 27 part 0 00:37:10.607586 - request found to be complete (27) 00:37:10.607817 Wrote request (119 bytes) input to log/5/server.input 00:37:10.607915 Send response test27 section 00:37:10.608146 connection close instruction "swsclose" found in response 00:37:10.608354 Response sent (117 bytes) and written to log/5/server.response 00:37:10.608422 instructed to close connection after server-reply 00:37:10.608482 ====> Client disconnect 0 00:37:10.973425 ====> Client connect 00:37:10.973567 accept_connection 3 returned 4 00:37:10.973644 accept_connection 3 returned 0 00:37:10.988815 Read 119 bytes 00:37:10.989023 Process 119 bytes request 00:37:10.989123 Got request: GET /want/27 HTTP/1.1 00:37:10.989196 Serve test number 27 part 0 00:37:10.989378 - request found to be complete (27) 00:37:10.989590 Wrote request (119 bytes) input to log/5/server.input 00:37:10.989691 Send response test27 section 00:37:10.989899 connection close instruction "swsclose" found in response 00:37:10.990082 Response sent (117 bytes) and written to log/5/server.response 00:37:10.990150 instructed to close connection after server-reply 00:37:10.990214 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 56400 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 27 === End of file server.cmd === Start of file server.input GET /want/27 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* GET /want/27 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* Cookie: thewinneris=nowayyouwin GET /want/27 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* Cookie: thewinneris=nowayyouwin === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 Mooo swsclose Connection: close Set-Cookie: thewinneris=nowayyouwin; path=/; Content-Length: 8 *flopp* HTTP/1.1 200 Mooo swsclose Connection: close Set-Cookie: thewinneris=nowayyouwin; path=/; Content-Length: 8 *flopp* HTTP/1.1 200 Mooo swsclose Connection: close Set-Cookie: thewinneris=nowayyouwin; path=/; Content-Length: 8 *flopp* === End of file server.response === Start of file stderr27 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 8 100 8 0 0 1 0 0:00:08 0:00:04 0:00:04 2 100 8 100 8 0 0 1 0 0:00:08 0:00:04 0:00:04 2 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 8 100 8 0 0 16 0 --:--:-- --:--:-- --:--:-- 21 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 8 100 8 0 0 54 0 --:--:-- --:--:-- --:--:-- 62 === End of file stderr27 === Start of file trace27 00:37:04.192174 * WARNING: failed to open cookie file "none" 00:37:06.503764 * Trying 127.0.0.1:46263... 00:37:07.203626 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 50380 00:37:07.321014 * using HTTP/1.x 00:37:07.748551 => Send header, 86 bytes (0x56) 0000: GET /want/27 HTTP/1.1 0017: Host: 127.0.0.1:46263 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 00:37:08.116669 <= Recv header, 27 bytes (0x1b) 0000: HTTP/1.1 200 Mooo swsclose. 00:37:08.515663 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:37:08.781489 * Added cookie thewinneris="nowayyouwin" for domain 127.0.0.1, path /, expire 0 00:37:08.799247 <= Recv header, 45 bytes (0x2d) 0000: Set-Cookie: thewinneris=nowayyouwin; path=/;. 00:37:08.839566 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 8. 00:37:08.928080 <= Recv header, 1 bytes (0x1) 0000: . 00:37:08.986453 <= Recv data, 8 bytes (0x8) 0000: *flopp*. 00:37:09.098066 * we are done reading and this is set to close, stop send 00:37:09.127843 * abort upload 00:37:09.673046 * shutting down connection #0 00:37:10.693358 * WARNING: failed to open cookie file "none" 00:37:10.789146 * Hostname 127.0.0.1 was found in DNS cache 00:37:10.845980 * Trying 127.0.0.1:46263... 00:37:10.876762 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 50396 00:37:10.883357 * using HTTP/1.x 00:37:10.990333 => Send header, 119 bytes (0x77) 0000: GET /want/27 HTTP/1.1 0017: Host: 127.0.0.1:46263 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: Cookie: thewinneris=nowayyouwin 0075: 00:37:11.023530 <= Recv header, 27 bytes (0x1b) 0000: HTTP/1.1 200 Mooo swsclose. 00:37:11.042778 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:37:11.123538 * Replaced cookie thewinneris="nowayyouwin" for domain 127.0.0.1, path /, expire 0 00:37:11.127218 <= Recv header, 45 bytes (0x2d) 0000: Set-Cookie: thewinneris=nowayyouwin; path=/;. 00:37:11.134959 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 8. 00:37:11.142906 <= Recv header, 1 bytes (0x1) 0000: . 00:37:11.148364 <= Recv data, 8 bytes (0x8) 0000: *flopp*. 00:37:11.157446 * we are done reading and this is set to close, stop send 00:37:11.160459 * abort upload 00:37:11.199227 * shutting down connection #1 00:37:11.308356 * WARNING: failed to open cookie file "none" 00:37:11.325541 * Hostname 127.0.0.1 was found in DNS cache 00:37:11.353329 * Trying 127.0.0.1:46263... 00:37:11.358084 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 50412 00:37:11.360112 * using HTTP/1.x 00:37:11.370389 => Send header, 119 bytes (0x77) 0000: GET /want/27 HTTP/1.1 0017: Host: 127.0.0.1:46263 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: Cookie: thewinneris=nowayyouwin 0075: 00:37:11.397772 <= Recv header, 27 bytes (0x1b) 0000: HTTP/1.1 200 Mooo swsclose. 00:37:11.404865 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:37:11.435578 * Replaced cookie thewinneris="nowayyouwin" for domain 127.0.0.1, path /, expire 0 00:37:11.437001 <= Recv header, 45 bytes (0x2d) 0000: Set-Cookie: thewinneris=nowayyouwin; path=/;. 00:37:11.443927 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 8. 00:37:11.447857 <= Recv header, 1 bytes (CMD (13312): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind30 ../src/curl -q --output log/1/curl30.out --include --trace-ascii log/1/trace30 --trace-time http://127.0.0.1:40641/want/30 > log/1/stdout30 2> log/1/stderr30 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind32 ../src/curl -q --output log/7/curl32.out --include --trace-ascii log/7/trace32 --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:34897/32 -G > log/7/stdout32 2> log/7/stderr32 0x1) 0000: . 00:37:11.449786 <= Recv data, 8 bytes (0x8) 0000: *flopp*. 00:37:11.452424 * we are done reading and this is set to close, stop send 00:37:11.453703 * abort upload 00:37:11.465459 * shutting down connection #2 === End of file trace27 === Start of file valgrind27 ==190016== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind27 test 0030...[HTTP with no data in server reply] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind30 ../src/curl -q --output log/1/curl30.out --include --trace-ascii log/1/trace30 --trace-time http://127.0.0.1:40641/want/30 > log/1/stdout30 2> log/1/stderr30 valgrind ERROR ==190429== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 30 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind30 ../src/curl -q --output log/1/curl30.out --include --trace-ascii log/1/trace30 --trace-time http://127.0.0.1:40641/want/30 > log/1/stdout30 2> log/1/stderr30 === End of file commands.log === Start of file http_server.log 00:36:24.135995 ====> Client connect 00:36:24.136170 accept_connection 3 returned 4 00:36:24.136251 accept_connection 3 returned 0 00:36:24.142198 Read 93 bytes 00:36:24.142316 Process 93 bytes request 00:36:24.142404 Got request: GET /verifiedserver HTTP/1.1 00:36:24.142467 Are-we-friendly question received 00:36:24.142583 Wrote request (93 bytes) input to log/1/server.input 00:36:24.142671 Identifying ourselves as friends 00:36:24.142848 Response sent (57 bytes) and written to log/1/server.response 00:36:24.142908 special request received, no persistency 00:36:24.142963 ====> Client disconnect 0 00:37:11.384317 ====> Client connect 00:37:11.384467 accept_connection 3 returned 4 00:37:11.384551 accept_connection 3 returned 0 00:37:12.517072 Read 86 bytes 00:37:12.517296 Process 86 bytes request 00:37:12.517405 Got request: GET /want/30 HTTP/1.1 00:37:12.517487 Serve test number 30 part 0 00:37:12.517686 - request found to be complete (30) 00:37:12.517960 Wrote request (86 bytes) input to log/1/server.input 00:37:12.518081 Send response test30 section 00:37:12.518294 connection close instruction "swsclose" found in response 00:37:12.518413 Response sent (0 bytes) and written to log/1/server.response 00:37:12.518484 instructed to close connection after server-reply 00:37:12.518553 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 47512 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 30 === End of file server.cmd === Start of file server.input GET /want/30 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 === End of file server.response === Start of file stderr30 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (52) Empty reply from server === End of file stderr30 === Start of file trace30 00:37:10.409776 * Trying 127.0.0.1:40641... 00:37:11.428141 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 56976 00:37:11.579899 * using HTTP/1.x 00:37:11.936135 => Send header, 86 bytes (0x56) 0000: GET /want/30 HTTP/1.1 0017: Host: 127.0.0.1:40641 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 00:37:12.205085 * abort upload 00:37:12.416232 * Empty reply from server 00:37:12.706912 * shutting down connection #0 === End of file trace30 === Start of file valgrind30 ==190429== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind30 test 0032...[HTTP with -d and -G] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind32 ../src/curl -q --output log/7/curl32.out --include --trace-ascii log/7/trace32 --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:34897/32 -G > log/7/stdout32 2> log/7/stderr32 valgrind ERROR ==190744== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 32 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind32 ../src/curl -q --output log/7/curl32.out --include --trace-ascii log/7/trace32 --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:34897/32 -G > log/7/stdout32 2> log/7/stderr32 === End of file commands.log === Start of file curl32.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl32.out === Start of file http_server.log 00:36:27.977348 ====> Client connect 00:36:27.977515 accept_connection 3 returned 4 00:36:27.977590 accept_connection 3 returned 0 00:36:27.985063 Read 93 bytes 00:36:27.985156 Process 93 bytes request 00:36:27.985247 Got request: GET /verifiedserver HTTP/1.1 00:36:27.985310 Are-we-friendly question received 00:36:27.985419 Wrote request (93 bytes) input to log/7/server.input 00:36:27.985506 Identifying ourselves as friends 00:36:27.985688 Response sent (57 bytes) and written to log/7/server.response 00:36:27.985750 special request received, no persistency 00:36:27.985802 ====> Client disconnect 0 00:37:15.589686 ====> Client connect 00:37:15.612698 accept_connection 3 returned 4 00:37:15.612882 accept_connection 3 returned 0 00:37:16.726683 Read 97 bytes 00:37:16.726863 Process 97 bytes request 00:37:16.726962 Got request: GET /32?foo=moo&moo=poo HTTP/1.1 00:37:16.727035 Serve test number 32 part 0 00:37:16.729764 - request found to be complete (32) 00:37:16.730039 Wrote request (97 bytes) input to log/7/server.input 00:37:16.730150 Send response test32 section 00:37:16.730990 Response sent (256 bytes) and written to log/7/server.response 00:37:16.731092 => persistent connection request ended, awaits new request 00:37:18.675009 Connection closed by client 00:37:18.675247 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 60766 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 32 === End of file server.cmd === Start of file server.input GET /32?foo=moo&moo=poo HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of fCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind31 ../src/curl -q --output log/2/curl31.out --include --trace-ascii log/2/trace31 --trace-time http://test31.curl:39863/we/want/31 -b none -c log/2/jar31.txt --resolve test31.curl:39863:127.0.0.1 > log/2/stdout31 2> log/2/stderr31 ile server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr32 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr32 === Start of file trace32 00:37:15.601702 * Trying 127.0.0.1:34897... 00:37:16.613569 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 52404 00:37:16.756349 * using HTTP/1.x 00:37:17.150932 => Send header, 97 bytes (0x61) 0000: GET /32?foo=moo&moo=poo HTTP/1.1 0022: Host: 127.0.0.1:34897 0039: User-Agent: curl/8.17.0 0052: Accept: */* 005f: 00:37:17.478492 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:37:17.785224 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:37:17.885734 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:37:17.912126 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 00:37:17.920939 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 00:37:17.929414 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 00:37:17.961478 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 00:37:18.021354 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:37:18.059226 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:37:18.064506 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:37:18.147972 <= Recv header, 1 bytes (0x1) 0000: . 00:37:18.207326 <= Recv data, 6 bytes (0x6) 0000: -foo-. 00:37:18.316775 * we are done reading and this is set to close, stop send 00:37:18.348405 * abort upload 00:37:18.857897 * shutting down connection #0 === End of file trace32 === Start of file valgrind32 ==190744== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind32 setenv TZ = GMT test 0031...[HTTP with weirdly formatted cookies and cookiejar storage] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind31 ../src/curl -q --output log/2/curl31.out --include --trace-ascii log/2/trace31 --trace-time http://test31.curl:39863/we/want/31 -b none -c log/2/jar31.txt --resolve test31.curl:39863:127.0.0.1 > log/2/stdout31 2> log/2/stderr31 valgrind ERROR ==190585== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 31 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind31 ../src/curl -q --output log/2/curl31.out --include --trace-ascii log/2/trace31 --trace-time http://test31.curl:39863/we/want/31 -b none -c log/2/jar31.txt --resolve test31.curl:39863:127.0.0.1 > log/2/stdout31 2> log/2/stderr31 === End of file commands.log === Start of file curl31.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 4 Content-Type: text/html Funny-head: yesyes Set-Cookie: blankdomain=sure; domain=; path=/ Set-Cookie: foobar=name; domain=anything.com; path=/ ; secure Set-Cookie:ismatch=this ; domain=test31.curl; path=/silly/ Set-Cookie:ISMATCH=this ; domain=test31.curl; path=/silly/ Set-Cookie: overwrite=this ; domain=test31.curl; path=/overwrite/ Set-Cookie: overwrite=this2 ; domain=test31.curl; path=/overwrite Set-Cookie: sec1value=secure1 ; domain=test31.curl; path=/secure1/ ; secure Set-Cookie: sec2value=secure2 ; domain=test31.curl; path=/secure2/ ; secure= Set-Cookie: sec3value=secure3 ; domain=test31.curl; path=/secure3/ ; secure= Set-Cookie: sec4value=secure4 ; secure=; domain=test31.curl; path=/secure4/ ; Set-Cookie: sec5value=secure5 ; secure; domain=test31.curl; path=/secure5/ ; Set-Cookie: sec6value=secure6 ; secure ; domain=test31.curl; path=/secure6/ ; Set-Cookie: sec7value=secure7 ; secure ; domain=test31.curl; path=/secure7/ ; Set-Cookie: sec8value=secure8 ; secure= ; domain=test31.curl; path=/secure8/ ; Set-Cookie: secure=very1 ; secure=; domain=test31.curl; path=/secure9/; Set-Cookie: httpo1=value1 ; domain=test31.curl; path=/p1/; httponly Set-Cookie: httpo2=value2 ; domain=test31.curl; path=/p2/; httponly= Set-Cookie: httpo3=value3 ; httponly; domain=test31.curl; path=/p3/; Set-Cookie: httpo4=value4 ; httponly=; domain=test31.curl; path=/p4/; Set-Cookie: httponly=myvalue1 ; domain=test31.curl; path=/p4/; httponly Set-Cookie: httpandsec=myvalue2 ; domain=test31.curl; path=/p4/; httponly; secure Set-Cookie: httpandsec2=myvalue3; domain=test31.curl; path=/p4/; httponly=; secure Set-Cookie: httpandsec3=myvalue4 ; domain=test31.curl; path=/p4/; httponly; secure= Set-Cookie: httpandsec4=myvalue5 ; domain=test31.curl; path=/p4/; httponly=; secure= Set-Cookie: httpandsec5=myvalue6 ; domain=test31.curl; path=/p4/; secure; httponly= Set-Cookie: httpandsec6=myvalue7 ; domain=test31.curl; path=/p4/; secure=; httponly= Set-Cookie: httpandsec7=myvalue8 ; domain=test31.curl; path=/p4/; secure; httponly Set-Cookie: httpandsec8=myvalue9; domain=test31.curl; path=/p4/; secure=; httponly Set-Cookie: partmatch=present; domain=test31.curl ; path=/; Set-Cookie:eat=this; domain=moo.foo.moo; Set-Cookie: eat=this-too; domain=.foo.moo; Set-Cookie: nodomainnovalue Set-Cookie: nodomain=value; expires=Fri Feb 13 11:56:27 GMT 2525 Set-Cookie: novalue; domain=reallysilly Set-Cookie: test=yes; domain=foo.com; expires=Sat Feb 2 11:56:27 GMT 2525 Set-Cookie: test2=yes; domain=se; expires=Sat Feb 2 11:56:27 GMT 2525 Set-Cookie: magic=yessir; path=/silly/; HttpOnly Set-Cookie: blexp=yesyes; domain=test31.curl; domain=test31.curl; expiry=totally bad; Set-Cookie: partialip=nono; domain=.0.0.1; Set-Cookie: withspaces= yes within and around ; Set-Cookie: withspaces2 =before equals; Set-Cookie: prespace= yes before; Set-Cookie: securewithspace=after ; secure = Set-Cookie: ³Ã\x92Ã\x9aÃ\x8dÃ\x97=%96%A6g%9Ay%B0%A5g%A7tm%7C%95%9A boo === End of file curl31.out === Start of file http_server.log 00:36:25.859371 ====> Client connect 00:36:25.859527 accept_connection 3 returned 4 00:36:25.859601 accept_connection 3 returned 0 00:36:25.865328 Read 93 bytes 00:36:25.865420 Process 93 bytes request 00:36:25.865509 Got request: GET /verifiedserver HTTP/1.1 00:36:25.865571 Are-we-friendly question received 00:36:25.865677 Wrote request (93 bytes) input to log/2/server.input 00:36:25.865761 Identifying ourselves as friends 00:36:25.865935 Response sent (57 bytes) and written to log/2/server.response 00:36:25.865997 special request received, no persistency 00:36:25.866054 ====> Client disconnect 0 00:37:14.018249 ====> Client connect 00:37:14.018390 accept_connection 3 returned 4 00:37:14.018469 accept_connection 3 returned 0 00:37:15.199179 Read 91 bytes 00:37:15.199394 Process 91 bytes request 00:37:15.199502 Got request: GET /we/want/31 HTTP/1.1 00:37:15.199598 Serve test number 31 part 0 00:37:15.199916 - request found to be complete (31) 00:37:15.200447 Wrote request (91 bytes) input to log/2/server.input 00:37:15.200568 Send response test31 section 00:37:15.201740 Response sent (3143 bytes) and written to log/2/server.response 00:37:15.201860 => persistent connection request ended, awaits new request 00:37:25.361065 Connection closed by client 00:37:25.361250 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 57880 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file jar31.txt # Netscape HTTP Cookie File # https://curl.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. test31.curl FALSE /we/want/ FALSE 0 ³Ã\x92Ã\x9aÃ\x8dÃ\x97 %96%A6g%9Ay%B0%A5g%A7tm%7C%95%9A test31.curl FALSE /we/want/ FALSE 0 prespace yes before test31.curl FALSE /we/want/ FALSE 0 withspaces2 before equals test31.curl FALSE /we/want/ FALSE 0 withspaces yes within and around .test31.curl TRUE /we/want/ FALSE 0 blexp yesyes #HttpOnly_test31.curl FALSE /silly/ FALSE 0 magic yessir test31.curl FALSE /we/want/ FALSE 1797208620 nodomain value .test31.curl TRUE / FALSE 0 partmatch present #HttpOnly_.test31.curl TRUE /p4/ FALSE 0 httponly myvalue1 #HttpOnly_.test31.curl TRUE /p4/ FALSE 0 httpo4 value4 #HttpOnly_.test31.curl TRUE /p3/ FALSE 0 httpo3 value3 #HttpOnly_.test31.curl TRUE /p2/ FALSE 0 httpo2 value2 #HttpOnly_.test31.curl TRUE /p1/ FALSE 0 httpo1 value1 .test31.curl TRUE /overwrite FALSE 0 overwrite this2 .test31.curl TRUE /silly/ FALSE 0 ISMATCH this .test31.curl TRUE /silly/ FALSE 0 ismatch this test31.curl FALSE / FALSE 0 blankdomain sure === End of file jar31.txt === Start of file server.cmd Testnum 31 === End of file server.cmd === Start of file server.input GET /we/want/31 HTTP/1.1 Host: test31.curl:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 4 Content-Type: text/html Funny-head: yesyes Set-Cookie: blankdomain=sure; domain=; path=/ Set-Cookie: foobar=name; domain=anything.com; path=/ ; secure Set-Cookie:ismatch=this ; domain=test31.curl; path=/silly/ Set-Cookie:ISMATCH=this ; domain=test31.curl; path=/silly/ Set-Cookie: overwrite=this ; domain=test31.curl; path=/overwrite/ Set-Cookie: overwrite=this2 ; domain=test31.curl; path=/overwrite Set-Cookie: sec1value=secure1 ; domain=test31.curl; path=/secure1/ ; secure Set-Cookie: sec2value=secure2 ; domain=test31.curl; path=/secure2/ ; secure= Set-Cookie: sec3value=secure3 ; domain=test31.curl; path=/secure3/ ; secure= Set-Cookie: sec4value=secure4 ; secure=; domain=test31.curl; path=/secure4/ ; Set-Cookie: sec5value=secure5 ; secure; domain=test31.curl; path=/secure5/ ; Set-Cookie: sec6value=secure6 ; secure ; domain=test31.curl; path=/secure6/ ; Set-Cookie: sec7value=secure7 ; secure ; domain=test31.curl; path=/secure7/ ; Set-Cookie: sec8value=secure8 ; secure= ; domain=test31.curl; path=/secure8/ ; Set-Cookie: secure=very1 ; secure=; domain=test31.curl; path=/secure9/; Set-Cookie: httpo1=value1 ; domain=test31.curl; path=/p1/; httponly Set-Cookie: httpo2=value2 ; domain=test31.curl; path=/p2/; httponly= Set-Cookie: httpo3=value3 ; httponly; domain=test31.curl; path=/p3/; Set-Cookie: httpo4=value4 ; httponly=; domain=test31.curl; path=/p4/; Set-Cookie: httponly=myvalue1 ; domain=test31.curl; path=/p4/; httponly Set-Cookie: httpandsec=myvalue2 ; domain=test31.curl; path=/p4/; httponly; secure Set-Cookie: httpandsec2=myvalue3; domain=test31.curl; path=/p4/; httponly=; secure Set-Cookie: httpandsec3=myvalue4 ; domain=test31.curl; path=/p4/; httponly; secure= Set-Cookie: httpandsec4=myvalue5 ; domain=test31.curl; path=/p4/; httponly=; secure= Set-Cookie: httpandsec5=myvalue6 ; domain=test31.curl; path=/p4/; secure; httponly= Set-Cookie: httpandsec6=myvalue7 ; domain=test31.curl; path=/p4/; secure=; httponly= Set-Cookie: httpandsec7=myvalue8 ; domain=test31.curl; path=/p4/; secure; httponly Set-Cookie: httpandsec8=myvalue9; domain=test31.curl; path=/p4/; secure=; httponly Set-Cookie: partmatch=present; domain=test31.curl ; path=/; Set-Cookie:eat=this; domain=moo.foo.moo; Set-Cookie: eat=this-too; domain=.foo.moo; Set-Cookie: nodomainnovalue Set-Cookie: nodomain=value; expires=Fri Feb 13 11:56:27 GMT 2525 Set-Cookie: novalue; domain=reallysilly Set-Cookie: test=yes; domain=foo.com; expires=Sat Feb 2 11:56:27 GMT 2525 Set-Cookie: test2=yes; domain=se; expires=Sat Feb 2 11:56:27 GMT 2525 Set-Cookie: magic=yessir; path=/silly/; HttpOnly Set-Cookie: blexp=yesyes; domain=test31.curl; domain=test31.curl; expiry=totally bad; Set-Cookie: partialip=nono; domain=.0.0.1; Set-Cookie: withspaces= yes within and around ; Set-Cookie: withspaces2 =before equals; Set-Cookie: prespace= yes before; Set-Cookie: securewithspace=after ; secure = Set-Cookie: ³Ã\x92Ã\x9aÃ\x8dÃ\x97=%96%A6g%9Ay%B0%A5g%A7tm%7C%95%9A boo === End of file server.response === Start of file stderr31 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 === End of file stderr31 === Start of file trace31 00:37:10.597274 * WARNING: failed to open cookie file "none" 00:37:11.486667 * Added test31.curl:39863:127.0.0.1 to DNS cache 00:37:12.529177 * Hostname test31.curl was found in DNS cache 00:37:13.308947 * Trying 127.0.0.1:39863... 00:37:13.996435 * Established connection to test31.curl (127.0.0.1 port 39863) from 127.0.0.1 port 40768 00:37:14.111457 * using HTTP/1.x 00:37:14.622479 => Send header, 91 bytes (0x5b) 0000: GET /we/want/31 HTTP/1.1 001a: Host: test31.curl:39863 0033: User-Agent: curl/8.17.0 004c: Accept: */* 0059: 00:37:14.979816 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:37:15.295185 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:37:15.400877 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 00:37:15.464446 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 4 00:37:15.522350 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:37:15.529666 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 00:37:15.821273 * Added cookie blankdomain="sure" for domain test31.curl, path /, expire 0 00:37:15.839350 <= Recv header, 46 bytes (0x2e) 0000: Set-Cookie: blankdomain=sure; domain=; path=/. 00:37:15.880491 * skipped cookie with bad tailmatch domain: anything.com; path=/ ; secure 00:37:15.896843 <= Recv header, 63 bytes (0x3f) 0000: Set-Cookie: foobar=name; domain=anything.com; path=/ ; secure 00:37:15.962506 * Added cookie ismatch="this" for domain test31.curl, path /silly/, expire 0 00:37:15.964679 <= Recv header, 61 bytes (0x3d) 0000: Set-Cookie:ismatch=this ; domain=test31.curl; path=/silly/ 00:37:16.006966 * Added cookie ISMATCH="this" for domain test31.curl, path /silly/, expire 0 00:37:16.008893 <= Recv header, 61 bytes (0x3d) 0000: Set-Cookie:ISMATCH=this ; domain=test31.curl; path=/silly/ 00:37:16.024867 * Added cookie overwrite="this" for domain test31.curl, path /overwrite/, expire 0 00:37:16.027006 <= Recv header, 68 bytes (0x44) 0000: Set-Cookie: overwrite=this ; domain=test31.curl; path=/overwrit 0040: e/ 00:37:16.088033 * Replaced cookie overwrite="this2" for domain test31.curl, path /overwrite, expire 0 00:37:16.091664 <= Recv header, 68 bytes (0x44) 0000: Set-Cookie: overwrite=this2 ; domain=test31.curl; path=/overwri 0040: te 00:37:16.113390 <= Recv header, 78 bytes (0x4e) 0000: Set-Cookie: sec1value=secure1 ; domain=test31.curl; path=/secur 0040: e1/ ; secure 00:37:16.129307 <= Recv header, 79 bytes (0x4f) 0000: Set-Cookie: sec2value=secure2 ; domain=test31.curl; path=/secur 0040: e2/ ; secure= 00:37:16.142913 <= Recv header, 79 bytes (0x4f) 0000: Set-Cookie: sec3value=secure3 ; domain=test31.curl; path=/secur 0040: e3/ ; secure= 00:37:16.154515 <= Recv header, 81 bytes (0x51) 0000: Set-Cookie: sec4value=secure4 ; secure=; domain=test31.curl; pa 0040: th=/secure4/ ; 00:37:16.169458 <= Recv header, 80 bytes (0x50) 0000: Set-Cookie: sec5value=secure5 ; secure; domain=test31.curl; pat 0040: h=/secure5/ ; 00:37:16.181611 <= Recv header, 81 bytes (0x51) 0000: Set-Cookie: sec6value=secure6 ; secure ; domain=test31.curl; pa 0040: th=/secure6/ ; 00:37:16.193312 <= Recv header, 83 bytes (0x53) 0000: Set-Cookie: sec7value=secure7 ; secure ; domain=test31.curl; 0040: path=/secure7/ ; 00:37:16.206600 <= Recv header, 82 bytes (0x52) 0000: Set-Cookie: sec8value=secure8 ; secure= ; domain=test31.curl; p 0040: ath=/secure8/ ; 00:37:16.219707 <= Recv header, 75 bytes (0x4b) 0000: Set-Cookie: secure=very1 ; secure=; domain=test31.curl; path=/s 0040: ecure9/; 00:37:16.240159 * Added cookie httpo1="value1" for domain test31.curl, path /p1/, expire 0 00:37:16.241687 <= Recv header, 70 bytes (0x46) 0000: Set-Cookie: httpo1=value1 ; domain=test31.curl; path=/p1/; http 0040: only 00:37:16.259156 * Added cookie httpo2="value2" for domain test31.curl, path /p2/, expire 0 00:37:16.260582 <= Recv header, 71 bytes (0x47) 0000: Set-Cookie: httpo2=value2 ; domain=test31.curl; path=/p2/; http 0040: only= 00:37:16.272780 * Added cookie httpo3="value3" for domain test31.curl, path /p3/, expire 0 00:37:16.274050 <= Recv header, 71 bytes (0x47) 0000: Set-Cookie: httpo3=value3 ; httponly; domain=test31.curl; path= 0040: /p3/; 00:37:16.289204 * Added cookie httpo4="value4" for domain test31.curl, path /p4/, expire 0 00:37:16.290514 <= Recv header, 73 bytes (0x49) 0000: Set-Cookie: httpo4=value4 ; httponly=; domain=test31.curl; path 0040: =/p4/; 00:37:16.303028 * Added cookie httponly="myvalue1" for domain test31.curl, path /p4/, expire 0 00:37:16.304864 <= Recv header, 74 bytes (0x4a) 0000: Set-Cookie: httponly=myvalue1 ; domain=test31.curl; path=/p4/; 0040: httponly 00:37:16.322983 <= Recv header, 84 bytes (0x54) 0000: Set-Cookie: httpandsec=myvalue2 ; domain=test31.curl; path=/p4/ 0040: ; httponly; secure 00:37:16.335917 <= Recv header, 84 bytes (0x54) 0000: Set-Cookie: httpandsec2=myvalue3; domain=test31.curl; path=/p4/; 0040: httponly=; secure 00:37:16.348381 <= Recv header, 86 bytes (0x56) 0000: Set-Cookie: httpandsec3=myvalue4 ; domain=test31.curl; path=/p4 0040: /; httponly; secure= 00:37:16.361618 <= Recv header, 87 bytes (0x57) 0000: Set-Cookie: httpandsec4=myvalue5 ; domain=test31.curl; path=/p4 0040: /; httponly=; secure= 00:37:16.374971 <= Recv header, 86 bytes (0x56) 0000: Set-Cookie: httpandsec5=myvalue6 ; domain=test31.curl; path=/p4 0040: /; secure; httponly= 00:37:16.387824 <= Recv header, 87 bytes (0x57) 0000: Set-Cookie: httpandsec6=myvalue7 ; domain=test31.curl; path=/p4 0040: /; secure=; httponly= 00:37:16.400323 <= Recv header, 85 bytes (0x55) 0000: Set-Cookie: httpandsec7=myvalue8 ; domain=test31.curl; path=/p4 0040: /; secure; httponly 00:37:16.434262 <= Recv header, 84 bytes (0x54) 0000: Set-Cookie: httpandsec8=myvalue9; domain=test31.curl; path=/p4/; 0040: secure=; httponly 00:37:16.447632 * Added cookie partmatch="present" for domain test31.curl, path /, expire 0 00:37:16.449018 <= Recv header, 61 bytes (0x3d) 0000: Set-Cookie: partmatch=present; domain=test31.curl ; path=/; 00:37:16.459319 * skipped cookie with bad tailmatch domain: moo.foo.moo; 00:37:16.460811 <= Recv header, 42 bytes (0x2a) 0000: Set-Cookie:eat=this; domain=moo.foo.moo; 00:37:16.471401 * skipped cookie with bad tailmatch domain: foo.moo; 00:37:16.472900 <= Recv header, 44 bytes (0x2c) 0000: Set-Cookie: eat=this-too; domain=.foo.moo; 00:37:16.479874 <= Recv header, 29 bytes (0x1d) 0000: Set-Cookie: nodomainnovalue 00:37:16.639381 * Added cookie nodomain="value" for domain test31.curl, path /we/want/, expire 1797208620 00:37:16.644221 <= Recv header, 68 bytes (0x44) 0000: Set-Cookie: nodomain=value; expires=Fri Feb 13 11:56:27 GMT 25 0040: 25 00:37:16.658538 <= Recv header, 41 bytes (0x29) 0000: Set-Cookie: novalue; domain=reallysilly 00:37:16.667284 * skipped cookie with bad tailmatch domain: foo.com; expires=Sat Feb 2 11:56:27 GMT 2525 00:37:16.668871 <= Recv header, 75 bytes (0x4b) 0000: Set-Cookie: test=yes; domain=foo.com; expires=Sat Feb 2 11:56:27 0040: GMT 2525 00:37:16.679906 * skipped cookie with bad tailmatch domain: se; expires=Sat Feb 2 11:56:27 GMT 2525 00:37:16.681418 <= Recv header, 71 bytes (0x47) 0000: Set-Cookie: test2=yes; domain=se; expires=Sat Feb 2 11:56:27 GMT 0040: 2525 00:37:16.696832 * Added cookie magic="yessir" for domain test31.curl, path /silly/, expire 0 00:37:16.698841 <= Recv header, 50 bytes (0x32) 0000: Set-Cookie: magic=yessir; path=/silly/; HttpOnly 00:37:16.712742 * Added cookie blexp="yesyes" for domain test31.curl, path /we/want/, expire 0 00:37:16.714089 <= Recv header, 87 bytes (0x57) 0000: Set-Cookie: blexp=yesyes; domain=test31.curl; domain=test31.curl 0040: ; expiry=totally bad; 00:37:16.726065 * skipped cookie with bad tailmatch domain: 0.0.1; 00:37:16.727294 <= Recv header, 44 bytes (0x2c) 0000: Set-Cookie: partialip=nono; domain=.0.0.1; 00:37:16.735631 * Added cookie withspaces="yes within and around" for domain test31.curl, path /we/want/, expire 0 00:37:16.737104 <= Recv header, 54 bytes (0x36) 0000: Set-Cookie: withspaces= yes within and around ; 00:37:16.746104 * Added cookie withspaces2="before equals" for domain test31.curl, path /we/want/, expire 0 00:37:16.747467 <= Recv header, 41 bytes (0x29) 0000: Set-Cookie: withspaces2 =before equals; 00:37:16.755122 * Added cookie prespace="yes before" for domain test31.curl, path /we/want/, expire 0 00:37:16.756414 <= Recv header, 36 bytes (0x24) 0000: Set-Cookie: prespace= yes before; 00:37:16.762429 <= Recv header, 49 bytes (0x31) 0000: Set-Cookie: securewithspace=after ; secure = 00:37:16.771186 * Added cookie ³Ã\x92Ã\x9aÃ\x8dÃ\x97="%96%A6g%9Ay%B0%A5g%A7tm%7C%95%9A" for domain test31.curl, path /we/want/, expire 0 00:37:16.772816 <= Recv header, 74 bytes (0x4a) 0000: Set-Cookie: ......\x92..\x9a..\x8d..\x97=%96%A6g%9Ay%B0%A5g%A7tm 0040: %7C%95%9A. 00:37:16.859533 <= Recv header, 2 bytes (0x2) 0000: 00:37:16.915737 <= Recv data, 4 bytes (0x4) 0000: boo. 00:37:17.484699 * Connection #0 to host test31.curl:39863 left intact === End of file trace31 === Start of file valgrind31 ==190585== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind31 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 38 in state 4 Runner 2 (id 185908) running test 40 in state 4 Runner 3 (id 185910) running test 35 in state 4 Runner 4 (id 185912) running test 34 in state 4 Runner 5 (id 185914) running test 37 in state 4 Runner 6 (id 185916) running test 36 in state 4 Runner 7 (id 185918) running test 39 in state 4 Runner 8 (id 185920) running test 33 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 38 in state 4 Runner 2 (id 185908) running test 40 in state 4 Runner 3 (id 185910) running test 35 in state 4 Runner 4 (id 185912) running test 34 in state 4 Runner 5 (id 185914) running test 37 in state 4 Runner 6 (id 185916) running test 36 in state 4 Runner 7 (id 185918) running test 39 in state 4 Runner 8 (id 185920) running test 33 in state 4 Hmmm, the tests are taking a while to finish. Here is the statCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind33 ../src/curl -q --output log/8/curl33.out --include --trace-ascii log/8/trace33 --trace-time http://127.0.0.1:39461/33 -Tlog/8/test33.txt -C 50 > log/8/stdout33 2> log/8/stderr33 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind34 ../src/curl -q --output log/4/curl34.out --include --trace-ascii log/4/trace34 --trace-time http://127.0.0.1:42621/34 > log/4/stdout34 2> log/4/stderr34 us: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 38 in state 4 Runner 2 (id 185908) running test 40 in state 4 Runner 3 (id 185910) running test 35 in state 4 Runner 4 (id 185912) running test 34 in state 4 Runner 5 (id 185914) running test 37 in state 4 Runner 6 (id 185916) running test 36 in state 4 Runner 7 (id 185918) running test 39 in state 4 Runner 8 (id 185920) running test 33 in state 4 test 0033...[HTTP PUT with resume] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind33 ../src/curl -q --output log/8/curl33.out --include --trace-ascii log/8/trace33 --trace-time http://127.0.0.1:39461/33 -Tlog/8/test33.txt -C 50 > log/8/stdout33 2> log/8/stderr33 valgrind ERROR ==190978== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 33 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind33 ../src/curl -q --output log/8/curl33.out --include --trace-ascii log/8/trace33 --trace-time http://127.0.0.1:39461/33 -Tlog/8/test33.txt -C 50 > log/8/stdout33 2> log/8/stderr33 === End of file commands.log === Start of file curl33.out HTTP/1.1 200 OK swsclose === End of file curl33.out === Start of file http_server.log 00:37:06.024268 ====> Client connect 00:37:06.024438 accept_connection 3 returned 4 00:37:06.024514 accept_connection 3 returned 0 00:37:06.031425 Read 93 bytes 00:37:06.031581 Process 93 bytes request 00:37:06.031679 Got request: GET /verifiedserver HTTP/1.1 00:37:06.031749 Are-we-friendly question received 00:37:06.031893 Wrote request (93 bytes) input to log/8/server.input 00:37:06.032000 Identifying ourselves as friends 00:37:06.032207 Response sent (57 bytes) and written to log/8/server.response 00:37:06.032279 special request received, no persistency 00:37:06.032343 ====> Client disconnect 0 00:37:53.746762 ====> Client connect 00:37:53.746900 accept_connection 3 returned 4 00:37:53.746980 accept_connection 3 returned 0 00:37:54.941113 Read 183 bytes 00:37:54.941324 Process 183 bytes request 00:37:54.941423 Got request: PUT /33 HTTP/1.1 00:37:54.941496 Serve test number 33 part 0 00:37:54.941717 - request found to be complete (33) 00:37:54.941876 Found Content-Length: 50 in the request 00:37:54.942054 Wrote request (183 bytes) input to log/8/server.input 00:37:54.942163 Send response test33 section 00:37:54.942370 connection close instruction "swsclose" found in response 00:37:54.942521 Response sent (26 bytes) and written to log/8/server.response 00:37:54.942590 instructed to close connection after server-reply 00:37:54.942651 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 36208 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 33 === End of file server.cmd === Start of file server.input PUT /33 HTTP/1.1 Host: 127.0.0.1:39461 Content-Range: bytes 50-99/100 User-Agent: curl/8.17.0 Accept: */* Content-Length: 50 012345678 012345678 012345678 012345678 012345678 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK swsclose === End of file server.response === Start of file stderr33 ** Resuming transfer from byte position 50 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 50 0 0 100 50 0 13 0:00:03 0:00:03 --:--:-- 20 100 50 0 0 100 50 0 11 0:00:04 0:00:04 --:--:-- 15 100 50 0 0 100 50 0 10 0:00:05 0:00:04 0:00:01 15 === End of file stderr33 === Start of file test33.txt 012345678 012345678 012345678 012345678 012345678 012345678 012345678 012345678 012345678 012345678 === End of file test33.txt === Start of file trace33 00:37:53.815842 * Trying 127.0.0.1:39461... 00:37:54.680444 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 55312 00:37:54.809818 * using HTTP/1.x 00:37:55.360617 => Send header, 133 bytes (0x85) 0000: PUT /33 HTTP/1.1 0012: Host: 127.0.0.1:39461 0029: Content-Range: bytes 50-99/100 0049: User-Agent: curl/8.17.0 0062: Accept: */* 006f: Content-Length: 50 0083: 00:37:55.461241 => Send data, 50 bytes (0x32) 0000: 012345678.012345678.012345678.012345678.012345678. 00:37:55.539718 * upload completely sent off: 50 bytes 00:37:55.813300 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 00:37:56.116622 * no chunk, no close, no size. Assume close to signal end 00:37:56.179166 <= Recv header, 1 bytes (0x1) 0000: . 00:37:56.322259 <= Recv data, 0 bytes (0x0) 00:37:56.830500 * shutting down connection #0 === End of file trace33 === Start of file valgrind33 ==190978== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind33 test 0034...[HTTP GET with chunked Transfer-Encoding] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind34 ../src/curl -q --output log/4/curl34.out --include --trace-ascii log/4/trace34 --trace-time http://127.0.0.1:42621/34 > log/4/stdout34 2> log/4/stderr34 valgrind ERROR ==191134== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 34 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind34 ../src/curl -q --output log/4/curl34.out --include --trace-ascii log/4/trace34 --trace-time http://127.0.0.1:42621/34 > log/4/stdout34 2> log/4/stderr34 === End of file commands.log === Start of file curl34.out HTTP/1.1 200 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Connection: mooo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccc === End of file curl34.out === Start of file http_server.log 00:37:10.799704 ====> Client connect 00:37:10.799871 accept_connection 3 returned 4 00:37:10.799949 accept_connection 3 returned 0 00:37:10.809649 Read 93 bytes 00:37:10.809825 Process 93 bytes request 00:37:10.809919 Got request: GET /verifiedserver HTTP/1.1 00:37:10.809989 Are-we-friendly question received 00:37:10.810122 Wrote request (93 bytes) input to log/4/server.input 00:37:10.810221 Identifying ourselves as friends 00:37:10.810419 Response sent (57 bytes) and written to log/4/server.response 00:37:10.810482 special request received, no persistency 00:37:10.810537 ====> Client disconnect 0 00:37:58.190902 ====> Client connect 00:37:58.191043 accept_connection 3 returned 4 00:37:58.191125 accept_connection 3 returned 0 00:37:59.204041 Read 81 bytes 00:37:59.204253 Process 81 bytes request 00:37:59.204353 Got request: GET /34 HTTP/1.1 00:37:59.204462 Serve test number 34 part 0 00:37:59.204978 - request found to be complete (34) 00:37:59.205362 Wrote request (81 bytes) input to log/4/server.input 00:37:59.205475 SendCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind35 ../src/curl -q --output log/3/curl35.out --include --trace-ascii log/3/trace35 --trace-time http://127.0.0.1:46853/we/want/35 --data-binary @log/3/test35.txt > log/3/stdout35 2> log/3/stderr35 response test34 section 00:37:59.205982 Response sent (290 bytes) and written to log/4/server.response 00:37:59.206051 => persistent connection request ended, awaits new request 00:38:01.916277 Connection closed by client 00:38:01.916467 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 51000 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 34 === End of file server.cmd === Start of file server.input GET /34 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Connection: mooo 40 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 30 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 21;heresatest=moooo cccccccccccccccccccccccccccccccc 0 === End of file server.response === Start of file stderr34 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 145 0 145 0 0 30 0 --:--:-- 0:00:04 --:--:-- 42 100 145 0 145 0 0 29 0 --:--:-- 0:00:04 --:--:-- 41 === End of file stderr34 === Start of file trace34 00:37:57.228607 * Trying 127.0.0.1:42621... 00:37:58.141134 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 43364 00:37:58.266463 * using HTTP/1.x 00:37:58.625076 => Send header, 81 bytes (0x51) 0000: GET /34 HTTP/1.1 0012: Host: 127.0.0.1:42621 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: 00:37:58.979763 <= Recv header, 27 bytes (0x1b) 0000: HTTP/1.1 200 funky chunky!. 00:37:59.312800 <= Recv header, 33 bytes (0x21) 0000: Server: fakeit/0.9 fakeitbad/1.0. 00:37:59.502430 <= Recv header, 27 bytes (0x1b) 0000: Transfer-Encoding: chunked. 00:37:59.579330 <= Recv header, 17 bytes (0x11) 0000: Connection: mooo. 00:37:59.655679 <= Recv header, 1 bytes (0x1) 0000: . 00:37:59.714110 <= Recv data, 185 bytes (0xb9) 0000: 40 0004: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0046: 30 004a: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 007c: 21;heresatest=moooo 0091: cccccccccccccccccccccccccccccccc. 00b4: 0 00b7: 00:38:00.415796 * Connection #0 to host 127.0.0.1:42621 left intact === End of file trace34 === Start of file valgrind34 ==191134== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind34 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/3/server/http_server.pid" --logfile "log/3/http_server.log" --logdir "log/3" --portfile log/3/server/http_server.port --config log/3/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 191163 port 46853 * pid http => 191163 191163 test 0035...[HTTP POST binary data with embedded NUL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind35 ../src/curl -q --output log/3/curl35.out --include --trace-ascii log/3/trace35 --trace-time http://127.0.0.1:46853/we/want/35 --data-binary @log/3/test35.txt > log/3/stdout35 2> log/3/stderr35 valgrind ERROR ==191253== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 35 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind35 ../src/curl -q --output log/3/curl35.out --include --trace-ascii log/3/trace35 --trace-time http://127.0.0.1:46853/we/want/35 --data-binary @log/3/test35.txt > log/3/stdout35 2> log/3/stderr35 === End of file commands.log === Start of file curl35.out HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file curl35.out === Start of file http_server.log 00:37:11.607227 Running HTTP IPv4 version on port 46853 00:37:11.614947 Wrote pid 191163 to log/3/server/http_server.pid 00:37:11.615259 Wrote port 46853 to log/3/server/http_server.port 00:37:59.329654 ====> Client connect 00:37:59.329877 accept_connection 3 returned 4 00:37:59.330086 accept_connection 3 returned 0 00:38:00.500688 Read 206 bytes 00:38:00.501487 Process 206 bytes request 00:38:00.503472 Got request: POST /we/want/35 HTTP/1.1 00:38:00.503840 Serve test number 35 part 0 00:38:00.513050 - request found to be complete (35) 00:38:00.513756 Found Content-Length: 47 in the request 00:38:00.515068 Wrote request (206 bytes) input to log/3/server.input 00:38:00.515676 Send response test35 section 00:38:00.520248 connection close instruction "swsclose" found in response 00:38:00.520847 Response sent (98 bytes) and written to log/3/server.response 00:38:00.521048 instructed to close connection after server-reply 00:38:00.521150 ====> Client disconnect 0 === End of file http_server.log === Start of file server.cmd Testnum 35 === End of file server.cmd === Start of file server.input POST /we/want/35 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* Content-Length: 47 Content-Type: application/x-www-form-urlencoded This is binary data with an embedded NUL byte === End of file server.input === Start of file server.response HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file server.response === Start of file stderr35 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 47 0 0 100 47 0 12 0:00:03 0:00:03 --:--:-- 19 100 58 0 11 100 47 2 9 0:00:05 0:00:04 0:00:01 16 100 58 0 11 100 47 2 9 0:00:05 0:00:04 0:00:01 16 === End of file stderr35 === Start of file test35.txt This is binary data with an embedded NUL byte === End of file test35.txt === Start of file trace35 00:37:59.387146 * Trying 127.0.0.1:46853... 00:38:00.285346 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 51068 00:38:00.420711 * using HTTP/1.x 00:38:00.933673 => Send header, 159 bytes (0x9f) 0000: POST /we/want/35 HTTP/1.1 001b: Host: 127.0.0.1:46853 0032: User-Agent: curl/8.17.0 004b: Accept: */* 0058: Content-Length: 47 006c: Content-Type: application/x-www-form-urlencoded 009d: 00:38:01.053883 => Send data, 47 bytes (0x2f) 0000: This. is binary data with an embedded NUL byte. 00:38:01.138568 * upload completely sent off: 47 bytes 00:38:01.428382 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 00:38:01.752285 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:38:01.857164 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:38:01.910227 * no chunk, no close, no size. Assume close to signal end 00:38:01.975478 <= Recv header, 1 bytes (0x1) 0000: . 00:38:02.045431 <= Recv data, 11 bytes (0xb) CMD (13312): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind37 ../src/curl -q --output log/5/curl37.out --include --trace-ascii log/5/trace37 --trace-time http://127.0.0.1:46263/37 > log/5/stdout37 2> log/5/stderr37 CMD (14336): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind36 ../src/curl -q --output log/6/curl36.out --include --trace-ascii log/6/trace36 --trace-time http://127.0.0.1:38277/36 > log/6/stdout36 2> log/6/stderr36 0000: blablabla.. 00:38:02.161033 <= Recv data, 0 bytes (0x0) 00:38:02.675997 * shutting down connection #0 === End of file trace35 === Start of file valgrind35 ==191253== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind35 test 0037...[HTTP GET with nothing returned from server] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind37 ../src/curl -q --output log/5/curl37.out --include --trace-ascii log/5/trace37 --trace-time http://127.0.0.1:46263/37 > log/5/stdout37 2> log/5/stderr37 valgrind ERROR ==191504== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 37 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind37 ../src/curl -q --output log/5/curl37.out --include --trace-ascii log/5/trace37 --trace-time http://127.0.0.1:46263/37 > log/5/stdout37 2> log/5/stderr37 === End of file commands.log === Start of file http_server.log 00:37:14.475772 ====> Client connect 00:37:14.475933 accept_connection 3 returned 4 00:37:14.476011 accept_connection 3 returned 0 00:37:14.483239 Read 93 bytes 00:37:14.483371 Process 93 bytes request 00:37:14.483460 Got request: GET /verifiedserver HTTP/1.1 00:37:14.483527 Are-we-friendly question received 00:37:14.483650 Wrote request (93 bytes) input to log/5/server.input 00:37:14.483747 Identifying ourselves as friends 00:37:14.483915 Response sent (57 bytes) and written to log/5/server.response 00:37:14.483979 special request received, no persistency 00:37:14.484034 ====> Client disconnect 0 00:38:01.472880 ====> Client connect 00:38:01.473033 accept_connection 3 returned 4 00:38:01.473116 accept_connection 3 returned 0 00:38:02.561505 Read 81 bytes 00:38:02.561723 Process 81 bytes request 00:38:02.561820 Got request: GET /37 HTTP/1.1 00:38:02.561893 Serve test number 37 part 0 00:38:02.562066 - request found to be complete (37) 00:38:02.562313 Wrote request (81 bytes) input to log/5/server.input 00:38:02.562436 Send response test37 section 00:38:02.562631 connection close instruction "swsclose" found in response 00:38:02.562741 Response sent (0 bytes) and written to log/5/server.response 00:38:02.562804 instructed to close connection after server-reply 00:38:02.562880 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 36050 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 37 === End of file server.cmd === Start of file server.input GET /37 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 === End of file server.response === Start of file stderr37 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (52) Empty reply from server === End of file stderr37 === Start of file trace37 00:38:01.490127 * Trying 127.0.0.1:46263... 00:38:02.484136 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 34714 00:38:02.625995 * using HTTP/1.x 00:38:02.983684 => Send header, 81 bytes (0x51) 0000: GET /37 HTTP/1.1 0012: Host: 127.0.0.1:46263 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: 00:38:03.272557 * abort upload 00:38:03.503565 * Empty reply from server 00:38:03.797075 * shutting down connection #0 === End of file trace37 === Start of file valgrind37 ==191504== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind37 test 0036...[HTTP GET with bad chunked Transfer-Encoding] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind36 ../src/curl -q --output log/6/curl36.out --include --trace-ascii log/6/trace36 --trace-time http://127.0.0.1:38277/36 > log/6/stdout36 2> log/6/stderr36 valgrind ERROR ==191436== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 36 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind36 ../src/curl -q --output log/6/curl36.out --include --trace-ascii log/6/trace36 --trace-time http://127.0.0.1:38277/36 > log/6/stdout36 2> log/6/stderr36 === End of file commands.log === Start of file curl36.out HTTP/1.1 200 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Connection: mooo a === End of file curl36.out === Start of file http_server.log 00:37:13.662517 ====> Client connect 00:37:13.662687 accept_connection 3 returned 4 00:37:13.662765 accept_connection 3 returned 0 00:37:13.669625 Read 93 bytes 00:37:13.669783 Process 93 bytes request 00:37:13.669877 Got request: GET /verifiedserver HTTP/1.1 00:37:13.669943 Are-we-friendly question received 00:37:13.670076 Wrote request (93 bytes) input to log/6/server.input 00:37:13.670183 Identifying ourselves as friends 00:37:13.670366 Response sent (57 bytes) and written to log/6/server.response 00:37:13.670430 special request received, no persistency 00:37:13.670488 ====> Client disconnect 0 00:38:00.917010 ====> Client connect 00:38:00.917144 accept_connection 3 returned 4 00:38:00.917219 accept_connection 3 returned 0 00:38:02.000238 Read 81 bytes 00:38:02.000452 Process 81 bytes request 00:38:02.000550 Got request: GET /36 HTTP/1.1 00:38:02.000623 Serve test number 36 part 0 00:38:02.000812 - request found to be complete (36) 00:38:02.001072 Wrote request (81 bytes) input to log/6/server.input 00:38:02.001190 Send response test36 section 00:38:02.001563 Response sent (170 bytes) and written to log/6/server.response 00:38:02.001634 => persistent connection request ended, awaits new request 00:38:03.837898 Connection closed by client 00:38:03.838103 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 42460 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 36 === End of file server.cmd === Start of file server.input GET /36 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Connection: mooo 2 a ILLEGAL bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb === End of file server.rCMD (8448): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind38 ../src/curl -q --include --trace-ascii log/1/trace38 --trace-time http://127.0.0.1:40641/want/38 -C - --no-include -o log/1/fewl38.txt > log/1/stdout38 2> log/1/stderr38 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind40 ../src/curl -q --output log/2/curl40.out --include --trace-ascii log/2/trace40 --trace-time http://127.0.0.1:39863/we/are/all/twits/40 -L > log/2/stdout40 2> log/2/stderr40 esponse === Start of file stderr36 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 2 0 2 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (56) chunk hex-length char not a hex digit: 0x49 === End of file stderr36 === Start of file trace36 00:38:00.971280 * Trying 127.0.0.1:38277... 00:38:01.883526 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 56274 00:38:02.018513 * using HTTP/1.x 00:38:02.427919 => Send header, 81 bytes (0x51) 0000: GET /36 HTTP/1.1 0012: Host: 127.0.0.1:38277 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: 00:38:02.799934 <= Recv header, 27 bytes (0x1b) 0000: HTTP/1.1 200 funky chunky!. 00:38:03.141968 <= Recv header, 33 bytes (0x21) 0000: Server: fakeit/0.9 fakeitbad/1.0. 00:38:03.333449 <= Recv header, 27 bytes (0x1b) 0000: Transfer-Encoding: chunked. 00:38:03.412277 <= Recv header, 17 bytes (0x11) 0000: Connection: mooo. 00:38:03.493028 <= Recv header, 1 bytes (0x1) 0000: . 00:38:03.551887 <= Recv data, 65 bytes (0x41) 0000: 2 0003: a. 0007: ILLEGAL 0010: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 00:38:03.724787 * chunk hex-length char not a hex digit: 0x49 00:38:03.749219 * Illegal or missing hexadecimal sequence in chunked-encoding 00:38:04.118972 * closing connection #0 === End of file trace36 === Start of file valgrind36 ==191436== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind36 test 0038...[HTTP resume request without server supporting it] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind38 ../src/curl -q --include --trace-ascii log/1/trace38 --trace-time http://127.0.0.1:40641/want/38 -C - --no-include -o log/1/fewl38.txt > log/1/stdout38 2> log/1/stderr38 valgrind ERROR ==191709== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 38 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind38 ../src/curl -q --include --trace-ascii log/1/trace38 --trace-time http://127.0.0.1:40641/want/38 -C - --no-include -o log/1/fewl38.txt > log/1/stdout38 2> log/1/stderr38 === End of file commands.log === Start of file fewl38.txt This text is here to simulate a partly downloaded file to resume download on. === End of file fewl38.txt === Start of file http_server.log 00:37:17.855294 ====> Client connect 00:37:17.855454 accept_connection 3 returned 4 00:37:17.855531 accept_connection 3 returned 0 00:37:17.862437 Read 93 bytes 00:37:17.862542 Process 93 bytes request 00:37:17.862634 Got request: GET /verifiedserver HTTP/1.1 00:37:17.862699 Are-we-friendly question received 00:37:17.862816 Wrote request (93 bytes) input to log/1/server.input 00:37:17.862921 Identifying ourselves as friends 00:37:17.863116 Response sent (57 bytes) and written to log/1/server.response 00:37:17.863183 special request received, no persistency 00:37:17.863244 ====> Client disconnect 0 00:38:05.061951 ====> Client connect 00:38:05.062092 accept_connection 3 returned 4 00:38:05.062170 accept_connection 3 returned 0 00:38:06.123938 Read 104 bytes 00:38:06.124169 Process 104 bytes request 00:38:06.124283 Got request: GET /want/38 HTTP/1.1 00:38:06.124366 Serve test number 38 part 0 00:38:06.124597 - request found to be complete (38) 00:38:06.124881 Wrote request (104 bytes) input to log/1/server.input 00:38:06.125003 Send response test38 section 00:38:06.125404 Response sent (155 bytes) and written to log/1/server.response 00:38:06.125480 => persistent connection request ended, awaits new request 00:38:07.596548 Connection closed by client 00:38:07.596751 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 41950 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 38 === End of file server.cmd === Start of file server.input GET /want/38 HTTP/1.1 Host: 127.0.0.1:40641 Range: bytes=78- User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.0 200 Mooo Date: Mon, 13 Nov 2000 13:41:09 GMT Server: myown/1.0 Connection: close todelooooo lalalala yada yada, we know nothing about ranges ;-) === End of file server.response === Start of file stderr38 ** Resuming transfer from byte position 78 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (33) HTTP server does not seem to support byte ranges. Cannot resume. === End of file stderr38 === Start of file trace38 00:38:04.106446 * Trying 127.0.0.1:40641... 00:38:05.036157 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 51066 00:38:05.161325 * using HTTP/1.x 00:38:05.545542 => Send header, 104 bytes (0x68) 0000: GET /want/38 HTTP/1.1 0017: Host: 127.0.0.1:40641 002e: Range: bytes=78- 0040: User-Agent: curl/8.17.0 0059: Accept: */* 0066: 00:38:05.912820 * HTTP 1.0, assume close after body 00:38:05.935702 <= Recv header, 18 bytes (0x12) 0000: HTTP/1.0 200 Mooo. 00:38:06.188356 <= Recv header, 36 bytes (0x24) 0000: Date: Mon, 13 Nov 2000 13:41:09 GMT. 00:38:06.286424 <= Recv header, 18 bytes (0x12) 0000: Server: myown/1.0. 00:38:06.366748 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:38:06.478122 * HTTP server does not seem to support byte ranges. Cannot resume. 00:38:06.493956 <= Recv header, 1 bytes (0x1) 0000: . 00:38:06.886316 * closing connection #0 === End of file trace38 === Start of file valgrind38 ==191709== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind38 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 46 in state 4 Runner 2 (id 185908) running test 40 in state 4 Runner 3 (id 185910) running test 43 in state 4 Runner 4 (id 185912) running test 42 in state 4 Runner 5 (id 185914) running test 44 in state 4 Runner 6 (id 185916) running test 45 in state 4 Runner 7 (id 185918) running test 39 in state 4 Runner 8 (id 185920) running test 41 in state 4 test 0040...[HTTP redirect with whitespace after ? (and conversion)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind40 ../src/curl -q --output log/2/curl40.out --include --trace-ascii log/2/trace40 --trace-time http://127.0.0.1:39863/we/are/all/twits/40 -L > log/2/stdout40 2> log/2/stderr40 valgrind ERROR ==192053== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 40 === Start of file commands.log ../libtool --mode=execCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind39 ../src/curl -q --output log/7/curl39.out --include --trace-ascii log/7/trace39 --trace-time http://127.0.0.1:34897/we/want/39 -F name=daniel -F tool=curl --form-string "str1=@literal" --form-string "str2= log/7/stdout39 2> log/7/stderr39 ute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind40 ../src/curl -q --output log/2/curl40.out --include --trace-ascii log/2/trace40 --trace-time http://127.0.0.1:39863/we/are/all/twits/40 -L > log/2/stdout40 2> log/2/stderr40 === End of file commands.log === Start of file curl40.out HTTP/1.1 302 OK swsclose Location: ../moo.html/?name=d a niel&testcase=/400002 Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close HTTP/1.1 200 OK swsclose Location: this should be ignored Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close body === End of file curl40.out === Start of file http_server.log 00:37:28.989547 ====> Client connect 00:37:28.989711 accept_connection 3 returned 4 00:37:28.989788 accept_connection 3 returned 0 00:37:28.996491 Read 93 bytes 00:37:28.996592 Process 93 bytes request 00:37:28.996692 Got request: GET /verifiedserver HTTP/1.1 00:37:28.996765 Are-we-friendly question received 00:37:28.996906 Wrote request (93 bytes) input to log/2/server.input 00:37:28.997006 Identifying ourselves as friends 00:37:28.997202 Response sent (57 bytes) and written to log/2/server.response 00:37:28.997273 special request received, no persistency 00:37:28.997341 ====> Client disconnect 0 00:38:16.683210 ====> Client connect 00:38:16.683354 accept_connection 3 returned 4 00:38:16.683432 accept_connection 3 returned 0 00:38:17.640093 Read 98 bytes 00:38:17.640279 Process 98 bytes request 00:38:17.640367 Got request: GET /we/are/all/twits/40 HTTP/1.1 00:38:17.640430 Serve test number 40 part 0 00:38:17.640594 - request found to be complete (40) 00:38:17.640854 Wrote request (98 bytes) input to log/2/server.input 00:38:17.640961 Send response test40 section 00:38:17.641185 connection close instruction "swsclose" found in response 00:38:17.641386 Response sent (143 bytes) and written to log/2/server.response 00:38:17.641455 instructed to close connection after server-reply 00:38:17.641517 ====> Client disconnect 0 00:38:19.835609 ====> Client connect 00:38:19.835754 accept_connection 3 returned 4 00:38:19.835831 accept_connection 3 returned 0 00:38:19.908969 Read 130 bytes 00:38:19.909154 Process 130 bytes request 00:38:19.909248 Got request: GET /we/are/all/moo.html/?name=d+a+niel&testcase=/400002 HTTP/1.1 00:38:19.909369 Serve test number 40 part 2 00:38:19.909561 - request found to be complete (40) 00:38:19.909774 Wrote request (130 bytes) input to log/2/server.input 00:38:19.909879 Send response test40 section 00:38:19.910103 connection close instruction "swsclose" found in response 00:38:19.910294 Response sent (123 bytes) and written to log/2/server.response 00:38:19.910361 instructed to close connection after server-reply 00:38:19.910422 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 38772 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 40 === End of file server.cmd === Start of file server.input GET /we/are/all/twits/40 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* GET /we/are/all/moo.html/?name=d+a+niel&testcase=/400002 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 302 OK swsclose Location: ../moo.html/?name=d a niel&testcase=/400002 Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close HTTP/1.1 200 OK swsclose Location: this should be ignored Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close body === End of file server.response === Start of file stderr40 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 5 0 5 0 0 0 0 --:--:-- 0:00:05 --:--:-- 13 100 5 0 5 0 0 0 0 --:--:-- 0:00:05 --:--:-- 10 === End of file stderr40 === Start of file trace40 00:38:15.760555 * Trying 127.0.0.1:39863... 00:38:16.604459 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 37404 00:38:16.732747 * using HTTP/1.x 00:38:17.057194 => Send header, 98 bytes (0x62) 0000: GET /we/are/all/twits/40 HTTP/1.1 0023: Host: 127.0.0.1:39863 003a: User-Agent: curl/8.17.0 0053: Accept: */* 0060: 00:38:17.369836 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 302 OK swsclose 00:38:17.737076 <= Recv header, 59 bytes (0x3b) 0000: Location: ../moo.html/?name=d a niel&testcase=/400002 00:38:17.820992 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:38:17.879858 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:38:17.956454 <= Recv header, 2 bytes (0x2) 0000: 00:38:18.188537 * Request completely sent off 00:38:18.437998 * shutting down connection #0 00:38:19.007280 * Issue another request to this URL: 'http://127.0.0.1:39863/we/are/all/moo.html/?name=d+a+niel&testcase=/400002' 00:38:19.171978 * Hostname 127.0.0.1 was found in DNS cache 00:38:19.211245 * Trying 127.0.0.1:39863... 00:38:19.246919 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 37410 00:38:19.253109 * using HTTP/1.x 00:38:19.292403 => Send header, 130 bytes (0x82) 0000: GET /we/are/all/moo.html/?name=d+a+niel&testcase=/400002 HTTP/1. 0040: 1 0043: Host: 127.0.0.1:39863 005a: User-Agent: curl/8.17.0 0073: Accept: */* 0080: 00:38:19.332921 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 200 OK swsclose 00:38:19.344233 <= Recv header, 34 bytes (0x22) 0000: Location: this should be ignored 00:38:19.349876 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:38:19.357854 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:38:19.370973 <= Recv header, 2 bytes (0x2) 0000: 00:38:19.394877 <= Recv data, 5 bytes (0x5) 0000: body. 00:38:19.496507 * abort upload 00:38:19.508916 <= Recv data, 0 bytes (0x0) 00:38:19.686008 * shutting down connection #1 === End of file trace40 === Start of file valgrind40 ==192053== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind40 test 0039...[HTTP RFC1867-type formposting with filename= and type=] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind39 ../src/curl -q --output log/7/curl39.out --include --trace-ascii log/7/trace39 --trace-time http://127.0.0.1:34897/we/want/39 -F name=daniel -F tool=curl --form-string "str1=@literal" --form-string "str2= log/7/stdout39 2> log/7/stderr39 valgrind ERROR ==191879== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 39 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind39 ../src/curl -q --output log/7/curl39.out --include --trace-ascii log/7/trace39 --trace-time http://127.0.0.1:34897/we/want/39 -F name=daniel -F tool=curl --form-string "str1=@literal" --form-string "str2= log/7/stdout39 2> log/7/stderr39 === End of file commands.log === Start of file curl39.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 10 blablabla === End of file curl39.out === Start of file http_server.log 00:37:22.422748 ====> Client connect 00:37:22.422908 accept_connection 3 returned 4 00:37:22.422985 accept_connection 3 returned 0 00:37:22.429504 Read 93 bytes 00:37:22.429591 Process 93 bytes request 00:37:22.429679 Got request: GET /verifiedserver HTTP/1.1 00:37:22.429740 Are-we-friendly question received 00:37:22.429842 Wrote request (93 bytes) input to log/7/server.input 00:37:22.429920 Identifying ourselves as friends 00:37:22.430085 Response sent (57 bytes) and written to log/7/server.response 00:37:22.430143 special request received, no persistency 00:37:22.430194 ====> Client disconnect 0 00:38:17.595622 ====> Client connect 00:38:17.595760 accept_connection 3 returned 4 00:38:17.595833 accept_connection 3 returned 0 00:38:19.163074 Read 968 bytes 00:38:19.163260 Process 968 bytes request 00:38:19.163357 Got request: POST /we/want/39 HTTP/1.1 00:38:19.163428 Serve test number 39 part 0 00:38:19.164042 - request found to be complete (39) 00:38:19.164541 Found Content-Length: 1234 in the request 00:38:19.647470 Read 192 bytes 00:38:19.647682 Process 1160 bytes request [CONTINUED] 00:38:19.647751 - request found to be complete (39) 00:38:19.794805 Read 190 bytes 00:38:19.795007 Process 1350 bytes request [CONTINUED] 00:38:19.795077 - request found to be complete (39) 00:38:19.852816 Read 88 bytes 00:38:19.852982 Process 1438 bytes request [CONTINUED] 00:38:19.853049 - request found to be complete (39) 00:38:19.853483 Wrote request (1438 bytes) input to log/7/server.input 00:38:19.853593 Send response test39 section 00:38:19.854019 Response sent (112 bytes) and written to log/7/server.response 00:38:19.854087 => persistent connection request ended, awaits new request 00:38:21.814339 Connection closed by client 00:38:21.814541 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 35032 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 39 === End of file server.cmd === Start of file server.input POST /we/want/39 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* Content-Length: 1234 Content-Type: multipart/form-data; boundary=------------------------kwu14mzqdKTA7eFHrPSyF0 --------------------------kwu14mzqdKTA7eFHrPSyF0 Content-Disposition: form-data; name="name" daniel --------------------------kwu14mzqdKTA7eFHrPSyF0 Content-Disposition: form-data; name="tool" curl --------------------------kwu14mzqdKTA7eFHrPSyF0 Content-Disposition: form-data; name="str1" @literal --------------------------kwu14mzqdKTA7eFHrPSyF0 Content-Disposition: form-data; name="str2" Send header, 204 bytes (0xcc) 0000: POST /we/want/39 HTTP/1.1 001b: Host: 127.0.0.1:34897 0032: User-Agent: curl/8.17.0 004b: Accept: */* 0058: Content-Length: 1234 006e: Content-Type: multipart/form-data; boundary=-------------------- 00ae: ----kwu14mzqdKTA7eFHrPSyF0 00ca: 00:38:19.686976 => Send data, 764 bytes (0x2fc) 0000: --------------------------kwu14mzqdKTA7eFHrPSyF0 0032: Content-Disposition: form-data; name="name" 005f: 0061: daniel 0069: --------------------------kwu14mzqdKTA7eFHrPSyF0 009b: Content-Disposition: form-data; name="tool" 00c8: 00ca: curl 00d0: --------------------------kwu14mzqdKTA7eFHrPSyF0 0102: Content-Disposition: form-data; name="str1" 012f: 0131: @literal 013b: --------------------------kwu14mzqdKTA7eFHrPSyF0 016d: Content-Disposition: form-data; name="str2" 019a: 019c: Send data, 192 bytes (0xc0) 0000: foo bar.This is a bar foo.bar.foo. 0024: --------------------------kwu14mzqdKTA7eFHrPSyF0 0056: Content-Disposition: form-data; name="file3"; filename="f\\ak\\e 0096: r,\an\d;.t%22xt" 00a8: Content-Type: mo/foo 00be: 00:38:20.176511 => Send data, 190 bytes (0xbe) 0000: foo bar.This is a bar foo.bar.foo. 0024: --------------------------kwu14mzqdKTA7eFHrPSyF0 0056: Content-Disposition: form-data; name="file4"; filename="A\AA%22% 0096: 22\%22ZZZ" 00a2: Content-Type: text/plain 00bc: 00:38:20.236715 => Send data, 88 bytes (0x58) 0000: foo bar.This is a bar foo.bar.foo. 0024: --------------------------kwu14mzqdKTA7eFHrPSyF0-- 00:38:20.274203 * upload completely sent off: 1234 bytes 00:38:20.406712 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:38:20.695549 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:38:20.785532 <= Recv header, 26 bytes (0x1a) 0000: ServeCMD (6656): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind41 ../src/curl -q --output log/8/curl41.out --include --trace-ascii log/8/trace41 --trace-time http://127.0.0.1:39461/want/41 -F moo=@boo > log/8/stdout41 2> log/8/stderr41 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind42 ../src/curl -q --output log/4/curl42.out --include --trace-ascii log/4/trace42 --trace-time http://127.0.0.1:42621/we/are/all/twits/42 -L > log/4/stdout42 2> log/4/stderr42 r: test-server/fake 00:38:20.826534 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 10 00:38:20.900276 <= Recv header, 2 bytes (0x2) 0000: 00:38:20.953016 <= Recv data, 10 bytes (0xa) 0000: blablabla. 00:38:21.397641 * Connection #0 to host 127.0.0.1:34897 left intact === End of file trace39 === Start of file valgrind39 ==191879== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind39 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 46 in state 4 Runner 2 (id 185908) running test 47 in state 4 Runner 3 (id 185910) running test 43 in state 4 Runner 4 (id 185912) running test 42 in state 4 Runner 5 (id 185914) running test 44 in state 4 Runner 6 (id 185916) running test 45 in state 4 Runner 7 (id 185918) running test 48 in state 4 Runner 8 (id 185920) running test 41 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 46 in state 4 Runner 2 (id 185908) running test 47 in state 4 Runner 3 (id 185910) running test 43 in state 4 Runner 4 (id 185912) running test 42 in state 4 Runner 5 (id 185914) running test 44 in state 4 Runner 6 (id 185916) running test 45 in state 4 Runner 7 (id 185918) running test 48 in state 4 Runner 8 (id 185920) running test 41 in state 4 test 0041...[HTTP formpost with missing file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind41 ../src/curl -q --output log/8/curl41.out --include --trace-ascii log/8/trace41 --trace-time http://127.0.0.1:39461/want/41 -F moo=@boo > log/8/stdout41 2> log/8/stderr41 valgrind ERROR ==192281== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 41 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind41 ../src/curl -q --output log/8/curl41.out --include --trace-ascii log/8/trace41 --trace-time http://127.0.0.1:39461/want/41 -F moo=@boo > log/8/stdout41 2> log/8/stderr41 === End of file commands.log === Start of file http_server.log 00:38:00.603154 ====> Client connect 00:38:00.603326 accept_connection 3 returned 4 00:38:00.603415 accept_connection 3 returned 0 00:38:00.610170 Read 93 bytes 00:38:00.610305 Process 93 bytes request 00:38:00.610395 Got request: GET /verifiedserver HTTP/1.1 00:38:00.610465 Are-we-friendly question received 00:38:00.610598 Wrote request (93 bytes) input to log/8/server.input 00:38:00.610695 Identifying ourselves as friends 00:38:00.610875 Response sent (57 bytes) and written to log/8/server.response 00:38:00.610939 special request received, no persistency 00:38:00.610999 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 55322 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 41 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 === End of file server.response === Start of file stderr41 curl: (26) Failed to open/read local data from file/application === End of file stderr41 === Start of file valgrind41 ==192281== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind41 test 0042...[HTTP redirect with whitespace in path (and conversion)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind42 ../src/curl -q --output log/4/curl42.out --include --trace-ascii log/4/trace42 --trace-time http://127.0.0.1:42621/we/are/all/twits/42 -L > log/4/stdout42 2> log/4/stderr42 valgrind ERROR ==192437== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 42 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind42 ../src/curl -q --output log/4/curl42.out --include --trace-ascii log/4/trace42 --trace-time http://127.0.0.1:42621/we/are/all/twits/42 -L > log/4/stdout42 2> log/4/stderr42 === End of file commands.log === Start of file curl42.out HTTP/1.1 302 OK swsclose Location: ../m o o.html/420002 Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close HTTP/1.1 200 OK swsclose Location: this should be ignored Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close body === End of file curl42.out === Start of file http_server.log 00:38:05.458372 ====> Client connect 00:38:05.458551 accept_connection 3 returned 4 00:38:05.458634 accept_connection 3 returned 0 00:38:05.465962 Read 93 bytes 00:38:05.466133 Process 93 bytes request 00:38:05.468935 Got request: GET /verifiedserver HTTP/1.1 00:38:05.469013 Are-we-friendly question received 00:38:05.469157 Wrote request (93 bytes) input to log/4/server.input 00:38:05.469259 Identifying ourselves as friends 00:38:05.469461 Response sent (57 bytes) and written to log/4/server.response 00:38:05.469540 special request received, no persistency 00:38:05.469599 ====> Client disconnect 0 00:38:52.598202 ====> Client connect 00:38:52.598341 accept_connection 3 returned 4 00:38:52.598420 accept_connection 3 returned 0 00:38:53.616514 Read 98 bytes 00:38:53.616704 Process 98 bytes request 00:38:53.616809 Got request: GET /we/are/all/twits/42 HTTP/1.1 00:38:53.616879 Serve test number 42 part 0 00:38:53.617055 - request found to be complete (42) 00:38:53.617307 Wrote request (98 bytes) input to log/4/server.input 00:38:53.617410 Send response test42 section 00:38:53.617618 connection close instruction "swsclose" found in response 00:38:53.617795 Response sent (120 bytes) and written to log/4/server.response 00:38:53.617861 instructed to close connection after server-reply 00:38:53.617920 ====> Client disconnect 0 00:38:55.874440 ====> Client connect 00:38:55.874571 accept_connection 3 returned 4 00:38:55.874647 accept_connection 3 returned 0 00:38:55.932316 Read 111 bytes 00:38:55.932488 Process 111 bytes request 00:38:55.932582 Got request: GET /we/are/all/m%20o%20o.html/420002 HTTP/1.1 00:38:55.932701 Serve test number 42 part 2 00:38:55.932896 - request found to be complete (42) 00:38:55.933090 Wrote request (111 bytes) input to log/4/server.input 00:38:55.933189 Send response test42 section 00:38:55.933401 connection close instruction "swsclose" found in response 00:38:55.933592 Response sent (123 bytes) and written to log/4/server.response 00:38:55.933656 instructed to close connection after server-reply 00:38:55.933715 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 47312 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 42 === End of file server.cmd === Start of file server.input GET /we/are/all/twits/42 HTTP/1.1 Host: 127.0.0.1:426CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind43 ../src/curl -q --output log/3/curl43.out --include --trace-ascii log/3/trace43 --trace-time http://127.0.0.1:46853/want/43 -L -x 127.0.0.1:46853 > log/3/stdout43 2> log/3/stderr43 21 User-Agent: curl/8.17.0 Accept: */* GET /we/are/all/m%20o%20o.html/420002 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 302 OK swsclose Location: ../m o o.html/420002 Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close HTTP/1.1 200 OK swsclose Location: this should be ignored Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close body === End of file server.response === Start of file stderr42 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 5 0 5 0 0 0 0 --:--:-- 0:00:05 --:--:-- 13 100 5 0 5 0 0 0 0 --:--:-- 0:00:05 --:--:-- 11 === End of file stderr42 === Start of file trace42 00:38:51.670006 * Trying 127.0.0.1:42621... 00:38:52.546815 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 58082 00:38:52.697704 * using HTTP/1.x 00:38:53.037947 => Send header, 98 bytes (0x62) 0000: GET /we/are/all/twits/42 HTTP/1.1 0023: Host: 127.0.0.1:42621 003a: User-Agent: curl/8.17.0 0053: Accept: */* 0060: 00:38:53.370879 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 302 OK swsclose 00:38:53.745155 <= Recv header, 36 bytes (0x24) 0000: Location: ../m o o.html/420002 00:38:53.832695 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:38:53.894719 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:38:53.973486 <= Recv header, 2 bytes (0x2) 0000: 00:38:54.214899 * Request completely sent off 00:38:54.470822 * shutting down connection #0 00:38:55.051310 * Issue another request to this URL: 'http://127.0.0.1:42621/we/are/all/m%20o%20o.html/420002' 00:38:55.212274 * Hostname 127.0.0.1 was found in DNS cache 00:38:55.250370 * Trying 127.0.0.1:42621... 00:38:55.285874 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 57514 00:38:55.292762 * using HTTP/1.x 00:38:55.315739 => Send header, 111 bytes (0x6f) 0000: GET /we/are/all/m%20o%20o.html/420002 HTTP/1.1 0030: Host: 127.0.0.1:42621 0047: User-Agent: curl/8.17.0 0060: Accept: */* 006d: 00:38:55.351839 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 200 OK swsclose 00:38:55.363970 <= Recv header, 34 bytes (0x22) 0000: Location: this should be ignored 00:38:55.369746 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:38:55.377708 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:38:55.391150 <= Recv header, 2 bytes (0x2) 0000: 00:38:55.415488 <= Recv data, 5 bytes (0x5) 0000: body. 00:38:55.522248 * abort upload 00:38:55.535298 <= Recv data, 0 bytes (0x0) 00:38:55.699312 * shutting down connection #1 === End of file trace42 === Start of file valgrind42 ==192437== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind42 test 0043...[HTTP Location: following over HTTP proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind43 ../src/curl -q --output log/3/curl43.out --include --trace-ascii log/3/trace43 --trace-time http://127.0.0.1:46853/want/43 -L -x 127.0.0.1:46853 > log/3/stdout43 2> log/3/stderr43 valgrind ERROR ==192602== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 43 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind43 ../src/curl -q --output log/3/curl43.out --include --trace-ascii log/3/trace43 --trace-time http://127.0.0.1:46853/want/43 -L -x 127.0.0.1:46853 > log/3/stdout43 2> log/3/stderr43 === End of file commands.log === Start of file curl43.out HTTP/1.1 301 This is a weirdo text message Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: data/430002.txt?coolsite=yes Connection: close HTTP/1.1 200 Followed here fine swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 52 If this is received, the location following worked === End of file curl43.out === Start of file http_server.log 00:38:06.550168 ====> Client connect 00:38:06.550333 accept_connection 3 returned 4 00:38:06.550412 accept_connection 3 returned 0 00:38:06.557671 Read 93 bytes 00:38:06.557793 Process 93 bytes request 00:38:06.557884 Got request: GET /verifiedserver HTTP/1.1 00:38:06.558070 Are-we-friendly question received 00:38:06.558241 Wrote request (93 bytes) input to log/3/server.input 00:38:06.558374 Identifying ourselves as friends 00:38:06.558695 Response sent (57 bytes) and written to log/3/server.response 00:38:06.558777 special request received, no persistency 00:38:06.558857 ====> Client disconnect 0 00:38:54.487570 ====> Client connect 00:38:54.487711 accept_connection 3 returned 4 00:38:54.487790 accept_connection 3 returned 0 00:38:55.666432 Read 138 bytes 00:38:55.666625 Process 138 bytes request 00:38:55.666715 Got request: GET http://127.0.0.1:46853/want/43 HTTP/1.1 00:38:55.666782 Serve test number 43 part 0 00:38:55.666998 - request found to be complete (43) 00:38:55.667339 Wrote request (138 bytes) input to log/3/server.input 00:38:55.667444 Send response test43 section 00:38:55.667787 Response sent (225 bytes) and written to log/3/server.response 00:38:55.667886 => persistent connection request ended, awaits new request 00:38:57.450463 Connection closed by client 00:38:57.450704 ====> Client disconnect 0 00:38:58.075009 ====> Client connect 00:38:58.075153 accept_connection 3 returned 4 00:38:58.075234 accept_connection 3 returned 0 00:38:58.157865 Read 164 bytes 00:38:58.158081 Process 164 bytes request 00:38:58.158183 Got request: GET http://127.0.0.1:46853/want/data/430002.txt?coolsite=yes HTTP/1.1 00:38:58.158309 Serve test number 43 part 2 00:38:58.158522 - request found to be complete (43) 00:38:58.158804 Wrote request (164 bytes) input to log/3/server.input 00:38:58.158910 Send response test43 section 00:38:58.159152 connection close instruction "swsclose" found in response 00:38:58.159322 Response sent (174 bytes) and written to log/3/server.response 00:38:58.162759 instructed to close connection after server-reply 00:38:58.162844 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 43104 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 43 === End of file server.cmd === Start of file server.input GET http://127.0.0.1:46853/want/43 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://127.0.0.1:46853/want/data/430002.txt?coolsite=yes HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 301 This is a weirdo text message Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: data/430002.tCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind45 ../src/curl -q --output log/6/curl45.out --include --trace-ascii log/6/trace45 --trace-time 127.0.0.1:38277/want/45 -L > log/6/stdout45 2> log/6/stderr45 xt?coolsite=yes Connection: close This server reply is for testing a simple Location: following HTTP/1.1 200 Followed here fine swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 52 If this is received, the location following worked === End of file server.response === Start of file stderr43 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 52 100 52 0 0 8 0 0:00:06 0:00:06 --:--:-- 118 === End of file stderr43 === Start of file trace43 00:38:54.547262 * Trying 127.0.0.1:46853... 00:38:55.511720 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 55902 00:38:55.645752 * using HTTP/1.x 00:38:56.088775 => Send header, 138 bytes (0x8a) 0000: GET http://127.0.0.1:46853/want/43 HTTP/1.1 002d: Host: 127.0.0.1:46853 0044: User-Agent: curl/8.17.0 005d: Accept: */* 006a: Proxy-Connection: Keep-Alive 0088: 00:38:56.441833 <= Recv header, 43 bytes (0x2b) 0000: HTTP/1.1 301 This is a weirdo text message. 00:38:56.767398 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:38:56.876248 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:38:56.972970 <= Recv header, 39 bytes (0x27) 0000: Location: data/430002.txt?coolsite=yes. 00:38:57.029724 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:38:57.127332 <= Recv header, 1 bytes (0x1) 0000: . 00:38:57.372176 * Request completely sent off 00:38:57.631558 * shutting down connection #0 00:38:58.219498 * Issue another request to this URL: 'http://127.0.0.1:46853/want/data/430002.txt?coolsite=yes' 00:38:58.408310 * Hostname 127.0.0.1 was found in DNS cache 00:38:58.450359 * Trying 127.0.0.1:46853... 00:38:58.489718 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 55916 00:38:58.496595 * using HTTP/1.x 00:38:58.543396 => Send header, 164 bytes (0xa4) 0000: GET http://127.0.0.1:46853/want/data/430002.txt?coolsite=yes HTT 0040: P/1.1 0047: Host: 127.0.0.1:46853 005e: User-Agent: curl/8.17.0 0077: Accept: */* 0084: Proxy-Connection: Keep-Alive 00a2: 00:38:58.588902 <= Recv header, 41 bytes (0x29) 0000: HTTP/1.1 200 Followed here fine swsclose. 00:38:58.598217 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:38:58.607192 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:38:58.633262 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 52. 00:38:58.657852 <= Recv header, 1 bytes (0x1) 0000: . 00:38:58.681127 <= Recv data, 52 bytes (0x34) 0000: If this is received, the location following worked.. 00:38:58.944477 * Connection #1 to host 127.0.0.1:46853 left intact === End of file trace43 === Start of file valgrind43 ==192602== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind43 test 0045...[simple HTTP Location: without protocol in initial URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind45 ../src/curl -q --output log/6/curl45.out --include --trace-ascii log/6/trace45 --trace-time 127.0.0.1:38277/want/45 -L > log/6/stdout45 2> log/6/stderr45 valgrind ERROR ==192778== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 45 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind45 ../src/curl -q --output log/6/curl45.out --include --trace-ascii log/6/trace45 --trace-time 127.0.0.1:38277/want/45 -L > log/6/stdout45 2> log/6/stderr45 === End of file commands.log === Start of file curl45.out HTTP/1.1 301 This is a weirdo text message swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: data.cgi?moo=http://&/450002 Connection: close HTTP/1.1 200 Followed here fine swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 52 If this is received, the location following worked === End of file curl45.out === Start of file http_server.log 00:38:08.038836 ====> Client connect 00:38:08.039010 accept_connection 3 returned 4 00:38:08.039089 accept_connection 3 returned 0 00:38:08.045322 Read 93 bytes 00:38:08.045471 Process 93 bytes request 00:38:08.045573 Got request: GET /verifiedserver HTTP/1.1 00:38:08.045648 Are-we-friendly question received 00:38:08.045789 Wrote request (93 bytes) input to log/6/server.input 00:38:08.045898 Identifying ourselves as friends 00:38:08.046099 Response sent (57 bytes) and written to log/6/server.response 00:38:08.046182 special request received, no persistency 00:38:08.046241 ====> Client disconnect 0 00:38:54.750900 ====> Client connect 00:38:54.751059 accept_connection 3 returned 4 00:38:54.751151 accept_connection 3 returned 0 00:38:55.883521 Read 86 bytes 00:38:55.883707 Process 86 bytes request 00:38:55.883806 Got request: GET /want/45 HTTP/1.1 00:38:55.883878 Serve test number 45 part 0 00:38:55.884051 - request found to be complete (45) 00:38:55.884306 Wrote request (86 bytes) input to log/6/server.input 00:38:55.884411 Send response test45 section 00:38:55.884638 connection close instruction "swsclose" found in response 00:38:55.884822 Response sent (234 bytes) and written to log/6/server.response 00:38:55.884888 instructed to close connection after server-reply 00:38:55.884948 ====> Client disconnect 0 00:38:58.345749 ====> Client connect 00:38:58.345902 accept_connection 3 returned 4 00:38:58.345984 accept_connection 3 returned 0 00:38:58.426085 Read 112 bytes 00:38:58.426271 Process 112 bytes request 00:38:58.426366 Got request: GET /want/data.cgi?moo=http://&/450002 HTTP/1.1 00:38:58.426436 Serve test number 45 part 2 00:38:58.426617 - request found to be complete (45) 00:38:58.426822 Wrote request (112 bytes) input to log/6/server.input 00:38:58.426910 Send response test45 section 00:38:58.427137 connection close instruction "swsclose" found in response 00:38:58.427340 Response sent (174 bytes) and written to log/6/server.response 00:38:58.427404 instructed to close connection after server-reply 00:38:58.427464 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 43662 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 45 === End of file server.cmd === Start of file server.input GET /want/45 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* GET /want/data.cgi?moo=http://&/450002 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 301 This is a weirdo text message swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: data.cgi?moo=http://&/450002 Connection: close This server reply is for testing a simple Location: following HTTP/1.1 200 Followed here fine swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 52 If thCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind44 ../src/curl -q --output log/5/curl44.out --include --trace-ascii log/5/trace44 --trace-time http://127.0.0.1:46263/we/want/44 -F name=daniel -F tool=curl -F file=@log/5/test44.txt -H "Expect:" > log/5/stdout44 2> log/5/stderr44 is is received, the location following worked === End of file server.response === Start of file stderr45 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 52 100 52 0 0 8 0 0:00:06 0:00:06 --:--:-- 120 === End of file stderr45 === Start of file trace45 00:38:54.785382 * Trying 127.0.0.1:38277... 00:38:55.769269 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 57804 00:38:55.922014 * using HTTP/1.x 00:38:56.304803 => Send header, 86 bytes (0x56) 0000: GET /want/45 HTTP/1.1 0017: Host: 127.0.0.1:38277 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 00:38:56.697908 <= Recv header, 52 bytes (0x34) 0000: HTTP/1.1 301 This is a weirdo text message swsclose. 00:38:57.012770 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:38:57.123908 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:38:57.220924 <= Recv header, 39 bytes (0x27) 0000: Location: data.cgi?moo=http://&/450002. 00:38:57.275138 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:38:57.357589 <= Recv header, 1 bytes (0x1) 0000: . 00:38:57.603143 * Request completely sent off 00:38:57.862380 * shutting down connection #0 00:38:58.494156 * Issue another request to this URL: 'http://127.0.0.1:38277/want/data.cgi?moo=http://&/450002' 00:38:58.681033 * Hostname 127.0.0.1 was found in DNS cache 00:38:58.721418 * Trying 127.0.0.1:38277... 00:38:58.759306 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 57806 00:38:58.765571 * using HTTP/1.x 00:38:58.807060 => Send header, 112 bytes (0x70) 0000: GET /want/data.cgi?moo=http://&/450002 HTTP/1.1 0031: Host: 127.0.0.1:38277 0048: User-Agent: curl/8.17.0 0061: Accept: */* 006e: 00:38:58.846409 <= Recv header, 41 bytes (0x29) 0000: HTTP/1.1 200 Followed here fine swsclose. 00:38:58.855427 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:38:58.863742 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:38:58.889710 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 52. 00:38:58.914118 <= Recv header, 1 bytes (0x1) 0000: . 00:38:58.938207 <= Recv data, 52 bytes (0x34) 0000: If this is received, the location following worked.. 00:38:59.207356 * Connection #1 to host 127.0.0.1:38277 left intact === End of file trace45 === Start of file valgrind45 ==192778== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind45 test 0044...[HTTP RFC1867-type formposting without Expect: header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind44 ../src/curl -q --output log/5/curl44.out --include --trace-ascii log/5/trace44 --trace-time http://127.0.0.1:46263/we/want/44 -F name=daniel -F tool=curl -F file=@log/5/test44.txt -H "Expect:" > log/5/stdout44 2> log/5/stderr44 valgrind ERROR ==192763== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 44 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind44 ../src/curl -q --output log/5/curl44.out --include --trace-ascii log/5/trace44 --trace-time http://127.0.0.1:46263/we/want/44 -F name=daniel -F tool=curl -F file=@log/5/test44.txt -H "Expect:" > log/5/stdout44 2> log/5/stderr44 === End of file commands.log === Start of file curl44.out HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file curl44.out === Start of file http_server.log 00:38:07.873597 ====> Client connect 00:38:07.873777 accept_connection 3 returned 4 00:38:07.873859 accept_connection 3 returned 0 00:38:07.881744 Read 93 bytes 00:38:07.881957 Process 93 bytes request 00:38:07.882169 Got request: GET /verifiedserver HTTP/1.1 00:38:07.882267 Are-we-friendly question received 00:38:07.882427 Wrote request (93 bytes) input to log/5/server.input 00:38:07.882550 Identifying ourselves as friends 00:38:07.882761 Response sent (57 bytes) and written to log/5/server.response 00:38:07.882854 special request received, no persistency 00:38:07.882923 ====> Client disconnect 0 00:39:02.382236 ====> Client connect 00:39:02.382379 accept_connection 3 returned 4 00:39:02.382456 accept_connection 3 returned 0 00:39:04.214910 Read 635 bytes 00:39:04.215103 Process 635 bytes request 00:39:04.215197 Got request: POST /we/want/44 HTTP/1.1 00:39:04.215266 Serve test number 44 part 0 00:39:04.215471 - request found to be complete (44) 00:39:04.215805 Found Content-Length: 432 in the request 00:39:04.216080 Wrote request (635 bytes) input to log/5/server.input 00:39:04.216203 Send response test44 section 00:39:04.216406 connection close instruction "swsclose" found in response 00:39:04.216567 Response sent (98 bytes) and written to log/5/server.response 00:39:04.216630 instructed to close connection after server-reply 00:39:04.216687 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 59494 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 44 === End of file server.cmd === Start of file server.input POST /we/want/44 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* Content-Length: 432 Content-Type: multipart/form-data; boundary=------------------------OUsdOglvOt5OQgJSHWJASp --------------------------OUsdOglvOt5OQgJSHWJASp Content-Disposition: form-data; name="name" daniel --------------------------OUsdOglvOt5OQgJSHWJASp Content-Disposition: form-data; name="tool" curl --------------------------OUsdOglvOt5OQgJSHWJASp Content-Disposition: form-data; name="file"; filename="test44.txt" Content-Type: text/plain foo- This is a moo- bar --------------------------OUsdOglvOt5OQgJSHWJASp-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file server.response === Start of file stderr44 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 432 0 0 100 432 0 96 0:00:04 0:00:04 --:--:-- 136 100 443 0 11 100 432 1 78 0:00:05 0:00:05 --:--:-- 105 100 443 0 11 100 432 1 76 0:00:05 0:00:05 --:--:-- 102 === End of file stderr44 === Start of file test44.txt foo- This is a moo- bar === End of file test44.txt === Start of file trace44 00:39:02.426567 * Trying 127.0.0.1:46263... 00:39:03.416520 * Established connection to 127.0.0.1 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind46 ../src/curl -q --output log/1/curl46.out --include --trace-ascii log/1/trace46 --trace-time domain..tld:40641/want/46 --resolve domain..tld:40641:127.0.0.1 -c log/1/jar46 -b log/1/injar46 > log/1/stdout46 2> log/1/stderr46 (127.0.0.1 port 46263) from 127.0.0.1 port 39264 00:39:03.552549 * using HTTP/1.x 00:39:04.642568 => Send header, 203 bytes (0xcb) 0000: POST /we/want/44 HTTP/1.1 001b: Host: 127.0.0.1:46263 0032: User-Agent: curl/8.17.0 004b: Accept: */* 0058: Content-Length: 432 006d: Content-Type: multipart/form-data; boundary=-------------------- 00ad: ----OUsdOglvOt5OQgJSHWJASp 00c9: 00:39:04.770580 => Send data, 432 bytes (0x1b0) 0000: --------------------------OUsdOglvOt5OQgJSHWJASp 0032: Content-Disposition: form-data; name="name" 005f: 0061: daniel 0069: --------------------------OUsdOglvOt5OQgJSHWJASp 009b: Content-Disposition: form-data; name="tool" 00c8: 00ca: curl 00d0: --------------------------OUsdOglvOt5OQgJSHWJASp 0102: Content-Disposition: form-data; name="file"; filename="test44.tx 0142: t" 0146: Content-Type: text/plain 0160: 0162: foo-.This is a moo-.bar. 017c: --------------------------OUsdOglvOt5OQgJSHWJASp-- 00:39:04.901548 * upload completely sent off: 432 bytes 00:39:05.205580 * HTTP 1.0, assume close after body 00:39:05.231651 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.0 200 OK swsclose. 00:39:05.559915 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:39:05.673436 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:39:05.770204 <= Recv header, 1 bytes (0x1) 0000: . 00:39:05.832594 <= Recv data, 11 bytes (0xb) 0000: blablabla.. 00:39:05.947931 <= Recv data, 0 bytes (0x0) 00:39:06.467140 * shutting down connection #0 === End of file trace44 === Start of file valgrind44 ==192763== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind44 setenv TZ = GMT test 0046...[HTTP with bad domain name, get cookies and store in cookie jar] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind46 ../src/curl -q --output log/1/curl46.out --include --trace-ascii log/1/trace46 --trace-time domain..tld:40641/want/46 --resolve domain..tld:40641:127.0.0.1 -c log/1/jar46 -b log/1/injar46 > log/1/stdout46 2> log/1/stderr46 valgrind ERROR ==193055== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 46 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind46 ../src/curl -q --output log/1/curl46.out --include --trace-ascii log/1/trace46 --trace-time domain..tld:40641/want/46 --resolve domain..tld:40641:127.0.0.1 -c log/1/jar46 -b log/1/injar46 > log/1/stdout46 2> log/1/stderr46 === End of file commands.log === Start of file curl46.out HTTP/1.1 200 OK Server: Microsoft-IIS/4.0 Date: Tue, 25 Sep 2001 19:37:44 GMT Content-Type: text/html Set-Cookie: ckyPersistent=permanent; expires=Fri, 13-Feb-2525 11:56:27 GMT; path=/ Set-Cookie: ckySession=temporary; path=/ Set-Cookie: ASPSESSIONIDQGGQQSJJ=GKNBDIFAAOFDPDAIEAKDIBKE; path=/ Set-Cookie: justaname=; path=/; Set-Cookie: simplyhuge=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz Cache-control: private Content-Length: 41 This server reply is for testing cookies === End of file curl46.out === Start of file http_server.log 00:38:11.973754 ====> Client connect 00:38:11.973929 accept_connection 3 returned 4 00:38:11.974007 accept_connection 3 returned 0 00:38:11.980861 Read 93 bytes 00:38:11.980980 Process 93 bytes request 00:38:11.981067 Got request: GET /verifiedserver HTTP/1.1 00:38:11.981132 Are-we-friendly question received 00:38:11.981247 Wrote request (93 bytes) input to log/1/server.input 00:38:11.981339 Identifying ourselves as friends 00:38:11.981517 Response sent (57 bytes) and written to log/1/server.response 00:38:11.981580 special request received, no persistency 00:38:11.981636 ====> Client disconnect 0 00:39:00.105097 ====> Client connect 00:39:00.105245 accept_connection 3 returned 4 00:39:00.105324 accept_connection 3 returned 0 00:39:01.409708 Read 132 bytes 00:39:01.409919 Process 132 bytes request 00:39:01.410015 Got request: GET /want/46 HTTP/1.1 00:39:01.410085 Serve test number 46 part 0 00:39:01.410391 - request found to be complete (46) 00:39:01.410761 Wrote request (132 bytes) input to log/1/server.input 00:39:01.410871 Send response test46 section 00:39:01.412239 Response sent (4442 bytes) and written to log/1/server.response 00:39:01.412314 => persistent connection request ended, awaits new request 00:39:11.442939 Connection closed by client 00:39:11.443149 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 51068 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file injar46 # Netscape HTTP Cookie File # https://curl.se/docs/http-cookies.html # This is generated by libcurl! Do not edit. www.fake.come FALSE / FALSE 22147483647 cookiecliente si www.loser.com FALSE / FALSE 22139150993 UID 99 domain..tld FALSE / FALSE 22139150993 mooo indeed #HttpOnly_domain..tld FALSE /want FALSE 22139150993 mooo2 indeed2 domain..tld FALSE /want FALSE 0 empty === End of file injar46 === Start of file jar46 # Netscape HTTP Cookie File # https://curl.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. domain..tld FALSE /want/ FALSE 0 simplyhuge zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz domain..tld FALSE / FALSE 0 justaname domain..tld FALSE / FALSE 0 ASPSESSIONIDQGGQQSJJ GKNBDIFAAOFDPDAIEAKDIBKE domain..tld FALSE / FALSE 0 ckySession temporary domain..tld FALSE / FALSE 1797208740 ckyPersistent permanent domain..tld FALSE /want FALSE 0 empty #HttpOnly_domain..tld FALSE /want FALSE 22139150993 mooo2 indeed2 domain..tld FALSE / FALSE 22139150993 mooo indeed www.loser.com FALSE / FALSE 22139150993 UID 99 www.fake.come FALSE / FALSE 22147483647 cookiecliente si === End of file jar46 === Start of file server.cmd Testnum 46 === End of file server.cmd === Start of file server.input GET /want/46 HTTP/1.1 Host: domain..tld:40641 User-Agent: curl/8.17.0 Accept: */* Cookie: empty=; mooo2=indeed2; mooo=indeed === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Server: Microsoft-IIS/4.0 Date: Tue, 25 Sep 2001 19:37:44 GMT Content-Type: text/html Set-Cookie: ckyPersistent=permanent; expires=Fri, 13-Feb-2525 11:56:27 GMT; path=/ Set-Cookie: ckySession=temporary; path=/ Set-Cookie: ASPSESSIONIDQGGQQSJJ=GKNBDIFAAOFDPDAIEAKDIBKE; path=/ Set-Cookie: justaname=; path=/; Set-Cookie: simplyhuge=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz Cache-control: private Content-Length: 41 This server reply is for testing cookies === End of file server.response === Start of file stderr46 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 41 100 41 0 0 7 0 0:00:05 0:00:05 --:--:-- 9 100 41 100 41 0 0 7 0 0:00:05 0:00:05 --:--:-- 9 === End of file stderr46 === Start of file trace46 00:38:56.948277 * Added domain..tld:40641:127.0.0.1 to DNS cache 00:38:58.631402 * Hostname domain..tld was found in DNS cache 00:38:59.386639 * Trying 127.0.0.1:40641... 00:39:00.107591 * Established connection to domain..tld (127.0.0.1 port 40641) from 127.0.0.1 port 41106 00:39:00.216056 * using HTTP/1.x 00:39:00.834349 => Send header, 132 bytes (0x84) 0000: GET /want/46 HTTP/1.1 0017: Host: domain..tld:40641 0030: User-Agent: curl/8.17.0 0049: Accept: */* 0056: Cookie: empty=; mooo2=indeed2; mooo=indeed 0082: 00:39:01.224281 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:39:01.556832 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/4.0 00:39:01.644175 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 25 Sep 2001 19:37:44 GMT 00:39:01.708198 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:39:02.095502 * Added cookie ckyPersistent="permanent" for domain domain..tld, path /, expire 1797208740 00:39:02.109349 <= Recv header, 84 bytes (0x54) 0000: Set-Cookie: ckyPersistent=permanent; expires=Fri, 13-Feb-2525 11 0040: :56:27 GMT; path=/ 00:39:02.138344 * Added cookie ckySession="temporary" for domain domain..tld, path /, expire 0 00:39:02.140705 <= Recv header, 42 bytes (0x2a) 0000: Set-Cookie: ckySession=temporary; path=/ 00:39:02.152318 * Added cookie ASPSESSIONIDQGGQQSJJ="GKNBDIFAAOFDPDAIEAKDIBKE" for domain domain..tld, path /, expire 0 00:39:02.153977 <= Recv header, 67 bytes (0x43) 0000: Set-Cookie: ASPSESSIONIDQGGQQSJJ=GKNBDIFAAOFDPDAIEAKDIBKE; path= 0040: / 00:39:02.172503 * Added cookie justaname="" for domain domain..tld, path /, expire 0 00:39:02.174534 <= Recv header, 33 bytes (0x21) 0000: Set-Cookie: justaname=; path=/; 00:39:02.243310 * Added cookie simplyhuge="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz... 00:39:02.264620 <= Recv header, 4023 bytes (0xfb7) 0000: Set-Cookie: simplyhuge=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0040: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0080: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 00c0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0100: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0140: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0180: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 01c0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0200: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0240: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0280: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 02c0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0300: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind47 ../src/curl -q --output log/2/curl47.out --include --trace-ascii log/2/trace47 --trace-time http://127.0.0.1:39863/47 -0 > log/2/stdout47 2> log/2/stderr47 0340: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0380: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 03c0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0400: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0440: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0480: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 04c0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0500: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0540: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0580: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 05c0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0600: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0640: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0680: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 06c0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0700: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0740: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0780: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 07c0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0800: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0840: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0880: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 08c0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0900: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0940: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0980: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 09c0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0a00: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0a40: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0a80: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0ac0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0b00: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0b40: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0b80: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0bc0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0c00: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0c40: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0c80: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0cc0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0d00: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0d40: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0d80: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0dc0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0e00: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0e40: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0e80: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0ec0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0f00: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0f40: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0f80: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 00:39:02.745439 <= Recv header, 24 bytes (0x18) 0000: Cache-control: private 00:39:02.772939 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 41 00:39:02.859323 <= Recv header, 2 bytes (0x2) 0000: 00:39:02.936993 <= Recv data, 41 bytes (0x29) 0000: This server reply is for testing cookies. 00:39:03.569416 * Connection #0 to host domain..tld:40641 left intact === End of file trace46 === Start of file valgrind46 ==193055== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind46 test 0047...[simple HTTP 1.0 GET] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind47 ../src/curl -q --output log/2/curl47.out --include --trace-ascii log/2/trace47 --trace-time http://127.0.0.1:39863/47 -0 > log/2/stdout47 2> log/2/stderr47 valgrind ERROR ==193234== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 47 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind47 ../src/curl -q --output log/2/curl47.out --include --trace-ascii log/2/trace47 --trace-time http://127.0.0.1:39863/47 -0 > log/2/stdout47 2> log/2/stderr47 === End of file commands.log === Start of file curl47.out HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake -foo- within foo -!foo- === End of file curl47.out === Start of file http_server.log 00:38:23.881943 ====> Client connect 00:38:23.882096 accept_connection 3 returned 4 00:38:23.882168 accept_connection 3 returned 0 00:38:23.888717 Read 93 bytes 00:38:23.888795 Process 93 bytes request 00:38:23.888877 Got request: GET /verifiedserver HTTP/1.1 00:38:23.888936 Are-we-friendly question received 00:38:23.889033 Wrote request (93 bytes) input to log/2/server.input 00:38:23.889111 Identifying ourselves as friends 00:38:23.889284 Response sent (57 bytes) and written to log/2/server.response 00:38:23.889342 special request received, no persistency 00:38:23.889393 ====> Client disconnect 0 00:39:11.638274 ====> Client connect 00:39:11.638416 accept_connection 3 returned 4 00:39:11.638492 accept_connection 3 returned 0 00:39:12.660538 Read 81 bytes 00:39:12.660732 Process 81 bytes request 00:39:12.660948 Got request: GET /47 HTTP/1.0 00:39:12.661024 Serve test number 47 part 0 00:39:12.661195 - request found to be complete (47) 00:39:12.661439 Wrote request (81 bytes) input to log/2/server.input 00:39:12.661559 Send response test47 section 00:39:12.661774 connection close instruction "swsclose" found in response 00:39:12.661958 Response sent (111 bytes) and written to log/2/server.response 00:39:12.662030 instructed to close connection after server-reply 00:39:12.662094 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 50068 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 47 === End of file server.cmd === Start of file server.input GET /47 HTTP/1.0 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake -foo- within foo -!foo- === End of file server.response === Start of file stderr47 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 24 0 24 0 0 5 0 --:--:-- 0:00:04 --:--:-- 7 100 24 0 24 0 0 5 0 --:--:-- 0:00:04 --:--:-- 7 === End of file stderr47 === Start of file trace47 00:39:10.709CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind48 ../src/curl -q --output log/7/curl48.out --include --trace-ascii log/7/trace48 --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:34897/48 -G -I http://127.0.0.1:34897/48 > log/7/stdout48 2> log/7/stderr48 192 * Trying 127.0.0.1:39863... 00:39:11.598223 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 58608 00:39:11.730760 * using HTTP/1.x 00:39:12.079747 => Send header, 81 bytes (0x51) 0000: GET /47 HTTP/1.0 0012: Host: 127.0.0.1:39863 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: 00:39:12.454512 * HTTP 1.0, assume close after body 00:39:12.477371 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.0 200 OK swsclose. 00:39:12.782358 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:39:12.881173 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:39:12.970046 <= Recv header, 1 bytes (0x1) 0000: . 00:39:13.038925 <= Recv data, 24 bytes (0x18) 0000: -foo- within foo -!foo-. 00:39:13.168083 * abort upload 00:39:13.191514 <= Recv data, 0 bytes (0x0) 00:39:13.678249 * shutting down connection #0 === End of file trace47 === Start of file valgrind47 ==193234== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind47 test 0048...[HTTP with -d and -G and -I] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind48 ../src/curl -q --output log/7/curl48.out --include --trace-ascii log/7/trace48 --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:34897/48 -G -I http://127.0.0.1:34897/48 > log/7/stdout48 2> log/7/stderr48 valgrind ERROR ==193390== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 48 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind48 ../src/curl -q --output log/7/curl48.out --include --trace-ascii log/7/trace48 --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:34897/48 -G -I http://127.0.0.1:34897/48 > log/7/stdout48 2> log/7/stderr48 === End of file commands.log === Start of file curl48.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT === End of file curl48.out === Start of file http_server.log 00:38:25.740782 ====> Client connect 00:38:25.740937 accept_connection 3 returned 4 00:38:25.741011 accept_connection 3 returned 0 00:38:25.749403 Read 93 bytes 00:38:25.749498 Process 93 bytes request 00:38:25.749584 Got request: GET /verifiedserver HTTP/1.1 00:38:25.749645 Are-we-friendly question received 00:38:25.749750 Wrote request (93 bytes) input to log/7/server.input 00:38:25.749846 Identifying ourselves as friends 00:38:25.750016 Response sent (57 bytes) and written to log/7/server.response 00:38:25.750075 special request received, no persistency 00:38:25.750127 ====> Client disconnect 0 00:39:13.566509 ====> Client connect 00:39:13.566656 accept_connection 3 returned 4 00:39:13.566737 accept_connection 3 returned 0 00:39:14.616044 Read 98 bytes 00:39:14.616239 Process 98 bytes request 00:39:14.616331 Got request: HEAD /48?foo=moo&moo=poo HTTP/1.1 00:39:14.616400 Serve test number 48 part 0 00:39:14.616877 enabled connection monitoring 00:39:14.617022 - request found to be complete (48) 00:39:14.617136 enabled connection monitoring 00:39:14.617295 Wrote request (98 bytes) input to log/7/server.input 00:39:14.617406 Send response test48 section 00:39:14.617690 Response sent (53 bytes) and written to log/7/server.response 00:39:14.617752 => persistent connection request ended, awaits new request 00:39:17.147678 Read 98 bytes 00:39:17.147856 Process 98 bytes request 00:39:17.147952 Got request: HEAD /48?foo=moo&moo=poo HTTP/1.1 00:39:17.148025 Serve test number 48 part 0 00:39:17.148173 enabled connection monitoring 00:39:17.148241 - request found to be complete (48) 00:39:17.148359 enabled connection monitoring 00:39:17.148472 Wrote request (98 bytes) input to log/7/server.input 00:39:17.148556 Send response test48 section 00:39:17.148856 Response sent (53 bytes) and written to log/7/server.response 00:39:17.148925 => persistent connection request ended, awaits new request 00:39:17.569110 Connection closed by client 00:39:17.569282 ====> Client disconnect 1 00:39:17.569413 Wrote request (13 bytes) input to log/7/server.input === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 46326 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd connection-monitor Testnum 48 === End of file server.cmd === Start of file server.input HEAD /48?foo=moo&moo=poo HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* HEAD /48?foo=moo&moo=poo HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* [DISCONNECT] === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT === End of file server.response === Start of file stderr48 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 === End of file stderr48 === Start of file stdout48 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT === End of file stdout48 === Start of file trace48 00:39:13.627524 * Trying 127.0.0.1:34897... 00:39:14.556814 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 44594 00:39:14.690426 * using HTTP/1.x 00:39:15.033143 => Send header, 98 bytes (0x62) 0000: HEAD /48?foo=moo&moo=poo HTTP/1.1 0023: Host: 127.0.0.1:34897 003a: User-Agent: curl/8.17.0 0053: Accept: */* 0060: 00:39:15.374685 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:39:15.691489 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:39:15.859285 <= Recv header, 1 bytes (0x1) 0000: . 00:39:16.391952 * Connection #0 to host 127.0.0.1:34897 left intact 00:39:17.442325 * Reusing existing http: connection with host 127.0.0.1 00:39:17.531425 => Send header, 98 bytes (0x62) 0000: HEAD /48?foo=moo&moo=poo HTTP/1.1 0023: Host: 127.0.0.1:34897 003a: User-Agent: curl/8.17.0 0053: Accept: */* 0060: 00:39:17.564103 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:39:17.573442 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:39:17.588992 <= Recv header, 1 bytes (0x1) 0000: . 00:39:17.635263 * Connection #0 to host 127.0.0.1:34897 left intact === End of file trace48 === Start of file valgrind48 ==193390== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind48 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 54 in state 4 Runner 2 (id 185908) running test 55 in state 4 Runner 3 (id 185910) running test 51 in state 4 Runner 4 (id 185912) running test 50 in state 4 Runner 5 (id 18CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind49 ../src/curl -q --output log/8/curl49.out --include --trace-ascii log/8/trace49 --trace-time http://127.0.0.1:39461/we/are/all/twits/49 -L > log/8/stdout49 2> log/8/stderr49 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind50 ../src/curl -q --output log/4/curl50.out --include --trace-ascii log/4/trace50 --trace-time http://127.0.0.1:42621/we/are/all/twits/50 -L > log/4/stdout50 2> log/4/stderr50 5914) running test 53 in state 4 Runner 6 (id 185916) running test 52 in state 4 Runner 7 (id 185918) running test 56 in state 4 Runner 8 (id 185920) running test 49 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 54 in state 4 Runner 2 (id 185908) running test 55 in state 4 Runner 3 (id 185910) running test 51 in state 4 Runner 4 (id 185912) running test 50 in state 4 Runner 5 (id 185914) running test 53 in state 4 Runner 6 (id 185916) running test 52 in state 4 Runner 7 (id 185918) running test 56 in state 4 Runner 8 (id 185920) running test 49 in state 4 test 0049...[HTTP follow redirect with ../] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind49 ../src/curl -q --output log/8/curl49.out --include --trace-ascii log/8/trace49 --trace-time http://127.0.0.1:39461/we/are/all/twits/49 -L > log/8/stdout49 2> log/8/stderr49 valgrind ERROR ==193615== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 49 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind49 ../src/curl -q --output log/8/curl49.out --include --trace-ascii log/8/trace49 --trace-time http://127.0.0.1:39461/we/are/all/twits/49 -L > log/8/stdout49 2> log/8/stderr49 === End of file commands.log === Start of file curl49.out HTTP/1.1 302 OK swsclose Location: ../moo.html/490002 Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close HTTP/1.1 200 OK swsclose Location: this should be ignored Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close body === End of file curl49.out === Start of file http_server.log 00:38:55.348815 ====> Client connect 00:38:55.348988 accept_connection 3 returned 4 00:38:55.349064 accept_connection 3 returned 0 00:38:55.355894 Read 93 bytes 00:38:55.356033 Process 93 bytes request 00:38:55.356144 Got request: GET /verifiedserver HTTP/1.1 00:38:55.356216 Are-we-friendly question received 00:38:55.356341 Wrote request (93 bytes) input to log/8/server.input 00:38:55.356442 Identifying ourselves as friends 00:38:55.356636 Response sent (57 bytes) and written to log/8/server.response 00:38:55.356704 special request received, no persistency 00:38:55.356765 ====> Client disconnect 0 00:39:42.902879 ====> Client connect 00:39:42.903021 accept_connection 3 returned 4 00:39:42.903099 accept_connection 3 returned 0 00:39:43.883080 Read 98 bytes 00:39:43.883276 Process 98 bytes request 00:39:43.883363 Got request: GET /we/are/all/twits/49 HTTP/1.1 00:39:43.883429 Serve test number 49 part 0 00:39:43.883600 - request found to be complete (49) 00:39:43.883832 Wrote request (98 bytes) input to log/8/server.input 00:39:43.883937 Send response test49 section 00:39:43.884130 connection close instruction "swsclose" found in response 00:39:43.884294 Response sent (109 bytes) and written to log/8/server.response 00:39:43.884361 instructed to close connection after server-reply 00:39:43.884418 ====> Client disconnect 0 00:39:46.178700 ====> Client connect 00:39:46.178837 accept_connection 3 returned 4 00:39:46.178914 accept_connection 3 returned 0 00:39:46.234785 Read 105 bytes 00:39:46.234986 Process 105 bytes request 00:39:46.235079 Got request: GET /we/are/all/moo.html/490002 HTTP/1.1 00:39:46.235200 Serve test number 49 part 2 00:39:46.235378 - request found to be complete (49) 00:39:46.235574 Wrote request (105 bytes) input to log/8/server.input 00:39:46.235674 Send response test49 section 00:39:46.235889 connection close instruction "swsclose" found in response 00:39:46.236078 Response sent (118 bytes) and written to log/8/server.response 00:39:46.236145 instructed to close connection after server-reply 00:39:46.236205 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 49600 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 49 === End of file server.cmd === Start of file server.input GET /we/are/all/twits/49 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* GET /we/are/all/moo.html/490002 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 302 OK swsclose Location: ../moo.html/490002 Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close HTTP/1.1 200 OK swsclose Location: this should be ignored Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close body === End of file server.response === Start of file stderr49 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 5 0 5 0 0 0 0 --:--:-- 0:00:05 --:--:-- 11 === End of file stderr49 === Start of file trace49 00:39:42.964576 * Trying 127.0.0.1:39461... 00:39:43.845411 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 36412 00:39:43.966675 * using HTTP/1.x 00:39:44.300416 => Send header, 98 bytes (0x62) 0000: GET /we/are/all/twits/49 HTTP/1.1 0023: Host: 127.0.0.1:39461 003a: User-Agent: curl/8.17.0 0053: Accept: */* 0060: 00:39:44.666296 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 302 OK swsclose. 00:39:45.045515 <= Recv header, 29 bytes (0x1d) 0000: Location: ../moo.html/490002. 00:39:45.135972 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:39:45.198557 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:39:45.278406 <= Recv header, 1 bytes (0x1) 0000: . 00:39:45.531908 * Request completely sent off 00:39:45.784004 * shutting down connection #0 00:39:46.347311 * Issue another request to this URL: 'http://127.0.0.1:39461/we/are/all/moo.html/490002' 00:39:46.517447 * Hostname 127.0.0.1 was found in DNS cache 00:39:46.555027 * Trying 127.0.0.1:39461... 00:39:46.589191 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 36420 00:39:46.595367 * using HTTP/1.x 00:39:46.618420 => Send header, 105 bytes (0x69) 0000: GET /we/are/all/moo.html/490002 HTTP/1.1 002a: Host: 127.0.0.1:39461 0041: User-Agent: curl/8.17.0 005a: Accept: */* 0067: 00:39:46.654270 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 00:39:46.665119 <= Recv header, 33 bytes (0x21) 0000: Location: this should be ignored. 00:39:46.671787 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:39:46.680347 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:39:46.694307 <= Recv header, 1 bytes (0x1) 0000: . 00:39:46.719137 <= Recv data, 5 bytes (0x5) 0000: body. 00:39:46.815545 * abort upload 00:39:46.828251 <= Recv data, 0 bytes (0x0) 00:39:46.989743 * shutting down connection #1 === End of file trace49 === Start of file valgrind49 ==193615== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind49 test 0050...[HTTP follow redirect with ../../] .CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind51 ../src/curl -q --output log/3/curl51.out --include --trace-ascii log/3/trace51 --trace-time http://127.0.0.1:46853/we/are/all/twits/51 -L > log/3/stdout51 2> log/3/stderr51 ./libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind50 ../src/curl -q --output log/4/curl50.out --include --trace-ascii log/4/trace50 --trace-time http://127.0.0.1:42621/we/are/all/twits/50 -L > log/4/stdout50 2> log/4/stderr50 valgrind ERROR ==193768== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 50 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind50 ../src/curl -q --output log/4/curl50.out --include --trace-ascii log/4/trace50 --trace-time http://127.0.0.1:42621/we/are/all/twits/50 -L > log/4/stdout50 2> log/4/stderr50 === End of file commands.log === Start of file curl50.out HTTP/1.1 302 OK swsclose Location: ../../moo.html/500002 Date: Tue, 09 Nov 2010 14:50:00 GMT Connection: close HTTP/1.1 200 OK swsclose Location: this should be ignored Date: Tue, 09 Nov 2010 14:50:00 GMT Connection: close body === End of file curl50.out === Start of file http_server.log 00:39:00.174287 ====> Client connect 00:39:00.174446 accept_connection 3 returned 4 00:39:00.174524 accept_connection 3 returned 0 00:39:00.181458 Read 93 bytes 00:39:00.181605 Process 93 bytes request 00:39:00.181696 Got request: GET /verifiedserver HTTP/1.1 00:39:00.181762 Are-we-friendly question received 00:39:00.181887 Wrote request (93 bytes) input to log/4/server.input 00:39:00.181983 Identifying ourselves as friends 00:39:00.182159 Response sent (57 bytes) and written to log/4/server.response 00:39:00.182221 special request received, no persistency 00:39:00.182278 ====> Client disconnect 0 00:39:47.645718 ====> Client connect 00:39:47.645853 accept_connection 3 returned 4 00:39:47.645929 accept_connection 3 returned 0 00:39:48.630375 Read 98 bytes 00:39:48.630572 Process 98 bytes request 00:39:48.630669 Got request: GET /we/are/all/twits/50 HTTP/1.1 00:39:48.630743 Serve test number 50 part 0 00:39:48.630928 - request found to be complete (50) 00:39:48.631213 Wrote request (98 bytes) input to log/4/server.input 00:39:48.631318 Send response test50 section 00:39:48.631526 connection close instruction "swsclose" found in response 00:39:48.631712 Response sent (112 bytes) and written to log/4/server.response 00:39:48.631778 instructed to close connection after server-reply 00:39:48.631838 ====> Client disconnect 0 00:39:50.892884 ====> Client connect 00:39:50.893025 accept_connection 3 returned 4 00:39:50.893111 accept_connection 3 returned 0 00:39:50.955991 Read 101 bytes 00:39:50.956202 Process 101 bytes request 00:39:50.956312 Got request: GET /we/are/moo.html/500002 HTTP/1.1 00:39:50.956388 Serve test number 50 part 2 00:39:50.956573 - request found to be complete (50) 00:39:50.956780 Wrote request (101 bytes) input to log/4/server.input 00:39:50.956865 Send response test50 section 00:39:50.957086 connection close instruction "swsclose" found in response 00:39:50.957292 Response sent (118 bytes) and written to log/4/server.response 00:39:50.957363 instructed to close connection after server-reply 00:39:50.957423 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 57516 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 50 === End of file server.cmd === Start of file server.input GET /we/are/all/twits/50 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* GET /we/are/moo.html/500002 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 302 OK swsclose Location: ../../moo.html/500002 Date: Tue, 09 Nov 2010 14:50:00 GMT Connection: close HTTP/1.1 200 OK swsclose Location: this should be ignored Date: Tue, 09 Nov 2010 14:50:00 GMT Connection: close body === End of file server.response === Start of file stderr50 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 5 0 5 0 0 0 0 --:--:-- 0:00:05 --:--:-- 12 100 5 0 5 0 0 0 0 --:--:-- 0:00:05 --:--:-- 10 === End of file stderr50 === Start of file trace50 00:39:46.700251 * Trying 127.0.0.1:42621... 00:39:47.565230 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 44800 00:39:47.716272 * using HTTP/1.x 00:39:48.048294 => Send header, 98 bytes (0x62) 0000: GET /we/are/all/twits/50 HTTP/1.1 0023: Host: 127.0.0.1:42621 003a: User-Agent: curl/8.17.0 0053: Accept: */* 0060: 00:39:48.404092 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 302 OK swsclose. 00:39:48.767806 <= Recv header, 32 bytes (0x20) 0000: Location: ../../moo.html/500002. 00:39:48.854865 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:50:00 GMT. 00:39:48.917189 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:39:48.994813 <= Recv header, 1 bytes (0x1) 0000: . 00:39:49.232047 * Request completely sent off 00:39:49.486222 * shutting down connection #0 00:39:50.054102 * Issue another request to this URL: 'http://127.0.0.1:42621/we/are/moo.html/500002' 00:39:50.228958 * Hostname 127.0.0.1 was found in DNS cache 00:39:50.268793 * Trying 127.0.0.1:42621... 00:39:50.306767 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 44810 00:39:50.313560 * using HTTP/1.x 00:39:50.337684 => Send header, 101 bytes (0x65) 0000: GET /we/are/moo.html/500002 HTTP/1.1 0026: Host: 127.0.0.1:42621 003d: User-Agent: curl/8.17.0 0056: Accept: */* 0063: 00:39:50.373724 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 00:39:50.386318 <= Recv header, 33 bytes (0x21) 0000: Location: this should be ignored. 00:39:50.392276 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:50:00 GMT. 00:39:50.400293 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:39:50.414069 <= Recv header, 1 bytes (0x1) 0000: . 00:39:50.455449 <= Recv data, 5 bytes (0x5) 0000: body. 00:39:50.562029 * abort upload 00:39:50.575268 <= Recv data, 0 bytes (0x0) 00:39:50.757360 * shutting down connection #1 === End of file trace50 === Start of file valgrind50 ==193768== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind50 test 0051...[HTTP follow redirect with excessive ../] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind51 ../src/curl -q --output log/3/curl51.out --include --trace-ascii log/3/trace51 --trace-time http://127.0.0.1:46853/we/are/all/twits/51 -L > log/3/stdout51 2> log/3/stderr51 valgrind ERROR ==193961== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 51 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --numCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind52 ../src/curl -q --output log/6/curl52.out --include --trace-ascii log/6/trace52 --trace-time http://127.0.0.1:38277/we/are/all/twits/52 -L > log/6/stdout52 2> log/6/stderr52 -callers=16 --log-file=log/3/valgrind51 ../src/curl -q --output log/3/curl51.out --include --trace-ascii log/3/trace51 --trace-time http://127.0.0.1:46853/we/are/all/twits/51 -L > log/3/stdout51 2> log/3/stderr51 === End of file commands.log === Start of file curl51.out HTTP/1.1 302 OK swsclose Location: ../../../../../../../510002 Date: Tue, 09 Nov 2010 14:50:00 GMT Connection: close HTTP/1.1 200 OK swsclose Location: this should be ignored Date: Tue, 09 Nov 2010 14:50:00 GMT Connection: close body === End of file curl51.out === Start of file http_server.log 00:39:02.537056 ====> Client connect 00:39:02.537230 accept_connection 3 returned 4 00:39:02.537319 accept_connection 3 returned 0 00:39:02.543964 Read 93 bytes 00:39:02.544089 Process 93 bytes request 00:39:02.544185 Got request: GET /verifiedserver HTTP/1.1 00:39:02.544259 Are-we-friendly question received 00:39:02.544388 Wrote request (93 bytes) input to log/3/server.input 00:39:02.544488 Identifying ourselves as friends 00:39:02.544682 Response sent (57 bytes) and written to log/3/server.response 00:39:02.544752 special request received, no persistency 00:39:02.544814 ====> Client disconnect 0 00:39:49.147402 ====> Client connect 00:39:49.147536 accept_connection 3 returned 4 00:39:49.147615 accept_connection 3 returned 0 00:39:50.190360 Read 98 bytes 00:39:50.190560 Process 98 bytes request 00:39:50.190665 Got request: GET /we/are/all/twits/51 HTTP/1.1 00:39:50.190748 Serve test number 51 part 0 00:39:50.190982 - request found to be complete (51) 00:39:50.191269 Wrote request (98 bytes) input to log/3/server.input 00:39:50.191386 Send response test51 section 00:39:50.191630 connection close instruction "swsclose" found in response 00:39:50.191803 Response sent (118 bytes) and written to log/3/server.response 00:39:50.191877 instructed to close connection after server-reply 00:39:50.191945 ====> Client disconnect 0 00:39:52.594868 ====> Client connect 00:39:52.595032 accept_connection 3 returned 4 00:39:52.595126 accept_connection 3 returned 0 00:39:52.656687 Read 85 bytes 00:39:52.656881 Process 85 bytes request 00:39:52.656975 Got request: GET /510002 HTTP/1.1 00:39:52.657045 Serve test number 51 part 2 00:39:52.657226 - request found to be complete (51) 00:39:52.657424 Wrote request (85 bytes) input to log/3/server.input 00:39:52.657505 Send response test51 section 00:39:52.657720 connection close instruction "swsclose" found in response 00:39:52.657899 Response sent (118 bytes) and written to log/3/server.response 00:39:52.657964 instructed to close connection after server-reply 00:39:52.658023 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 34912 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 51 === End of file server.cmd === Start of file server.input GET /we/are/all/twits/51 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* GET /510002 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 302 OK swsclose Location: ../../../../../../../510002 Date: Tue, 09 Nov 2010 14:50:00 GMT Connection: close HTTP/1.1 200 OK swsclose Location: this should be ignored Date: Tue, 09 Nov 2010 14:50:00 GMT Connection: close body === End of file server.response === Start of file stderr51 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 5 0 5 0 0 0 0 --:--:-- 0:00:06 --:--:-- 11 100 5 0 5 0 0 0 0 --:--:-- 0:00:06 --:--:-- 10 === End of file stderr51 === Start of file trace51 00:39:49.205510 * Trying 127.0.0.1:46853... 00:39:50.104859 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 56240 00:39:50.240258 * using HTTP/1.x 00:39:50.618237 => Send header, 98 bytes (0x62) 0000: GET /we/are/all/twits/51 HTTP/1.1 0023: Host: 127.0.0.1:46853 003a: User-Agent: curl/8.17.0 0053: Accept: */* 0060: 00:39:50.999394 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 302 OK swsclose. 00:39:51.418933 <= Recv header, 38 bytes (0x26) 0000: Location: ../../../../../../../510002. 00:39:51.525958 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:50:00 GMT. 00:39:51.586084 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:39:51.663400 <= Recv header, 1 bytes (0x1) 0000: . 00:39:51.898196 * Request completely sent off 00:39:52.158102 * shutting down connection #0 00:39:52.758536 * Issue another request to this URL: 'http://127.0.0.1:46853/510002' 00:39:52.929059 * Hostname 127.0.0.1 was found in DNS cache 00:39:52.970087 * Trying 127.0.0.1:46853... 00:39:53.007905 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 50914 00:39:53.016080 * using HTTP/1.x 00:39:53.040276 => Send header, 85 bytes (0x55) 0000: GET /510002 HTTP/1.1 0016: Host: 127.0.0.1:46853 002d: User-Agent: curl/8.17.0 0046: Accept: */* 0053: 00:39:53.076747 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 00:39:53.088720 <= Recv header, 33 bytes (0x21) 0000: Location: this should be ignored. 00:39:53.096298 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:50:00 GMT. 00:39:53.105572 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:39:53.120005 <= Recv header, 1 bytes (0x1) 0000: . 00:39:53.145564 <= Recv data, 5 bytes (0x5) 0000: body. 00:39:53.249198 * abort upload 00:39:53.262578 <= Recv data, 0 bytes (0x0) 00:39:53.441638 * shutting down connection #1 === End of file trace51 === Start of file valgrind51 ==193961== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind51 test 0052...[HTTP follow redirect with ./-prefix] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind52 ../src/curl -q --output log/6/curl52.out --include --trace-ascii log/6/trace52 --trace-time http://127.0.0.1:38277/we/are/all/twits/52 -L > log/6/stdout52 2> log/6/stderr52 valgrind ERROR ==193989== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 52 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind52 ../src/curl -q --output log/6/curl52.out --include --trace-ascii log/6/trace52 --trace-time http://127.0.0.1:38277/we/are/all/twits/52 -L > log/6/stdout52 2> log/6/stderr52 === End of file commands.log === Start of file curl52.out HTTP/1.1 302 OK swsclose Location: ./520002 Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close HTTP/1.1 200 OK swsclose Location: this should be ignored Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close body === End of file curl52.out === Start of file http_server.log 00:39:02.893675 ====> Client connect 00:39:02.893831 accept_connection 3 returned 4 00:39:02.893907 accept_connection 3 returned 0 00:39:02.900768 Read 93 byCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind53 ../src/curl -q --output log/5/curl53.out --include --trace-ascii log/5/trace53 --trace-time 127.0.0.1:46263/want/53 -b log/5/injar53 -j > log/5/stdout53 2> log/5/stderr53 tes 00:39:02.900898 Process 93 bytes request 00:39:02.900987 Got request: GET /verifiedserver HTTP/1.1 00:39:02.901053 Are-we-friendly question received 00:39:02.901173 Wrote request (93 bytes) input to log/6/server.input 00:39:02.901266 Identifying ourselves as friends 00:39:02.901445 Response sent (57 bytes) and written to log/6/server.response 00:39:02.901507 special request received, no persistency 00:39:02.901564 ====> Client disconnect 0 00:39:49.962561 ====> Client connect 00:39:49.962726 accept_connection 3 returned 4 00:39:49.962807 accept_connection 3 returned 0 00:39:50.992935 Read 98 bytes 00:39:50.993160 Process 98 bytes request 00:39:50.993257 Got request: GET /we/are/all/twits/52 HTTP/1.1 00:39:50.993335 Serve test number 52 part 0 00:39:50.993613 - request found to be complete (52) 00:39:50.993909 Wrote request (98 bytes) input to log/6/server.input 00:39:50.994026 Send response test52 section 00:39:50.994255 connection close instruction "swsclose" found in response 00:39:50.994463 Response sent (99 bytes) and written to log/6/server.response 00:39:50.994540 instructed to close connection after server-reply 00:39:50.994604 ====> Client disconnect 0 00:39:53.428303 ====> Client connect 00:39:53.428446 accept_connection 3 returned 4 00:39:53.428525 accept_connection 3 returned 0 00:39:53.487244 Read 102 bytes 00:39:53.487462 Process 102 bytes request 00:39:53.487567 Got request: GET /we/are/all/twits/520002 HTTP/1.1 00:39:53.487642 Serve test number 52 part 2 00:39:53.487835 - request found to be complete (52) 00:39:53.488064 Wrote request (102 bytes) input to log/6/server.input 00:39:53.488164 Send response test52 section 00:39:53.488422 connection close instruction "swsclose" found in response 00:39:53.488664 Response sent (118 bytes) and written to log/6/server.response 00:39:53.488739 instructed to close connection after server-reply 00:39:53.488819 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 35588 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 52 === End of file server.cmd === Start of file server.input GET /we/are/all/twits/52 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* GET /we/are/all/twits/520002 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 302 OK swsclose Location: ./520002 Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close HTTP/1.1 200 OK swsclose Location: this should be ignored Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close body === End of file server.response === Start of file stderr52 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 5 0 5 0 0 0 0 --:--:-- 0:00:06 --:--:-- 11 === End of file stderr52 === Start of file trace52 00:39:50.013162 * Trying 127.0.0.1:38277... 00:39:50.931081 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 55512 00:39:51.047159 * using HTTP/1.x 00:39:51.420897 => Send header, 98 bytes (0x62) 0000: GET /we/are/all/twits/52 HTTP/1.1 0023: Host: 127.0.0.1:38277 003a: User-Agent: curl/8.17.0 0053: Accept: */* 0060: 00:39:51.802458 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 302 OK swsclose. 00:39:52.209968 <= Recv header, 19 bytes (0x13) 0000: Location: ./520002. 00:39:52.314048 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:39:52.387399 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:39:52.486867 <= Recv header, 1 bytes (0x1) 0000: . 00:39:52.763922 * Request completely sent off 00:39:53.055701 * shutting down connection #0 00:39:53.606740 * Issue another request to this URL: 'http://127.0.0.1:38277/we/are/all/twits/520002' 00:39:53.763920 * Hostname 127.0.0.1 was found in DNS cache 00:39:53.804048 * Trying 127.0.0.1:38277... 00:39:53.840534 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 52576 00:39:53.847119 * using HTTP/1.x 00:39:53.871646 => Send header, 102 bytes (0x66) 0000: GET /we/are/all/twits/520002 HTTP/1.1 0027: Host: 127.0.0.1:38277 003e: User-Agent: curl/8.17.0 0057: Accept: */* 0064: 00:39:53.909512 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 00:39:53.921030 <= Recv header, 33 bytes (0x21) 0000: Location: this should be ignored. 00:39:53.928323 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:39:53.937492 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:39:53.952468 <= Recv header, 1 bytes (0x1) 0000: . 00:39:53.978417 <= Recv data, 5 bytes (0x5) 0000: body. 00:39:54.084190 * abort upload 00:39:54.099776 <= Recv data, 0 bytes (0x0) 00:39:54.274053 * shutting down connection #1 === End of file trace52 === Start of file valgrind52 ==193989== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind52 test 0053...[HTTP, junk session cookies] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind53 ../src/curl -q --output log/5/curl53.out --include --trace-ascii log/5/trace53 --trace-time 127.0.0.1:46263/want/53 -b log/5/injar53 -j > log/5/stdout53 2> log/5/stderr53 valgrind ERROR ==194230== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 53 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind53 ../src/curl -q --output log/5/curl53.out --include --trace-ascii log/5/trace53 --trace-time 127.0.0.1:46263/want/53 -b log/5/injar53 -j > log/5/stdout53 2> log/5/stderr53 === End of file commands.log === Start of file curl53.out HTTP/1.1 200 OK Server: Microsoft-IIS/4.0 Date: Tue, 25 Sep 2001 19:37:44 GMT Content-Type: text/html Connection: close Content-Length: 21 This server says moo === End of file curl53.out === Start of file http_server.log 00:39:10.521522 ====> Client connect 00:39:10.521686 accept_connection 3 returned 4 00:39:10.521763 accept_connection 3 returned 0 00:39:10.527867 Read 93 bytes 00:39:10.527979 Process 93 bytes request 00:39:10.528078 Got request: GET /verifiedserver HTTP/1.1 00:39:10.528151 Are-we-friendly question received 00:39:10.528277 Wrote request (93 bytes) input to log/5/server.input 00:39:10.528378 Identifying ourselves as friends 00:39:10.528561 Response sent (57 bytes) and written to log/5/server.response 00:39:10.528623 special request received, no persistency 00:39:10.528686 ====> Client disconnect 0 00:39:58.471953 ====> Client connect 00:39:58.472094 accept_connection 3 returned 4 00:39:58.472174 accept_connection 3 returned 0 00:39:59.691555 Read 107 bytes 00:39:59.691762 Process 107 bytes request 00:39:59.691862 Got request: GET /want/53 HTTP/1.1 00:39:59.691936 Serve test number 53 part 0 00:39:59.692110 - request found to be complete (53) 00:39:59.692354 Wrote request (107 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind54 ../src/curl -q --output log/1/curl54.out --include --trace-ascii log/1/trace54 --trace-time http://127.0.0.1:40641/want/54 -L > log/1/stdout54 2> log/1/stderr54 bytes) input to log/5/server.input 00:39:59.692466 Send response test53 section 00:39:59.692834 Response sent (168 bytes) and written to log/5/server.response 00:39:59.692913 => persistent connection request ended, awaits new request 00:40:01.607179 Connection closed by client 00:40:01.607378 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 39272 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file injar53 127.0.0.1 FALSE / FALSE 22139150993 mooo indeed 127.0.0.1 FALSE / FALSE 0 moo1 indeed 127.0.0.1 FALSE / FALSE 1 moo2 indeed === End of file injar53 === Start of file server.cmd Testnum 53 === End of file server.cmd === Start of file server.input GET /want/53 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* Cookie: mooo=indeed === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Server: Microsoft-IIS/4.0 Date: Tue, 25 Sep 2001 19:37:44 GMT Content-Type: text/html Connection: close Content-Length: 21 This server says moo === End of file server.response === Start of file stderr53 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 5 100 21 100 21 0 0 4 0 0:00:05 0:00:05 --:--:-- 5 100 21 100 21 0 0 4 0 0:00:05 0:00:05 --:--:-- 5 === End of file stderr53 === Start of file trace53 00:39:58.459549 * Trying 127.0.0.1:46263... 00:39:59.503176 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 58174 00:39:59.644804 * using HTTP/1.x 00:40:00.112444 => Send header, 107 bytes (0x6b) 0000: GET /want/53 HTTP/1.1 0017: Host: 127.0.0.1:46263 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: Cookie: mooo=indeed 0069: 00:40:00.461175 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:40:00.783893 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/4.0 00:40:00.870628 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 25 Sep 2001 19:37:44 GMT 00:40:00.937177 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:40:00.979859 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:40:01.004790 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 21 00:40:01.089925 <= Recv header, 2 bytes (0x2) 0000: 00:40:01.146909 <= Recv data, 21 bytes (0x15) 0000: This server says moo. 00:40:01.262241 * we are done reading and this is set to close, stop send 00:40:01.292668 * abort upload 00:40:01.791626 * shutting down connection #0 === End of file trace53 === Start of file valgrind53 ==194230== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind53 test 0054...[HTTP with blank Location:] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind54 ../src/curl -q --output log/1/curl54.out --include --trace-ascii log/1/trace54 --trace-time http://127.0.0.1:40641/want/54 -L > log/1/stdout54 2> log/1/stderr54 valgrind ERROR ==194391== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 54 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind54 ../src/curl -q --output log/1/curl54.out --include --trace-ascii log/1/trace54 --trace-time http://127.0.0.1:40641/want/54 -L > log/1/stdout54 2> log/1/stderr54 === End of file commands.log === Start of file curl54.out HTTP/1.1 302 This is a weirdo text message swsclose Connection: close Location: This server reply is for testing === End of file curl54.out === Start of file http_server.log 00:39:15.412905 ====> Client connect 00:39:15.413067 accept_connection 3 returned 4 00:39:15.413140 accept_connection 3 returned 0 00:39:15.419599 Read 93 bytes 00:39:15.419694 Process 93 bytes request 00:39:15.419779 Got request: GET /verifiedserver HTTP/1.1 00:39:15.419840 Are-we-friendly question received 00:39:15.419950 Wrote request (93 bytes) input to log/1/server.input 00:39:15.420037 Identifying ourselves as friends 00:39:15.420209 Response sent (57 bytes) and written to log/1/server.response 00:39:15.420270 special request received, no persistency 00:39:15.420323 ====> Client disconnect 0 00:40:02.911987 ====> Client connect 00:40:02.912136 accept_connection 3 returned 4 00:40:02.912218 accept_connection 3 returned 0 00:40:03.869898 Read 86 bytes 00:40:03.870109 Process 86 bytes request 00:40:03.870207 Got request: GET /want/54 HTTP/1.1 00:40:03.870278 Serve test number 54 part 0 00:40:03.870448 - request found to be complete (54) 00:40:03.870694 Wrote request (86 bytes) input to log/1/server.input 00:40:03.870809 Send response test54 section 00:40:03.871005 connection close instruction "swsclose" found in response 00:40:03.871194 Response sent (115 bytes) and written to log/1/server.response 00:40:03.871263 instructed to close connection after server-reply 00:40:03.871323 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 34586 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 54 === End of file server.cmd === Start of file server.input GET /want/54 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 302 This is a weirdo text message swsclose Connection: close Location: This server reply is for testing === End of file server.response === Start of file stderr54 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 33 0 33 0 0 7 0 --:--:-- 0:00:04 --:--:-- 10 100 33 0 33 0 0 7 0 --:--:-- 0:00:04 --:--:-- 10 === End of file stderr54 === Start of file trace54 00:40:01.969062 * Trying 127.0.0.1:40641... 00:40:02.833666 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 32900 00:40:02.950034 * using HTTP/1.x 00:40:03.290622 => Send header, 86 bytes (0x56) 0000: GET /want/54 HTTP/1.1 0017: Host: 127.0.0.1:40641 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 00:40:03.624443 <= Recv header, 52 bytes (0x34) 0000: HTTP/1.1 302 This is a weirdo text message swsclose. 00:40:03.976460 <= Recv header, 18 bytes (0x12) 0000: Connection: clCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind55 ../src/curl -q --output log/2/curl55.out --include --trace-ascii log/2/trace55 --trace-time http://127.0.0.1:39863/55 -L > log/2/stdout55 2> log/2/stderr55 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind56 ../src/curl -q --output log/7/curl56.out --include --trace-ascii log/7/trace56 --trace-time -K - 127.0.0.1:34897/that.site.com/56 log/7/stdout56 2> log/7/stderr56 ose. 00:40:04.101809 <= Recv header, 11 bytes (0xb) 0000: Location: . 00:40:04.192317 <= Recv header, 1 bytes (0x1) 0000: . 00:40:04.246540 <= Recv data, 33 bytes (0x21) 0000: This server reply is for testing. 00:40:04.366102 * abort upload 00:40:04.388486 <= Recv data, 0 bytes (0x0) 00:40:04.870736 * shutting down connection #0 === End of file trace54 === Start of file valgrind54 ==194391== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind54 test 0055...[HTTP follow redirect with single slash in path] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind55 ../src/curl -q --output log/2/curl55.out --include --trace-ascii log/2/trace55 --trace-time http://127.0.0.1:39863/55 -L > log/2/stdout55 2> log/2/stderr55 valgrind ERROR ==194544== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 55 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind55 ../src/curl -q --output log/2/curl55.out --include --trace-ascii log/2/trace55 --trace-time http://127.0.0.1:39863/55 -L > log/2/stdout55 2> log/2/stderr55 === End of file commands.log === Start of file curl55.out HTTP/1.1 302 OK swsclose Location: 550002 Date: Tue, 09 Nov 2010 14:50:00 GMT Connection: close HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:50:00 GMT Connection: close body === End of file curl55.out === Start of file http_server.log 00:39:18.470993 ====> Client connect 00:39:18.471151 accept_connection 3 returned 4 00:39:18.471228 accept_connection 3 returned 0 00:39:18.477867 Read 93 bytes 00:39:18.477944 Process 93 bytes request 00:39:18.478029 Got request: GET /verifiedserver HTTP/1.1 00:39:18.478090 Are-we-friendly question received 00:39:18.478192 Wrote request (93 bytes) input to log/2/server.input 00:39:18.478272 Identifying ourselves as friends 00:39:18.478437 Response sent (57 bytes) and written to log/2/server.response 00:39:18.478496 special request received, no persistency 00:39:18.478548 ====> Client disconnect 0 00:40:06.127804 ====> Client connect 00:40:06.127949 accept_connection 3 returned 4 00:40:06.128025 accept_connection 3 returned 0 00:40:07.082363 Read 81 bytes 00:40:07.082585 Process 81 bytes request 00:40:07.082697 Got request: GET /55 HTTP/1.1 00:40:07.082780 Serve test number 55 part 0 00:40:07.082983 - request found to be complete (55) 00:40:07.083266 Wrote request (81 bytes) input to log/2/server.input 00:40:07.083386 Send response test55 section 00:40:07.083631 connection close instruction "swsclose" found in response 00:40:07.083820 Response sent (97 bytes) and written to log/2/server.response 00:40:07.083897 instructed to close connection after server-reply 00:40:07.083966 ====> Client disconnect 0 00:40:09.447169 ====> Client connect 00:40:09.447296 accept_connection 3 returned 4 00:40:09.447367 accept_connection 3 returned 0 00:40:09.505695 Read 85 bytes 00:40:09.505874 Process 85 bytes request 00:40:09.505981 Got request: GET /550002 HTTP/1.1 00:40:09.506050 Serve test number 55 part 2 00:40:09.506223 - request found to be complete (55) 00:40:09.506415 Wrote request (85 bytes) input to log/2/server.input 00:40:09.506499 Send response test55 section 00:40:09.506706 connection close instruction "swsclose" found in response 00:40:09.506872 Response sent (85 bytes) and written to log/2/server.response 00:40:09.506938 instructed to close connection after server-reply 00:40:09.506999 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 36788 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 55 === End of file server.cmd === Start of file server.input GET /55 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* GET /550002 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 302 OK swsclose Location: 550002 Date: Tue, 09 Nov 2010 14:50:00 GMT Connection: close HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:50:00 GMT Connection: close body === End of file server.response === Start of file stderr55 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 5 0 5 0 0 0 0 --:--:-- 0:00:05 --:--:-- 13 === End of file stderr55 === Start of file trace55 00:40:05.172690 * Trying 127.0.0.1:39863... 00:40:06.041126 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 47170 00:40:06.153203 * using HTTP/1.x 00:40:06.502892 => Send header, 81 bytes (0x51) 0000: GET /55 HTTP/1.1 0012: Host: 127.0.0.1:39863 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: 00:40:06.856984 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 302 OK swsclose. 00:40:07.275931 <= Recv header, 17 bytes (0x11) 0000: Location: 550002. 00:40:07.381755 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:50:00 GMT. 00:40:07.449280 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:40:07.532676 <= Recv header, 1 bytes (0x1) 0000: . 00:40:07.762662 * Request completely sent off 00:40:08.018666 * shutting down connection #0 00:40:08.631326 * Issue another request to this URL: 'http://127.0.0.1:39863/550002' 00:40:08.784423 * Hostname 127.0.0.1 was found in DNS cache 00:40:08.823080 * Trying 127.0.0.1:39863... 00:40:08.859456 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 47172 00:40:08.865760 * using HTTP/1.x 00:40:08.889260 => Send header, 85 bytes (0x55) 0000: GET /550002 HTTP/1.1 0016: Host: 127.0.0.1:39863 002d: User-Agent: curl/8.17.0 0046: Accept: */* 0053: 00:40:08.924251 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 00:40:08.931955 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:50:00 GMT. 00:40:08.940762 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:40:08.954583 <= Recv header, 1 bytes (0x1) 0000: . 00:40:08.978902 <= Recv data, 5 bytes (0x5) 0000: body. 00:40:09.077789 * abort upload 00:40:09.091554 <= Recv data, 0 bytes (0x0) 00:40:09.216808 * shutting down connection #1 === End of file trace55 === Start of file valgrind55 ==194544== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind55 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 62 in state 4 Runner 2 (id 185908) running test 63 in state 4 Runner 3 (id 185910) running test 59 in state 4 Runner 4 (id 185912) running test 58 in state 4 Runner 5 (id 185914) running test 61 in state 4 Runner 6 (id 185916) running test 60 in state 4 Runner 7 (id 185918) running test 56 in state 4 Runner 8 (id 185920) running test 57 in state 4 test 0056...[HTTP POST with *HUGE* request and chunked transfer-encoding] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind56 ../src/curl -q --output log/7/curl56.out --include --trace-ascii log/7/trace56 --trace-time -K - 127.0.0.1:34897/that.site.com/56 log/7/stdout56 2> log/7/stderr56 valgrind ERROR ==194703== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 56 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind56 ../src/curl -q --output log/7/curl56.out --include --trace-ascii log/7/trace56 --trace-time -K - 127.0.0.1:34897/that.site.com/56 log/7/stdout56 2> log/7/stderr56 === End of file commands.log === Start of file curl56.out HTTP/1.0 200 OK swsclose Funny-head: yesyes This is the proof it works === End of file curl56.out === Start of file http_server.log 00:39:20.749556 ====> Client connect 00:39:20.749722 accept_connection 3 returned 4 00:39:20.749800 accept_connection 3 returned 0 00:39:20.756011 Read 93 bytes 00:39:20.756095 Process 93 bytes request 00:39:20.756177 Got request: GET /verifiedserver HTTP/1.1 00:39:20.756237 Are-we-friendly question received 00:39:20.756341 Wrote request (93 bytes) input to log/7/server.input 00:39:20.756424 Identifying ourselves as friends 00:39:20.756593 Response sent (57 bytes) and written to log/7/server.response 00:39:20.756652 special request received, no persistency 00:39:20.756704 ====> Client disconnect 1 00:39:20.756776 Wrote request (13 bytes) input to log/7/server.input 00:40:11.976725 ====> Client connect 00:40:11.976877 accept_connection 3 returned 4 00:40:11.976967 accept_connection 3 returned 0 00:40:13.248654 Read 65482 bytes 00:40:13.249013 Process 65482 bytes request 00:40:13.249178 Got request: POST /that.site.com/56 HTTP/1.1 00:40:13.249270 Serve test number 56 part 0 00:40:13.251116 request not complete yet 00:40:13.251218 Read 54 bytes 00:40:13.251450 Process 65536 bytes request [CONTINUED] 00:40:13.251524 request not complete yet 00:40:20.145213 Read 34625 bytes 00:40:20.145635 Process 100161 bytes request [CONTINUED] 00:40:20.145699 - request found to be complete (56) 00:40:23.953705 Read 22 bytes 00:40:23.954111 Process 100183 bytes request [CONTINUED] 00:40:23.954183 - request found to be complete (56) 00:40:23.955917 Wrote request (100183 bytes) input to log/7/server.input 00:40:23.956013 Send response test56 section 00:40:23.957188 connection close instruction "swsclose" found in response 00:40:23.957328 Response sent (72 bytes) and written to log/7/server.response 00:40:23.957392 instructed to close connection after server-reply 00:40:23.957452 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 44610 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 56 === End of file server.cmd === Start of file server.input POST /that.site.com/56 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Accept: */* Transfer-Encoding: chunked Content-Type: application/x-www-form-urlencoded c we post this 0 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.0 200 OK swsclose Funny-head: yesyes This is the proof it works === End of file server.response === Start of file stderr56 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:15 --:--:-- 0 100 22 0 0 0 22 0 1 --:--:-- 0:00:16 --:--:-- 1 100 49 0 27 0 22 1 1 --:--:-- 0:00:17 --:--:-- 3 === End of file stderr56 === Start of file stdin-for-56 # data "we post this" # # enforce chunky post header "Transfer-Encoding: chunked" # # Set the user-agent using a short-option: -A "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" # === End of file stdin-for-56 === Start of file trace56 00:40:12.050637 * Trying 127.0.0.1:34897... 00:40:12.926900 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 49294 00:40:13.036948 * using HTTP/1.x 00:40:13.665932 => Send header, 65536 bytes (0x10000) 0000: POST /that.site.com/56 HTTP/1.1 0021: Host: 127.0.0.1:34897 0038: User-Agent: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0078: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 00b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 00f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0138: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0178: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0238: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0278: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 02b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 02f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0338: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0378: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 03b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 03f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0438: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0478: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 04b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 04f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0538: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0578: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 05b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 05f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0638: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0678: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 06b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 06f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0738: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0778: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 07b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 07f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0838: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0878: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 08b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 08f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0938: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0978: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 09b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 09f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0a38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0a78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0ab8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0af8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0b38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0b78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0bb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0bf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0c38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0c78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0cb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0cf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0d38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0d78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0db8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0df8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0e38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0e78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0eb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0ef8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0f38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0f78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0fb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0ff8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1038: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1078: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 10b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 10f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1138: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1178: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 11b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 11f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1238: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1278: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 12b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 12f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1338: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1378: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 13b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 13f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1438: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1478: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 14b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 14f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1538: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1578: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 15b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 15f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1638: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1678: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 16b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 16f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1738: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1778: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 17b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 17f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1838: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1878: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 18b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 18f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1938: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1978: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 19b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 19f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1a38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1a78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1ab8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1af8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1b38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1b78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1bb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1bf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1c38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1c78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1cb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1cf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1d38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1d78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1db8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1df8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1e38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1e78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1eb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1ef8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1f38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1f78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1fb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1ff8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2038: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2078: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 20b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 20f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2138: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2178: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 21b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 21f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2238: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2278: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 22b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 22f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2338: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2378: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 23b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 23f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2438: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2478: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 24b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 24f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2538: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2578: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 25b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 25f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2638: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2678: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 26b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 26f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2738: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2778: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 27b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 27f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2838: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2878: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2938: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2978: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 29b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 29f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2a38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2a78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2ab8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2af8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2b38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2b78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2bb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2bf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2c38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2c78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2cb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2cf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2d38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2d78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2db8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2df8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2e38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2e78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2eb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2ef8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2f38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2f78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2fb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2ff8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3038: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3078: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 30b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 30f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3138: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3178: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 31b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 31f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3238: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3278: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 32b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 32f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3338: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3378: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 33b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 33f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3438: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3478: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 34b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 34f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3538: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3578: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 35b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 35f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3638: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3678: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 36b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 36f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3738: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3778: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 37b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 37f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3838: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3878: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 38b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 38f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3938: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3978: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 39b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 39f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3a38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3a78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3ab8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3af8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3b38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3b78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3bb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3bf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3c38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3c78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3cb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3cf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3d38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3d78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3db8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3df8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3e38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3e78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3eb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3ef8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3f38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3f78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3fb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3ff8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4038: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4078: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 40b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 40f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4138: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4178: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 41b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 41f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4238: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4278: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 42b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 42f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4338: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4378: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 43b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 43f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4438: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4478: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 44b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 44f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4538: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4578: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 45b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 45f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4638: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4678: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 46b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 46f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4738: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4778: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 47b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 47f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4838: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4878: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 48b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 48f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4938: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4978: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 49b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 49f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4a38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4a78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4ab8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4af8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4b38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4b78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4bb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4bf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4c38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4c78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4cb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4cf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4d38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4d78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4db8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4df8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4e38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4e78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4eb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4ef8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4f38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4f78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4fb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4ff8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5038: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5078: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 50b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 50f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5138: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5178: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 51b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 51f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5238: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5278: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 52b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 52f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5338: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5378: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 53b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 53f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5438: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5478: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 54b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 54f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5538: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5578: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 55b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 55f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5638: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5678: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 56b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 56f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5738: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5778: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 57b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 57f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5838: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5878: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 58b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 58f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5938: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5978: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 59b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 59f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5a38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5a78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5ab8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5af8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5b38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5b78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5bb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5bf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5c38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5c78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5cb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5cf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5d38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5d78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5db8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5df8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5e38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5e78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5eb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5ef8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5f38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5f78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5fb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5ff8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6038: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6078: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 60b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 60f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6138: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6178: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 61b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 61f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6238: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6278: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 62b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 62f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6338: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6378: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 63b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 63f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6438: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6478: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 64b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 64f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6538: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6578: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 65b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 65f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6638: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6678: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 66b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 66f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6738: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6778: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 67b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 67f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6838: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6878: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 68b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 68f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6938: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6978: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 69b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 69f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6a38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6a78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6ab8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6af8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6b38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6b78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6bb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6bf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6c38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6c78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6cb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6cf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6d38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6d78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6db8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6df8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6e38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6e78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6eb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6ef8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6f38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6f78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6fb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6ff8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7038: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7078: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 70b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 70f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7138: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7178: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 71b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 71f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7238: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7278: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 72b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 72f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7338: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7378: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 73b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 73f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7438: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7478: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 74b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 74f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7538: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7578: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 75b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 75f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7638: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7678: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 76b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 76f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7738: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7778: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 77b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 77f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7838: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7878: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 78b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 78f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7938: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7978: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 79b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 79f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7a38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7a78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7ab8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7af8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7b38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7b78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7bb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7bf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7c38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7c78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7cb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7cf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7d38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7d78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7db8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7df8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7e38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7e78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7eb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7ef8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7f38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7f78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7fb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7ff8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8038: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8078: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 80b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 80f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8138: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8178: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 81b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 81f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8238: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8278: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 82b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 82f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8338: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8378: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 83b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 83f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8438: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8478: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 84b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 84f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8538: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8578: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 85b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 85f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8638: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8678: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 86b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 86f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8738: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8778: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 87b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 87f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8838: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8878: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 88b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 88f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8938: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8978: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 89b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 89f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8a38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8a78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8ab8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8af8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8b38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8b78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8bb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8bf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8c38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8c78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8cb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8cf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8d38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8d78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8db8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8df8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8e38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8e78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8eb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8ef8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8f38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8f78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8fb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8ff8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9038: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9078: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 90b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 90f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9138: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9178: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 91b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 91f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9238: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9278: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 92b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 92f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9338: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9378: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 93b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 93f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9438: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9478: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 94b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 94f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9538: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9578: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 95b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 95f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9638: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9678: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 96b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 96f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9738: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9778: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 97b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 97f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9838: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9878: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 98b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 98f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9938: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9978: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 99b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 99f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9a38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9a78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9ab8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9af8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9b38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9b78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9bb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9bf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9c38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9c78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9cb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9cf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9d38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9d78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9db8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9df8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9e38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9e78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9eb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9ef8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9f38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9f78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9fb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 9ff8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a038: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a078: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a0b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a0f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a138: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a178: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a1b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a1f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a238: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a278: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a2b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a2f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a338: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a378: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a3b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a3f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a438: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a478: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a4b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a4f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a538: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a578: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a5b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a5f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a638: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a678: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a6b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a6f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a738: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a778: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a7b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a7f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a838: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a878: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a8b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a8f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a938: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a978: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a9b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a9f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aa38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aa78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aab8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ab38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ab78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa abb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa abf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ac38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ac78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa acb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa acf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ad38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ad78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa adb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa adf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ae38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ae78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aeb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aef8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa af38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa af78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa afb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aff8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b038: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b078: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b0b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b0f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b138: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b178: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b1b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b1f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b238: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b278: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b2b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b2f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b338: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b378: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b3b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b3f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b438: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b478: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b4b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b4f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b538: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b578: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b5b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b5f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b638: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b678: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b6b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b6f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b738: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b778: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b7b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b7f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b838: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b878: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b8b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b8f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b938: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b978: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b9b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b9f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ba38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ba78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bab8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa baf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bb38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bb78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bc38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bc78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bcb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bcf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bd38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bd78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bdb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bdf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa be38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa be78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa beb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bef8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bf38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bf78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bfb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bff8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c038: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c078: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c0b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c0f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c138: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c178: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c1b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c1f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c238: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c278: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c2b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c2f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c338: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c378: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c3b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c3f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c438: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c478: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c4b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c4f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c538: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c578: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c5b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c5f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c638: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c678: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c6b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c6f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c738: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c778: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c7b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c7f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c838: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c878: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c8b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c8f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c938: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c978: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c9b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa c9f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ca38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ca78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cab8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa caf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cb38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cb78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cbb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cbf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cc38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cc78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ccb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ccf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cd38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cd78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cdb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cdf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ce38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ce78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ceb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cef8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cf38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cf78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cfb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cff8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d038: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d078: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d0b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d0f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d138: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d178: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d1b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d1f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d238: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d278: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d2b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d2f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d338: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d378: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d3b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d3f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d438: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d478: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d4b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d4f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d538: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d578: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d5b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d5f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d638: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d678: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d6b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d6f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d738: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d778: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d7b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d7f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d838: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d878: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d8b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d8f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d938: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d978: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d9b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d9f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa da38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa da78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dab8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa daf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa db38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa db78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dbb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dbf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dc38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dc78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dcb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dcf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dd38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dd78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ddb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ddf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa de38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa de78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa deb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa def8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa df38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa df78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dfb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dff8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e038: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e078: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e0b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e0f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e138: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e178: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e1b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e1f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e238: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e278: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e2b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e2f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e338: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e378: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e3b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e3f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e438: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e478: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e4b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e4f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e538: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e578: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e5b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e5f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e638: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e678: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e6b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e6f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e738: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e778: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e7b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e7f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e838: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e878: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e8b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e8f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e938: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e978: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e9b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e9f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ea38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ea78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa eab8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa eaf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa eb38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa eb78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ebb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ebf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ec38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ec78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ecb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ecf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ed38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ed78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa edb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa edf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ee38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ee78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa eeb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa eef8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ef38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ef78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa efb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa eff8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f038: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f078: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f0b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f0f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f138: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f178: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f1b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f1f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f238: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f278: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f2b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f2f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f338: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f378: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f3b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f3f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f438: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f478: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f4b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f4f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f538: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f578: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f638: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f678: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f6b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f6f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f738: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f778: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f7b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f7f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f838: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f878: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f8b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f8f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f938: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f978: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f9b8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f9f8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fa38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fa78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fab8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa faf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fb38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fb78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fbb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fbf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fc38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fc78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fcb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fcf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fd38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fd78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fdb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fdf8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fe38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fe78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa feb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fef8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ff38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ff78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ffb8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fff8: aaaaaaaa 00:40:20.531271 => Send header, 34625 bytes (0x8741) 0000: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0040: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0080: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 00c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0100: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0140: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0180: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0200: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0240: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0280: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 02c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0300: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0340: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0380: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 03c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0400: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0440: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0480: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 04c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0500: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0540: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0580: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 05c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0600: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0640: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0680: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 06c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0700: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0740: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0780: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 07c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0800: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0840: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0880: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 08c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0900: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0940: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0980: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 09c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0a00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0a40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0a80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0ac0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0b00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0b40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0b80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0bc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0c00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0c40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0c80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0cc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0d00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0d40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0d80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0dc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0e00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0e40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0e80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0ec0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0f00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0f40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0f80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0fc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1000: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1040: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1080: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 10c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1100: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1140: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1180: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 11c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1200: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1240: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1280: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 12c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1300: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1340: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1380: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 13c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1400: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1440: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1480: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 14c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1500: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1540: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1580: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 15c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1600: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1640: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1680: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 16c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1700: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1740: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1780: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 17c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1800: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1840: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1880: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 18c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1900: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1940: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1980: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 19c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1a00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1a40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1a80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1ac0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1b00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1b40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1b80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1bc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1c00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1c40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1c80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1cc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1d00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1d40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1d80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1dc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1e00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1e40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1e80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1ec0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1f00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1f40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1f80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1fc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2000: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2040: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2080: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 20c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2100: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2140: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2180: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 21c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2200: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2240: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2280: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 22c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2300: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2340: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2380: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 23c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2400: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2440: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2480: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 24c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2500: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2540: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2580: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 25c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2600: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2640: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2680: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 26c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2700: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2740: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2780: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 27c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2800: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2840: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2880: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2900: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2940: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2980: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 29c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2a00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2a40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa === File too long: 191 lines omitted here 5a40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5a80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5ac0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5b00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5b40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5b80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5bc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5c00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5c40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5c80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5cc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5d00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5d40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5d80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5dc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5e00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5e40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5e80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5ec0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5f00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5f40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5f80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5fc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6000: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6040: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6080: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 60c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6100: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6140: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6180: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 61c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6200: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6240: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6280: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 62c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6300: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6340: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6380: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 63c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6400: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6440: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6480: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 64c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6500: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6540: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6580: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 65c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6600: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6640: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6680: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 66c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6700: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6740: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6780: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 67c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6800: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6840: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6880: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 68c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6900: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6940: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6980: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 69c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6a00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6a40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6a80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6ac0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6b00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6b40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6b80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6bc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6c00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6c40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6c80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6cc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6d00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6d40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6d80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6dc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6e00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6e40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6e80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6ec0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6f00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6f40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6f80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6fc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7000: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7040: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7080: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 70c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7100: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7140: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7180: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 71c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7200: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7240: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7280: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 72c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7300: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7340: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7380: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 73c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7400: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7440: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7480: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 74c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7500: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7540: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7580: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 75c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7600: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7640: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7680: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 76c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7700: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7740: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7780: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 77c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7800: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7840: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7880: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 78c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7900: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7940: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7980: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 79c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7a00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7a40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7a80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7ac0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7b00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7b40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7b80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7bc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7c00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7c40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7c80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7cc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7d00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7d40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7d80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7dc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7e00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7e40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7e80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7ec0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7f00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7f40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7f80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 7fc0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8000: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8040: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8080: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 80c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8100: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8140: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8180: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 81c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8200: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8240: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8280: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 82c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8300: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8340: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8380: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 83c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind57 ../src/curl -q --include --trace-ascii log/8/trace57 --trace-time -w "%{content_type}\n" http://127.0.0.1:39461/57 -o log/8/out57 > log/8/stdout57 2> log/8/stderr57 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind58 ../src/curl -q --output log/4/curl58.out --include --trace-ascii log/4/trace58 --trace-time http://127.0.0.1:42621/we/want/ -T log/4/58te[]st.txt -g > log/4/stdout58 2> log/4/stderr58 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8400: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8440: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8480: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 84c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8500: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8540: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8580: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 85c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8600: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8640: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 8680: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 86c0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 86e5: Accept: */* 86f2: Transfer-Encoding: chunked 870e: Content-Type: application/x-www-form-urlencoded 873f: 00:40:24.351327 => Send data, 22 bytes (0x16) 0000: c 0003: we post this 0011: 0 0014: 00:40:24.392334 * upload completely sent off: 22 bytes 00:40:24.617703 * HTTP 1.0, assume close after body 00:40:24.638097 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.0 200 OK swsclose. 00:40:24.925042 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:40:25.080884 <= Recv header, 1 bytes (0x1) 0000: . 00:40:25.140497 <= Recv data, 27 bytes (0x1b) 0000: This is the proof it works. 00:40:25.241711 <= Recv data, 0 bytes (0x0) 00:40:25.670173 * shutting down connection #0 === End of file trace56 === Start of file valgrind56 ==194703== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind56 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 62 in state 4 Runner 2 (id 185908) running test 63 in state 4 Runner 3 (id 185910) running test 59 in state 4 Runner 4 (id 185912) running test 58 in state 4 Runner 5 (id 185914) running test 61 in state 4 Runner 6 (id 185916) running test 60 in state 4 Runner 7 (id 185918) running test 64 in state 4 Runner 8 (id 185920) running test 57 in state 4 test 0057...[HTTP content-type with spaces in] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind57 ../src/curl -q --include --trace-ascii log/8/trace57 --trace-time -w "%{content_type}\n" http://127.0.0.1:39461/57 -o log/8/out57 > log/8/stdout57 2> log/8/stderr57 valgrind ERROR ==194922== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 57 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind57 ../src/curl -q --include --trace-ascii log/8/trace57 --trace-time -w "%{content_type}\n" http://127.0.0.1:39461/57 -o log/8/out57 > log/8/stdout57 2> log/8/stderr57 === End of file commands.log === Start of file http_server.log 00:39:50.368129 ====> Client connect 00:39:50.368286 accept_connection 3 returned 4 00:39:50.368356 accept_connection 3 returned 0 00:39:50.375229 Read 93 bytes 00:39:50.375350 Process 93 bytes request 00:39:50.375430 Got request: GET /verifiedserver HTTP/1.1 00:39:50.375489 Are-we-friendly question received 00:39:50.375603 Wrote request (93 bytes) input to log/8/server.input 00:39:50.375688 Identifying ourselves as friends 00:39:50.375854 Response sent (57 bytes) and written to log/8/server.response 00:39:50.375912 special request received, no persistency 00:39:50.375976 ====> Client disconnect 0 00:40:37.841535 ====> Client connect 00:40:37.841676 accept_connection 3 returned 4 00:40:37.841753 accept_connection 3 returned 0 00:40:38.835066 Read 81 bytes 00:40:38.835266 Process 81 bytes request 00:40:38.835360 Got request: GET /57 HTTP/1.1 00:40:38.835431 Serve test number 57 part 0 00:40:38.835595 - request found to be complete (57) 00:40:38.835833 Wrote request (81 bytes) input to log/8/server.input 00:40:38.835958 Send response test57 section 00:40:38.836186 connection close instruction "swsclose" found in response 00:40:38.836356 Response sent (92 bytes) and written to log/8/server.response 00:40:38.836422 instructed to close connection after server-reply 00:40:38.836484 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 36432 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file out57 HTTP/1.1 200 OK swsclose Funny-head: yesyes Content-Type: text/html; charset=ISO-8859-4 === End of file out57 === Start of file server.cmd Testnum 57 === End of file server.cmd === Start of file server.input GET /57 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK swsclose Funny-head: yesyes Content-Type: text/html; charset=ISO-8859-4 === End of file server.response === Start of file stderr57 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr57 === Start of file stdout57 text/html; charset=ISO-8859-4 === End of file stdout57 === Start of file trace57 00:40:37.900152 * Trying 127.0.0.1:39461... 00:40:38.783692 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 48316 00:40:38.914107 * using HTTP/1.x 00:40:39.255166 => Send header, 81 bytes (0x51) 0000: GET /57 HTTP/1.1 0012: Host: 127.0.0.1:39461 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: 00:40:39.611826 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 00:40:39.916642 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:40:40.064449 <= Recv header, 47 bytes (0x2f) 0000: Content-Type: text/html; charset=ISO-8859-4 . 00:40:40.118190 * no chunk, no close, no size. Assume close to signal end 00:40:40.179532 <= Recv header, 1 bytes (0x1) 0000: . 00:40:40.289631 * abort upload 00:40:40.327095 <= Recv data, 0 bytes (0x0) 00:40:40.868805 * shutting down connection #0 === End of file trace57 === Start of file valgrind57 ==194922== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind57 test 0058...[HTTP PUT from file with weird letters] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind58 ../src/curl -q --output log/4/curl58.out --include --trace-ascii log/4/trace58 --trace-time http://127.0.0.1:42621/we/want/ -T log/4/58te[]st.txt -g > log/4/stdout58 2> log/4/stderr58 valgrind ERROR ==195078== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 58 === Start of file 58te[]st.txt a few bytes === End of file 58te[]st.txt === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --supCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind59 ../src/curl -q --output log/3/curl59.out --include --trace-ascii log/3/trace59 --trace-time "http://127.0.0.1:46853?mooo/59" > log/3/stdout59 2> log/3/stderr59 pressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind58 ../src/curl -q --output log/4/curl58.out --include --trace-ascii log/4/trace58 --trace-time http://127.0.0.1:42621/we/want/ -T log/4/58te[]st.txt -g > log/4/stdout58 2> log/4/stderr58 === End of file commands.log === Start of file curl58.out HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file curl58.out === Start of file http_server.log 00:39:55.277820 ====> Client connect 00:39:55.277985 accept_connection 3 returned 4 00:39:55.278064 accept_connection 3 returned 0 00:39:55.292644 Read 93 bytes 00:39:55.292805 Process 93 bytes request 00:39:55.292904 Got request: GET /verifiedserver HTTP/1.1 00:39:55.292981 Are-we-friendly question received 00:39:55.293127 Wrote request (93 bytes) input to log/4/server.input 00:39:55.293235 Identifying ourselves as friends 00:39:55.293452 Response sent (57 bytes) and written to log/4/server.response 00:39:55.293522 special request received, no persistency 00:39:55.293587 ====> Client disconnect 0 00:40:42.892269 ====> Client connect 00:40:42.892410 accept_connection 3 returned 4 00:40:42.892490 accept_connection 3 returned 0 00:40:44.069837 Read 135 bytes 00:40:44.070031 Process 135 bytes request 00:40:44.070121 Got request: PUT /we/want/58te%5b%5dst.txt HTTP/1.1 00:40:44.070220 Serve test number 58 part 0 00:40:44.070379 - request found to be complete (58) 00:40:44.070707 Found Content-Length: 12 in the request 00:40:44.070932 Wrote request (135 bytes) input to log/4/server.input 00:40:44.071031 Send response test58 section 00:40:44.071219 connection close instruction "swsclose" found in response 00:40:44.071388 Response sent (98 bytes) and written to log/4/server.response 00:40:44.071451 instructed to close connection after server-reply 00:40:44.071510 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 46396 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 58 === End of file server.cmd === Start of file server.input PUT /we/want/58te%5b%5dst.txt HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* Content-Length: 12 a few bytes === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file server.response === Start of file stderr58 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 12 0 0 100 12 0 3 0:00:04 0:00:03 0:00:01 5 100 23 0 11 100 12 2 2 0:00:06 0:00:04 0:00:02 6 100 23 0 11 100 12 2 2 0:00:06 0:00:04 0:00:02 6 === End of file stderr58 === Start of file trace58 00:40:41.954569 * Trying 127.0.0.1:42621... 00:40:42.840717 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 47536 00:40:42.961267 * using HTTP/1.x 00:40:43.491061 => Send header, 123 bytes (0x7b) 0000: PUT /we/want/58te%5b%5dst.txt HTTP/1.1 0028: Host: 127.0.0.1:42621 003f: User-Agent: curl/8.17.0 0058: Accept: */* 0065: Content-Length: 12 0079: 00:40:43.595687 => Send data, 12 bytes (0xc) 0000: a few bytes. 00:40:43.672542 * upload completely sent off: 12 bytes 00:40:43.943490 * HTTP 1.0, assume close after body 00:40:43.965195 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.0 200 OK swsclose. 00:40:44.279850 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:40:44.381030 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:40:44.471844 <= Recv header, 1 bytes (0x1) 0000: . 00:40:44.534228 <= Recv data, 11 bytes (0xb) 0000: blablabla.. 00:40:44.643206 <= Recv data, 0 bytes (0x0) 00:40:45.127259 * shutting down connection #0 === End of file trace58 === Start of file valgrind58 ==195078== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind58 test 0059...[HTTP URL with slash but with "parameter"] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind59 ../src/curl -q --output log/3/curl59.out --include --trace-ascii log/3/trace59 --trace-time "http://127.0.0.1:46853?mooo/59" > log/3/stdout59 2> log/3/stderr59 valgrind ERROR ==195264== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 59 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind59 ../src/curl -q --output log/3/curl59.out --include --trace-ascii log/3/trace59 --trace-time "http://127.0.0.1:46853?mooo/59" > log/3/stdout59 2> log/3/stderr59 === End of file commands.log === Start of file curl59.out HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake hej === End of file curl59.out === Start of file http_server.log 00:39:56.979944 ====> Client connect 00:39:56.980107 accept_connection 3 returned 4 00:39:56.980188 accept_connection 3 returned 0 00:39:56.986194 Read 93 bytes 00:39:56.986320 Process 93 bytes request 00:39:56.986411 Got request: GET /verifiedserver HTTP/1.1 00:39:56.986475 Are-we-friendly question received 00:39:56.986599 Wrote request (93 bytes) input to log/3/server.input 00:39:56.986694 Identifying ourselves as friends 00:39:56.986879 Response sent (57 bytes) and written to log/3/server.response 00:39:56.986942 special request received, no persistency 00:39:56.986998 ====> Client disconnect 0 00:40:44.050056 ====> Client connect 00:40:44.050205 accept_connection 3 returned 4 00:40:44.050287 accept_connection 3 returned 0 00:40:45.142326 Read 87 bytes 00:40:45.142577 Process 87 bytes request 00:40:45.142688 Got request: GET /?mooo/59 HTTP/1.1 00:40:45.142770 Serve test number 59 part 0 00:40:45.142981 - request found to be complete (59) 00:40:45.143226 Wrote request (87 bytes) input to log/3/server.input 00:40:45.143337 Send response test59 section 00:40:45.143540 connection close instruction "swsclose" found in response 00:40:45.143730 Response sent (91 bytes) and written to log/3/server.response 00:40:45.143797 instructed to close connection after server-reply 00:40:45.143858 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 50916 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 59 === End of file server.cmd === Start of file server.input GET /?mooo/59 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake hej === End CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind60 ../src/curl -q --output log/6/curl60.out --include --trace-ascii log/6/trace60 --trace-time http://127.0.0.1:38277/bzz/60 -T - -H "Content-Length: 1" log/6/stdout60 2> log/6/stderr60 of file server.response === Start of file stderr59 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 === End of file stderr59 === Start of file trace59 00:40:44.121077 * Trying 127.0.0.1:46853... 00:40:45.059609 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 53454 00:40:45.193893 * using HTTP/1.x 00:40:45.562459 => Send header, 87 bytes (0x57) 0000: GET /?mooo/59 HTTP/1.1 0018: Host: 127.0.0.1:46853 002f: User-Agent: curl/8.17.0 0048: Accept: */* 0055: 00:40:45.916628 * HTTP 1.0, assume close after body 00:40:45.939361 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.0 200 OK swsclose. 00:40:46.260049 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:40:46.369477 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:40:46.489781 <= Recv header, 1 bytes (0x1) 0000: . 00:40:46.549521 <= Recv data, 4 bytes (0x4) 0000: hej. 00:40:46.679489 * abort upload 00:40:46.706099 <= Recv data, 0 bytes (0x0) 00:40:47.202255 * shutting down connection #0 === End of file trace59 === Start of file valgrind59 ==195264== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind59 test 0060...[HTTP PUT from stdin with wrong content-length] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind60 ../src/curl -q --output log/6/curl60.out --include --trace-ascii log/6/trace60 --trace-time http://127.0.0.1:38277/bzz/60 -T - -H "Content-Length: 1" log/6/stdout60 2> log/6/stderr60 valgrind ERROR ==195348== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 60 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind60 ../src/curl -q --output log/6/curl60.out --include --trace-ascii log/6/trace60 --trace-time http://127.0.0.1:38277/bzz/60 -T - -H "Content-Length: 1" log/6/stdout60 2> log/6/stderr60 === End of file commands.log === Start of file curl60.out HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file curl60.out === Start of file http_server.log 00:39:57.800263 ====> Client connect 00:39:57.800426 accept_connection 3 returned 4 00:39:57.800515 accept_connection 3 returned 0 00:39:57.809996 Read 93 bytes 00:39:57.810162 Process 93 bytes request 00:39:57.810254 Got request: GET /verifiedserver HTTP/1.1 00:39:57.810324 Are-we-friendly question received 00:39:57.810466 Wrote request (93 bytes) input to log/6/server.input 00:39:57.810569 Identifying ourselves as friends 00:39:57.810775 Response sent (57 bytes) and written to log/6/server.response 00:39:57.810834 special request received, no persistency 00:39:57.810890 ====> Client disconnect 0 00:40:45.005029 ====> Client connect 00:40:45.005166 accept_connection 3 returned 4 00:40:45.005243 accept_connection 3 returned 0 00:40:46.316130 Read 154 bytes 00:40:46.316335 Process 154 bytes request 00:40:46.316443 Got request: PUT /bzz/60 HTTP/1.1 00:40:46.316615 Serve test number 60 part 0 00:40:46.316800 - request found to be complete (60) 00:40:47.913193 Read 25 bytes 00:40:47.913445 Process 179 bytes request [CONTINUED] 00:40:47.913524 - request found to be complete (60) 00:40:48.047265 Read 5 bytes 00:40:48.047476 Process 184 bytes request [CONTINUED] 00:40:48.047552 - request found to be complete (60) 00:40:48.047853 Wrote request (184 bytes) input to log/6/server.input 00:40:48.047964 Send response test60 section 00:40:48.048181 connection close instruction "swsclose" found in response 00:40:48.048377 Response sent (102 bytes) and written to log/6/server.response 00:40:48.048446 instructed to close connection after server-reply 00:40:48.048507 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 52590 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 60 === End of file server.cmd === Start of file server.input PUT /bzz/60 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* Transfer-Encoding: chunked Content-Length: 1 Expect: 100-continue 13 more than one byte 0 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file server.response === Start of file stderr60 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 25 0 0 0 25 0 4 --:--:-- 0:00:05 --:--:-- 6 100 30 0 0 0 30 0 5 --:--:-- 0:00:05 --:--:-- 7 100 41 0 11 0 30 1 4 --:--:-- 0:00:06 --:--:-- 8 100 41 0 11 0 30 1 4 --:--:-- 0:00:06 --:--:-- 10 === End of file stderr60 === Start of file stdin-for-60 more than one byte === End of file stdin-for-60 === Start of file trace60 00:40:45.066903 * Trying 127.0.0.1:38277... 00:40:45.972746 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 48268 00:40:46.093240 * using HTTP/1.x 00:40:46.735375 => Send header, 154 bytes (0x9a) 0000: PUT /bzz/60 HTTP/1.1 0016: Host: 127.0.0.1:38277 002d: User-Agent: curl/8.17.0 0046: Accept: */* 0053: Transfer-Encoding: chunked 006f: Content-Length: 1 0082: Expect: 100-continue 0098: 00:40:48.177855 * Done waiting for 100-continue 00:40:48.304188 => Send data, 25 bytes (0x19) 0000: 13 0004: more than one byte. 00:40:48.435562 => Send data, 5 bytes (0x5) 0000: 0 0003: 00:40:48.476841 * upload completely sent off: 30 bytes 00:40:48.617103 * HTTP 1.0, assume close after body 00:40:48.639851 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.0 200 OK swsclose 00:40:48.939970 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:40:49.054652 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 00:40:49.148891 <= Recv header, 2 bytes (0x2) 0000: 00:40:49.207519 <= Recv data, 11 bytes (0xb) 0000: blablabla.. 00:40:49.324116 <= Recv data, 0 bytes (0x0) 00:40:49.768650 * shutting down connection #0 === End of file trace60 === Start of file valgrind60 ==195348== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind60 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 62 in state 4 Runner 2 (id 185908) running test 63 in state 4 Runner 3 (id 185910) running test 67 in state 4 Runner 4 (id 185912) running test 66 in state 4 Runner 5 (id 18591CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind62 ../src/curl -q --output log/1/curl62.out --include --trace-ascii log/1/trace62 --trace-time http://127.0.0.1:40641/we/want/62 http://127.0.0.1:40641/we/want/62?hoge=fuga -b log/1/jar62.txt -H "Host: www.host.foo.com" > log/1/stdout62 2> log/1/stderr62 4) running test 61 in state 4 Runner 6 (id 185916) running test 68 in state 4 Runner 7 (id 185918) running test 64 in state 4 Runner 8 (id 185920) running test 65 in state 4 test 0062...[HTTP, send cookies when using custom Host:] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind62 ../src/curl -q --output log/1/curl62.out --include --trace-ascii log/1/trace62 --trace-time http://127.0.0.1:40641/we/want/62 http://127.0.0.1:40641/we/want/62?hoge=fuga -b log/1/jar62.txt -H "Host: www.host.foo.com" > log/1/stdout62 2> log/1/stderr62 valgrind ERROR ==195710== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 62 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind62 ../src/curl -q --output log/1/curl62.out --include --trace-ascii log/1/trace62 --trace-time http://127.0.0.1:40641/we/want/62 http://127.0.0.1:40641/we/want/62?hoge=fuga -b log/1/jar62.txt -H "Host: www.host.foo.com" > log/1/stdout62 2> log/1/stderr62 === End of file commands.log === Start of file curl62.out HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Type: text/html boo === End of file curl62.out === Start of file http_server.log 00:40:09.523241 ====> Client connect 00:40:09.523428 accept_connection 3 returned 4 00:40:09.523513 accept_connection 3 returned 0 00:40:09.531916 Read 93 bytes 00:40:09.532003 Process 93 bytes request 00:40:09.532090 Got request: GET /verifiedserver HTTP/1.1 00:40:09.532152 Are-we-friendly question received 00:40:09.532258 Wrote request (93 bytes) input to log/1/server.input 00:40:09.532345 Identifying ourselves as friends 00:40:09.532516 Response sent (57 bytes) and written to log/1/server.response 00:40:09.532586 special request received, no persistency 00:40:09.532646 ====> Client disconnect 0 00:40:57.911575 ====> Client connect 00:40:57.911724 accept_connection 3 returned 4 00:40:57.911805 accept_connection 3 returned 0 00:40:59.192547 Read 119 bytes 00:40:59.192741 Process 119 bytes request 00:40:59.192842 Got request: GET /we/want/62 HTTP/1.1 00:40:59.192919 Serve test number 62 part 0 00:40:59.193096 - request found to be complete (62) 00:40:59.193447 Wrote request (119 bytes) input to log/1/server.input 00:40:59.193558 Send response test62 section 00:40:59.193777 connection close instruction "swsclose" found in response 00:40:59.193926 Response sent (94 bytes) and written to log/1/server.response 00:40:59.193996 instructed to close connection after server-reply 00:40:59.194059 ====> Client disconnect 0 00:41:01.968728 ====> Client connect 00:41:01.968869 accept_connection 3 returned 4 00:41:01.968951 accept_connection 3 returned 0 00:41:02.073131 Read 129 bytes 00:41:02.073323 Process 129 bytes request 00:41:02.073423 Got request: GET /we/want/62?hoge=fuga HTTP/1.1 00:41:02.073501 Serve test number 62 part 0 00:41:02.073690 - request found to be complete (62) 00:41:02.073900 Wrote request (129 bytes) input to log/1/server.input 00:41:02.073995 Send response test62 section 00:41:02.074211 connection close instruction "swsclose" found in response 00:41:02.074362 Response sent (94 bytes) and written to log/1/server.response 00:41:02.074430 instructed to close connection after server-reply 00:41:02.074492 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 38136 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file jar62.txt # Netscape HTTP Cookie File # https://curl.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. #HttpOnly_.foo.com TRUE /we/want/ FALSE 22147483647 test yes .host.foo.com TRUE /we/want/ FALSE 22147483647 test2 yes .fake.host.foo.com TRUE /we/want/ FALSE 22147483647 test4 yes .foo.com TRUE /moo TRUE 0 test3 maybe === End of file jar62.txt === Start of file server.cmd Testnum 62 === End of file server.cmd === Start of file server.input GET /we/want/62 HTTP/1.1 Host: www.host.foo.com User-Agent: curl/8.17.0 Accept: */* Cookie: test2=yes; test=yes GET /we/want/62?hoge=fuga HTTP/1.1 Host: www.host.foo.com User-Agent: curl/8.17.0 Accept: */* Cookie: test2=yes; test=yes === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Type: text/html boo HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Type: text/html boo === End of file server.response === Start of file stderr62 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 4 0 4 0 0 10 0 --:--:-- --:--:-- --:--:-- 15 === End of file stderr62 === Start of file stdout62 HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Type: text/html boo === End of file stdout62 === Start of file trace62 00:40:56.982030 * Trying 127.0.0.1:40641... 00:40:57.863508 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 40958 00:40:57.979946 * using HTTP/1.x 00:40:58.613199 => Send header, 119 bytes (0x77) 0000: GET /we/want/62 HTTP/1.1 001a: Host: www.host.foo.com 0032: User-Agent: curl/8.17.0 004b: Accept: */* 0058: Cookie: test2=yes; test=yes 0075: 00:40:58.944876 * HTTP 1.0, assume close after body 00:40:58.967346 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.0 200 OK swsclose 00:40:59.261886 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:40:59.383253 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:40:59.480474 <= Recv header, 2 bytes (0x2) 0000: 00:40:59.535470 <= Recv data, 4 bytes (0x4) 0000: boo. 00:40:59.657416 * abort upload 00:40:59.680378 <= Recv data, 0 bytes (0x0) 00:41:00.149538 * shutting down connection #0 00:41:01.289411 * Hostname 127.0.0.1 was found in DNS cache 00:41:01.344405 * Trying 127.0.0.1:40641... 00:41:01.378217 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 40970 00:41:01.384768 * using HTTP/1.x 00:41:01.458339 => Send header, 129 bytes (0x81) 0000: GET /we/want/62?hoge=fuga HTTP/1.1 0024: Host: www.host.foo.com 003c: User-Agent: curl/8.17.0 0055: Accept: */* 0062: Cookie: test2=yes; test=yes 007f: 00:41:01.501731 * HTTP 1.0, assume close after body 00:41:01.503279 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.0 200 OK swsclose 00:41:01.514692 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:41:01.525928 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:41:01.534352 <= Recv header, 2 bytes (0x2) 0000: 00CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind63 ../src/curl -q --output log/2/curl63.out --include --trace-ascii log/2/trace63 --trace-time http://we.want.that.site.com/63 > log/2/stdout63 2> log/2/stderr63 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind61 ../src/curl -q --output log/5/curl61.out --include --trace-ascii log/5/trace61 --trace-time http://127.0.0.1:46263/we/want/61 -c log/5/jar61.txt -H "Host: www.host.foo.com" > log/5/stdout61 2> log/5/stderr61 :41:01.538841 <= Recv data, 4 bytes (0x4) 0000: boo. 00:41:01.550766 * abort upload 00:41:01.552585 <= Recv data, 0 bytes (0x0) 00:41:01.589347 * shutting down connection #1 === End of file trace62 === Start of file valgrind62 ==195710== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind62 setenv http_proxy = http://fake:user@127.0.0.1:39863/ test 0063...[HTTP with proxy authorization set in environment] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind63 ../src/curl -q --output log/2/curl63.out --include --trace-ascii log/2/trace63 --trace-time http://we.want.that.site.com/63 > log/2/stdout63 2> log/2/stderr63 valgrind ERROR ==195880== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 63 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind63 ../src/curl -q --output log/2/curl63.out --include --trace-ascii log/2/trace63 --trace-time http://we.want.that.site.com/63 > log/2/stdout63 2> log/2/stderr63 === End of file commands.log === Start of file curl63.out HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Type: text/html Content-Length: 26 the content would go here === End of file curl63.out === Start of file http_server.log 00:40:13.474142 ====> Client connect 00:40:13.474305 accept_connection 3 returned 4 00:40:13.474384 accept_connection 3 returned 0 00:40:13.481084 Read 93 bytes 00:40:13.481174 Process 93 bytes request 00:40:13.481267 Got request: GET /verifiedserver HTTP/1.1 00:40:13.481334 Are-we-friendly question received 00:40:13.481446 Wrote request (93 bytes) input to log/2/server.input 00:40:13.481538 Identifying ourselves as friends 00:40:13.481720 Response sent (57 bytes) and written to log/2/server.response 00:40:13.481782 special request received, no persistency 00:40:13.481838 ====> Client disconnect 0 00:41:01.210668 ====> Client connect 00:41:01.210817 accept_connection 3 returned 4 00:41:01.210899 accept_connection 3 returned 0 00:41:02.339809 Read 186 bytes 00:41:02.340006 Process 186 bytes request 00:41:02.340102 Got request: GET http://we.want.that.site.com/63 HTTP/1.1 00:41:02.340268 Serve test number 63 part 0 00:41:02.340449 - request found to be complete (63) 00:41:02.340861 Wrote request (186 bytes) input to log/2/server.input 00:41:02.340974 Send response test63 section 00:41:02.341177 connection close instruction "swsclose" found in response 00:41:02.341333 Response sent (136 bytes) and written to log/2/server.response 00:41:02.341401 instructed to close connection after server-reply 00:41:02.341463 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 38954 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 63 === End of file server.cmd === Start of file server.input GET http://we.want.that.site.com/63 HTTP/1.1 Host: we.want.that.site.com Proxy-Authorization: Basic ZmFrZTp1c2Vy User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Type: text/html Content-Length: 26 the content would go here === End of file server.response === Start of file stderr63 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 9 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 8 === End of file stderr63 === Start of file trace63 00:40:58.685639 * Uses proxy env variable http_proxy == 'http://fake:user@127.0.0.1:39863/' 00:41:00.495478 * Trying 127.0.0.1:39863... 00:41:01.143725 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 58702 00:41:01.252088 * using HTTP/1.x 00:41:01.383108 * Proxy auth using Basic with user 'fake' 00:41:01.760127 => Send header, 186 bytes (0xba) 0000: GET http://we.want.that.site.com/63 HTTP/1.1 002e: Host: we.want.that.site.com 004b: Proxy-Authorization: Basic ZmFrZTp1c2Vy 0074: User-Agent: curl/8.17.0 008d: Accept: */* 009a: Proxy-Connection: Keep-Alive 00b8: 00:41:02.111742 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 200 OK swsclose 00:41:02.404169 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:41:02.537569 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:41:02.572610 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 00:41:02.653035 <= Recv header, 2 bytes (0x2) 0000: 00:41:02.708616 <= Recv data, 26 bytes (0x1a) 0000: the content would go here. 00:41:03.248099 * Connection #0 to host 127.0.0.1:39863 left intact === End of file trace63 === Start of file valgrind63 ==195880== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind63 setenv TZ = GMT test 0061...[HTTP with various cookies and custom Host:] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind61 ../src/curl -q --output log/5/curl61.out --include --trace-ascii log/5/trace61 --trace-time http://127.0.0.1:46263/we/want/61 -c log/5/jar61.txt -H "Host: www.host.foo.com" > log/5/stdout61 2> log/5/stderr61 valgrind ERROR ==195554== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 61 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind61 ../src/curl -q --output log/5/curl61.out --include --trace-ascii log/5/trace61 --trace-time http://127.0.0.1:46263/we/want/61 -c log/5/jar61.txt -H "Host: www.host.foo.com" > log/5/stdout61 2> log/5/stderr61 === End of file commands.log === Start of file curl61.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Funny-head: yesyes Set-Cookie: test=yes; httponly; domain=foo.com; expires=Fri Feb 13 11:56:27 GMT 2525 SET-COOKIE: test2=yes; domain=host.foo.com; expires=Fri Feb 13 11:56:27 GMT 2525 Set-Cookie: test3=maybe; domain=foo.com; path=/moo; secure Set-Cookie: test4=no; domain=nope.foo.com; path=/moo; secure Set-Cookie: test5=name; domain=anything.com; path=/ ; secure Set-Cookie: fake=fooledyou; domain=..com; path=/; Set-Cookie: supercookie=fooledyou; domain=.com; path=/; Content-Length: 4 boo === End of file curl61.out === Start of file http_server.log 00:40:05.406030 ====> Client connect 00:40:05.406200 accept_connection 3 returned 4 00:40:05.406286 accept_connection 3 returned 0 00:40:05.412860 Read 93 bytes 00:40:05.412968 Process 93 bytes request 00:40:05.413065 Got request: GET /verifiedserver HTTP/1.1 00:40:05.413138 Are-we-friendly question received 00:40:05.413269 Wrote request (93 bytes) input to log/5/server.input 00:40:05.413377 Identifying ourselves as friends 00:40:05.413577 Response sent (57 bytes) and written to CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind64 ../src/curl -q --output log/7/curl64.out --include --trace-ascii log/7/trace64 --trace-time http://127.0.0.1:34897/64 -u testuser:testpass --digest > log/7/stdout64 2> log/7/stderr64 log/5/server.response 00:40:05.413648 special request received, no persistency 00:40:05.413712 ====> Client disconnect 0 00:40:53.517567 ====> Client connect 00:40:53.517715 accept_connection 3 returned 4 00:40:53.517797 accept_connection 3 returned 0 00:40:54.692035 Read 90 bytes 00:40:54.692243 Process 90 bytes request 00:40:54.692336 Got request: GET /we/want/61 HTTP/1.1 00:40:54.692407 Serve test number 61 part 0 00:40:54.692627 - request found to be complete (61) 00:40:54.692886 Wrote request (90 bytes) input to log/5/server.input 00:40:54.692992 Send response test61 section 00:40:54.693575 Response sent (610 bytes) and written to log/5/server.response 00:40:54.693642 => persistent connection request ended, awaits new request 00:41:03.795286 Connection closed by client 00:41:03.795477 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 51536 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file jar61.txt # Netscape HTTP Cookie File # https://curl.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. .host.foo.com TRUE /we/want/ FALSE 1797208860 test2 yes #HttpOnly_.foo.com TRUE /we/want/ FALSE 1797208860 test yes === End of file jar61.txt === Start of file server.cmd Testnum 61 === End of file server.cmd === Start of file server.input GET /we/want/61 HTTP/1.1 Host: www.host.foo.com User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Funny-head: yesyes Set-Cookie: test=yes; httponly; domain=foo.com; expires=Fri Feb 13 11:56:27 GMT 2525 SET-COOKIE: test2=yes; domain=host.foo.com; expires=Fri Feb 13 11:56:27 GMT 2525 Set-Cookie: test3=maybe; domain=foo.com; path=/moo; secure Set-Cookie: test4=no; domain=nope.foo.com; path=/moo; secure Set-Cookie: test5=name; domain=anything.com; path=/ ; secure Set-Cookie: fake=fooledyou; domain=..com; path=/; Set-Cookie: supercookie=fooledyou; domain=.com; path=/; Content-Length: 4 boo === End of file server.response === Start of file stderr61 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 === End of file stderr61 === Start of file trace61 00:40:53.246587 * Trying 127.0.0.1:46263... 00:40:54.462071 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 40666 00:40:54.595471 * using HTTP/1.x 00:40:55.110723 => Send header, 90 bytes (0x5a) 0000: GET /we/want/61 HTTP/1.1 001a: Host: www.host.foo.com 0032: User-Agent: curl/8.17.0 004b: Accept: */* 0058: 00:40:55.443641 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:40:55.804288 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:40:55.904752 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 00:40:55.958360 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:40:55.964433 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 00:40:56.570032 * Added cookie test="yes" for domain foo.com, path /we/want/, expire 1797208860 00:40:56.589699 <= Recv header, 86 bytes (0x56) 0000: Set-Cookie: test=yes; httponly; domain=foo.com; expires=Fri Feb 0040: 13 11:56:27 GMT 2525 00:40:56.656256 * Added cookie test2="yes" for domain host.foo.com, path /we/want/, expire 1797208860 00:40:56.659826 <= Recv header, 82 bytes (0x52) 0000: SET-COOKIE: test2=yes; domain=host.foo.com; expires=Fri Feb 13 1 0040: 1:56:27 GMT 2525 00:40:56.702202 <= Recv header, 60 bytes (0x3c) 0000: Set-Cookie: test3=maybe; domain=foo.com; path=/moo; secure 00:40:56.723278 * skipped cookie with bad tailmatch domain: nope.foo.com; path=/moo; secure 00:40:56.728385 <= Recv header, 62 bytes (0x3e) 0000: Set-Cookie: test4=no; domain=nope.foo.com; path=/moo; secure 00:40:56.739568 * skipped cookie with bad tailmatch domain: anything.com; path=/ ; secure 00:40:56.741209 <= Recv header, 62 bytes (0x3e) 0000: Set-Cookie: test5=name; domain=anything.com; path=/ ; secure 00:40:56.753841 * skipped cookie with bad tailmatch domain: .com; path=/; 00:40:56.755889 <= Recv header, 51 bytes (0x33) 0000: Set-Cookie: fake=fooledyou; domain=..com; path=/; 00:40:56.778496 * cookie 'supercookie' dropped, domain 'www.host.foo.com' must not set cookies for 'com' 00:40:56.785434 <= Recv header, 57 bytes (0x39) 0000: Set-Cookie: supercookie=fooledyou; domain=.com; path=/; 00:40:56.813581 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 4 00:40:56.895453 <= Recv header, 2 bytes (0x2) 0000: 00:40:56.951824 <= Recv data, 4 bytes (0x4) 0000: boo. 00:40:57.487680 * Connection #0 to host 127.0.0.1:46263 left intact === End of file trace61 === Start of file valgrind61 ==195554== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind61 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 69 in state 4 Runner 2 (id 185908) running test 70 in state 4 Runner 3 (id 185910) running test 67 in state 4 Runner 4 (id 185912) running test 66 in state 4 Runner 5 (id 185914) running test 71 in state 4 Runner 6 (id 185916) running test 68 in state 4 Runner 7 (id 185918) running test 64 in state 4 Runner 8 (id 185920) running test 65 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 69 in state 4 Runner 2 (id 185908) running test 70 in state 4 Runner 3 (id 185910) running test 67 in state 4 Runner 4 (id 185912) running test 66 in state 4 Runner 5 (id 185914) running test 71 in state 4 Runner 6 (id 185916) running test 68 in state 4 Runner 7 (id 185918) running test 64 in state 4 Runner 8 (id 185920) running test 65 in state 4 test 0064...[HTTP with Digest authorization] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind64 ../src/curl -q --output log/7/curl64.out --include --trace-ascii log/7/trace64 --trace-time http://127.0.0.1:34897/64 -u testuser:testpass --digest > log/7/stdout64 2> log/7/stderr64 valgrind ERROR ==196078== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 64 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind64 ../src/curl -q --output log/7/curl64.out --include --trace-ascii log/7/trace64 --trace-time http://127.0.0.1:34897/64 -u testuser:testpass --digest > log/7/stdout64 2> log/7/stderr64 === End of file commands.log === Start of file curl64.out HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 HTTP/1.1 200 OK swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind66 ../src/curl -q --output log/4/curl66.out --include --trace-ascii log/4/trace66 --trace-time http://127.0.0.1:42621/66 --http0.9 > log/4/stdout66 2> log/4/stderr66 iso-8859-1 Content-Length: 23 This IS the real page === End of file curl64.out === Start of file http_server.log 00:40:29.355082 ====> Client connect 00:40:29.355246 accept_connection 3 returned 4 00:40:29.355334 accept_connection 3 returned 0 00:40:29.361717 Read 93 bytes 00:40:29.361805 Process 93 bytes request 00:40:29.361897 Got request: GET /verifiedserver HTTP/1.1 00:40:29.361963 Are-we-friendly question received 00:40:29.362081 Wrote request (93 bytes) input to log/7/server.input 00:40:29.362171 Identifying ourselves as friends 00:40:29.362351 Response sent (57 bytes) and written to log/7/server.response 00:40:29.362418 special request received, no persistency 00:40:29.362474 ====> Client disconnect 0 00:41:17.030851 ====> Client connect 00:41:17.031003 accept_connection 3 returned 4 00:41:17.031079 accept_connection 3 returned 0 00:41:18.058496 Read 81 bytes 00:41:18.058692 Process 81 bytes request 00:41:18.058781 Got request: GET /64 HTTP/1.1 00:41:18.058846 Serve test number 64 part 0 00:41:18.059043 - request found to be complete (64) 00:41:18.059317 Wrote request (81 bytes) input to log/7/server.input 00:41:18.059421 Send response test64 section 00:41:18.059635 connection close instruction "swsclose" found in response 00:41:18.059870 Response sent (245 bytes) and written to log/7/server.response 00:41:18.059933 instructed to close connection after server-reply 00:41:18.059988 ====> Client disconnect 0 00:41:20.494591 ====> Client connect 00:41:20.494722 accept_connection 3 returned 4 00:41:20.494795 accept_connection 3 returned 0 00:41:26.604675 Read 219 bytes 00:41:26.604872 Process 219 bytes request 00:41:26.604959 Got request: GET /64 HTTP/1.1 00:41:26.605023 Serve test number 64 part 0 00:41:26.605216 - request found to be complete (64) 00:41:26.605471 Received Digest request, sending back data 1000 00:41:26.605569 Wrote request (219 bytes) input to log/7/server.input 00:41:26.605649 Send response test64 section 00:41:26.605908 connection close instruction "swsclose" found in response 00:41:26.606114 Response sent (158 bytes) and written to log/7/server.response 00:41:26.606181 instructed to close connection after server-reply 00:41:26.606241 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 53934 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 64 === End of file server.cmd === Start of file server.input GET /64 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* GET /64 HTTP/1.1 Host: 127.0.0.1:34897 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/64", response="c55f7f30d83d774a3d2dcacf725abaca" User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 This is not the real page HTTP/1.1 200 OK swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 23 This IS the real page === End of file server.response === Start of file stderr64 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 8 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 7 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:11 --:--:-- 0 100 23 100 23 0 0 1 0 0:00:23 0:00:11 0:00:12 3 === End of file stderr64 === Start of file trace64 00:41:17.103562 * Trying 127.0.0.1:34897... 00:41:17.978326 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 41988 00:41:18.091507 * using HTTP/1.x 00:41:18.193577 * Server auth using Digest with user 'testuser' 00:41:18.476536 => Send header, 81 bytes (0x51) 0000: GET /64 HTTP/1.1 0012: Host: 127.0.0.1:34897 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: 00:41:18.807302 <= Recv header, 46 bytes (0x2e) 0000: HTTP/1.1 401 Authorization Required swsclose 00:41:19.110261 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:41:19.359629 <= Recv header, 64 bytes (0x40) 0000: WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" 00:41:19.399286 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:41:19.425849 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 00:41:19.525966 * Ignoring the response-body 00:41:19.542610 * setting size while ignoring 00:41:19.556982 <= Recv header, 2 bytes (0x2) 0000: 00:41:20.078163 * Connection #0 to host 127.0.0.1:34897 left intact 00:41:20.190182 * Issue another request to this URL: 'http://127.0.0.1:34897/64' 00:41:20.356108 * Connection 0 seems to be dead 00:41:20.444031 * shutting down connection #0 00:41:20.826526 * Hostname 127.0.0.1 was found in DNS cache 00:41:20.871043 * Trying 127.0.0.1:34897... 00:41:20.906389 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 42002 00:41:20.912677 * using HTTP/1.x 00:41:26.957927 * Server auth using Digest with user 'testuser' 00:41:26.988379 => Send header, 219 bytes (0xdb) 0000: GET /64 HTTP/1.1 0012: Host: 127.0.0.1:34897 0029: Authorization: Digest username="testuser", realm="testrealm", no 0069: nce="1053604145", uri="/64", response="c55f7f30d83d774a3d2dcacf7 00a9: 25abaca" 00b3: User-Agent: curl/8.17.0 00cc: Accept: */* 00d9: 00:41:27.048796 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 200 OK swsclose 00:41:27.060656 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:41:27.070303 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:41:27.077182 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 23 00:41:27.095966 <= Recv header, 2 bytes (0x2) 0000: 00:41:27.108287 <= Recv data, 23 bytes (0x17) 0000: This IS the real page!. 00:41:27.215498 * Connection #1 to host 127.0.0.1:34897 left intact === End of file trace64 === Start of file valgrind64 ==196078== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind64 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 69 in state 4 Runner 2 (id 185908) running test 70 in state 4 Runner 3 (id 185910) running test 67 in state 4 Runner 4 (id 185912) running test 66 in state 4 Runner 5 (id 185914) running test 71 in state 4 Runner 6 (id 185916) running test 68 in state 4 Runner 7 (id 185918) running test 72 in state 4 Runner 8 (id 185920) running test 65 in state 4 test 0066...[HTTP GET without headers in the response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind66 ../src/curl -q --output log/4/curl66.out --include --trace-ascii log/4/trace66 --trace-time http://127.0.0.1:42621/66 --http0.9 > log/4/stdout66 2> log/4/stderr66 valgrind ERROR ==19CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind65 ../src/curl -q --output log/8/curl65.out --include --trace-ascii log/8/trace65 --trace-time http://127.0.0.1:39461/65 -u testuser:test2pass --digest > log/8/stdout65 2> log/8/stderr65 6411== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 66 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind66 ../src/curl -q --output log/4/curl66.out --include --trace-ascii log/4/trace66 --trace-time http://127.0.0.1:42621/66 --http0.9 > log/4/stdout66 2> log/4/stderr66 === End of file commands.log === Start of file curl66.out no headers swsclose === End of file curl66.out === Start of file http_server.log 00:40:50.003890 ====> Client connect 00:40:50.004060 accept_connection 3 returned 4 00:40:50.004148 accept_connection 3 returned 0 00:40:50.010242 Read 93 bytes 00:40:50.010367 Process 93 bytes request 00:40:50.010466 Got request: GET /verifiedserver HTTP/1.1 00:40:50.010540 Are-we-friendly question received 00:40:50.010669 Wrote request (93 bytes) input to log/4/server.input 00:40:50.010771 Identifying ourselves as friends 00:40:50.010980 Response sent (57 bytes) and written to log/4/server.response 00:40:50.011053 special request received, no persistency 00:40:50.011117 ====> Client disconnect 0 00:41:37.843634 ====> Client connect 00:41:37.843770 accept_connection 3 returned 4 00:41:37.843844 accept_connection 3 returned 0 00:41:38.815328 Read 81 bytes 00:41:38.815510 Process 81 bytes request 00:41:38.815597 Got request: GET /66 HTTP/1.1 00:41:38.815660 Serve test number 66 part 0 00:41:38.815812 - request found to be complete (66) 00:41:38.816032 Wrote request (81 bytes) input to log/4/server.input 00:41:38.816126 Send response test66 section 00:41:38.816297 connection close instruction "swsclose" found in response 00:41:38.816407 Response sent (20 bytes) and written to log/4/server.response 00:41:38.816467 instructed to close connection after server-reply 00:41:38.816522 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 44038 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 66 === End of file server.cmd === Start of file server.input GET /66 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 no headers swsclose === End of file server.response === Start of file stderr66 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 20 0 20 0 0 5 0 --:--:-- 0:00:03 --:--:-- 7 === End of file stderr66 === Start of file trace66 00:41:36.921217 * Trying 127.0.0.1:42621... 00:41:37.769150 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 45348 00:41:37.896150 * using HTTP/1.x 00:41:38.238729 => Send header, 81 bytes (0x51) 0000: GET /66 HTTP/1.1 0012: Host: 127.0.0.1:42621 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: 00:41:38.559910 <= Recv data, 20 bytes (0x14) 0000: no headers swsclose. 00:41:38.877750 * abort upload 00:41:38.905669 <= Recv data, 0 bytes (0x0) 00:41:39.373344 * shutting down connection #0 === End of file trace66 === Start of file valgrind66 ==196411== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind66 test 0065...[HTTP with Digest authorization with bad password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind65 ../src/curl -q --output log/8/curl65.out --include --trace-ascii log/8/trace65 --trace-time http://127.0.0.1:39461/65 -u testuser:test2pass --digest > log/8/stdout65 2> log/8/stderr65 valgrind ERROR ==196255== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 65 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind65 ../src/curl -q --output log/8/curl65.out --include --trace-ascii log/8/trace65 --trace-time http://127.0.0.1:39461/65 -u testuser:test2pass --digest > log/8/stdout65 2> log/8/stderr65 === End of file commands.log === Start of file curl65.out HTTP/1.1 401 Authorization Required Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", nonce="2053604145" Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 HTTP/1.1 401 Still a bad password you moron Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 This is not the real page either === End of file curl65.out === Start of file http_server.log 00:40:44.695711 ====> Client connect 00:40:44.695901 accept_connection 3 returned 4 00:40:44.695995 accept_connection 3 returned 0 00:40:44.705737 Read 93 bytes 00:40:44.705883 Process 93 bytes request 00:40:44.705970 Got request: GET /verifiedserver HTTP/1.1 00:40:44.706036 Are-we-friendly question received 00:40:44.706161 Wrote request (93 bytes) input to log/8/server.input 00:40:44.706252 Identifying ourselves as friends 00:40:44.706438 Response sent (57 bytes) and written to log/8/server.response 00:40:44.706502 special request received, no persistency 00:40:44.706559 ====> Client disconnect 0 00:41:32.685506 ====> Client connect 00:41:32.685643 accept_connection 3 returned 4 00:41:32.685721 accept_connection 3 returned 0 00:41:33.709762 Read 81 bytes 00:41:33.709990 Process 81 bytes request 00:41:33.710090 Got request: GET /65 HTTP/1.1 00:41:33.710162 Serve test number 65 part 0 00:41:33.710550 - request found to be complete (65) 00:41:33.710849 Wrote request (81 bytes) input to log/8/server.input 00:41:33.710959 Send response test65 section 00:41:33.711411 Response sent (236 bytes) and written to log/8/server.response 00:41:33.711480 => persistent connection request ended, awaits new request 00:41:42.327984 Read 219 bytes 00:41:42.328212 Process 219 bytes request 00:41:42.328321 Got request: GET /65 HTTP/1.1 00:41:42.328404 Serve test number 65 part 0 00:41:42.328643 - request found to be complete (65) 00:41:42.328963 Received Digest request, sending back data 1000 00:41:42.329106 Wrote request (219 bytes) input to log/8/server.input 00:41:42.329207 Send response test65 section 00:41:42.329668 Response sent (188 bytes) and written to log/8/server.response 00:41:42.329746 => persistent connection request ended, awaits new request 00:41:43.395852 Connection closed by client 00:41:43.396050 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 35342 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 65 === End of fileCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind67 ../src/curl -q --output log/3/curl67.out --include --trace-ascii log/3/trace67 --trace-time http://127.0.0.1:46853/67 -u testuser:testpass --ntlm > log/3/stdout67 2> log/3/stderr67 server.cmd === Start of file server.input GET /65 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* GET /65 HTTP/1.1 Host: 127.0.0.1:39461 Authorization: Digest username="testuser", realm="testrealm", nonce="2053604145", uri="/65", response="66d68d3251f1839576ba7c766cf9205b" User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 401 Authorization Required Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", nonce="2053604145" Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 This is not the real page HTTP/1.1 401 Still a bad password you moron Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 This is not the real page either === End of file server.response === Start of file stderr65 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 7 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 7 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 7 0 0 0 0 0 0 0 0 --:--:-- 0:00:11 --:--:-- 0 100 34 100 34 0 0 2 0 0:00:17 0:00:12 0:00:05 177 === End of file stderr65 === Start of file trace65 00:41:32.732831 * Trying 127.0.0.1:39461... 00:41:33.617710 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 44152 00:41:33.747985 * using HTTP/1.x 00:41:33.841102 * Server auth using Digest with user 'testuser' 00:41:34.128931 => Send header, 81 bytes (0x51) 0000: GET /65 HTTP/1.1 0012: Host: 127.0.0.1:39461 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: 00:41:34.453582 <= Recv header, 37 bytes (0x25) 0000: HTTP/1.1 401 Authorization Required 00:41:34.757296 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:41:35.009959 <= Recv header, 64 bytes (0x40) 0000: WWW-Authenticate: Digest realm="testrealm", nonce="2053604145" 00:41:35.053170 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:41:35.080690 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 00:41:35.181414 * Ignoring the response-body 00:41:35.198156 * setting size while ignoring 00:41:35.212702 <= Recv header, 2 bytes (0x2) 0000: 00:41:35.751941 * Connection #0 to host 127.0.0.1:39461 left intact 00:41:35.864518 * Issue another request to this URL: 'http://127.0.0.1:39461/65' 00:41:36.270815 * Reusing existing http: connection with host 127.0.0.1 00:41:42.678583 * Server auth using Digest with user 'testuser' 00:41:42.712107 => Send header, 219 bytes (0xdb) 0000: GET /65 HTTP/1.1 0012: Host: 127.0.0.1:39461 0029: Authorization: Digest username="testuser", realm="testrealm", no 0069: nce="2053604145", uri="/65", response="66d68d3251f1839576ba7c766 00a9: cf9205b" 00b3: User-Agent: curl/8.17.0 00cc: Accept: */* 00d9: 00:41:42.778627 <= Recv header, 45 bytes (0x2d) 0000: HTTP/1.1 401 Still a bad password you moron 00:41:42.789298 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:41:42.799342 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:41:42.807270 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 34 00:41:42.834456 <= Recv header, 2 bytes (0x2) 0000: 00:41:42.847487 <= Recv data, 34 bytes (0x22) 0000: This is not the real page either 00:41:42.965868 * Connection #0 to host 127.0.0.1:39461 left intact === End of file trace65 === Start of file valgrind65 ==196255== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind65 test 0067...[HTTP with NTLM authorization] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind67 ../src/curl -q --output log/3/curl67.out --include --trace-ascii log/3/trace67 --trace-time http://127.0.0.1:46853/67 -u testuser:testpass --ntlm > log/3/stdout67 2> log/3/stderr67 valgrind ERROR ==196561== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 67 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind67 ../src/curl -q --output log/3/curl67.out --include --trace-ascii log/3/trace67 --trace-time http://127.0.0.1:46853/67 -u testuser:testpass --ntlm > log/3/stdout67 2> log/3/stderr67 === End of file commands.log === Start of file curl67.out HTTP/1.1 401 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== HTTP/1.1 200 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file curl67.out === Start of file http_server.log 00:40:51.081314 ====> Client connect 00:40:51.081466 accept_connection 3 returned 4 00:40:51.081541 accept_connection 3 returned 0 00:40:51.088791 Read 93 bytes 00:40:51.088909 Process 93 bytes request 00:40:51.089000 Got request: GET /verifiedserver HTTP/1.1 00:40:51.089073 Are-we-friendly question received 00:40:51.089201 Wrote request (93 bytes) input to log/3/server.input 00:40:51.089298 Identifying ourselves as friends 00:40:51.089463 Response sent (57 bytes) and written to log/3/server.response 00:40:51.089528 special request received, no persistency 00:40:51.089587 ====> Client disconnect 0 00:41:38.641127 ====> Client connect 00:41:38.641282 accept_connection 3 returned 4 00:41:38.641366 accept_connection 3 returned 0 00:41:39.798778 Read 147 bytes 00:41:39.799516 Process 147 bytes request 00:41:39.799629 Got request: GET /67 HTTP/1.1 00:41:39.799737 Serve test number 67 part 0 00:41:39.800485 - request found to be complete (67) 00:41:39.800942 Received NTLM type-1, sending back data 1001 00:41:39.801113 Wrote request (147 bytes) input to log/3/server.input 00:41:39.801229 Send response test67 section 00:41:39.802086 Response sent (421 bytes) and written to log/3/server.response 00:41:39.802158 => persistent connection request ended, awaits new request 00:41:43.128275 Read 279 bytes 00:41:43.128483 Process 279 bytes request 00:41:43.128596 Got request: GET /67 HTTP/1.1 00:41:43.128679 Serve test number 67 part 0 00:41:43.128987 - request found to be complete (67) 00:41:43.129297 Received NTLM type-3, sending back data 1002 00:41:43.129424 Wrote request (279 bytes) input to log/3/server.input 00:41:43.129514 Send response test67 section 00:41:43.129802 connection close instruction "swsclose" found in response 00:41:43.130017 Response sent (180 bytes) and written to log/3/server.response 00:41:43.130084 instructed to close connection after server-reply 00:41:43.130148 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 53458 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of filCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind68 ../src/curl -q --output log/6/curl68.out --include --trace-ascii log/6/trace68 --trace-time http://127.0.0.1:38277/68 -u testuser:testpass --ntlm > log/6/stdout68 2> log/6/stderr68 e http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 67 === End of file server.cmd === Start of file server.input GET /67 HTTP/1.1 Host: 127.0.0.1:46853 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* GET /67 HTTP/1.1 Host: 127.0.0.1:46853 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 401 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== This is not the real page either HTTP/1.1 200 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file server.response === Start of file stderr67 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 34 100 34 0 0 7 0 0:00:04 0:00:04 --:--:-- 9 100 34 100 34 0 0 6 0 0:00:05 0:00:04 0:00:01 9 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 100 32 100 32 0 0 4 0 0:00:08 0:00:06 0:00:02 26 === End of file stderr67 === Start of file trace67 00:41:38.699355 * Trying 127.0.0.1:46853... 00:41:39.604742 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 55868 00:41:39.737198 * using HTTP/1.x 00:41:39.920517 * Server auth using NTLM with user 'testuser' 00:41:40.223401 => Send header, 147 bytes (0x93) 0000: GET /67 HTTP/1.1 0012: Host: 127.0.0.1:46853 0029: Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 006b: User-Agent: curl/8.17.0 0084: Accept: */* 0091: 00:41:40.559804 <= Recv header, 52 bytes (0x34) 0000: HTTP/1.1 401 Now gimme that second request of crap 00:41:40.869558 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:41:41.003946 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:41:41.046873 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 34 00:41:41.236922 <= Recv header, 241 bytes (0xf1) 0000: WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgy 0040: NcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQAS 0080: AAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAd 00c0: ABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== 00:41:41.373372 * Ignoring the response-body 00:41:41.390869 * setting size while ignoring 00:41:41.406386 <= Recv header, 2 bytes (0x2) 0000: 00:41:41.969018 * Connection #0 to host 127.0.0.1:46853 left intact 00:41:42.095030 * Issue another request to this URL: 'http://127.0.0.1:46853/67' 00:41:42.512508 * Reusing existing http: connection with host 127.0.0.1 00:41:43.488555 * Server auth using NTLM with user 'testuser' 00:41:43.514380 => Send header, 279 bytes (0x117) 0000: GET /67 HTTP/1.1 0012: Host: 127.0.0.1:46853 0029: Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABw 0069: AAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjK 00a9: HRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJ 00e9: T04= 00ef: User-Agent: curl/8.17.0 0108: Accept: */* 0115: 00:41:43.583481 <= Recv header, 54 bytes (0x36) 0000: HTTP/1.1 200 Things are fine in server land swsclose 00:41:43.598799 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:41:43.608185 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:41:43.616227 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 32 00:41:43.637469 <= Recv header, 2 bytes (0x2) 0000: 00:41:43.650207 <= Recv data, 32 bytes (0x20) 0000: Finally, this is the real page!. 00:41:43.768076 * Connection #0 to host 127.0.0.1:46853 left intact === End of file trace67 === Start of file valgrind67 ==196561== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind67 test 0068...[HTTP with NTLM authorization and wrong password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind68 ../src/curl -q --output log/6/curl68.out --include --trace-ascii log/6/trace68 --trace-time http://127.0.0.1:38277/68 -u testuser:testpass --ntlm > log/6/stdout68 2> log/6/stderr68 valgrind ERROR ==196720== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 68 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind68 ../src/curl -q --output log/6/curl68.out --include --trace-ascii log/6/trace68 --trace-time http://127.0.0.1:38277/68 -u testuser:testpass --ntlm > log/6/stdout68 2> log/6/stderr68 === End of file commands.log === Start of file curl68.out HTTP/1.1 401 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Length: 34 Content-Type: text/html; charset=iso-8859-1 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== HTTP/1.1 401 You give me wrong password Server: Microsoft-IIS/5.0 WWW-Authenticate: NTLM Content-Length: 46 Content-Type: text/html; charset=iso-8859-1 Wrong password dude. Get it fixed and return. === End of file curl68.out === Start of file http_server.log 00:40:53.604245 ====> Client connect 00:40:53.604417 accept_connection 3 returned 4 00:40:53.604495 accept_connection 3 returned 0 00:40:53.610910 Read 93 bytes 00:40:53.611019 Process 93 bytes request 00:40:53.611110 Got request: GET /verifiedserver HTTP/1.1 00:40:53.611177 Are-we-friendly question received 00:40:53.611297 Wrote request (93 bytes) input to log/6/server.input 00:40:53.611389 Identifying ourselves as friends 00:40:53.611570 Response sent (57 bytes) and written to log/6/server.response 00:40:53.611635 special request received, no persistency 00:40:53.611691 ====> Client disconnect 0 00:41:40.963514 ====> Client connect 00:41:40.963661 accept_connection 3 returned 4 00:41:40.963739 accept_connection 3 returned 0 00:41:42.109377 Read 147 bytes 00:41:42.109569 Process 147 bytes request 00:41:42.109665 Got request: GET /68 HTTP/1.1 00:41:42.109736 Serve test number 68 part 0 00:41:42.110250 - request found to be complete (68) 00:41:42.110599 Received NTLM type-1, sending back data 1001 00:41:42.110769 Wrote request (147 bytes) input to log/6/server.input 00:41:42.110875 Send response test68 section 00:41:42.111531 Response sent (421 bytes) and written to log/6/server.response 00:41:42.111601 => persistent connection request ended, awaits new request 00:41:45.497733 Read 279 bytes 00:41:45.497936 Process 279 bytes request 00:41:45.498042 Got request: GET /68 HTTP/1.1 00:41:45.498117 Serve test number 68 part 0 00:41:45.498349 - request found to be complete (68) 00:41:45.498601 Received NTLM type-3, sending back daCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind69 ../src/curl -q --output log/1/curl69.out --include --trace-ascii log/1/trace69 --trace-time http://127.0.0.1:40641/69 -u testuser:testpass --anyauth > log/1/stdout69 2> log/1/stderr69 ta 1002 00:41:45.498729 Wrote request (279 bytes) input to log/6/server.input 00:41:45.498830 Send response test68 section 00:41:45.499426 Response sent (205 bytes) and written to log/6/server.response 00:41:45.499503 => persistent connection request ended, awaits new request 00:41:46.629242 Connection closed by client 00:41:46.629442 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 36502 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 68 === End of file server.cmd === Start of file server.input GET /68 HTTP/1.1 Host: 127.0.0.1:38277 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* GET /68 HTTP/1.1 Host: 127.0.0.1:38277 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 401 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Length: 34 Content-Type: text/html; charset=iso-8859-1 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== This is not the real page either HTTP/1.1 401 You give me wrong password Server: Microsoft-IIS/5.0 WWW-Authenticate: NTLM Content-Length: 46 Content-Type: text/html; charset=iso-8859-1 Wrong password dude. Get it fixed and return. === End of file server.response === Start of file stderr68 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 34 100 34 0 0 7 0 0:00:04 0:00:04 --:--:-- 9 100 34 100 34 0 0 6 0 0:00:05 0:00:04 0:00:01 9 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 100 46 100 46 0 0 6 0 0:00:07 0:00:07 --:--:-- 38 === End of file stderr68 === Start of file trace68 00:41:41.032319 * Trying 127.0.0.1:38277... 00:41:41.914225 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 38516 00:41:42.028271 * using HTTP/1.x 00:41:42.225464 * Server auth using NTLM with user 'testuser' 00:41:42.528938 => Send header, 147 bytes (0x93) 0000: GET /68 HTTP/1.1 0012: Host: 127.0.0.1:38277 0029: Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 006b: User-Agent: curl/8.17.0 0084: Accept: */* 0091: 00:41:42.883254 <= Recv header, 52 bytes (0x34) 0000: HTTP/1.1 401 Now gimme that second request of crap 00:41:43.205566 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:41:43.321077 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 34 00:41:43.381281 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:41:43.579092 <= Recv header, 241 bytes (0xf1) 0000: WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgy 0040: NcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQAS 0080: AAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAd 00c0: ABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== 00:41:43.712568 * Ignoring the response-body 00:41:43.731566 * setting size while ignoring 00:41:43.746792 <= Recv header, 2 bytes (0x2) 0000: 00:41:44.316862 * Connection #0 to host 127.0.0.1:38277 left intact 00:41:44.449537 * Issue another request to this URL: 'http://127.0.0.1:38277/68' 00:41:44.933541 * Reusing existing http: connection with host 127.0.0.1 00:41:45.857972 * Server auth using NTLM with user 'testuser' 00:41:45.881906 => Send header, 279 bytes (0x117) 0000: GET /68 HTTP/1.1 0012: Host: 127.0.0.1:38277 0029: Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABw 0069: AAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjK 00a9: HRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJ 00e9: T04= 00ef: User-Agent: curl/8.17.0 0108: Accept: */* 0115: 00:41:45.951833 <= Recv header, 41 bytes (0x29) 0000: HTTP/1.1 401 You give me wrong password 00:41:45.962685 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:41:45.982151 * NTLM handshake rejected 00:41:46.015336 * NTLM authentication problem, ignoring. 00:41:46.023076 <= Recv header, 24 bytes (0x18) 0000: WWW-Authenticate: NTLM 00:41:46.029714 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 46 00:41:46.035200 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:41:46.050445 <= Recv header, 2 bytes (0x2) 0000: 00:41:46.062818 <= Recv data, 46 bytes (0x2e) 0000: Wrong password dude. Get it fixed and return.. 00:41:46.178203 * Connection #0 to host 127.0.0.1:38277 left intact === End of file trace68 === Start of file valgrind68 ==196720== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind68 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 69 in state 4 Runner 2 (id 185908) running test 70 in state 4 Runner 3 (id 185910) running test 75 in state 4 Runner 4 (id 185912) running test 73 in state 4 Runner 5 (id 185914) running test 71 in state 4 Runner 6 (id 185916) running test 76 in state 4 Runner 7 (id 185918) running test 72 in state 4 Runner 8 (id 185920) running test 74 in state 4 test 0069...[HTTP with NTLM, Basic or Wild-and-crazy authorization] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind69 ../src/curl -q --output log/1/curl69.out --include --trace-ascii log/1/trace69 --trace-time http://127.0.0.1:40641/69 -u testuser:testpass --anyauth > log/1/stdout69 2> log/1/stderr69 valgrind ERROR ==196885== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 69 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind69 ../src/curl -q --output log/1/curl69.out --include --trace-ascii log/1/trace69 --trace-time http://127.0.0.1:40641/69 -u testuser:testpass --anyauth > log/1/stdout69 2> log/1/stderr69 === End of file commands.log === Start of file curl69.out HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Basic WWW-Authenticate: Wild-and-crazy WWW-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 HTTP/1.1 401 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Length: 34 Content-Type: text/html; charset=iso-8859-1 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== HTTP/1.1 200 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file curl69.out === Start of file http_server.log 00:41:05.384477 ====> Client connect 00:41:05.384632 accept_connection 3 returned 4 00:41:05.384704 accept_connection 3 returned 0 00:41:05.391333 Read 93 bytes 00:41:05.391425 Process 93 bytes request 00:41:05.391511 Got request: GET /verifiedserver HTTP/1.1 00:41:05.391572 Are-we-friendly question received 00:41:05.391679 Wrote request (93 bytes) input to log/1/server.input 00:41:05.391763 Identifying ourselves as friends 00:41:05.391916 Response sent (57 bytes) and written to log/1/server.response 00:41:05.391975 special request received, no persistency 00:41:05.392029 ====> Client disconnect 0 00:41:53.195348 ====> Client connect 00:41:53.195492 accept_connection 3 returned 4 00:41:53.195573 accept_connection 3 returned 0 00:41:54.206093 Read 81 bytes 00:41:54.206318 Process 81 bytes request 00:41:54.206412 Got request: GET /69 HTTP/1.1 00:41:54.206477 Serve test number 69 part 0 00:41:54.206677 - request found to be complete (69) 00:41:54.206962 Wrote request (81 bytes) input to log/1/server.input 00:41:54.207059 Send response test69 section 00:41:54.207293 connection close instruction "swsclose" found in response 00:41:54.207465 Response sent (264 bytes) and written to log/1/server.response 00:41:54.207526 instructed to close connection after server-reply 00:41:54.207581 ====> Client disconnect 0 00:41:56.652586 ====> Client connect 00:41:56.675689 accept_connection 3 returned 4 00:41:56.675877 accept_connection 3 returned 0 00:41:56.823292 Read 147 bytes 00:41:56.823485 Process 147 bytes request 00:41:56.823583 Got request: GET /69 HTTP/1.1 00:41:56.823654 Serve test number 69 part 0 00:41:56.823881 - request found to be complete (69) 00:41:56.824237 Received NTLM type-1, sending back data 1001 00:41:56.824350 Wrote request (147 bytes) input to log/1/server.input 00:41:56.824458 Send response test69 section 00:41:56.824883 Response sent (421 bytes) and written to log/1/server.response 00:41:56.824952 => persistent connection request ended, awaits new request 00:41:58.136336 Read 279 bytes 00:41:58.136515 Process 279 bytes request 00:41:58.136612 Got request: GET /69 HTTP/1.1 00:41:58.136684 Serve test number 69 part 0 00:41:58.136909 - request found to be complete (69) 00:41:58.137148 Received NTLM type-3, sending back data 1002 00:41:58.137265 Wrote request (279 bytes) input to log/1/server.input 00:41:58.137354 Send response test69 section 00:41:58.137662 connection close instruction "swsclose" found in response 00:41:58.137874 Response sent (180 bytes) and written to log/1/server.response 00:41:58.137943 instructed to close connection after server-reply 00:41:58.138006 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 40550 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 69 === End of file server.cmd === Start of file server.input GET /69 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* GET /69 HTTP/1.1 Host: 127.0.0.1:40641 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* GET /69 HTTP/1.1 Host: 127.0.0.1:40641 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Basic WWW-Authenticate: Wild-and-crazy WWW-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 This is not the real page HTTP/1.1 401 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Length: 34 Content-Type: text/html; charset=iso-8859-1 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== This is not the real page either HTTP/1.1 200 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file server.response === Start of file stderr69 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 8 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 7 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 34 100 34 0 0 5 0 0:00:06 0:00:06 --:--:-- 73 100 34 100 34 0 0 5 0 0:00:06 0:00:06 --:--:-- 71 0 0 0 0 0 0 0 0 --:--:-- 0:00:07 --:--:-- 0 100 32 100 32 0 0 4 0 0:00:08 0:00:07 0:00:01 223 === End of file stderr69 === Start of file trace69 00:41:52.259807 * Trying 127.0.0.1:40641... 00:41:53.151590 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 53552 00:41:53.267455 * using HTTP/1.x 00:41:53.626431 => Send header, 81 bytes (0x51) 0000: GET /69 HTTP/1.1 0012: Host: 127.0.0.1:40641 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: 00:41:53.969017 <= Recv header, 46 bytes (0x2e) 0000: HTTP/1.1 401 Authorization Required swsclose 00:41:54.276144 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:41:54.453347 <= Recv header, 25 bytes (0x19) 0000: WWW-Authenticate: Basic 00:41:54.473847 <= Recv header, 34 bytes (0x22) 0000: WWW-Authenticate: Wild-and-crazy 00:41:54.485639 <= Recv header, 24 bytes (0x18) 0000: WWW-Authenticate: NTLM 00:41:54.509276 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:41:54.536235 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 00:41:54.640509 * Ignoring the response-body 00:41:54.657733 * setting size while ignoring 00:41:54.672455 <= Recv header, 2 bytes (0x2) 0000: 00:41:55.193575 * Connection #0 to host 127.0.0.1:40641 left intact 00:41:55.318937 * Issue another request to this URL: 'http://127.0.0.1:40641/69' 00:41:55.497469 * Connection 0 seems to be dead 00:41:55.588690 * shutting down connection #0 00:41:55.978253 * Hostname 127.0.0.1 was found in DNS cache 00:41:56.027141 * Trying 127.0.0.1:40641... 00:41:56.067479 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 53554 00:41:56.074353 * using HTTP/1.x 00:41:56.183315 * Server auth using NTLM with user 'testuser' 00:41:56.208903 => Send header, 147 bytes (0x93) 0000: GET /69 HTTP/1.1 0012: Host: 127.0.0.1:40641 0029: Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 006b: User-Agent: curl/8.17.0 0084: Accept: */* 0091: 00:41:56.251601 <= Recv header, 52 bytes (0x34) 0000: HTTP/1.1 401 Now gimme that second request of crap 00:41:56.262961 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:41:56.271195 <= Recv headerCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind70 ../src/curl -q --output log/2/curl70.out --include --trace-ascii log/2/trace70 --trace-time http://127.0.0.1:39863/70 -u testuser:testpass --anyauth > log/2/stdout70 2> log/2/stderr70 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind71 ../src/curl -q --output log/5/curl71.out --include --trace-ascii log/5/trace71 --trace-time http://127.0.0.1:46263/we/want/71 -K - log/5/stdout71 2> log/5/stderr71 , 20 bytes (0x14) 0000: Content-Length: 34 00:41:56.276128 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:41:56.396447 <= Recv header, 241 bytes (0xf1) 0000: WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgy 0040: NcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQAS 0080: AAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAd 00c0: ABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== 00:41:56.437808 * Ignoring the response-body 00:41:56.439974 * setting size while ignoring 00:41:56.441614 <= Recv header, 2 bytes (0x2) 0000: 00:41:56.494329 * Connection #1 to host 127.0.0.1:40641 left intact 00:41:56.508549 * Issue another request to this URL: 'http://127.0.0.1:40641/69' 00:41:56.678226 * Reusing existing http: connection with host 127.0.0.1 00:41:57.512872 * Server auth using NTLM with user 'testuser' 00:41:57.520177 => Send header, 279 bytes (0x117) 0000: GET /69 HTTP/1.1 0012: Host: 127.0.0.1:40641 0029: Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABw 0069: AAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjK 00a9: HRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJ 00e9: T04= 00ef: User-Agent: curl/8.17.0 0108: Accept: */* 0115: 00:41:57.569246 <= Recv header, 54 bytes (0x36) 0000: HTTP/1.1 200 Things are fine in server land swsclose 00:41:57.580106 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:41:57.586368 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:41:57.592576 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 32 00:41:57.609065 <= Recv header, 2 bytes (0x2) 0000: 00:41:57.618281 <= Recv data, 32 bytes (0x20) 0000: Finally, this is the real page!. 00:41:57.707533 * Connection #1 to host 127.0.0.1:40641 left intact === End of file trace69 === Start of file valgrind69 ==196885== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind69 test 0070...[HTTP with Digest *OR* NTLM authorization] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind70 ../src/curl -q --output log/2/curl70.out --include --trace-ascii log/2/trace70 --trace-time http://127.0.0.1:39863/70 -u testuser:testpass --anyauth > log/2/stdout70 2> log/2/stderr70 valgrind ERROR ==197078== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 70 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind70 ../src/curl -q --output log/2/curl70.out --include --trace-ascii log/2/trace70 --trace-time http://127.0.0.1:39863/70 -u testuser:testpass --anyauth > log/2/stdout70 2> log/2/stderr70 === End of file commands.log === Start of file curl70.out HTTP/1.1 401 Authorization Required Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", nonce="1053604199" WWW-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 HTTP/1.1 200 OK Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 23 This IS the real page === End of file curl70.out === Start of file http_server.log 00:41:07.991162 ====> Client connect 00:41:07.991325 accept_connection 3 returned 4 00:41:07.991401 accept_connection 3 returned 0 00:41:07.997649 Read 93 bytes 00:41:07.997772 Process 93 bytes request 00:41:07.997863 Got request: GET /verifiedserver HTTP/1.1 00:41:07.997929 Are-we-friendly question received 00:41:07.998049 Wrote request (93 bytes) input to log/2/server.input 00:41:07.998142 Identifying ourselves as friends 00:41:07.998325 Response sent (57 bytes) and written to log/2/server.response 00:41:07.998388 special request received, no persistency 00:41:07.998444 ====> Client disconnect 0 00:41:55.985931 ====> Client connect 00:41:55.986072 accept_connection 3 returned 4 00:41:55.986150 accept_connection 3 returned 0 00:41:56.984647 Read 81 bytes 00:41:56.984862 Process 81 bytes request 00:41:56.984953 Got request: GET /70 HTTP/1.1 00:41:56.985022 Serve test number 70 part 0 00:41:56.985379 - request found to be complete (70) 00:41:56.985663 Wrote request (81 bytes) input to log/2/server.input 00:41:56.985839 Send response test70 section 00:41:56.986248 Response sent (260 bytes) and written to log/2/server.response 00:41:56.986316 => persistent connection request ended, awaits new request 00:42:05.431440 Read 219 bytes 00:42:05.431654 Process 219 bytes request 00:42:05.431752 Got request: GET /70 HTTP/1.1 00:42:05.431824 Serve test number 70 part 0 00:42:05.432037 - request found to be complete (70) 00:42:05.432278 Received Digest request, sending back data 1000 00:42:05.432399 Wrote request (219 bytes) input to log/2/server.input 00:42:05.432492 Send response test70 section 00:42:05.432880 Response sent (149 bytes) and written to log/2/server.response 00:42:05.432949 => persistent connection request ended, awaits new request 00:42:06.426228 Connection closed by client 00:42:06.426448 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 34172 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 70 === End of file server.cmd === Start of file server.input GET /70 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* GET /70 HTTP/1.1 Host: 127.0.0.1:39863 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604199", uri="/70", response="2c9a6f00af0d86497b177b90e90c688a" User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 401 Authorization Required Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", nonce="1053604199" WWW-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 This is not the real page HTTP/1.1 200 OK Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 23 This IS the real page === End of file server.response === Start of file stderr70 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 8 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 7 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:11 --:--:-- 0 100 23 100 23 0 0 1 0 0:00:23 0:00:11 0:00:12 3 === End of file stderr70 === Start of file trace70 00:41:55.053877 * Trying 127.0.0.1:39863... 00:41:55.923592 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 48062 00:41:56.035941 * using HTTP/1.x 00:41:56.407118 => Send header, 81 bytes (0x51) 0000: GET /70 HTTP/1.1 0012: Host: 127.0.0.1:39863 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: 00:41:56.745482 <= Recv header, 37 bytes (0x25) 0000: HTTP/1.1 401 Authorization Required 00:41:57.043581 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:41:57.287609 <= Recv header, 64 bytes (0x40) 0000: WWW-Authenticate: Digest realm="testrealm", nonce="1053604199" 00:41:57.313806 <= Recv header, 24 bytes (0x18) 0000: WWW-Authenticate: NTLM 00:41:57.336337 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:41:57.361199 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 00:41:57.459445 * Ignoring the response-body 00:41:57.475521 * setting size while ignoring 00:41:57.489229 <= Recv header, 2 bytes (0x2) 0000: 00:41:57.976943 * Connection #0 to host 127.0.0.1:39863 left intact 00:41:58.087457 * Issue another request to this URL: 'http://127.0.0.1:39863/70' 00:41:58.467473 * Reusing existing http: connection with host 127.0.0.1 00:42:04.781583 * Server auth using Digest with user 'testuser' 00:42:04.815274 => Send header, 219 bytes (0xdb) 0000: GET /70 HTTP/1.1 0012: Host: 127.0.0.1:39863 0029: Authorization: Digest username="testuser", realm="testrealm", no 0069: nce="1053604199", uri="/70", response="2c9a6f00af0d86497b177b90e 00a9: 90c688a" 00b3: User-Agent: curl/8.17.0 00cc: Accept: */* 00d9: 00:42:04.877198 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:42:04.887459 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:42:04.897790 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:42:04.905099 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 23 00:42:04.925034 <= Recv header, 2 bytes (0x2) 0000: 00:42:04.936543 <= Recv data, 23 bytes (0x17) 0000: This IS the real page!. 00:42:05.049204 * Connection #0 to host 127.0.0.1:39863 left intact === End of file trace70 === Start of file valgrind70 ==197078== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind70 test 0071...[HTTP and -F upload in config file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind71 ../src/curl -q --output log/5/curl71.out --include --trace-ascii log/5/trace71 --trace-time http://127.0.0.1:46263/we/want/71 -K - log/5/stdout71 2> log/5/stderr71 valgrind ERROR ==197121== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 71 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind71 ../src/curl -q --output log/5/curl71.out --include --trace-ascii log/5/trace71 --trace-time http://127.0.0.1:46263/we/want/71 -K - log/5/stdout71 2> log/5/stderr71 === End of file commands.log === Start of file curl71.out HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 11 blablabla === End of file curl71.out === Start of file http_server.log 00:41:07.573215 ====> Client connect 00:41:07.573375 accept_connection 3 returned 4 00:41:07.573454 accept_connection 3 returned 0 00:41:07.580877 Read 93 bytes 00:41:07.581097 Process 93 bytes request 00:41:07.581209 Got request: GET /verifiedserver HTTP/1.1 00:41:07.581285 Are-we-friendly question received 00:41:07.581413 Wrote request (93 bytes) input to log/5/server.input 00:41:07.581527 Identifying ourselves as friends 00:41:07.581702 Response sent (57 bytes) and written to log/5/server.response 00:41:07.581764 special request received, no persistency 00:41:07.581821 ====> Client disconnect 0 00:42:01.456238 ====> Client connect 00:42:01.456381 accept_connection 3 returned 4 00:42:01.456455 accept_connection 3 returned 0 00:42:02.995525 Read 610 bytes 00:42:02.995742 Process 610 bytes request 00:42:02.995838 Got request: POST /we/want/71 HTTP/1.1 00:42:02.995905 Serve test number 71 part 0 00:42:02.996132 - request found to be complete (71) 00:42:02.996295 Found Content-Length: 432 in the request 00:42:02.996458 Wrote request (610 bytes) input to log/5/server.input 00:42:02.996561 Send response test71 section 00:42:02.996768 connection close instruction "swsclose" found in response 00:42:02.996907 Response sent (117 bytes) and written to log/5/server.response 00:42:02.996967 instructed to close connection after server-reply 00:42:02.997023 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 59646 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 71 === End of file server.cmd === Start of file server.input POST /we/want/71 HTTP/1.1 Host: 127.0.0.1:46263 Accept: */* Content-Length: 432 Content-Type: multipart/form-data; boundary=------------------------Rrjhn0KXX9Bvi08g4pTWxe --------------------------Rrjhn0KXX9Bvi08g4pTWxe Content-Disposition: form-data; name="name" daniel --------------------------Rrjhn0KXX9Bvi08g4pTWxe Content-Disposition: form-data; name="tool" curl --------------------------Rrjhn0KXX9Bvi08g4pTWxe Content-Disposition: form-data; name="file"; filename="test71.txt" Content-Type: text/plain foo- This is a moo- bar --------------------------Rrjhn0KXX9Bvi08g4pTWxe-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 11 blablabla === End of file server.response === Start of file stderr71 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 432 0 0 100 432 0 106 0:00:04 0:00:04 --:--:-- 153 100 443 100 11 100 432 2 87 0:00:05 0:00:04 0:00:01 119 100 443 100 11 100 432 2 85 0:00:05 0:00:05 --:--:-- 115 === End of file stderr71 === Start of file stdin-for-71 -F name=daniel -F tool=curl -F file=@log/5/test71.txt user-agent = "" === End of file stdin-for-71 === Start of file test71.txt foo- This is a moo- bar === End of file test71.txt === Start of file trace71 00:42:01.542016 * Trying 127.0.0.1:46263... 00:42:02.410399 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 53146 00:42:02.538125 * using HTTP/1.x 00:42:03.419924 => Send header, 178 bytes (0xb2) 0000: POST /we/want/71 HTTP/1.1 001b: Host: 127.0.0.1:46263 0032: Accept: */* 003f: Content-Length: 432 0054: Content-Type: multipart/form-data; boundary=-------------------- 0094: ----Rrjhn0KXX9Bvi08g4pTWxe 00b0: 00:42:03.529947 => Send data, 432 bytes (0x1b0) 0000: --------------------------Rrjhn0KXX9Bvi08g4pTWxe 0032: Content-Disposition: form-data; name="name" 005f: 0061: daniel 0069: --------------------------Rrjhn0KXX9Bvi08g4pTWxe 009b: Content-Disposition: form-data; name="tool" 00c8: 00ca: curl 00d0: --------------------------Rrjhn0KXX9Bvi08g4pTWxe 0102: Content-Disposition: form-data; name="file"; filename="test71.tx 0142: t" 0146: Content-Type: text/plain 0160: 0162: foo-.This is a moo-.bar. 017c: --------------------------Rrjhn0KXX9Bvi08g4pTWxe-- 00:42:03.650618 * upload completely sent off: 432 bytes 00:42:03.924214 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 00:42:04.211592 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:42CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind72 ../src/curl -q --output log/7/curl72.out --include --trace-ascii log/7/trace72 --trace-time http://127.0.0.1:34897/72 -u testuser:testpass --anyauth > log/7/stdout72 2> log/7/stderr72 :04.315778 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:42:04.356474 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 11. 00:42:04.437783 <= Recv header, 1 bytes (0x1) 0000: . 00:42:04.492644 <= Recv data, 11 bytes (0xb) 0000: blablabla.. 00:42:04.961879 * Connection #0 to host 127.0.0.1:46263 left intact === End of file trace71 === Start of file valgrind71 ==197121== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind71 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 77 in state 4 Runner 2 (id 185908) running test 78 in state 4 Runner 3 (id 185910) running test 75 in state 4 Runner 4 (id 185912) running test 73 in state 4 Runner 5 (id 185914) running test 79 in state 4 Runner 6 (id 185916) running test 76 in state 4 Runner 7 (id 185918) running test 72 in state 4 Runner 8 (id 185920) running test 74 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 77 in state 4 Runner 2 (id 185908) running test 78 in state 4 Runner 3 (id 185910) running test 75 in state 4 Runner 4 (id 185912) running test 73 in state 4 Runner 5 (id 185914) running test 79 in state 4 Runner 6 (id 185916) running test 76 in state 4 Runner 7 (id 185918) running test 72 in state 4 Runner 8 (id 185920) running test 74 in state 4 test 0072...[HTTP with Digest *OR* Basic authorization] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind72 ../src/curl -q --output log/7/curl72.out --include --trace-ascii log/7/trace72 --trace-time http://127.0.0.1:34897/72 -u testuser:testpass --anyauth > log/7/stdout72 2> log/7/stderr72 valgrind ERROR ==197404== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 72 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind72 ../src/curl -q --output log/7/curl72.out --include --trace-ascii log/7/trace72 --trace-time http://127.0.0.1:34897/72 -u testuser:testpass --anyauth > log/7/stdout72 2> log/7/stderr72 === End of file commands.log === Start of file curl72.out HTTP/1.1 401 Authorization Required Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Basic realm="foothis" WWW-Authenticate: Digest realm="testrealm", nonce="1053604199" Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 HTTP/1.1 200 OK Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 23 This IS the real page === End of file curl72.out === Start of file http_server.log 00:41:31.146711 ====> Client connect 00:41:31.146876 accept_connection 3 returned 4 00:41:31.146953 accept_connection 3 returned 0 00:41:31.152774 Read 93 bytes 00:41:31.152877 Process 93 bytes request 00:41:31.152965 Got request: GET /verifiedserver HTTP/1.1 00:41:31.153032 Are-we-friendly question received 00:41:31.153161 Wrote request (93 bytes) input to log/7/server.input 00:41:31.153262 Identifying ourselves as friends 00:41:31.153448 Response sent (57 bytes) and written to log/7/server.response 00:41:31.153512 special request received, no persistency 00:41:31.153568 ====> Client disconnect 0 00:42:19.192894 ====> Client connect 00:42:19.193034 accept_connection 3 returned 4 00:42:19.193113 accept_connection 3 returned 0 00:42:20.193611 Read 81 bytes 00:42:20.193827 Process 81 bytes request 00:42:20.193922 Got request: GET /72 HTTP/1.1 00:42:20.193993 Serve test number 72 part 0 00:42:20.194232 - request found to be complete (72) 00:42:20.194502 Wrote request (81 bytes) input to log/7/server.input 00:42:20.194610 Send response test72 section 00:42:20.195031 Response sent (277 bytes) and written to log/7/server.response 00:42:20.195099 => persistent connection request ended, awaits new request 00:42:28.974491 Read 219 bytes 00:42:28.997600 Process 219 bytes request 00:42:28.997806 Got request: GET /72 HTTP/1.1 00:42:28.997889 Serve test number 72 part 0 00:42:28.998123 - request found to be complete (72) 00:42:28.998337 Received Digest request, sending back data 1000 00:42:28.998442 Wrote request (219 bytes) input to log/7/server.input 00:42:28.998547 Send response test72 section 00:42:28.999025 Response sent (149 bytes) and written to log/7/server.response 00:42:28.999097 => persistent connection request ended, awaits new request 00:42:30.020330 Connection closed by client 00:42:30.020506 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 54338 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 72 === End of file server.cmd === Start of file server.input GET /72 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* GET /72 HTTP/1.1 Host: 127.0.0.1:34897 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604199", uri="/72", response="9fcd1330377365a09bbcb33b2cbb25bd" User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 401 Authorization Required Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Basic realm="foothis" WWW-Authenticate: Digest realm="testrealm", nonce="1053604199" Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 This is not the real page HTTP/1.1 200 OK Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 23 This IS the real page === End of file server.response === Start of file stderr72 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 8 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 7 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:12 --:--:-- 0 100 23 100 23 0 0 1 0 0:00:23 0:00:12 0:00:11 3 === End of file stderr72 === Start of file trace72 00:42:19.261409 * Trying 127.0.0.1:34897... 00:42:20.128086 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 35012 00:42:20.247178 * using HTTP/1.x 00:42:20.613739 => Send header, 81 bytes (0x51) 0000: GET /72 HTTP/1.1 0012: Host: 127.0.0.1:34897 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: 00:42:20.957046 <= Recv header, 37 bytes (0x25) 0000: HTTP/1.1 401 Authorization Required 00:42:21.262516 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:42:21.439195 <= Recv header, 41 bytes (0x29) 0000: WWW-Authenticate: Basic realm="foothis" 00:42:21.547934 <= Recv header, 64 bytes (0x40) 0000: WWW-Authenticate: Digest realm="testrealm", nonce="1053604199" 00:42:21.576118 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:42:21.602816 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 00:42:21.705CMD (768): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind75 ../src/curl -q --include --trace-ascii log/3/trace75 --trace-time "http://a-site-never-accessed.example.org/[2-1]" -o "log/3/weee#1.dump" --stderr - > log/3/stdout75 2> log/3/stderr75 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind74 ../src/curl -q --include --trace-ascii log/8/trace74 --trace-time "http://127.0.0.1:39461/{74,740001}" -o "log/8/dumpit#1.dump" > log/8/stdout74 2> log/8/stderr74 886 * Ignoring the response-body 00:42:21.723310 * setting size while ignoring 00:42:21.738472 <= Recv header, 2 bytes (0x2) 0000: 00:42:22.273913 * Connection #0 to host 127.0.0.1:34897 left intact 00:42:22.390667 * Issue another request to this URL: 'http://127.0.0.1:34897/72' 00:42:22.797110 * Reusing existing http: connection with host 127.0.0.1 00:42:29.323668 * Server auth using Digest with user 'testuser' 00:42:29.358983 => Send header, 219 bytes (0xdb) 0000: GET /72 HTTP/1.1 0012: Host: 127.0.0.1:34897 0029: Authorization: Digest username="testuser", realm="testrealm", no 0069: nce="1053604199", uri="/72", response="9fcd1330377365a09bbcb33b2 00a9: cbb25bd" 00b3: User-Agent: curl/8.17.0 00cc: Accept: */* 00d9: 00:42:29.424036 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:42:29.435677 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:42:29.447506 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:42:29.455615 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 23 00:42:29.477340 <= Recv header, 2 bytes (0x2) 0000: 00:42:29.490220 <= Recv data, 23 bytes (0x17) 0000: This IS the real page!. 00:42:29.607030 * Connection #0 to host 127.0.0.1:34897 left intact === End of file trace72 === Start of file valgrind72 ==197404== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind72 test 0075...[HTTP, urlglob retrieval with bad range] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind75 ../src/curl -q --include --trace-ascii log/3/trace75 --trace-time "http://a-site-never-accessed.example.org/[2-1]" -o "log/3/weee#1.dump" --stderr - > log/3/stdout75 2> log/3/stderr75 valgrind ERROR ==197718== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 75 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind75 ../src/curl -q --include --trace-ascii log/3/trace75 --trace-time "http://a-site-never-accessed.example.org/[2-1]" -o "log/3/weee#1.dump" --stderr - > log/3/stdout75 2> log/3/stderr75 === End of file commands.log === Start of file server.cmd Testnum 75 === End of file server.cmd === Start of file stdout75 curl: (3) bad range in URL position 47: http://a-site-never-accessed.example.org/[2-1] ^ === End of file stdout75 === Start of file valgrind75 ==197718== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind75 test 0074...[HTTP, urlglob {}-retrieval and -o #[num] usage] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind74 ../src/curl -q --include --trace-ascii log/8/trace74 --trace-time "http://127.0.0.1:39461/{74,740001}" -o "log/8/dumpit#1.dump" > log/8/stdout74 2> log/8/stderr74 valgrind ERROR ==197794== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 74 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind74 ../src/curl -q --include --trace-ascii log/8/trace74 --trace-time "http://127.0.0.1:39461/{74,740001}" -o "log/8/dumpit#1.dump" > log/8/stdout74 2> log/8/stderr74 === End of file commands.log === Start of file dumpit74.dump HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Content-Type: text/html Funny-head: yesyes -foo- === End of file dumpit74.dump === Start of file dumpit740001.dump HTTP/1.0 200 OK Content-Type: text/html Funny-head: swsclose Connection: close crap data === End of file dumpit740001.dump === Start of file http_server.log 00:41:47.377593 ====> Client connect 00:41:47.377774 accept_connection 3 returned 4 00:41:47.377861 accept_connection 3 returned 0 00:41:47.384768 Read 93 bytes 00:41:47.384889 Process 93 bytes request 00:41:47.384990 Got request: GET /verifiedserver HTTP/1.1 00:41:47.385064 Are-we-friendly question received 00:41:47.385193 Wrote request (93 bytes) input to log/8/server.input 00:41:47.385291 Identifying ourselves as friends 00:41:47.385493 Response sent (57 bytes) and written to log/8/server.response 00:41:47.385564 special request received, no persistency 00:41:47.385627 ====> Client disconnect 0 00:42:35.089850 ====> Client connect 00:42:35.089985 accept_connection 3 returned 4 00:42:35.090061 accept_connection 3 returned 0 00:42:36.132265 Read 81 bytes 00:42:36.132460 Process 81 bytes request 00:42:36.132553 Got request: GET /74 HTTP/1.1 00:42:36.132621 Serve test number 74 part 0 00:42:36.132804 - request found to be complete (74) 00:42:36.133067 Wrote request (81 bytes) input to log/8/server.input 00:42:36.133173 Send response test74 section 00:42:36.133524 Response sent (238 bytes) and written to log/8/server.response 00:42:36.133594 => persistent connection request ended, awaits new request 00:42:38.959976 Read 85 bytes 00:42:38.960157 Process 85 bytes request 00:42:38.960248 Got request: GET /740001 HTTP/1.1 00:42:38.960314 Serve test number 74 part 1 00:42:38.960485 - request found to be complete (74) 00:42:38.960673 Wrote request (85 bytes) input to log/8/server.input 00:42:38.960751 Send response test74 section 00:42:38.960962 connection close instruction "swsclose" found in response 00:42:38.961119 Response sent (90 bytes) and written to log/8/server.response 00:42:38.961182 instructed to close connection after server-reply 00:42:38.961240 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 32954 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 74 === End of file server.cmd === Start of file server.input GET /74 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* GET /740001 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Content-Type: text/html Funny-head: yesyes -foo- HTTP/1.0 200 OK Content-Type: text/html Funny-head: swsclose Connection: close crap data === End of file server.response === Start of file stderr74 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind73 ../src/curl -q --output log/4/curl73.out --include --trace-ascii log/4/trace73 --trace-time http://127.0.0.1:42621/we/want/73 -c log/4/jar73.txt -H "Host: host.NOT_DISCLOSED.se" > log/4/stdout73 2> log/4/stderr73 -- 0 100 10 0 10 0 0 15 0 --:--:-- --:--:-- --:--:-- 36 100 10 0 10 0 0 15 0 --:--:-- --:--:-- --:--:-- 34 === End of file stderr74 === Start of file trace74 00:42:35.123426 * Trying 127.0.0.1:39461... 00:42:36.063147 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 57476 00:42:36.192979 * using HTTP/1.x 00:42:36.554060 => Send header, 81 bytes (0x51) 0000: GET /74 HTTP/1.1 0012: Host: 127.0.0.1:39461 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: 00:42:36.959771 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:42:37.286727 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:42:37.391611 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:42:37.421432 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 00:42:37.430397 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 00:42:37.437920 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 00:42:37.470398 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 00:42:37.523837 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:42:37.529643 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:42:37.607223 <= Recv header, 1 bytes (0x1) 0000: . 00:42:37.664008 <= Recv data, 6 bytes (0x6) 0000: -foo-. 00:42:38.219840 * Connection #0 to host 127.0.0.1:39461 left intact 00:42:39.261750 * Reusing existing http: connection with host 127.0.0.1 00:42:39.345114 => Send header, 85 bytes (0x55) 0000: GET /740001 HTTP/1.1 0016: Host: 127.0.0.1:39461 002d: User-Agent: curl/8.17.0 0046: Accept: */* 0053: 00:42:39.382910 * HTTP 1.0, assume close after body 00:42:39.391419 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.0 200 OK. 00:42:39.407188 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:42:39.414764 <= Recv header, 21 bytes (0x15) 0000: Funny-head: swsclose. 00:42:39.452506 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:42:39.467380 <= Recv header, 1 bytes (0x1) 0000: . 00:42:39.472581 <= Recv data, 10 bytes (0xa) 0000: crap data. 00:42:39.516025 * abort upload 00:42:39.532495 <= Recv data, 0 bytes (0x0) 00:42:39.676965 * shutting down connection #0 === End of file trace74 === Start of file valgrind74 ==197794== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind74 test 0073...[HTTP, receive cookies when using custom Host:, domain using only two dots] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind73 ../src/curl -q --output log/4/curl73.out --include --trace-ascii log/4/trace73 --trace-time http://127.0.0.1:42621/we/want/73 -c log/4/jar73.txt -H "Host: host.NOT_DISCLOSED.se" > log/4/stdout73 2> log/4/stderr73 valgrind ERROR ==197569== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 73 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind73 ../src/curl -q --output log/4/curl73.out --include --trace-ascii log/4/trace73 --trace-time http://127.0.0.1:42621/we/want/73 -c log/4/jar73.txt -H "Host: host.NOT_DISCLOSED.se" > log/4/stdout73 2> log/4/stderr73 === End of file commands.log === Start of file curl73.out HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Type: text/html Set-Cookie: IPCZQX01af0fca5c=000010008168c200d25dfc4b; path=/; domain=.NOT_DISCLOSED.se Content-Length: 4 boo === End of file curl73.out === Start of file http_server.log 00:41:44.021891 ====> Client connect 00:41:44.022056 accept_connection 3 returned 4 00:41:44.022137 accept_connection 3 returned 0 00:41:44.029712 Read 93 bytes 00:41:44.029880 Process 93 bytes request 00:41:44.029984 Got request: GET /verifiedserver HTTP/1.1 00:41:44.030058 Are-we-friendly question received 00:41:44.030205 Wrote request (93 bytes) input to log/4/server.input 00:41:44.030312 Identifying ourselves as friends 00:41:44.030500 Response sent (57 bytes) and written to log/4/server.response 00:41:44.030573 special request received, no persistency 00:41:44.030637 ====> Client disconnect 0 00:42:31.678181 ====> Client connect 00:42:31.678315 accept_connection 3 returned 4 00:42:31.678391 accept_connection 3 returned 0 00:42:32.888109 Read 95 bytes 00:42:32.888302 Process 95 bytes request 00:42:32.888394 Got request: GET /we/want/73 HTTP/1.1 00:42:32.888467 Serve test number 73 part 0 00:42:32.888646 - request found to be complete (73) 00:42:32.888906 Wrote request (95 bytes) input to log/4/server.input 00:42:32.889024 Send response test73 section 00:42:32.889235 connection close instruction "swsclose" found in response 00:42:32.889470 Response sent (202 bytes) and written to log/4/server.response 00:42:32.889538 instructed to close connection after server-reply 00:42:32.889599 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 46688 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file jar73.txt # Netscape HTTP Cookie File # https://curl.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. .NOT_DISCLOSED.se TRUE / FALSE 0 IPCZQX01af0fca5c 000010008168c200d25dfc4b === End of file jar73.txt === Start of file server.cmd Testnum 73 === End of file server.cmd === Start of file server.input GET /we/want/73 HTTP/1.1 Host: host.NOT_DISCLOSED.se User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Type: text/html Set-Cookie: IPCZQX01af0fca5c=000010008168c200d25dfc4b; path=/; domain=.NOT_DISCLOSED.se Content-Length: 4 boo === End of file server.response === Start of file stderr73 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:05 --:--:-- 1 100 4 0 4 0 0 0 0 --:--:-- 0:00:05 --:--:-- 1 === End of file stderr73 === Start of file trace73 00:42:30.739914 * Trying 127.0.0.1:42621... 00:42:31.631165 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 60658 00:42:31.765537 * using HTTP/1.x 00:42:32.308378 => Send header, 95 bytes (0x5f) 0000: GET /we/want/73 HTTP/1.1 001a: Host: host.NOT_DISCLOSED.se 0037: User-Agent: curl/8.17.0 0050: Accept: */* 005d: 00:42:32.669006 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 200 OK swsclose 00:42:32.982876 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:42:33.110184 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:42:33.581783 * Added cookie IPCZQX01af0fca5c="000010008168c200d25dfc4b" for domain NOT_DISCLOSED.se, path /, expire 0 00:42:33.600958 <= Recv header, 89 bytes (0x59) 0000: Set-Cookie: IPCZQX01af0fca5c=000010008168c200d25dfc4b; path=/; d 0040: omain=.NOT_DISCLOSED.se 00:42:33.636200 <= Recv header, 19 bytes (0x13) 0000: CCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind76 ../src/curl -q --output log/6/curl76.out --include --trace-ascii log/6/trace76 --trace-time http://127.0.0.1:38277/76 -u testuser:testpass --anyauth > log/6/stdout76 2> log/6/stderr76 ontent-Length: 4 00:42:33.722539 <= Recv header, 2 bytes (0x2) 0000: 00:42:33.778178 <= Recv data, 4 bytes (0x4) 0000: boo. 00:42:34.325880 * Connection #0 to host 127.0.0.1:42621 left intact === End of file trace73 === Start of file valgrind73 ==197569== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind73 test 0076...[HTTP with comma-separated WWW-Authenticate header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind76 ../src/curl -q --output log/6/curl76.out --include --trace-ascii log/6/trace76 --trace-time http://127.0.0.1:38277/76 -u testuser:testpass --anyauth > log/6/stdout76 2> log/6/stderr76 valgrind ERROR ==197991== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 76 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind76 ../src/curl -q --output log/6/curl76.out --include --trace-ascii log/6/trace76 --trace-time http://127.0.0.1:38277/76 -u testuser:testpass --anyauth > log/6/stdout76 2> log/6/stderr76 === End of file commands.log === Start of file curl76.out HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Basic, Wild-and-crazy, NTLM Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 HTTP/1.1 401 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Length: 34 Content-Type: text/html; charset=iso-8859-1 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== HTTP/1.1 200 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file curl76.out === Start of file http_server.log 00:41:50.133458 ====> Client connect 00:41:50.133620 accept_connection 3 returned 4 00:41:50.133695 accept_connection 3 returned 0 00:41:50.140432 Read 93 bytes 00:41:50.140529 Process 93 bytes request 00:41:50.140614 Got request: GET /verifiedserver HTTP/1.1 00:41:50.140673 Are-we-friendly question received 00:41:50.140776 Wrote request (93 bytes) input to log/6/server.input 00:41:50.140861 Identifying ourselves as friends 00:41:50.141026 Response sent (57 bytes) and written to log/6/server.response 00:41:50.141084 special request received, no persistency 00:41:50.141134 ====> Client disconnect 0 00:42:37.499978 ====> Client connect 00:42:37.500124 accept_connection 3 returned 4 00:42:37.500212 accept_connection 3 returned 0 00:42:38.559599 Read 81 bytes 00:42:38.559813 Process 81 bytes request 00:42:38.559921 Got request: GET /76 HTTP/1.1 00:42:38.560002 Serve test number 76 part 0 00:42:38.560419 - request found to be complete (76) 00:42:38.560766 Wrote request (81 bytes) input to log/6/server.input 00:42:38.560885 Send response test76 section 00:42:38.561203 connection close instruction "swsclose" found in response 00:42:38.561468 Response sent (228 bytes) and written to log/6/server.response 00:42:38.561544 instructed to close connection after server-reply 00:42:38.561614 ====> Client disconnect 0 00:42:41.067654 ====> Client connect 00:42:41.067804 accept_connection 3 returned 4 00:42:41.067891 accept_connection 3 returned 0 00:42:41.248981 Read 147 bytes 00:42:41.249166 Process 147 bytes request 00:42:41.249260 Got request: GET /76 HTTP/1.1 00:42:41.249332 Serve test number 76 part 0 00:42:41.249556 - request found to be complete (76) 00:42:41.249769 Received NTLM type-1, sending back data 1001 00:42:41.249869 Wrote request (147 bytes) input to log/6/server.input 00:42:41.249955 Send response test76 section 00:42:41.250460 Response sent (421 bytes) and written to log/6/server.response 00:42:41.250526 => persistent connection request ended, awaits new request 00:42:42.588783 Read 279 bytes 00:42:42.588979 Process 279 bytes request 00:42:42.589078 Got request: GET /76 HTTP/1.1 00:42:42.589148 Serve test number 76 part 0 00:42:42.589373 - request found to be complete (76) 00:42:42.589585 Received NTLM type-3, sending back data 1002 00:42:42.589683 Wrote request (279 bytes) input to log/6/server.input 00:42:42.589765 Send response test76 section 00:42:42.590034 connection close instruction "swsclose" found in response 00:42:42.590242 Response sent (180 bytes) and written to log/6/server.response 00:42:42.590308 instructed to close connection after server-reply 00:42:42.590369 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 56756 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 76 === End of file server.cmd === Start of file server.input GET /76 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* GET /76 HTTP/1.1 Host: 127.0.0.1:38277 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* GET /76 HTTP/1.1 Host: 127.0.0.1:38277 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Basic, Wild-and-crazy, NTLM Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 This is not the real page HTTP/1.1 401 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Length: 34 Content-Type: text/html; charset=iso-8859-1 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== This is not the real page either HTTP/1.1 200 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file server.response === Start of file stderr76 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 7 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 7 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 34 100 34 0 0 5 0 0:00:06 0:00:06 --:--:-- 70 0 0 0 0 0 0 0 0 --:--:-- 0:00:07 --:--:-- 0 100 32 100 32 0 0 4 0 0:00:08 0:00:07 0:00:01 213 === End of file stderr76 === Start of file trace76 00:42:37.557385 * Trying 127.0.0.1:38277... 00:42:38.472956 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 59094 00:42:38.609907 * using HTTP/1.x 00:42:38.979755 => Send header, 81 bytCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind77 ../src/curl -q --output log/1/curl77.out --include --trace-ascii log/1/trace77 --trace-time http://127.0.0.1:40641/77 -z "dec 12 12:00:00 1999 GMT" > log/1/stdout77 2> log/1/stderr77 es (0x51) 0000: GET /76 HTTP/1.1 0012: Host: 127.0.0.1:38277 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: 00:42:39.320385 <= Recv header, 46 bytes (0x2e) 0000: HTTP/1.1 401 Authorization Required swsclose 00:42:39.637967 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:42:39.829497 <= Recv header, 47 bytes (0x2f) 0000: WWW-Authenticate: Basic, Wild-and-crazy, NTLM 00:42:39.867996 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:42:39.896058 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 00:42:40.004118 * Ignoring the response-body 00:42:40.025917 * setting size while ignoring 00:42:40.041269 <= Recv header, 2 bytes (0x2) 0000: 00:42:40.593073 * Connection #0 to host 127.0.0.1:38277 left intact 00:42:40.709738 * Issue another request to this URL: 'http://127.0.0.1:38277/76' 00:42:40.885739 * Connection 0 seems to be dead 00:42:40.980318 * shutting down connection #0 00:42:41.383855 * Hostname 127.0.0.1 was found in DNS cache 00:42:41.443756 * Trying 127.0.0.1:38277... 00:42:41.483005 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 59104 00:42:41.489968 * using HTTP/1.x 00:42:41.605524 * Server auth using NTLM with user 'testuser' 00:42:41.630909 => Send header, 147 bytes (0x93) 0000: GET /76 HTTP/1.1 0012: Host: 127.0.0.1:38277 0029: Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 006b: User-Agent: curl/8.17.0 0084: Accept: */* 0091: 00:42:41.673045 <= Recv header, 52 bytes (0x34) 0000: HTTP/1.1 401 Now gimme that second request of crap 00:42:41.683586 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:42:41.692249 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 34 00:42:41.697314 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:42:41.819882 <= Recv header, 241 bytes (0xf1) 0000: WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgy 0040: NcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQAS 0080: AAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAd 00c0: ABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== 00:42:41.857924 * Ignoring the response-body 00:42:41.859900 * setting size while ignoring 00:42:41.861654 <= Recv header, 2 bytes (0x2) 0000: 00:42:41.903811 * Connection #1 to host 127.0.0.1:38277 left intact 00:42:41.918849 * Issue another request to this URL: 'http://127.0.0.1:38277/76' 00:42:42.095401 * Reusing existing http: connection with host 127.0.0.1 00:42:42.966655 * Server auth using NTLM with user 'testuser' 00:42:42.970935 => Send header, 279 bytes (0x117) 0000: GET /76 HTTP/1.1 0012: Host: 127.0.0.1:38277 0029: Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABw 0069: AAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjK 00a9: HRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJ 00e9: T04= 00ef: User-Agent: curl/8.17.0 0108: Accept: */* 0115: 00:42:43.030715 <= Recv header, 54 bytes (0x36) 0000: HTTP/1.1 200 Things are fine in server land swsclose 00:42:43.043372 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:42:43.049158 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:42:43.055542 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 32 00:42:43.072730 <= Recv header, 2 bytes (0x2) 0000: 00:42:43.081905 <= Recv data, 32 bytes (0x20) 0000: Finally, this is the real page!. 00:42:43.175340 * Connection #1 to host 127.0.0.1:38277 left intact === End of file trace76 === Start of file valgrind76 ==197991== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind76 test 0077...[HTTP with -z "older date"] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind77 ../src/curl -q --output log/1/curl77.out --include --trace-ascii log/1/trace77 --trace-time http://127.0.0.1:40641/77 -z "dec 12 12:00:00 1999 GMT" > log/1/stdout77 2> log/1/stderr77 valgrind ERROR ==198159== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 77 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind77 ../src/curl -q --output log/1/curl77.out --include --trace-ascii log/1/trace77 --trace-time http://127.0.0.1:40641/77 -z "dec 12 12:00:00 1999 GMT" > log/1/stdout77 2> log/1/stderr77 === End of file commands.log === Start of file curl77.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2010 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html -foo- === End of file curl77.out === Start of file http_server.log 00:42:02.049640 ====> Client connect 00:42:02.049801 accept_connection 3 returned 4 00:42:02.049879 accept_connection 3 returned 0 00:42:02.057031 Read 93 bytes 00:42:02.057127 Process 93 bytes request 00:42:02.057230 Got request: GET /verifiedserver HTTP/1.1 00:42:02.057304 Are-we-friendly question received 00:42:02.057432 Wrote request (93 bytes) input to log/1/server.input 00:42:02.057535 Identifying ourselves as friends 00:42:02.057708 Response sent (57 bytes) and written to log/1/server.response 00:42:02.057772 special request received, no persistency 00:42:02.057831 ====> Client disconnect 0 00:42:49.823977 ====> Client connect 00:42:49.824121 accept_connection 3 returned 4 00:42:49.824196 accept_connection 3 returned 0 00:42:50.801753 Read 131 bytes 00:42:50.801961 Process 131 bytes request 00:42:50.802052 Got request: GET /77 HTTP/1.1 00:42:50.802119 Serve test number 77 part 0 00:42:50.802292 - request found to be complete (77) 00:42:50.802532 Wrote request (131 bytes) input to log/1/server.input 00:42:50.802637 Send response test77 section 00:42:50.802948 Response sent (237 bytes) and written to log/1/server.response 00:42:50.803012 => persistent connection request ended, awaits new request 00:42:52.645093 Connection closed by client 00:42:52.645282 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 53564 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 77 === End of file server.cmd === Start of file server.input GET /77 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* If-Modified-Since: Sun, 12 Dec 1999 12:00:00 GMT === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2010 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html -foo- === End of file server.response === Start of file stderr77 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr77 === Start of file trace77 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind78 ../src/curl -q --output log/2/curl78.out --include --trace-ascii log/2/trace78 --trace-time http://127.0.0.1:39863/78 -z "dec 12 11:00:00 1999 GMT" > log/2/stdout78 2> log/2/stderr78 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind79 ../src/curl -q --output log/5/curl79.out --include --trace-ascii log/5/trace79 --trace-time ftp://127.0.0.1:46263/we/want/that/page/79 -x 127.0.0.1:46263 > log/5/stdout79 2> log/5/stderr79 00:42:48.904911 * Trying 127.0.0.1:40641... 00:42:49.737139 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 43660 00:42:49.858398 * using HTTP/1.x 00:42:50.222543 => Send header, 131 bytes (0x83) 0000: GET /77 HTTP/1.1 0012: Host: 127.0.0.1:40641 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: If-Modified-Since: Sun, 12 Dec 1999 12:00:00 GMT 0081: 00:42:50.535174 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:42:50.822115 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:42:50.913524 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:42:50.952553 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2010 12:10:00 GMT. 00:42:50.959571 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 00:42:50.965827 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 00:42:50.993474 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 00:42:51.048453 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:42:51.084118 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:42:51.178257 <= Recv header, 1 bytes (0x1) 0000: . 00:42:51.235497 <= Recv data, 6 bytes (0x6) 0000: -foo-. 00:42:51.340559 * we are done reading and this is set to close, stop send 00:42:51.370299 * abort upload 00:42:51.835626 * shutting down connection #0 === End of file trace77 === Start of file valgrind77 ==198159== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind77 test 0078...[HTTP with -z "newer date"] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind78 ../src/curl -q --output log/2/curl78.out --include --trace-ascii log/2/trace78 --trace-time http://127.0.0.1:39863/78 -z "dec 12 11:00:00 1999 GMT" > log/2/stdout78 2> log/2/stderr78 valgrind ERROR ==198367== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 78 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind78 ../src/curl -q --output log/2/curl78.out --include --trace-ascii log/2/trace78 --trace-time http://127.0.0.1:39863/78 -z "dec 12 11:00:00 1999 GMT" > log/2/stdout78 2> log/2/stderr78 === End of file commands.log === Start of file curl78.out HTTP/1.1 200 OK Server: test-server/fake Last-Modified: Tue, 13 Jun 1990 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes === End of file curl78.out === Start of file http_server.log 00:42:10.133580 ====> Client connect 00:42:10.133737 accept_connection 3 returned 4 00:42:10.133812 accept_connection 3 returned 0 00:42:10.140884 Read 93 bytes 00:42:10.141000 Process 93 bytes request 00:42:10.141087 Got request: GET /verifiedserver HTTP/1.1 00:42:10.141153 Are-we-friendly question received 00:42:10.141271 Wrote request (93 bytes) input to log/2/server.input 00:42:10.141361 Identifying ourselves as friends 00:42:10.141514 Response sent (57 bytes) and written to log/2/server.response 00:42:10.141576 special request received, no persistency 00:42:10.141631 ====> Client disconnect 0 00:42:57.619525 ====> Client connect 00:42:57.619660 accept_connection 3 returned 4 00:42:57.619741 accept_connection 3 returned 0 00:42:58.674857 Read 131 bytes 00:42:58.675039 Process 131 bytes request 00:42:58.675145 Got request: GET /78 HTTP/1.1 00:42:58.675220 Serve test number 78 part 0 00:42:58.675403 - request found to be complete (78) 00:42:58.675676 Wrote request (131 bytes) input to log/2/server.input 00:42:58.675789 Send response test78 section 00:42:58.676141 Response sent (220 bytes) and written to log/2/server.response 00:42:58.676210 => persistent connection request ended, awaits new request 00:43:00.464963 Connection closed by client 00:43:00.465181 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 40444 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 78 === End of file server.cmd === Start of file server.input GET /78 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* If-Modified-Since: Sun, 12 Dec 1999 11:00:00 GMT === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Server: test-server/fake Last-Modified: Tue, 13 Jun 1990 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr78 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 6 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 6 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr78 === Start of file trace78 00:42:56.680878 * Trying 127.0.0.1:39863... 00:42:57.577899 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 44190 00:42:57.706749 * using HTTP/1.x 00:42:58.097350 => Send header, 131 bytes (0x83) 0000: GET /78 HTTP/1.1 0012: Host: 127.0.0.1:39863 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: If-Modified-Since: Sun, 12 Dec 1999 11:00:00 GMT 0081: 00:42:58.434730 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:42:58.754584 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:42:58.866848 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 1990 12:10:00 GMT. 00:42:58.886036 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 00:42:58.894310 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 00:42:58.924868 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 00:42:58.980502 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:42:59.015160 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:42:59.021288 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:42:59.097388 * The requested document is not new enough 00:42:59.113036 * Simulate an HTTP 304 response 00:42:59.137255 <= Recv header, 1 bytes (0x1) 0000: . 00:42:59.403111 * Request completely sent off 00:42:59.654396 * shutting down connection #0 === End of file trace78 === Start of file valgrind78 ==198367== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind78 test 0079...[FTP over HTTP proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind79 ../src/curl -q --output log/5/curl79.out --include --trace-ascii log/5/trace79 --trace-time ftp://127.0.0.1:46263/we/want/that/page/79 -x 127.0.0.1:46263 > log/5/stdout79 2> log/5/stderr79 valgrind ERROR ==198370== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 79 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind80 ../src/curl -q --output log/7/curl80.out --include --trace-ascii log/7/trace80 --trace-time http://test.80:34897/we/want/that/page/80 -p --proxy1.0 127.0.0.1:43249 --user iam:myself --proxy-user youare:yourself -A "" > log/7/stdout80 2> log/7/stderr80 ers=16 --log-file=log/5/valgrind79 ../src/curl -q --output log/5/curl79.out --include --trace-ascii log/5/trace79 --trace-time ftp://127.0.0.1:46263/we/want/that/page/79 -x 127.0.0.1:46263 > log/5/stdout79 2> log/5/stderr79 === End of file commands.log === Start of file curl79.out HTTP/1.0 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes contents === End of file curl79.out === Start of file http_server.log 00:42:09.220941 ====> Client connect 00:42:09.221095 accept_connection 3 returned 4 00:42:09.221170 accept_connection 3 returned 0 00:42:09.228184 Read 93 bytes 00:42:09.228285 Process 93 bytes request 00:42:09.228372 Got request: GET /verifiedserver HTTP/1.1 00:42:09.228434 Are-we-friendly question received 00:42:09.228544 Wrote request (93 bytes) input to log/5/server.input 00:42:09.228634 Identifying ourselves as friends 00:42:09.228785 Response sent (57 bytes) and written to log/5/server.response 00:42:09.228846 special request received, no persistency 00:42:09.228899 ====> Client disconnect 0 00:42:57.278407 ====> Client connect 00:42:57.278563 accept_connection 3 returned 4 00:42:57.278647 accept_connection 3 returned 0 00:42:58.352992 Read 150 bytes 00:42:58.353183 Process 150 bytes request 00:42:58.353300 Got request: GET ftp://127.0.0.1:46263/we/want/that/page/79 HTTP/1.1 00:42:58.353381 Serve test number 79 part 0 00:42:58.353562 - request found to be complete (79) 00:42:58.353837 Wrote request (150 bytes) input to log/5/server.input 00:42:58.353955 Send response test79 section 00:42:58.354185 connection close instruction "swsclose" found in response 00:42:58.354357 Response sent (139 bytes) and written to log/5/server.response 00:42:58.354430 instructed to close connection after server-reply 00:42:58.354498 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 38772 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 79 === End of file server.cmd === Start of file server.input GET ftp://127.0.0.1:46263/we/want/that/page/79 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.0 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes contents === End of file server.response === Start of file stderr79 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 9 0 9 0 0 1 0 --:--:-- 0:00:04 --:--:-- 2 100 9 0 9 0 0 1 0 --:--:-- 0:00:04 --:--:-- 2 === End of file stderr79 === Start of file trace79 00:42:57.339618 * Trying 127.0.0.1:46263... 00:42:58.232489 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 53872 00:42:58.356879 * using HTTP/1.x 00:42:58.774059 => Send header, 150 bytes (0x96) 0000: GET ftp://127.0.0.1:46263/we/want/that/page/79 HTTP/1.1 0039: Host: 127.0.0.1:46263 0050: User-Agent: curl/8.17.0 0069: Accept: */* 0076: Proxy-Connection: Keep-Alive 0094: 00:42:59.115443 * HTTP 1.0, assume close after body 00:42:59.144098 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.0 200 OK. 00:42:59.451135 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:42:59.551807 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 00:42:59.616902 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:42:59.623239 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:42:59.697589 <= Recv header, 1 bytes (0x1) 0000: . 00:42:59.753675 <= Recv data, 9 bytes (0x9) 0000: contents. 00:42:59.872911 * abort upload 00:42:59.896444 <= Recv data, 0 bytes (0x0) 00:43:00.376727 * shutting down connection #0 === End of file trace79 === Start of file valgrind79 ==198370== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind79 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 85 in state 4 Runner 2 (id 185908) running test 86 in state 4 Runner 3 (id 185910) running test 81 in state 4 Runner 4 (id 185912) running test 83 in state 4 Runner 5 (id 185914) running test 87 in state 4 Runner 6 (id 185916) running test 84 in state 4 Runner 7 (id 185918) running test 80 in state 4 Runner 8 (id 185920) running test 82 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 85 in state 4 Runner 2 (id 185908) running test 86 in state 4 Runner 3 (id 185910) running test 81 in state 4 Runner 4 (id 185912) running test 83 in state 4 Runner 5 (id 185914) running test 87 in state 4 Runner 6 (id 185916) running test 84 in state 4 Runner 7 (id 185918) running test 80 in state 4 Runner 8 (id 185920) running test 82 in state 4 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/7/server/http2_server.pid" --logfile "log/7/http2_server.log" --logdir "log/7" --portfile log/7/server/http2_server.port --config log/7/server.cmd --id 2 --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP2 server is on PID 198724 port 43249 * pid http-proxy => 198724 198724 test 0080...[HTTP 1.0 CONNECT with proxytunnel and proxy+host Basic authentication] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind80 ../src/curl -q --output log/7/curl80.out --include --trace-ascii log/7/trace80 --trace-time http://test.80:34897/we/want/that/page/80 -p --proxy1.0 127.0.0.1:43249 --user iam:myself --proxy-user youare:yourself -A "" > log/7/stdout80 2> log/7/stderr80 valgrind ERROR ==198799== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 80 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind80 ../src/curl -q --output log/7/curl80.out --include --trace-ascii log/7/trace80 --trace-time http://test.80:34897/we/want/that/page/80 -p --proxy1.0 127.0.0.1:43249 --user iam:myself --proxy-user youare:yourself -A "" > log/7/stdout80 2> log/7/stderr80 === End of file commands.log === Start of file curl80.out HTTP/1.1 200 Mighty fine indeed HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file curl80.out === Start of file http2_server.log 00:42:35.802830 Run as proxy, CONNECT to host 127.0.0.1 00:42:35.813396 Running HTTP IPv4 version on port 43249 00:42:35.813859 Wrote pid 198724 to log/7/server/http2_server.pid 00:42:35.814130 Wrote port 43249 to log/7/server/http2_server.port 00:43:24.018633 ====> Client connect 00:43:24.018846 accept_connection 3 returned 4 00:43:24.019044 accept_connection 3 returned 0 00:43:25.032927 Read 134 bytes 00:43:25.CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind81 ../src/curl -q --output log/3/curl81.out --include --trace-ascii log/3/trace81 --trace-time http://127.0.0.1:46853/81 --proxy-user testuser:testpass -x http://127.0.0.1:46853 --proxy-ntlm > log/3/stdout81 2> log/3/stderr81 033702 Process 134 bytes request 00:43:25.039218 Received a CONNECT test.80:34897 HTTP/1.0 request 00:43:25.039419 Port number: 34897, test case number: -7 00:43:25.040504 [log/7/server.cmd] cmdfile says testnum 80 00:43:25.046261 - request found to be complete (80) 00:43:25.047748 Wrote request (134 bytes) input to log/7/proxy.input 00:43:25.048218 Send response test80 section 00:43:25.052817 Response sent (35 bytes) and written to log/7/proxy.response 00:43:25.553879 about to connect to 127.0.0.1:34897 00:43:25.554831 connected fine to 127.0.0.1:34897, now tunnel 00:43:26.269139 [CTRL] READ 111 bytes from client 00:43:26.269623 [CTRL] READ "GET /we/want/that/page/80 HTTP/1.1%0d%0aHost: test.80:34897%0d%0aAuthorization: Basic aWFtOm15c2VsZg==%0d%0aAccept: */*%0d%0a%0d%0a" 00:43:26.270525 [CTRL] SENT 111 bytes to server 00:43:26.270638 [CTRL] SENT "GET /we/want/that/page/80 HTTP/1.1%0d%0aHost: test.80:34897%0d%0aAuthorization: Basic aWFtOm15c2VsZg==%0d%0aAccept: */*%0d%0a%0d%0a" 00:43:26.272025 [CTRL] READ 80 bytes from server 00:43:26.272130 [CTRL] READ "HTTP/1.1 200 OK%0aDate: Tue, 09 Nov 2010 14:49:00 GMT%0aServer: test-server/fake sws" 00:43:26.272297 [CTRL] READ 77 bytes from server 00:43:26.272378 [CTRL] READ "close%0aContent-Type: text/html%0aFunny-head: yesyes%0aContent-Length: 9%0a%0acontents%0a" 00:43:26.272530 [CTRL] SENT 157 bytes to client 00:43:26.272636 [CTRL] SENT "HTTP/1.1 200 OK%0aDate: Tue, 09 Nov 2010 14:49:00 GMT%0aServer: test-server/fake swsclose%0aContent-Type: text/html%0aFunny-head: yesyes%0aContent-Length: 9%0a%0acontents%0a" 00:43:26.322468 [CTRL] got 0, STOP READING server 00:43:26.322740 [CTRL] DISABLED WRITING client 00:43:28.276165 [CTRL] got 0, STOP READING client 00:43:28.276449 [CTRL] DISABLED WRITING server 00:43:28.526891 [CTRL] CLOSING client socket 00:43:28.527209 [CTRL] CLOSING server socket 00:43:28.527325 [CTRL] ENDING 00:43:28.527507 ====> Client disconnect 0 === End of file http2_server.log === Start of file http_server.log 00:42:33.904122 ====> Client connect 00:42:33.904291 accept_connection 3 returned 4 00:42:33.904378 accept_connection 3 returned 0 00:42:33.911207 Read 93 bytes 00:42:33.911312 Process 93 bytes request 00:42:33.911412 Got request: GET /verifiedserver HTTP/1.1 00:42:33.911489 Are-we-friendly question received 00:42:33.911618 Wrote request (93 bytes) input to log/7/server.input 00:42:33.911723 Identifying ourselves as friends 00:42:33.911921 Response sent (57 bytes) and written to log/7/server.response 00:42:33.911990 special request received, no persistency 00:42:33.912053 ====> Client disconnect 0 00:43:24.554776 ====> Client connect 00:43:24.554900 accept_connection 3 returned 4 00:43:24.554980 accept_connection 3 returned 0 00:43:25.270517 Read 111 bytes 00:43:25.270692 Process 111 bytes request 00:43:25.270794 Got request: GET /we/want/that/page/80 HTTP/1.1 00:43:25.270865 Serve test number 80 part 0 00:43:25.271084 - request found to be complete (80) 00:43:25.271446 Wrote request (111 bytes) input to log/7/server.input 00:43:25.271565 Send response test80 section 00:43:25.271830 connection close instruction "swsclose" found in response 00:43:25.272051 Response sent (157 bytes) and written to log/7/server.response 00:43:25.272121 instructed to close connection after server-reply 00:43:25.272181 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 51386 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file proxy.input CONNECT test.80:34897 HTTP/1.0 Host: test.80:34897 Proxy-Authorization: Basic eW91YXJlOnlvdXJzZWxm Proxy-Connection: Keep-Alive === End of file proxy.input === Start of file proxy.response HTTP/1.1 200 Mighty fine indeed === End of file proxy.response === Start of file server.cmd Testnum 80 === End of file server.cmd === Start of file server.input GET /we/want/that/page/80 HTTP/1.1 Host: test.80:34897 Authorization: Basic aWFtOm15c2VsZg== Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file server.response === Start of file stderr80 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 9 100 9 0 0 1 0 0:00:09 0:00:05 0:00:04 2 100 9 100 9 0 0 1 0 0:00:09 0:00:05 0:00:04 2 === End of file stderr80 === Start of file trace80 00:43:23.075814 * Trying 127.0.0.1:43249... 00:43:23.919313 * CONNECT: no ALPN negotiated 00:43:23.967334 * allocate connect buffer 00:43:24.125670 * Proxy auth using Basic with user 'youare' 00:43:24.177781 * Server auth using Basic with user 'iam' 00:43:24.286638 * Establish HTTP proxy tunnel to test.80:34897 00:43:24.443549 => Send header, 134 bytes (0x86) 0000: CONNECT test.80:34897 HTTP/1.0 0020: Host: test.80:34897 0035: Proxy-Authorization: Basic eW91YXJlOnlvdXJzZWxm 0066: Proxy-Connection: Keep-Alive 0084: 00:43:24.654076 <= Recv header, 33 bytes (0x21) 0000: HTTP/1.1 200 Mighty fine indeed 00:43:24.960956 <= Recv header, 2 bytes (0x2) 0000: 00:43:25.047275 * CONNECT phase completed 00:43:25.069086 * CONNECT tunnel established, response 200 00:43:25.273338 * Established connection to 127.0.0.1 (127.0.0.1 port 43249) from 127.0.0.1 port 37176 00:43:25.364446 * using HTTP/1.x 00:43:25.430215 * Server auth using Basic with user 'iam' 00:43:25.668951 => Send header, 111 bytes (0x6f) 0000: GET /we/want/that/page/80 HTTP/1.1 0024: Host: test.80:34897 0039: Authorization: Basic aWFtOm15c2VsZg== 0060: Accept: */* 006d: 00:43:25.912313 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:43:25.974967 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:43:26.046467 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 00:43:26.114098 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:43:26.121006 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:43:26.146696 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 9. 00:43:26.239121 <= Recv header, 1 bytes (0x1) 0000: . 00:43:26.294538 <= Recv data, 9 bytes (0x9) 0000: contents. 00:43:26.807330 * Connection #0 to host 127.0.0.1:43249 left intact === End of file trace80 === Start of file valgrind80 ==198799== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind80 test 0081...[HTTP with proxy using NTLM authorization] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind81 ../src/curl -q --output log/3/curl81.out --include --trace-ascii log/3/trace81 --trace-time http://127.0.0.1:46853/81 --proxy-user testuser:testpass -x http://127.0.0.1:46853 --proxy-ntlm > log/3/stdout81 2> log/3/stderr81 valgrind ERROR ==198731== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 81 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind81 ../src/curl -q --output log/3/curl81.out --include --trace-ascii log/3/trace81 --trace-time http://127.0.0.1:46853/81 --proxy-user testuser:testpass -x http://127.0.0.1:46853 --proxy-ntlm > log/3/stdout81 2> log/3/stderr81 === End of file commands.log === Start of file curl81.out HTTP/1.1 407 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== HTTP/1.1 200 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file curl81.out === Start of file http_server.log 00:42:34.019680 ====> Client connect 00:42:34.019879 accept_connection 3 returned 4 00:42:34.019965 accept_connection 3 returned 0 00:42:34.023684 Read 93 bytes 00:42:34.023778 Process 93 bytes request 00:42:34.023877 Got request: GET /verifiedserver HTTP/1.1 00:42:34.023950 Are-we-friendly question received 00:42:34.024075 Wrote request (93 bytes) input to log/3/server.input 00:42:34.024166 Identifying ourselves as friends 00:42:34.024325 Response sent (57 bytes) and written to log/3/server.response 00:42:34.024391 special request received, no persistency 00:42:34.024446 ====> Client disconnect 0 00:43:22.108790 ====> Client connect 00:43:22.108954 accept_connection 3 returned 4 00:43:22.109035 accept_connection 3 returned 0 00:43:23.359125 Read 205 bytes 00:43:23.359378 Process 205 bytes request 00:43:23.359486 Got request: GET http://127.0.0.1:46853/81 HTTP/1.1 00:43:23.359567 Serve test number 81 part 0 00:43:23.359963 - request found to be complete (81) 00:43:23.360178 Received NTLM type-1, sending back data 1001 00:43:23.360344 Wrote request (205 bytes) input to log/3/server.input 00:43:23.360454 Send response test81 section 00:43:23.360907 Response sent (423 bytes) and written to log/3/server.response 00:43:23.360976 => persistent connection request ended, awaits new request 00:43:26.621391 Read 337 bytes 00:43:26.621597 Process 337 bytes request 00:43:26.621695 Got request: GET http://127.0.0.1:46853/81 HTTP/1.1 00:43:26.621764 Serve test number 81 part 0 00:43:26.621979 - request found to be complete (81) 00:43:26.622170 Received NTLM type-3, sending back data 1002 00:43:26.625679 Wrote request (337 bytes) input to log/3/server.input 00:43:26.625783 Send response test81 section 00:43:26.626092 connection close instruction "swsclose" found in response 00:43:26.626341 Response sent (180 bytes) and written to log/3/server.response 00:43:26.626417 instructed to close connection after server-reply 00:43:26.626489 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 42734 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 81 === End of file server.cmd === Start of file server.input GET http://127.0.0.1:46853/81 HTTP/1.1 Host: 127.0.0.1:46853 Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://127.0.0.1:46853/81 HTTP/1.1 Host: 127.0.0.1:46853 Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 407 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== This is not the real page either HTTP/1.1 200 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file server.response === Start of file stderr81 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 34 100 34 0 0 6 0 0:00:05 0:00:04 0:00:01 9 100 34 100 34 0 0 6 0 0:00:05 0:00:05 --:--:-- 9 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 100 32 100 32 0 0 4 0 0:00:08 0:00:07 0:00:01 28 === End of file stderr81 === Start of file trace81 00:43:22.172249 * Trying 127.0.0.1:46853... 00:43:23.069994 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 33232 00:43:23.189801 * using HTTP/1.x 00:43:23.373617 * Proxy auth using NTLM with user 'testuser' 00:43:23.782871 => Send header, 205 bytes (0xcd) 0000: GET http://127.0.0.1:46853/81 HTTP/1.1 0028: Host: 127.0.0.1:46853 003f: Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAA 007f: AAAAA= 0087: User-Agent: curl/8.17.0 00a0: Accept: */* 00ad: Proxy-Connection: Keep-Alive 00cb: 00:43:24.146390 <= Recv header, 52 bytes (0x34) 0000: HTTP/1.1 407 Now gimme that second request of crap 00:43:24.461769 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:43:24.599146 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:43:24.640244 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 34 00:43:24.824789 <= Recv header, 243 bytes (0xf3) 0000: Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVD 0040: gyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQ 0080: ASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGU 00c0: AdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== 00:43:24.953170 * Ignoring the response-body 00:43:24.971106 * setting size while ignoring 00:43:24.986642 <= Recv header, 2 bytes (0x2) 0000: 00:43:25.524719 * Connection #0 to host 127.0.0.1:46853 left intact 00:43:25.644291 * Issue another request to this URL: 'http://127.0.0.1:46853/81' 00:43:26.069710 * Reusing existing http: connection with proxy 127.0.0.1 00:43:26.977393 * Proxy auth using NTLM with user 'testuser' 00:43:27.006487 => Send header, 337 bytes (0x151) 0000: GET http://127.0.0.1:46853/81 HTTP/1.1 0028: Host: 127.0.0.1:46853 003f: Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAA 007f: AAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw 00bf: 47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1 00ff: NUQVRJT04= 010b: User-Agent: curl/8.17.0 0124: Accept: */* 0131: Proxy-Connection: Keep-Alive 014f: 00:43:27.087400 <= Recv header, 54 bytes (0x36) 0000: HTTP/1.1 200 Things are fine in server land swsclose 00:43:27.103549 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:43:27.112987 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: textCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind82 ../src/curl -q --output log/8/curl82.out --include --trace-ascii log/8/trace82 --trace-time http://127.0.0.1:39461/82 --proxy-user testuser:testpass -x http://127.0.0.1:39461 > log/8/stdout82 2> log/8/stderr82 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind84 ../src/curl -q --output log/6/curl84.out --include --trace-ascii log/6/trace84 --trace-time http://127.0.0.1:38277/we/want/that/page/84 -x 127.0.0.1:38277 --user iam:myself > log/6/stdout84 2> log/6/stderr84 /html; charset=iso-8859-1 00:43:27.120736 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 32 00:43:27.141373 <= Recv header, 2 bytes (0x2) 0000: 00:43:27.153900 <= Recv data, 32 bytes (0x20) 0000: Finally, this is the real page!. 00:43:27.268737 * Connection #0 to host 127.0.0.1:46853 left intact === End of file trace81 === Start of file valgrind81 ==198731== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind81 test 0082...[HTTP with proxy requiring NTLM, but we send Basic] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind82 ../src/curl -q --output log/8/curl82.out --include --trace-ascii log/8/trace82 --trace-time http://127.0.0.1:39461/82 --proxy-user testuser:testpass -x http://127.0.0.1:39461 > log/8/stdout82 2> log/8/stderr82 valgrind ERROR ==199023== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 82 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind82 ../src/curl -q --output log/8/curl82.out --include --trace-ascii log/8/trace82 --trace-time http://127.0.0.1:39461/82 --proxy-user testuser:testpass -x http://127.0.0.1:39461 > log/8/stdout82 2> log/8/stderr82 === End of file commands.log === Start of file curl82.out HTTP/1.1 407 We only deal with NTLM my friend Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 Proxy-Authenticate: NTLM This is not the real page either === End of file curl82.out === Start of file http_server.log 00:42:42.782833 ====> Client connect 00:42:42.782989 accept_connection 3 returned 4 00:42:42.783067 accept_connection 3 returned 0 00:42:42.792297 Read 93 bytes 00:42:42.792423 Process 93 bytes request 00:42:42.792517 Got request: GET /verifiedserver HTTP/1.1 00:42:42.792584 Are-we-friendly question received 00:42:42.792701 Wrote request (93 bytes) input to log/8/server.input 00:42:42.792795 Identifying ourselves as friends 00:42:42.792976 Response sent (57 bytes) and written to log/8/server.response 00:42:42.793041 special request received, no persistency 00:42:42.793097 ====> Client disconnect 0 00:43:30.786552 ====> Client connect 00:43:30.786704 accept_connection 3 returned 4 00:43:30.786786 accept_connection 3 returned 0 00:43:32.059251 Read 186 bytes 00:43:32.059461 Process 186 bytes request 00:43:32.059559 Got request: GET http://127.0.0.1:39461/82 HTTP/1.1 00:43:32.059637 Serve test number 82 part 0 00:43:32.059860 - request found to be complete (82) 00:43:32.060285 Wrote request (186 bytes) input to log/8/server.input 00:43:32.060396 Send response test82 section 00:43:32.060774 Response sent (201 bytes) and written to log/8/server.response 00:43:32.060844 => persistent connection request ended, awaits new request 00:43:34.799461 Connection closed by client 00:43:34.799671 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 58772 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 82 === End of file server.cmd === Start of file server.input GET http://127.0.0.1:39461/82 HTTP/1.1 Host: 127.0.0.1:39461 Proxy-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M= User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 407 We only deal with NTLM my friend Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 Proxy-Authenticate: NTLM This is not the real page either === End of file server.response === Start of file stderr82 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 34 100 34 0 0 6 0 0:00:05 0:00:05 --:--:-- 9 100 34 100 34 0 0 6 0 0:00:05 0:00:05 --:--:-- 8 === End of file stderr82 === Start of file trace82 00:43:30.842147 * Trying 127.0.0.1:39461... 00:43:31.763876 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 53958 00:43:31.894728 * using HTTP/1.x 00:43:32.045829 * Proxy auth using Basic with user 'testuser' 00:43:32.482904 => Send header, 186 bytes (0xba) 0000: GET http://127.0.0.1:39461/82 HTTP/1.1 0028: Host: 127.0.0.1:39461 003f: Proxy-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M= 0074: User-Agent: curl/8.17.0 008d: Accept: */* 009a: Proxy-Connection: Keep-Alive 00b8: 00:43:32.881268 <= Recv header, 47 bytes (0x2f) 0000: HTTP/1.1 407 We only deal with NTLM my friend 00:43:33.232066 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:43:33.405959 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:43:33.451180 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 34 00:43:33.523921 <= Recv header, 26 bytes (0x1a) 0000: Proxy-Authenticate: NTLM 00:43:33.624276 <= Recv header, 2 bytes (0x2) 0000: 00:43:33.683953 <= Recv data, 34 bytes (0x22) 0000: This is not the real page either!. 00:43:34.308520 * Connection #0 to host 127.0.0.1:39461 left intact === End of file trace82 === Start of file valgrind82 ==199023== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind82 test 0084...[HTTP over proxy with site authentication] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind84 ../src/curl -q --output log/6/curl84.out --include --trace-ascii log/6/trace84 --trace-time http://127.0.0.1:38277/we/want/that/page/84 -x 127.0.0.1:38277 --user iam:myself > log/6/stdout84 2> log/6/stderr84 valgrind ERROR ==199277== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 84 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind84 ../src/curl -q --output log/6/curl84.out --include --trace-ascii log/6/trace84 --trace-time http://127.0.0.1:38277/we/want/that/page/84 -x 127.0.0.1:38277 --user iam:myself > log/6/stdout84 2> log/6/stderr84 === End of file commands.log === Start of file curl84.out HTTP/1.0 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes contents === End of file curl84.out === Start of file http_server.log 00:42:46.834968 ====> Client connect 00:42:46.835151 accept_connection 3 returned 4 00:42:46.835238 accept_connection 3 returned 0 00:42:46.840308 Read 93 bytes 00:42:46.840430 Process 93 bytes request 00:42:46.840525 Got request: GET /verifiedserver HTTP/1.1 00:42:46.840599 Are-we-friendly question received 00:42:46.840725 Wrote request (93 bytes) input to log/6/server.input 00:42:46.840824 Identifying ourselves as friends 00:42:46.841011 Response sent (57 bytes) and written to log/6/server.response 00:42:46.841076 special request receiCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind83 ../src/curl -q --output log/4/curl83.out --include --trace-ascii log/4/trace83 --trace-time http://test.83:42621/we/want/that/page/83 -p -x 127.0.0.1:41373 --user 'iam:my:;self' > log/4/stdout83 2> log/4/stderr83 ved, no persistency 00:42:46.841135 ====> Client disconnect 0 00:43:34.434522 ====> Client connect 00:43:34.434670 accept_connection 3 returned 4 00:43:34.434746 accept_connection 3 returned 0 00:43:35.666254 Read 190 bytes 00:43:35.666453 Process 190 bytes request 00:43:35.666551 Got request: GET http://127.0.0.1:38277/we/want/that/page/84 HTTP/1.1 00:43:35.666623 Serve test number 84 part 0 00:43:35.666824 - request found to be complete (84) 00:43:35.667080 Wrote request (190 bytes) input to log/6/server.input 00:43:35.667203 Send response test84 section 00:43:35.667414 connection close instruction "swsclose" found in response 00:43:35.667604 Response sent (139 bytes) and written to log/6/server.response 00:43:35.667674 instructed to close connection after server-reply 00:43:35.667738 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 54620 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 84 === End of file server.cmd === Start of file server.input GET http://127.0.0.1:38277/we/want/that/page/84 HTTP/1.1 Host: 127.0.0.1:38277 Authorization: Basic aWFtOm15c2VsZg== User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.0 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes contents === End of file server.response === Start of file stderr84 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 9 0 9 0 0 1 0 --:--:-- 0:00:05 --:--:-- 2 100 9 0 9 0 0 1 0 --:--:-- 0:00:05 --:--:-- 2 === End of file stderr84 === Start of file trace84 00:43:34.488380 * Trying 127.0.0.1:38277... 00:43:35.403610 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 50594 00:43:35.552917 * using HTTP/1.x 00:43:35.709198 * Server auth using Basic with user 'iam' 00:43:36.086556 => Send header, 190 bytes (0xbe) 0000: GET http://127.0.0.1:38277/we/want/that/page/84 HTTP/1.1 003a: Host: 127.0.0.1:38277 0051: Authorization: Basic aWFtOm15c2VsZg== 0078: User-Agent: curl/8.17.0 0091: Accept: */* 009e: Proxy-Connection: Keep-Alive 00bc: 00:43:36.435585 * HTTP 1.0, assume close after body 00:43:36.458558 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.0 200 OK. 00:43:36.760703 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:43:36.862221 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 00:43:36.926165 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:43:36.932022 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:43:37.008478 <= Recv header, 1 bytes (0x1) 0000: . 00:43:37.067301 <= Recv data, 9 bytes (0x9) 0000: contents. 00:43:37.190193 * abort upload 00:43:37.217905 <= Recv data, 0 bytes (0x0) 00:43:37.736733 * shutting down connection #0 === End of file trace84 === Start of file valgrind84 ==199277== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind84 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/4/server/http2_server.pid" --logfile "log/4/http2_server.log" --logdir "log/4" --portfile log/4/server/http2_server.port --config log/4/server.cmd --id 2 --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP2 server is on PID 199176 port 41373 * pid http-proxy => 199176 199176 test 0083...[HTTP over proxy-tunnel with site authentication] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind83 ../src/curl -q --output log/4/curl83.out --include --trace-ascii log/4/trace83 --trace-time http://test.83:42621/we/want/that/page/83 -p -x 127.0.0.1:41373 --user 'iam:my:;self' > log/4/stdout83 2> log/4/stderr83 valgrind ERROR ==199223== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 83 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind83 ../src/curl -q --output log/4/curl83.out --include --trace-ascii log/4/trace83 --trace-time http://test.83:42621/we/want/that/page/83 -p -x 127.0.0.1:41373 --user 'iam:my:;self' > log/4/stdout83 2> log/4/stderr83 === End of file commands.log === Start of file curl83.out HTTP/1.1 200 Mighty fine indeed HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file curl83.out === Start of file http2_server.log 00:42:46.899205 Run as proxy, CONNECT to host 127.0.0.1 00:42:46.909558 Running HTTP IPv4 version on port 41373 00:42:46.909998 Wrote pid 199176 to log/4/server/http2_server.pid 00:42:46.910265 Wrote port 41373 to log/4/server/http2_server.port 00:43:35.292365 ====> Client connect 00:43:35.292565 accept_connection 3 returned 4 00:43:35.292745 accept_connection 3 returned 0 00:43:36.249105 Read 110 bytes 00:43:36.249892 Process 110 bytes request 00:43:36.251868 Received a CONNECT test.83:42621 HTTP/1.1 request 00:43:36.252026 Port number: 42621, test case number: -7 00:43:36.256366 [log/4/server.cmd] cmdfile says testnum 83 00:43:36.258731 - request found to be complete (83) 00:43:36.263452 Wrote request (110 bytes) input to log/4/proxy.input 00:43:36.263906 Send response test83 section 00:43:36.265036 Response sent (35 bytes) and written to log/4/proxy.response 00:43:36.768966 about to connect to 127.0.0.1:42621 00:43:36.769900 connected fine to 127.0.0.1:42621, now tunnel 00:43:37.452403 [CTRL] READ 136 bytes from client 00:43:37.452839 [CTRL] READ "GET /we/want/that/page/83 HTTP/1.1%0d%0aHost: test.83:42621%0d%0aAuthorization: Basic aWFtOm15OjtzZWxm%0d%0aUser-Agent: curl/8.17.0%0d%0aAccept: */*%0d%0a%0d%0a" 00:43:37.458912 [CTRL] SENT 136 bytes to server 00:43:37.459042 [CTRL] SENT "GET /we/want/that/page/83 HTTP/1.1%0d%0aHost: test.83:42621%0d%0aAuthorization: Basic aWFtOm15OjtzZWxm%0d%0aUser-Agent: curl/8.17.0%0d%0aAccept: */*%0d%0a%0d%0a" 00:43:37.459198 [CTRL] READ 157 bytes from server 00:43:37.459298 [CTRL] READ "HTTP/1.1 200 OK%0aDate: Tue, 09 Nov 2010 14:49:00 GMT%0aServer: test-server/fake swsclose%0aContent-Type: text/html%0aFunny-head: yesyes%0aContent-Length: 9%0a%0acontents%0a" 00:43:37.459514 [CTRL] SENT 157 bytes to client 00:43:37.459613 [CTRL] SENT "HTTP/1.1 200 OK%0aDate: Tue, 09 Nov 2010 14:49:00 GMT%0aServer: test-server/fake swsclose%0aContent-Type: text/html%0aFunny-head: yesyes%0aContent-Length: 9%0a%0acontents%0a" 00:43:37.505307 [CTRL] got 0, STOP READING server 00:43:37.505547 [CTRL] DISABLED WRITING client 00:43:39.452821 [CTRL] got 0, STOP READING client 00:43:39.453101 [CTRL] DISABLED WRITING server 00:43:39.703542 [CTRL] CLOSING client socket 00:43:39.703845 [CTRL] CLOSING server socket 00:43:39.703961 [CTRL] ENDING 00:43:39.704159 ====> Client disconnect 0 === End of file http2_server.log === Start of file http_server.log 00:42:46.CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind85 ../src/curl -q --output log/1/curl85.out --include --trace-ascii log/1/trace85 --trace-time http://127.0.0.1:40641/we/want/that/page/85 -x 127.0.0.1:40641 --user iam:myself --proxy-user testing:this > log/1/stdout85 2> log/1/stderr85 032494 ====> Client connect 00:42:46.032664 accept_connection 3 returned 4 00:42:46.032747 accept_connection 3 returned 0 00:42:46.039588 Read 93 bytes 00:42:46.039728 Process 93 bytes request 00:42:46.039828 Got request: GET /verifiedserver HTTP/1.1 00:42:46.039902 Are-we-friendly question received 00:42:46.040055 Wrote request (93 bytes) input to log/4/server.input 00:42:46.040175 Identifying ourselves as friends 00:42:46.040389 Response sent (57 bytes) and written to log/4/server.response 00:42:46.040461 special request received, no persistency 00:42:46.040526 ====> Client disconnect 0 00:43:36.770549 ====> Client connect 00:43:36.770675 accept_connection 3 returned 4 00:43:36.770754 accept_connection 3 returned 0 00:43:37.453671 Read 136 bytes 00:43:37.453824 Process 136 bytes request 00:43:37.453913 Got request: GET /we/want/that/page/83 HTTP/1.1 00:43:37.453978 Serve test number 83 part 0 00:43:37.454153 - request found to be complete (83) 00:43:37.454480 Wrote request (136 bytes) input to log/4/server.input 00:43:37.454581 Send response test83 section 00:43:37.454784 connection close instruction "swsclose" found in response 00:43:37.454936 Response sent (157 bytes) and written to log/4/server.response 00:43:37.454998 instructed to close connection after server-reply 00:43:37.455055 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 48880 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file proxy.input CONNECT test.83:42621 HTTP/1.1 Host: test.83:42621 User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive === End of file proxy.input === Start of file proxy.response HTTP/1.1 200 Mighty fine indeed === End of file proxy.response === Start of file server.cmd Testnum 83 === End of file server.cmd === Start of file server.input GET /we/want/that/page/83 HTTP/1.1 Host: test.83:42621 Authorization: Basic aWFtOm15OjtzZWxm User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file server.response === Start of file stderr83 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 9 100 9 0 0 1 0 0:00:09 0:00:05 0:00:04 2 100 9 100 9 0 0 1 0 0:00:09 0:00:05 0:00:04 2 === End of file stderr83 === Start of file trace83 00:43:34.361922 * Trying 127.0.0.1:41373... 00:43:35.187198 * CONNECT: no ALPN negotiated 00:43:35.244760 * allocate connect buffer 00:43:35.409710 * Server auth using Basic with user 'iam' 00:43:35.505649 * Establish HTTP proxy tunnel to test.83:42621 00:43:35.668146 => Send header, 110 bytes (0x6e) 0000: CONNECT test.83:42621 HTTP/1.1 0020: Host: test.83:42621 0035: User-Agent: curl/8.17.0 004e: Proxy-Connection: Keep-Alive 006c: 00:43:35.860429 <= Recv header, 33 bytes (0x21) 0000: HTTP/1.1 200 Mighty fine indeed 00:43:36.163500 <= Recv header, 2 bytes (0x2) 0000: 00:43:36.247549 * CONNECT phase completed 00:43:36.267032 * CONNECT tunnel established, response 200 00:43:36.460632 * Established connection to 127.0.0.1 (127.0.0.1 port 41373) from 127.0.0.1 port 52192 00:43:36.558289 * using HTTP/1.x 00:43:36.621989 * Server auth using Basic with user 'iam' 00:43:36.855310 => Send header, 136 bytes (0x88) 0000: GET /we/want/that/page/83 HTTP/1.1 0024: Host: test.83:42621 0039: Authorization: Basic aWFtOm15OjtzZWxm 0060: User-Agent: curl/8.17.0 0079: Accept: */* 0086: 00:43:37.071505 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:43:37.133614 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:43:37.201135 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 00:43:37.264213 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:43:37.270652 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:43:37.295673 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 9. 00:43:37.381973 <= Recv header, 1 bytes (0x1) 0000: . 00:43:37.438270 <= Recv data, 9 bytes (0x9) 0000: contents. 00:43:37.974711 * Connection #0 to host 127.0.0.1:41373 left intact === End of file trace83 === Start of file valgrind83 ==199223== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind83 test 0085...[HTTP over proxy with site and proxy authentication] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind85 ../src/curl -q --output log/1/curl85.out --include --trace-ascii log/1/trace85 --trace-time http://127.0.0.1:40641/we/want/that/page/85 -x 127.0.0.1:40641 --user iam:myself --proxy-user testing:this > log/1/stdout85 2> log/1/stderr85 valgrind ERROR ==199506== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 85 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind85 ../src/curl -q --output log/1/curl85.out --include --trace-ascii log/1/trace85 --trace-time http://127.0.0.1:40641/we/want/that/page/85 -x 127.0.0.1:40641 --user iam:myself --proxy-user testing:this > log/1/stdout85 2> log/1/stderr85 === End of file commands.log === Start of file curl85.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file curl85.out === Start of file http_server.log 00:42:56.336936 ====> Client connect 00:42:56.337103 accept_connection 3 returned 4 00:42:56.337184 accept_connection 3 returned 0 00:42:56.344447 Read 93 bytes 00:42:56.344548 Process 93 bytes request 00:42:56.344637 Got request: GET /verifiedserver HTTP/1.1 00:42:56.344701 Are-we-friendly question received 00:42:56.344817 Wrote request (93 bytes) input to log/1/server.input 00:42:56.344913 Identifying ourselves as friends 00:42:56.345074 Response sent (57 bytes) and written to log/1/server.response 00:42:56.345136 special request received, no persistency 00:42:56.345191 ====> Client disconnect 0 00:43:44.350394 ====> Client connect 00:43:44.350551 accept_connection 3 returned 4 00:43:44.350640 accept_connection 3 returned 0 00:43:45.673454 Read 235 bytes 00:43:45.673656 Process 235 bytes request 00:43:45.673757 Got request: GET http://127.0.0.1:40641/we/want/that/page/85 HTTP/1.1 00:43:45.673834 Serve test number 85 part 0 00:43:45.674019 - request found to be complete (85) 00:43:45.674287 Wrote request (235 bytes) input to log/1/server.input 00:43:45.674404 Send response test85 section 00:43:45.674626 connection close instruction "swsclose" found in response 00:43:45.674799 Response sent (157 bytes) and written to log/1/server.response 00:43:45.674869 instructed to close connection after server-reply 00:43:45.674933 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641.CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind86 ../src/curl -q --include --trace-ascii log/2/trace86 --trace-time "http://127.0.0.1:39863/[860001-860003]" -o "log/2/dumpit#1.dump" > log/2/stdout86 2> log/2/stderr86 .. * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 36666 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 85 === End of file server.cmd === Start of file server.input GET http://127.0.0.1:40641/we/want/that/page/85 HTTP/1.1 Host: 127.0.0.1:40641 Proxy-Authorization: Basic dGVzdGluZzp0aGlz Authorization: Basic aWFtOm15c2VsZg== User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file server.response === Start of file stderr85 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 9 100 9 0 0 1 0 0:00:09 0:00:05 0:00:04 2 100 9 100 9 0 0 1 0 0:00:09 0:00:05 0:00:04 2 === End of file stderr85 === Start of file trace85 00:43:43.364783 * Trying 127.0.0.1:40641... 00:43:44.374662 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 37394 00:43:44.513454 * using HTTP/1.x 00:43:44.660888 * Proxy auth using Basic with user 'testing' 00:43:44.702681 * Server auth using Basic with user 'iam' 00:43:45.098356 => Send header, 235 bytes (0xeb) 0000: GET http://127.0.0.1:40641/we/want/that/page/85 HTTP/1.1 003a: Host: 127.0.0.1:40641 0051: Proxy-Authorization: Basic dGVzdGluZzp0aGlz 007e: Authorization: Basic aWFtOm15c2VsZg== 00a5: User-Agent: curl/8.17.0 00be: Accept: */* 00cb: Proxy-Connection: Keep-Alive 00e9: 00:43:45.453073 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:43:45.759905 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:43:45.861025 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 00:43:45.924935 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:43:45.931781 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:43:45.955639 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 9. 00:43:46.046825 <= Recv header, 1 bytes (0x1) 0000: . 00:43:46.106661 <= Recv data, 9 bytes (0x9) 0000: contents. 00:43:46.642677 * Connection #0 to host 127.0.0.1:40641 left intact === End of file trace85 === Start of file valgrind85 ==199506== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind85 test 0086...[HTTP, urlglob []-retrieval and -o #[num] usage] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind86 ../src/curl -q --include --trace-ascii log/2/trace86 --trace-time "http://127.0.0.1:39863/[860001-860003]" -o "log/2/dumpit#1.dump" > log/2/stdout86 2> log/2/stderr86 valgrind ERROR ==199719== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 86 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind86 ../src/curl -q --include --trace-ascii log/2/trace86 --trace-time "http://127.0.0.1:39863/[860001-860003]" -o "log/2/dumpit#1.dump" > log/2/stdout86 2> log/2/stderr86 === End of file commands.log === Start of file dumpit860001.dump HTTP/1.0 200 OK Content-Type: text/html Funny-head: swsclose crap data === End of file dumpit860001.dump === Start of file dumpit860002.dump HTTP/1.0 200 OK Content-Type: text/html Funny-head: swsclose crap data === End of file dumpit860002.dump === Start of file dumpit860003.dump HTTP/1.0 200 OK Content-Type: text/html Funny-head: swsclose crap data === End of file dumpit860003.dump === Start of file http_server.log 00:43:04.217514 ====> Client connect 00:43:04.217678 accept_connection 3 returned 4 00:43:04.217757 accept_connection 3 returned 0 00:43:04.224415 Read 93 bytes 00:43:04.224500 Process 93 bytes request 00:43:04.224591 Got request: GET /verifiedserver HTTP/1.1 00:43:04.224659 Are-we-friendly question received 00:43:04.224771 Wrote request (93 bytes) input to log/2/server.input 00:43:04.224859 Identifying ourselves as friends 00:43:04.225039 Response sent (57 bytes) and written to log/2/server.response 00:43:04.225100 special request received, no persistency 00:43:04.225158 ====> Client disconnect 0 00:43:51.487815 ====> Client connect 00:43:51.487952 accept_connection 3 returned 4 00:43:51.488028 accept_connection 3 returned 0 00:43:52.499301 Read 85 bytes 00:43:52.499501 Process 85 bytes request 00:43:52.499595 Got request: GET /860001 HTTP/1.1 00:43:52.499667 Serve test number 86 part 1 00:43:52.499867 - request found to be complete (86) 00:43:52.500138 Wrote request (85 bytes) input to log/2/server.input 00:43:52.500244 Send response test86 section 00:43:52.500479 connection close instruction "swsclose" found in response 00:43:52.500640 Response sent (72 bytes) and written to log/2/server.response 00:43:52.500706 instructed to close connection after server-reply 00:43:52.500767 ====> Client disconnect 0 00:43:55.197812 ====> Client connect 00:43:55.197950 accept_connection 3 returned 4 00:43:55.198023 accept_connection 3 returned 0 00:43:55.252051 Read 85 bytes 00:43:55.252239 Process 85 bytes request 00:43:55.252329 Got request: GET /860002 HTTP/1.1 00:43:55.252395 Serve test number 86 part 2 00:43:55.252574 - request found to be complete (86) 00:43:55.252774 Wrote request (85 bytes) input to log/2/server.input 00:43:55.252859 Send response test86 section 00:43:55.253083 connection close instruction "swsclose" found in response 00:43:55.253234 Response sent (72 bytes) and written to log/2/server.response 00:43:55.253296 instructed to close connection after server-reply 00:43:55.253352 ====> Client disconnect 0 00:43:55.521370 ====> Client connect 00:43:55.521522 accept_connection 3 returned 4 00:43:55.521613 accept_connection 3 returned 0 00:43:55.529855 Read 85 bytes 00:43:55.530014 Process 85 bytes request 00:43:55.530122 Got request: GET /860003 HTTP/1.1 00:43:55.530202 Serve test number 86 part 3 00:43:55.530426 - request found to be complete (86) 00:43:55.530676 Wrote request (85 bytes) input to log/2/server.input 00:43:55.530775 Send response test86 section 00:43:55.531058 connection close instruction "swsclose" found in response 00:43:55.531237 Response sent (72 bytes) and written to log/2/server.response 00:43:55.531309 instructed to close connection after server-reply 00:43:55.531379 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 54808 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 86 === End of file server.cmd === Start of file server.input GET /860001 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* GET /860002 HTTP/1.1 HosCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind87 ../src/curl -q --include --trace-ascii log/5/trace87 --trace-time "http://127.0.0.1:46263/[870001-870002]" -o "log/5/dumpit87-#2.dump" > log/5/stdout87 2> log/5/stderr87 t: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* GET /860003 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.0 200 OK Content-Type: text/html Funny-head: swsclose crap data HTTP/1.0 200 OK Content-Type: text/html Funny-head: swsclose crap data HTTP/1.0 200 OK Content-Type: text/html Funny-head: swsclose crap data === End of file server.response === Start of file stderr86 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 10 0 10 0 0 2 0 --:--:-- 0:00:04 --:--:-- 3 100 10 0 10 0 0 2 0 --:--:-- 0:00:04 --:--:-- 3 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 10 0 10 0 0 33 0 --:--:-- --:--:-- --:--:-- 53 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 10 0 10 0 0 40 0 --:--:-- --:--:-- --:--:-- 44 === End of file stderr86 === Start of file trace86 00:43:50.564723 * Trying 127.0.0.1:39863... 00:43:51.445474 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 47810 00:43:51.576641 * using HTTP/1.x 00:43:51.918088 => Send header, 85 bytes (0x55) 0000: GET /860001 HTTP/1.1 0016: Host: 127.0.0.1:39863 002d: User-Agent: curl/8.17.0 0046: Accept: */* 0053: 00:43:52.239173 * HTTP 1.0, assume close after body 00:43:52.265234 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.0 200 OK. 00:43:52.621662 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:43:52.710491 <= Recv header, 21 bytes (0x15) 0000: Funny-head: swsclose. 00:43:52.799220 <= Recv header, 1 bytes (0x1) 0000: . 00:43:52.855373 <= Recv data, 10 bytes (0xa) 0000: crap data. 00:43:52.973860 * abort upload 00:43:52.997049 <= Recv data, 0 bytes (0x0) 00:43:53.483944 * shutting down connection #0 00:43:54.518029 * Hostname 127.0.0.1 was found in DNS cache 00:43:54.574285 * Trying 127.0.0.1:39863... 00:43:54.607753 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 39554 00:43:54.614052 * using HTTP/1.x 00:43:54.635673 => Send header, 85 bytes (0x55) 0000: GET /860002 HTTP/1.1 0016: Host: 127.0.0.1:39863 002d: User-Agent: curl/8.17.0 0046: Accept: */* 0053: 00:43:54.663506 * HTTP 1.0, assume close after body 00:43:54.664946 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.0 200 OK. 00:43:54.678774 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:43:54.685723 <= Recv header, 21 bytes (0x15) 0000: Funny-head: swsclose. 00:43:54.694163 <= Recv header, 1 bytes (0x1) 0000: . 00:43:54.698481 <= Recv data, 10 bytes (0xa) 0000: crap data. 00:43:54.710717 * abort upload 00:43:54.712624 <= Recv data, 0 bytes (0x0) 00:43:54.749365 * shutting down connection #1 00:43:54.874753 * Hostname 127.0.0.1 was found in DNS cache 00:43:54.902054 * Trying 127.0.0.1:39863... 00:43:54.906806 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 39564 00:43:54.908886 * using HTTP/1.x 00:43:54.912145 => Send header, 85 bytes (0x55) 0000: GET /860003 HTTP/1.1 0016: Host: 127.0.0.1:39863 002d: User-Agent: curl/8.17.0 0046: Accept: */* 0053: 00:43:54.926916 * HTTP 1.0, assume close after body 00:43:54.927942 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.0 200 OK. 00:43:54.932482 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:43:54.936981 <= Recv header, 21 bytes (0x15) 0000: Funny-head: swsclose. 00:43:54.941134 <= Recv header, 1 bytes (0x1) 0000: . 00:43:54.942949 <= Recv data, 10 bytes (0xa) 0000: crap data. 00:43:55.017598 * Request completely sent off 00:43:55.096529 <= Recv data, 0 bytes (0x0) 00:43:55.113748 * shutting down connection #2 === End of file trace86 === Start of file valgrind86 ==199719== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind86 test 0087...[urlglob with out of range -o #[num] usage] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind87 ../src/curl -q --include --trace-ascii log/5/trace87 --trace-time "http://127.0.0.1:46263/[870001-870002]" -o "log/5/dumpit87-#2.dump" > log/5/stdout87 2> log/5/stderr87 valgrind ERROR ==199768== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 87 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind87 ../src/curl -q --include --trace-ascii log/5/trace87 --trace-time "http://127.0.0.1:46263/[870001-870002]" -o "log/5/dumpit87-#2.dump" > log/5/stdout87 2> log/5/stderr87 === End of file commands.log === Start of file dumpit87-#2.dump HTTP/1.1 200 OK Funny-head: yesyes Content-Length: 16 two is nice too === End of file dumpit87-#2.dump === Start of file http_server.log 00:43:03.967389 ====> Client connect 00:43:03.967538 accept_connection 3 returned 4 00:43:03.967607 accept_connection 3 returned 0 00:43:03.975590 Read 93 bytes 00:43:03.975714 Process 93 bytes request 00:43:03.975805 Got request: GET /verifiedserver HTTP/1.1 00:43:03.975865 Are-we-friendly question received 00:43:03.975974 Wrote request (93 bytes) input to log/5/server.input 00:43:03.976066 Identifying ourselves as friends 00:43:03.976229 Response sent (57 bytes) and written to log/5/server.response 00:43:03.976285 special request received, no persistency 00:43:03.976334 ====> Client disconnect 0 00:43:51.376090 ====> Client connect 00:43:51.376236 accept_connection 3 returned 4 00:43:51.376315 accept_connection 3 returned 0 00:43:52.411847 Read 85 bytes 00:43:52.412050 Process 85 bytes request 00:43:52.412173 Got request: GET /870001 HTTP/1.1 00:43:52.412306 Serve test number 87 part 1 00:43:52.412506 - request found to be complete (87) 00:43:52.412789 Wrote request (85 bytes) input to log/5/server.input 00:43:52.412927 Send response test87 section 00:43:52.413252 Response sent (74 bytes) and written to log/5/server.response 00:43:52.413326 => persistent connection request ended, awaits new request 00:43:55.074283 Read 85 bytes 00:43:55.074480 Process 85 bytes request 00:43:55.074569 Got request: GET /870002 HTTP/1.1 00:43:55.074634 Serve test number 87 part 2 00:43:55.074797 - request found to be complete (87) 00:43:55.074980 Wrote request (85 bytes) input to log/5/server.input 00:43:55.075063 Send response test87 section 00:43:55.075353 Response sent (75 bytes) and written to log/5/server.response 00:43:55.075414 => persistent connection request ended, awaits new request 00:43:55.496602 Connection closed by client 00:43:55.496806 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 41192 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 18CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind89 ../src/curl -q --output log/3/curl89.out --include --trace-ascii log/3/trace89 --trace-time http://127.0.0.1:46853/89 -u testuser:testpass --ntlm -L > log/3/stdout89 2> log/3/stderr89 5934 === End of file http_verify.out === Start of file server.cmd Testnum 87 === End of file server.cmd === Start of file server.input GET /870001 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* GET /870002 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Funny-head: yesyes Content-Length: 15 the number one HTTP/1.1 200 OK Funny-head: yesyes Content-Length: 16 two is nice too === End of file server.response === Start of file stderr87 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 15 100 15 0 0 3 0 0:00:05 0:00:04 0:00:01 4 100 15 100 15 0 0 3 0 0:00:05 0:00:04 0:00:01 4 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 16 100 16 0 0 29 0 --:--:-- --:--:-- --:--:-- 98 === End of file stderr87 === Start of file trace87 00:43:51.444913 * Trying 127.0.0.1:46263... 00:43:52.340569 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 48418 00:43:52.486371 * using HTTP/1.x 00:43:52.833995 => Send header, 85 bytes (0x55) 0000: GET /870001 HTTP/1.1 0016: Host: 127.0.0.1:46263 002d: User-Agent: curl/8.17.0 0046: Accept: */* 0053: 00:43:53.166432 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:43:53.483910 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 00:43:53.590836 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 15 00:43:53.677557 <= Recv header, 2 bytes (0x2) 0000: 00:43:53.737389 <= Recv data, 15 bytes (0xf) 0000: the number one. 00:43:54.295419 * Connection #0 to host 127.0.0.1:46263 left intact 00:43:55.351097 * Reusing existing http: connection with host 127.0.0.1 00:43:55.459319 => Send header, 85 bytes (0x55) 0000: GET /870002 HTTP/1.1 0016: Host: 127.0.0.1:46263 002d: User-Agent: curl/8.17.0 0046: Accept: */* 0053: 00:43:55.489734 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:43:55.501797 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 00:43:55.509783 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 16 00:43:55.517498 <= Recv header, 2 bytes (0x2) 0000: 00:43:55.521771 <= Recv data, 16 bytes (0x10) 0000: two is nice too. 00:43:55.564768 * Connection #0 to host 127.0.0.1:46263 left intact === End of file trace87 === Start of file valgrind87 ==199768== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind87 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 93 in state 4 Runner 2 (id 185908) running test 94 in state 4 Runner 3 (id 185910) running test 89 in state 4 Runner 4 (id 185912) running test 92 in state 4 Runner 5 (id 185914) running test 95 in state 4 Runner 6 (id 185916) running test 91 in state 4 Runner 7 (id 185918) running test 88 in state 4 Runner 8 (id 185920) running test 90 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 93 in state 4 Runner 2 (id 185908) running test 94 in state 4 Runner 3 (id 185910) running test 89 in state 4 Runner 4 (id 185912) running test 92 in state 4 Runner 5 (id 185914) running test 95 in state 4 Runner 6 (id 185916) running test 91 in state 4 Runner 7 (id 185918) running test 88 in state 4 Runner 8 (id 185920) running test 90 in state 4 test 0089...[HTTP with NTLM and follow-location] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind89 ../src/curl -q --output log/3/curl89.out --include --trace-ascii log/3/trace89 --trace-time http://127.0.0.1:46853/89 -u testuser:testpass --ntlm -L > log/3/stdout89 2> log/3/stderr89 valgrind ERROR ==200114== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 89 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind89 ../src/curl -q --output log/3/curl89.out --include --trace-ascii log/3/trace89 --trace-time http://127.0.0.1:46853/89 -u testuser:testpass --ntlm -L > log/3/stdout89 2> log/3/stderr89 === End of file commands.log === Start of file curl89.out HTTP/1.1 401 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== HTTP/1.1 301 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Connection: close Location: /you/890010 HTTP/1.1 401 Now gimme that second round of crap Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== HTTP/1.1 200 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file curl89.out === Start of file http_server.log 00:43:31.007006 ====> Client connect 00:43:31.007168 accept_connection 3 returned 4 00:43:31.007244 accept_connection 3 returned 0 00:43:31.014509 Read 93 bytes 00:43:31.014635 Process 93 bytes request 00:43:31.014725 Got request: GET /verifiedserver HTTP/1.1 00:43:31.014791 Are-we-friendly question received 00:43:31.014910 Wrote request (93 bytes) input to log/3/server.input 00:43:31.015001 Identifying ourselves as friends 00:43:31.015159 Response sent (57 bytes) and written to log/3/server.response 00:43:31.015220 special request received, no persistency 00:43:31.015277 ====> Client disconnect 0 00:44:19.277135 ====> Client connect 00:44:19.277269 accept_connection 3 returned 4 00:44:19.277344 accept_connection 3 returned 0 00:44:20.407743 Read 147 bytes 00:44:20.407946 Process 147 bytes request 00:44:20.408053 Got request: GET /89 HTTP/1.1 00:44:20.408135 Serve test number 89 part 0 00:44:20.408430 - request found to be complete (89) 00:44:20.408712 Received NTLM type-1, sending back data 1001 00:44:20.408913 Wrote request (147 bytes) input to log/3/server.input 00:44:20.409042 Send response test89 section 00:44:20.409548 Response sent (421 bytes) and written to log/3/server.response 00:44:20.409623 => persistent connection request ended, awaits new request 00:44:23.533110 Read 279 bytes 00:44:23.533301 Process 279 bytes request 00:44:23.533389 Got request: GET /89 HTTP/1.1 00:44:23.533455 Serve test number 89 part 0 00:44:23.533688 - request found to be complete (89) 00:44:23.533900 Received NTLM type-3, sending back data 1002 00:44:23.533990 Wrote request (279 bytes) input to log/3/server.input 00:44:23.534073 Send response test89 section 00:44:23.534347 connection close instruction "swsclose" found in response 00:44:23.534558 Response sent (125 bytes) and written to log/3/server.response 00:44:23.534620 instructed to close connection after server-reply 00:44:23.534676 ====> Client disconnect 0 00:44:24.450311 ====> Client connect 00:44:24.450459 accept_connection 3 returned 4 00:44:24.450537 accept_connection 3 returned 0 00:44:24.518692 Read 155 bytes 00:44:24.518904 Process 155 bytes request 00:44:24.519003 Got request: GET /you/890010 HTTP/1.1 00:44:24.519175 Serve test number 89 part 10 00:44:24.519426 - request found to be complete (89) 00:44:24.519652 Received NTLM type-1, sending back data 1011 00:44:24.519746 Wrote request (155 bytes) input to log/3/server.input 00:44:24.519837 Send response test89 section 00:44:24.520383 Response sent (419 bytes) and written to log/3/server.response 00:44:24.520459 => persistent connection request ended, awaits new request 00:44:24.718783 Read 287 bytes 00:44:24.719001 Process 287 bytes request 00:44:24.719104 Got request: GET /you/890010 HTTP/1.1 00:44:24.719182 Serve test number 89 part 10 00:44:24.719437 - request found to be complete (89) 00:44:24.719661 Received NTLM type-3, sending back data 1012 00:44:24.719761 Wrote request (287 bytes) input to log/3/server.input 00:44:24.719852 Send response test89 section 00:44:24.720156 connection close instruction "swsclose" found in response 00:44:24.720363 Response sent (180 bytes) and written to log/3/server.response 00:44:24.720431 instructed to close connection after server-reply 00:44:24.720500 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 33248 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 89 === End of file server.cmd === Start of file server.input GET /89 HTTP/1.1 Host: 127.0.0.1:46853 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* GET /89 HTTP/1.1 Host: 127.0.0.1:46853 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Accept: */* GET /you/890010 HTTP/1.1 Host: 127.0.0.1:46853 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* GET /you/890010 HTTP/1.1 Host: 127.0.0.1:46853 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 401 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== This is not the real page either HTTP/1.1 301 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Connection: close Location: /you/890010 HTTP/1.1 401 Now gimme that second round of crap Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== This is not the real page either HTTP/1.1 200 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file server.response === Start of file stderr89 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 34 100 34 0 0 7 0 0:00:04 0:00:04 --:--:-- 9 100 34 100 34 0 0 6 0 0:00:05 0:00:04 0:00:01 9 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:07 --:--:-- 0 100 34 100 34 0 0 4 0 0:00:08 0:00:07 0:00:01 159 100 32 100 32 0 0 4 0 0:00:08 0:00:07 0:00:01 4 === End of file stderr89 === Start of file trace89 00:44:19.343689 * Trying 127.0.0.1:46853... 00:44:20.215569 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 53182 00:44:20.337384 * using HTTP/1.x 00:44:20.517368 * Server auth using NTLM with user 'testuser' 00:44:20.832603 => Send header, 147 bytes (0x93) 0000: GET /89 HTTP/1.1 0012: Host: 127.0.0.1:46853 0029: Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 006b: User-Agent: curl/8.17.0 0084: Accept: */* 0091: 00:44:21.176438 <= Recv header, 52 bytes (0x34) 0000: HTTP/1.1 401 Now gimme that second request of crap 00:44:21.481466 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:44:21.611282 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:44:21.649195 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 34 00:44:21.835340 <= Recv header, 241 bytes (0xf1) 0000: WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgy 0040: NcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQAS 0080: AAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAd 00c0: ABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== 00:44:21.967589 * Ignoring the response-body 00:44:21.984882 * setting size while ignoring 00:44:21.999986 <= Recv header, 2 bytes (0x2) 0000: 00:44:22.528706 * Connection #0 to host 127.0.0.1:46853 left intact 00:44:22.645192 * Issue another request to this URL: 'http://127.0.0.1:46853/89' 00:44:23.021851 * Reusing existing http: connection with host 127.0.0.1 00:44:23.897047 * Server auth using NTLM with user 'testuser' 00:44:23.918660 => Send header, 279 bytes (0x117) 0000: GET /89 HTTP/1.1 0012: Host: 127.0.0.1:46853 0029: Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABw 0069: AAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjK 00a9: HRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJ 00e9: T04= 00ef: User-Agent: curl/8.17.0 0108: Accept: */* 0115: 00:44:23.983473 <= Recv header, 54 bytes (0x36) 0000: HTTP/1.1 301 Things are fine in server land swsclose 00:44:23.998300 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:44:24.040716 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:44:24.073335 <= Recv header, 23 bytes (0x17) 0000: Location: /you/890010 00:44:24.102021 <= Recv header, 2 bytes (0x2) 0000: 00:44:24.153966 * Request completely sent off 00:44:24.256219 * shutting down connection #0 00:44:24.701055 * Issue another request to this URL: 'http://testuser:testpass@127.0.0.1:46853/you/890010' 00:44:24.754628 * NTLM picked AND auth done set, clear picked 00:44:24.793072 * Hostname 127.0.0.1 was found in DNS cache 00:44:24.826309 * Trying 127.0.0.1:46853... 00:44:24.8640CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind88 ../src/curl -q --output log/7/curl88.out --include --trace-ascii log/7/trace88 --trace-time http://127.0.0.1:34897/88 -T log/7/put88 -u testuser:testpass --digest > log/7/stdout88 2> log/7/stderr88 11 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 59044 00:44:24.870808 * using HTTP/1.x 00:44:24.896923 * Server auth using NTLM with user 'testuser' 00:44:24.900406 => Send header, 155 bytes (0x9b) 0000: GET /you/890010 HTTP/1.1 001a: Host: 127.0.0.1:46853 0031: Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 0073: User-Agent: curl/8.17.0 008c: Accept: */* 0099: 00:44:24.927886 <= Recv header, 50 bytes (0x32) 0000: HTTP/1.1 401 Now gimme that second round of crap 00:44:24.936819 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:44:24.944029 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:44:24.952273 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 34 00:44:24.965551 <= Recv header, 241 bytes (0xf1) 0000: WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgy 0040: NcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQAS 0080: AAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAd 00c0: ABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== 00:44:24.998226 * Ignoring the response-body 00:44:25.000385 * setting size while ignoring 00:44:25.005108 <= Recv header, 2 bytes (0x2) 0000: 00:44:25.031862 * Connection #1 to host 127.0.0.1:46853 left intact 00:44:25.039300 * Issue another request to this URL: 'http://testuser:testpass@127.0.0.1:46853/you/890010' 00:44:25.064204 * Reusing existing http: connection with host 127.0.0.1 00:44:25.096365 * Server auth using NTLM with user 'testuser' 00:44:25.099523 => Send header, 287 bytes (0x11f) 0000: GET /you/890010 HTTP/1.1 001a: Host: 127.0.0.1:46853 0031: Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABw 0071: AAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjK 00b1: HRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJ 00f1: T04= 00f7: User-Agent: curl/8.17.0 0110: Accept: */* 011d: 00:44:25.138824 <= Recv header, 54 bytes (0x36) 0000: HTTP/1.1 200 Things are fine in server land swsclose 00:44:25.146745 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:44:25.152042 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:44:25.159350 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 32 00:44:25.169277 <= Recv header, 2 bytes (0x2) 0000: 00:44:25.178521 <= Recv data, 32 bytes (0x20) 0000: Finally, this is the real page!. 00:44:25.271167 * Connection #1 to host 127.0.0.1:46853 left intact === End of file trace89 === Start of file valgrind89 ==200114== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind89 test 0088...[HTTP PUT with Digest authorization] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind88 ../src/curl -q --output log/7/curl88.out --include --trace-ascii log/7/trace88 --trace-time http://127.0.0.1:34897/88 -T log/7/put88 -u testuser:testpass --digest > log/7/stdout88 2> log/7/stderr88 valgrind ERROR ==200080== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 88 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind88 ../src/curl -q --output log/7/curl88.out --include --trace-ascii log/7/trace88 --trace-time http://127.0.0.1:34897/88 -T log/7/put88 -u testuser:testpass --digest > log/7/stdout88 2> log/7/stderr88 === End of file commands.log === Start of file curl88.out HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" Content-Type: text/html; charset=iso-8859-1 Connection: close HTTP/1.1 200 OK swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Connection: close This IS the real page === End of file curl88.out === Start of file http_server.log 00:43:30.668142 ====> Client connect 00:43:30.668293 accept_connection 3 returned 4 00:43:30.668370 accept_connection 3 returned 0 00:43:30.682718 Read 93 bytes 00:43:30.682870 Process 93 bytes request 00:43:30.682959 Got request: GET /verifiedserver HTTP/1.1 00:43:30.683022 Are-we-friendly question received 00:43:30.683150 Wrote request (93 bytes) input to log/7/server.input 00:43:30.683248 Identifying ourselves as friends 00:43:30.683407 Response sent (57 bytes) and written to log/7/server.response 00:43:30.683468 special request received, no persistency 00:43:30.683522 ====> Client disconnect 0 00:44:18.973013 ====> Client connect 00:44:18.973160 accept_connection 3 returned 4 00:44:18.973240 accept_connection 3 returned 0 00:44:20.071487 Read 100 bytes 00:44:20.071708 Process 100 bytes request 00:44:20.071809 Got request: PUT /88 HTTP/1.1 00:44:20.071875 Serve test number 88 part 0 00:44:20.072073 instructed to require authorization header 00:44:20.072168 - request found to be complete (88) 00:44:20.072272 instructed to require authorization header 00:44:20.072335 Found Content-Length: 0 in the request 00:44:20.072433 Return early due to auth requested by none provided 00:44:20.072585 Wrote request (100 bytes) input to log/7/server.input 00:44:20.072684 Send response test88 section 00:44:20.072911 connection close instruction "swsclose" found in response 00:44:20.073080 Response sent (244 bytes) and written to log/7/server.response 00:44:20.073142 instructed to close connection after server-reply 00:44:20.073197 ====> Client disconnect 0 00:44:22.424040 ====> Client connect 00:44:22.424181 accept_connection 3 returned 4 00:44:22.424264 accept_connection 3 returned 0 00:44:29.382621 Read 324 bytes 00:44:29.382831 Process 324 bytes request 00:44:29.382939 Got request: PUT /88 HTTP/1.1 00:44:29.383020 Serve test number 88 part 0 00:44:29.383185 instructed to require authorization header 00:44:29.383259 - request found to be complete (88) 00:44:29.383388 instructed to require authorization header 00:44:29.383463 Found Content-Length: 85 in the request 00:44:29.383566 Authorization header found, as required 00:44:29.383652 Received Digest request, sending back data 1000 00:44:29.383762 Wrote request (324 bytes) input to log/7/server.input 00:44:29.383861 Send response test88 section 00:44:29.384135 connection close instruction "swsclose" found in response 00:44:29.384336 Response sent (157 bytes) and written to log/7/server.response 00:44:29.384408 instructed to close connection after server-reply 00:44:29.384470 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 34894 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file put88 This is data we upload with PUT a second line line three four is the number of lines === End of file put88 === Start of file server.cmd auth_required Testnum 88 === End of file server.cmd === Start of file server.input PUT /88 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* Content-Length: 0 PUT /88 HTTP/1.1 Host: 127.0.0.1:34897 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/88", response="78a49fa53d0c228778297687d4168e71" User-Agent: curl/8.17.0 Accept: */* Content-Length: 85 This is data we upload with PUT a second line line three four is the number of lines === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 401 Authorization Required swsclose Server: CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind90 ../src/curl -q --output log/8/curl90.out --include --trace-ascii log/8/trace90 --trace-time http://127.0.0.1:39461/90 -u testuser:testpass --anyauth -L > log/8/stdout90 2> log/8/stderr90 Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" Content-Type: text/html; charset=iso-8859-1 Connection: close This is not the real page HTTP/1.1 200 OK swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Connection: close This IS the real page === End of file server.response === Start of file stderr88 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 85 0 0 100 85 0 6 0:00:14 0:00:12 0:00:02 11 100 108 0 23 100 85 1 6 0:00:14 0:00:13 0:00:01 14 === End of file stderr88 === Start of file trace88 00:44:19.042286 * Trying 127.0.0.1:34897... 00:44:19.938752 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 45558 00:44:20.058027 * using HTTP/1.x 00:44:20.162601 * Server auth using Digest with user 'testuser' 00:44:20.492090 => Send header, 100 bytes (0x64) 0000: PUT /88 HTTP/1.1 0012: Host: 127.0.0.1:34897 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: Content-Length: 0 0062: 00:44:20.852263 <= Recv header, 46 bytes (0x2e) 0000: HTTP/1.1 401 Authorization Required swsclose 00:44:21.179374 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:44:21.443593 <= Recv header, 64 bytes (0x40) 0000: WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" 00:44:21.484980 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:44:21.525549 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:44:21.635332 <= Recv header, 2 bytes (0x2) 0000: 00:44:21.869157 * Request completely sent off 00:44:22.129810 * shutting down connection #0 00:44:22.600558 * Issue another request to this URL: 'http://127.0.0.1:34897/88' 00:44:22.759120 * Hostname 127.0.0.1 was found in DNS cache 00:44:22.800064 * Trying 127.0.0.1:34897... 00:44:22.838633 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 50350 00:44:22.845234 * using HTTP/1.x 00:44:29.548486 * Server auth using Digest with user 'testuser' 00:44:29.772156 => Send header, 239 bytes (0xef) 0000: PUT /88 HTTP/1.1 0012: Host: 127.0.0.1:34897 0029: Authorization: Digest username="testuser", realm="testrealm", no 0069: nce="1053604145", uri="/88", response="78a49fa53d0c228778297687d 00a9: 4168e71" 00b3: User-Agent: curl/8.17.0 00cc: Accept: */* 00d9: Content-Length: 85 00ed: 00:44:29.814164 => Send data, 85 bytes (0x55) 0000: This is data we upload with PUT.a second line.line three.four is 0040: the number of lines. 00:44:29.874645 * upload completely sent off: 85 bytes 00:44:29.938586 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 200 OK swsclose 00:44:29.952788 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:44:29.962734 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:44:29.973050 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:44:29.997316 <= Recv header, 2 bytes (0x2) 0000: 00:44:30.023165 <= Recv data, 23 bytes (0x17) 0000: This IS the real page!. 00:44:30.127360 <= Recv data, 0 bytes (0x0) 00:44:30.261785 * shutting down connection #1 === End of file trace88 === Start of file valgrind88 ==200080== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind88 test 0090...[HTTP with NTLM via --anyauth, and then follow-location with NTLM again] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind90 ../src/curl -q --output log/8/curl90.out --include --trace-ascii log/8/trace90 --trace-time http://127.0.0.1:39461/90 -u testuser:testpass --anyauth -L > log/8/stdout90 2> log/8/stderr90 valgrind ERROR ==200369== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 90 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind90 ../src/curl -q --output log/8/curl90.out --include --trace-ascii log/8/trace90 --trace-time http://127.0.0.1:39461/90 -u testuser:testpass --anyauth -L > log/8/stdout90 2> log/8/stderr90 === End of file commands.log === Start of file curl90.out HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Basic WWW-Authenticate: Wild-and-crazy WWW-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 HTTP/1.1 401 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== HTTP/1.1 301 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Connection: close Location: /you/900010 HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Basic WWW-Authenticate: Wild-and-crazy WWW-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 HTTP/1.1 401 Now gimme that second round of crap Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== HTTP/1.1 200 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file curl90.out === Start of file http_server.log 00:43:38.011403 ====> Client connect 00:43:38.011564 accept_connection 3 returned 4 00:43:38.011639 accept_connection 3 returned 0 00:43:38.018617 Read 93 bytes 00:43:38.018754 Process 93 bytes request 00:43:38.018854 Got request: GET /verifiedserver HTTP/1.1 00:43:38.018924 Are-we-friendly question received 00:43:38.019050 Wrote request (93 bytes) input to log/8/server.input 00:43:38.019145 Identifying ourselves as friends 00:43:38.019324 Response sent (57 bytes) and written to log/8/server.response 00:43:38.019392 special request received, no persistency 00:43:38.019448 ====> Client disconnect 0 00:44:25.593619 ====> Client connect 00:44:25.593762 accept_connection 3 returned 4 00:44:25.593844 accept_connection 3 returned 0 00:44:26.632751 Read 81 bytes 00:44:26.632951 Process 81 bytes request 00:44:26.633047 Got request: GET /90 HTTP/1.1 00:44:26.633118 Serve test number 90 part 0 00:44:26.633452 - request found to be complete (90) 00:44:26.633852 Wrote request (81 bytes) input to log/8/server.input 00:44:26.633960 Send response test90 section 00:44:26.634384 connection close instruction "swsclose" found in response 00:44:26.634655 Response sent (264 bytes) and written to log/8/server.response 00:44:26.634725 instructed to close connection after server-reply 00:44:26.634786 ====> Client disconnect 0 00:44:29.163398 ====> Client connect 00:44:29.163540 accept_connection 3 returned 4 00:44:29.163630 accept_connection 3 returned 0 00:44:29.340047 Read 147 bytes 00:44:29.340279 Process 147 bytes request 00:44:29.340386 Got request: GET /90 HTTP/1.1 00:44:29.340468 Serve test number 90 part 0 00:44:29.340796 - request found to be complete (90) 00:44:29.341129 Received NTLM type-1, sending back data 1001 00:44:29.341248 Wrote request (147 bytes) input to log/8/server.input 00:44:29.341344 Send response test90 section 00:44:29.342089 Response sent (421 bytes) and written to log/8/server.response 00:44:29.342170 => persistent connection request ended, awaits new request 00:44:30.828351 Read 279 bytes 00:44:30.828568 Process 279 bytes request 00:44:30.828671 Got request: GET /90 HTTP/1.1 00:44:30.828762 Serve test number 90 part 0 00:44:30.829077 - request found to be complete (90) 00:44:30.829393 Received NTLM type-3, sending back data 1002 00:44:30.829521 Wrote request (279 bytes) input to log/8/server.input 00:44:30.829628 Send response test90 section 00:44:30.830083 connection close instruction "swsclose" found in response 00:44:30.830309 Response sent (125 bytes) and written to log/8/server.response 00:44:30.830380 instructed to close connection after server-reply 00:44:30.830453 ====> Client disconnect 0 00:44:31.309346 ====> Client connect 00:44:31.309493 accept_connection 3 returned 4 00:44:31.309577 accept_connection 3 returned 0 00:44:31.338525 Read 89 bytes 00:44:31.338721 Process 89 bytes request 00:44:31.338829 Got request: GET /you/900010 HTTP/1.1 00:44:31.338906 Serve test number 90 part 10 00:44:31.339286 - request found to be complete (90) 00:44:31.339597 Wrote request (89 bytes) input to log/8/server.input 00:44:31.339686 Send response test90 section 00:44:31.340038 connection close instruction "swsclose" found in response 00:44:31.340303 Response sent (264 bytes) and written to log/8/server.response 00:44:31.340373 instructed to close connection after server-reply 00:44:31.340436 ====> Client disconnect 0 00:44:31.694696 ====> Client connect 00:44:31.694828 accept_connection 3 returned 4 00:44:31.694910 accept_connection 3 returned 0 00:44:31.708697 Read 155 bytes 00:44:31.708891 Process 155 bytes request 00:44:31.708988 Got request: GET /you/900010 HTTP/1.1 00:44:31.709065 Serve test number 90 part 10 00:44:31.709346 - request found to be complete (90) 00:44:31.709618 Received NTLM type-1, sending back data 1011 00:44:31.709717 Wrote request (155 bytes) input to log/8/server.input 00:44:31.709807 Send response test90 section 00:44:31.710414 Response sent (419 bytes) and written to log/8/server.response 00:44:31.710486 => persistent connection request ended, awaits new request 00:44:31.872172 Read 287 bytes 00:44:31.872358 Process 287 bytes request 00:44:31.872457 Got request: GET /you/900010 HTTP/1.1 00:44:31.872527 Serve test number 90 part 10 00:44:31.872807 - request found to be complete (90) 00:44:31.873074 Received NTLM type-3, sending back data 1012 00:44:31.873170 Wrote request (287 bytes) input to log/8/server.input 00:44:31.873265 Send response test90 section 00:44:31.873624 connection close instruction "swsclose" found in response 00:44:31.873870 Response sent (180 bytes) and written to log/8/server.response 00:44:31.873935 instructed to close connection after server-reply 00:44:31.873993 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 58496 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 90 === End of file server.cmd === Start of file server.input GET /90 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* GET /90 HTTP/1.1 Host: 127.0.0.1:39461 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* GET /90 HTTP/1.1 Host: 127.0.0.1:39461 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Accept: */* GET /you/900010 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* GET /you/900010 HTTP/1.1 Host: 127.0.0.1:39461 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* GET /you/900010 HTTP/1.1 Host: 127.0.0.1:39461 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Basic WWW-Authenticate: Wild-and-crazy WWW-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 This is not the real page HTTP/1.1 401 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== This is not the real page either HTTP/1.1 301 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Connection: close Location: /you/900010 HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Basic WWW-Authenticate: Wild-and-crazy WWW-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 This is not the real page HTTP/1.1 401 Now gimme that second round of crap Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== This is not the real page either HTTP/1.1 200 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file server.response === Start of file stderr90 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 7 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 7 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 34 100 34 0 0 5 0 0:00:06 0:00:06 --:--:-- 70 0 0 0 0 0 0 0 0 --:--:-- 0:00:07 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:07 --:--:-- 0 100 26 100 26 0 0 3 0 0:00:08 0:00:08 --:--:-- 3 0 0 0 0 0 0 0 0 --:--:-- 0:00:08 --:--:-- 0 100 34 100 34 0 0 4 0 0:00:08 0:00:08 --:--:-- 4 100 32 100 32 0 0 3 0 0:00:10 0:00:08 0:00:02 3 100 32 100 32 0 0 3 0 0:00:10 0:00:08 0:00:02 0 === End of file stderr90 === Start of file trace90 00:44:25.651949 * Trying 127.0.0.1:39461... 00:44:26.550919 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 58794 00:44:26.683828 * using HTTP/1.x 00:44:27.054759 => Send header, 81 bytes (0x51) 0000: GET /90 HTTP/1.1 0012: Host: 127.0.0.1:39461 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: 00:44:27.413283 <= Recv header, 46 bytes (0x2e) 0000: HTTP/1.1 401 Authorization Required swsclose 00:44:27.728116 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:44:27.902065 <= Recv header, 25 bytes (0x19) 0000: WWW-Authenticate: Basic 00:44:27.923312 <= Recv header, 34 bytes (0x22) 0000: WWW-Authenticate: Wild-and-crazy 00:44:27.933955 <= Recv header, 24 bytes (0x18) 0000: WWW-Authenticate: NTLM 00:44:27.958699 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:44:27.986144 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 00:44:28.098008 * Ignoring the response-body 00:44:28.117799 * setting size while ignoring 00:44:28.133362 <= Recv header, 2 bytes (0x2) 0000: 00:44:28.688702 * Connection #0 to host 127.0.0.1:39461 left intact 00:44:28.808312 * Issue another request to this URL: 'http://127.0.0.1:39461/90' 00:44:28.990009 * Connection 0 seems to be dead 00:44:29.085394 * shutting down connection #0 00:44:29.488192 * Hostname 127.0.0.1 was found in DNS cache 00:44:29.539297 * Trying 127.0.0.1:39461... 00:44:29.578849 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 58800 00:44:29.585892 * using HTTP/1.x 00:44:29.697736 * Server auth using NTLM with user 'testuser' 00:44:29.724557 => Send header, 147 bytes (0x93) 0000: GET /90 HTTP/1.1 0012: Host: 127.0.0.1:39461 0029: Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 006b: User-Agent: curl/8.17.0 0084: Accept: */* 0091: 00:44:29.767948 <= Recv header, 52 bytes (0x34) 0000: HTTP/1.1 401 Now gimme that second request of crap 00:44:29.779525 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:44:29.788346 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:44:29.798415 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 34 00:44:29.921283 <= Recv header, 241 bytes (0xf1) 0000: WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgy 0040: NcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQAS 0080: AAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAd 00c0: ABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== 00:44:29.960183 * Ignoring the response-body 00:44:29.962486 * setting size while ignoring 00:44:29.964329 <= Recv header, 2 bytes (0x2) 0000: 00:44:30.009334 * Connection #1 to host 127.0.0.1:39461 left intact 00:44:30.025952 * Issue another request to this URL: 'http://127.0.0.1:39461/90' 00:44:30.208758 * Reusing existing http: connection with host 127.0.0.1 00:44:31.204034 * Server auth using NTLM with user 'testuser' 00:44:31.213049 => Send header, 279 bytes (0x117) 0000: GET /90 HTTP/1.1 0012: Host: 127.0.0.1:39461 0029: Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABw 0069: AAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjK 00a9: HRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJ 00e9: T04= 00ef: User-Agent: curl/8.17.0 0108: Accept: */* 0115: 00:44:31.261614 <= Recv header, 54 bytes (0x36) 0000: HTTP/1.1 301 Things are fine in server land swsclose 00:44:31.270424 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:44:31.320160 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:44:31.352797 <= Recv header, 23 bytes (0x17) 0000: Location: /you/900010 00:44:31.383713 <= Recv header, 2 bytes (0x2) 0000: 00:44:31.428269 * Request completely sent off 00:44:31.456078 * shutting down connection #1 00:44:31.640810 * Issue another request to this URL: 'http://testuser:testpass@127.0.0.1:39461/you/900010' 00:44:31.674644 * NTLM picked AND auth done set, clear picked 00:44:31.684802 * Hostname 127.0.0.1 was found in DNS cache 00:44:31.690074 * Trying 127.0.0.1:39461... 00:44:31.695421 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 58802 00:44:31.701093 * using HTTP/1.x 00:44:31.720953 => Send header, 89 bytes (0x59) 0000: GET /you/900010 HTTP/1.1 001a: Host: 127.0.0.1:39461 0031: User-Agent: curl/8.17.0 004a: Accept: */* 0057: 00:44:31.738754 <= Recv header, 46 bytes (0x2e) 0000: HTTP/1.1 401 Authorization Required swsclose 00:44:31.747589 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:44:31.754857 <= Recv header, 25 bytes (0x19) 0000: WWW-Authenticate: Basic 00:44:31.759548 <= Recv header, 34 bytes (0x22) 0000: WWW-Authenticate: Wild-and-crazy 00:44:31.766054 <= Recv header, 24 bytes (0x18) 0000: WWW-Authenticate: NTLM 00:44:31.771782 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:44:31.778675 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 00:44:31.786840 * Ignoring the response-body 00:44:31.789317 * setting size while ignoring 00:44:31.790589 <= Recv header, 2 bytes (0x2) 0000: 00:44:31.816910 * Connection #2 to host 127.0.0.1:39461 left intact 00:44:31.824779 * Issue another request to this URL: 'http://testuser:testpass@127.0.0.1:39461/you/900010' 00:44:31.857509 * Reusing existing http: connection with host 127.0.0.1 00:44:31.872674 * Server auth using NTLM with user 'testuser' 00:44:31.875637 => Send header, 155 bytes (0x9b) 0000: GET /you/900010 HTTP/1.1 001a: Host: 127.0.0.1:39461 0031: Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 0073: User-Agent: curl/8.17.0 008c: Accept: */* 0099: 00:44:31.926456 * abort upload 00:44:31.976261 * Connection died, retrying a fresh connect (retry count: 1) 00:44:32.024569 * shutting down connection #2 00:44:32.059124 * Issue another request to this URL: 'http://testuser:testpass@127.0.0.1:39461/you/900010' 00:44:32.071941 * Hostname 127.0.0.1 was found in DNS cache 00:44:32.075491 * Trying 127.0.0.1:39461... 00:44:32.080561 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 58808 00:44:32.082712 * using HTTP/1.x 00:44:32.088301 * Server auth using NTLM with user 'testuser' 00:44:32.091101 => Send header, 155 bytes (0x9b) 0000: GET /you/900010 HTTP/1.1 001a: Host: 127.0.0.1:39461 0031: Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 0073: User-Agent: curl/8.17.0 008c: Accept: */* 0099: 00:44:32.116211 <= Recv header, 50 bytes (0x32) 0000: HTTP/1.1 401 Now gimme that second round of crap 00:44:32.123773 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:44:32.129181 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:44:32.136207 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 34 00:44:32.147755 <= Recv header, 241 bytes (0xf1) 0000: WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgy 0040: NcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQAS 0080: AAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAd 00c0: ABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== 00:44:32.176710 * Ignoring the response-body 00:44:32.177959 * setting size while ignoring 00:44:32.178868 <= Recv header, 2 bytes (0x2) 0000: 00:44:32.201451 * Connection #3 to host 127.0.0.1:39461 left intact 00:44:32.210522 * Issue another request to this URL: 'http://testuser:testpass@127.0.0.1:39461/you/900010' 00:44:32.222988 * Reusing existing http: connection with host 127.0.0.1 00:44:32.251331 * Server auth using NTLM with user 'testuser' 00:44:32.254455 => Send header, 287 bytes (0x11f) 0000: GET /you/900010 HTTP/1.1 001a: Host: 127.0.0.1:39461 0031: Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABw 0071: AAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjK 00b1: HRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJ 00f1: T04= 00f7: User-Agent: curl/8.17.0 0110: Accept: */* 011d: 00:44:32.291298 <= Recv header, 54 bytes (0x36) 0000: HTTP/1.1 200 Things are fine in server land swsclose 00:44:32.299321 <= Recv header, 27 bytes (0x1b) 0000: Server:CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind92 ../src/curl -q --output log/4/curl92.out --include --trace-ascii log/4/trace92 --trace-time http://127.0.0.1:42621/want/92 -C 87 > log/4/stdout92 2> log/4/stderr92 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind91 ../src/curl -q --output log/6/curl91.out --include --trace-ascii log/6/trace91 --trace-time http://127.0.0.1:38277/91 --anyauth -u mydomain\\myself:secret > log/6/stdout91 2> log/6/stderr91 Microsoft-IIS/5.0 00:44:32.304417 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:44:32.310861 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 32 00:44:32.320776 <= Recv header, 2 bytes (0x2) 0000: 00:44:32.330090 <= Recv data, 32 bytes (0x20) 0000: Finally, this is the real page!. 00:44:32.434105 * Connection #3 to host 127.0.0.1:39461 left intact === End of file trace90 === Start of file valgrind90 ==200369== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind90 test 0092...[HTTP resume transfer with the whole file already downloaded] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind92 ../src/curl -q --output log/4/curl92.out --include --trace-ascii log/4/trace92 --trace-time http://127.0.0.1:42621/want/92 -C 87 > log/4/stdout92 2> log/4/stderr92 valgrind ERROR ==200572== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 92 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind92 ../src/curl -q --output log/4/curl92.out --include --trace-ascii log/4/trace92 --trace-time http://127.0.0.1:42621/want/92 -C 87 > log/4/stdout92 2> log/4/stderr92 === End of file commands.log === Start of file curl92.out HTTP/1.1 416 Requested Range Not Satisfiable Date: Fri, 24 Oct 2003 21:33:12 GMT Server: Apache/1.3.19 (Unix) (Red-Hat/Linux) mod_ssl/2.8.1 OpenSSL/0.9.6 PHP/4.3.1 Last-Modified: Fri, 24 Oct 2003 18:01:23 GMT ETag: "ab57a-507-3f9968f3" Accept-Ranges: bytes Content-Length: 4 Content-Range: bytes */87 Content-Type: image/gif === End of file curl92.out === Start of file http_server.log 00:43:43.039079 ====> Client connect 00:43:43.039263 accept_connection 3 returned 4 00:43:43.039350 accept_connection 3 returned 0 00:43:43.046476 Read 93 bytes 00:43:43.046627 Process 93 bytes request 00:43:43.046716 Got request: GET /verifiedserver HTTP/1.1 00:43:43.046778 Are-we-friendly question received 00:43:43.046902 Wrote request (93 bytes) input to log/4/server.input 00:43:43.046999 Identifying ourselves as friends 00:43:43.047179 Response sent (57 bytes) and written to log/4/server.response 00:43:43.047242 special request received, no persistency 00:43:43.047297 ====> Client disconnect 0 00:44:30.699594 ====> Client connect 00:44:30.699746 accept_connection 3 returned 4 00:44:30.699827 accept_connection 3 returned 0 00:44:31.750480 Read 104 bytes 00:44:31.750692 Process 104 bytes request 00:44:31.750785 Got request: GET /want/92 HTTP/1.1 00:44:31.750855 Serve test number 92 part 0 00:44:31.751028 - request found to be complete (92) 00:44:31.751278 Wrote request (104 bytes) input to log/4/server.input 00:44:31.751381 Send response test92 section 00:44:31.751839 Response sent (340 bytes) and written to log/4/server.response 00:44:31.751911 => persistent connection request ended, awaits new request 00:44:34.222347 Connection closed by client 00:44:34.222543 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 44576 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 92 === End of file server.cmd === Start of file server.input GET /want/92 HTTP/1.1 Host: 127.0.0.1:42621 Range: bytes=87- User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 416 Requested Range Not Satisfiable Date: Fri, 24 Oct 2003 21:33:12 GMT Server: Apache/1.3.19 (Unix) (Red-Hat/Linux) mod_ssl/2.8.1 OpenSSL/0.9.6 PHP/4.3.1 Last-Modified: Fri, 24 Oct 2003 18:01:23 GMT ETag: "ab57a-507-3f9968f3" Accept-Ranges: bytes Content-Length: 4 Content-Range: bytes */87 Content-Type: image/gif bad === End of file server.response === Start of file stderr92 ** Resuming transfer from byte position 87 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 === End of file stderr92 === Start of file trace92 00:44:29.737102 * Trying 127.0.0.1:42621... 00:44:30.681345 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 36352 00:44:30.817680 * using HTTP/1.x 00:44:31.171079 => Send header, 104 bytes (0x68) 0000: GET /want/92 HTTP/1.1 0017: Host: 127.0.0.1:42621 002e: Range: bytes=87- 0040: User-Agent: curl/8.17.0 0059: Accept: */* 0066: 00:44:31.523312 <= Recv header, 46 bytes (0x2e) 0000: HTTP/1.1 416 Requested Range Not Satisfiable 00:44:31.807018 <= Recv header, 37 bytes (0x25) 0000: Date: Fri, 24 Oct 2003 21:33:12 GMT 00:44:31.906304 <= Recv header, 84 bytes (0x54) 0000: Server: Apache/1.3.19 (Unix) (Red-Hat/Linux) mod_ssl/2.8.1 OpenS 0040: SL/0.9.6 PHP/4.3.1 00:44:31.942422 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Fri, 24 Oct 2003 18:01:23 GMT 00:44:31.951184 <= Recv header, 28 bytes (0x1c) 0000: ETag: "ab57a-507-3f9968f3" 00:44:31.958502 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 00:44:31.990831 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 4 00:44:32.024977 <= Recv header, 27 bytes (0x1b) 0000: Content-Range: bytes */87 00:44:32.073772 <= Recv header, 25 bytes (0x19) 0000: Content-Type: image/gif 00:44:32.157877 * setting size while ignoring 00:44:32.174907 <= Recv header, 2 bytes (0x2) 0000: 00:44:32.745666 * Connection #0 to host 127.0.0.1:42621 left intact === End of file trace92 === Start of file valgrind92 ==200572== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind92 test 0091...[HTTP with NTLM/Negotiate/Basic, anyauth and user with domain, with size 0] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind91 ../src/curl -q --output log/6/curl91.out --include --trace-ascii log/6/trace91 --trace-time http://127.0.0.1:38277/91 --anyauth -u mydomain\\myself:secret > log/6/stdout91 2> log/6/stderr91 valgrind ERROR ==200562== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 91 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind91 ../src/curl -q --output log/6/curl91.out --include --trace-ascii log/6/trace91 --trace-time http://127.0.0.1:38277/91 --anyauth -u mydomain\\myself:secret > log/6/stdout91 2> log/6/stderr91 === End of file commands.log === Start of file curl91.out HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Magic-Negotiate WWW-Authenticate: NTLM WWW-Authenticate: Basic realm="daniel" Content-Type: text/html; charset=iso-8859-1 Content-Length: 0 Connection: close HTTP/1.1 401 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Length: 34 Content-Type: text/html; charset=iso-8859-1 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== HTTP/1.1 200 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file curl91.out === Start of file http_server.log 00:43:41.574464 ====> Client connect 00:43:41.574696 accept_connection 3 returned 4 00:43:41.574774 accept_connection 3 returned 0 00:43:41.582193 Read 93 bytes 00:43:41.582331 Process 93 bytes request 00:43:41.582421 Got request: GET /verifiedserver HTTP/1.1 00:43:41.582489 Are-we-friendly question received 00:43:41.582615 Wrote request (93 bytes) input to log/6/server.input 00:43:41.582715 Identifying ourselves as friends 00:43:41.582898 Response sent (57 bytes) and written to log/6/server.response 00:43:41.582960 special request received, no persistency 00:43:41.583013 ====> Client disconnect 0 00:44:29.431310 ====> Client connect 00:44:29.431454 accept_connection 3 returned 4 00:44:29.431543 accept_connection 3 returned 0 00:44:30.564072 Read 81 bytes 00:44:30.564245 Process 81 bytes request 00:44:30.564338 Got request: GET /91 HTTP/1.1 00:44:30.564413 Serve test number 91 part 0 00:44:30.564670 - request found to be complete (91) 00:44:30.564985 Wrote request (81 bytes) input to log/6/server.input 00:44:30.565097 Send response test91 section 00:44:30.565444 connection close instruction "swsclose" found in response 00:44:30.565633 Response sent (272 bytes) and written to log/6/server.response 00:44:30.565697 instructed to close connection after server-reply 00:44:30.565758 ====> Client disconnect 0 00:44:32.884839 ====> Client connect 00:44:32.884982 accept_connection 3 returned 4 00:44:32.885065 accept_connection 3 returned 0 00:44:33.064868 Read 147 bytes 00:44:33.065066 Process 147 bytes request 00:44:33.065164 Got request: GET /91 HTTP/1.1 00:44:33.065237 Serve test number 91 part 0 00:44:33.065487 - request found to be complete (91) 00:44:33.065866 Received NTLM type-1, sending back data 1001 00:44:33.065973 Wrote request (147 bytes) input to log/6/server.input 00:44:33.066069 Send response test91 section 00:44:33.066497 Response sent (421 bytes) and written to log/6/server.response 00:44:33.066569 => persistent connection request ended, awaits new request 00:44:34.626096 Read 287 bytes 00:44:34.626301 Process 287 bytes request 00:44:34.626405 Got request: GET /91 HTTP/1.1 00:44:34.626479 Serve test number 91 part 0 00:44:34.626712 - request found to be complete (91) 00:44:34.626924 Received NTLM type-3, sending back data 1002 00:44:34.627030 Wrote request (287 bytes) input to log/6/server.input 00:44:34.627128 Send response test91 section 00:44:34.627504 connection close instruction "swsclose" found in response 00:44:34.627720 Response sent (180 bytes) and written to log/6/server.response 00:44:34.627788 instructed to close connection after server-reply 00:44:34.627847 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 50608 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 91 === End of file server.cmd === Start of file server.input GET /91 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* GET /91 HTTP/1.1 Host: 127.0.0.1:38277 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* GET /91 HTTP/1.1 Host: 127.0.0.1:38277 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAgACABwAAAABgAGAHgAAAALAAsAfgAAAAAAAAAAAAAAhoIBAMIyJpR5mHpg2FZha5kRaFZ9436GAxPu0C5llxexSQ5QzVkiLSfkcpVyRgCXXqR+Am15ZG9tYWlubXlzZWxmV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Magic-Negotiate WWW-Authenticate: NTLM WWW-Authenticate: Basic realm="daniel" Content-Type: text/html; charset=iso-8859-1 Content-Length: 0 Connection: close HTTP/1.1 401 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Length: 34 Content-Type: text/html; charset=iso-8859-1 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== This is not the real page either HTTP/1.1 200 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file server.response === Start of file stderr91 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 34 100 34 0 0 5 0 0:00:06 0:00:06 --:--:-- 56 0 0 0 0 0 0 0 0 --:--:-- 0:00:07 --:--:-- 0 100 32 100 32 0 0 4 0 0:00:08 0:00:07 0:00:01 189 === End of file stderr91 === Start of file trace91 00:44:29.482855 * Trying 127.0.0.1:38277... 00:44:30.475281 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 44956 00:44:30.607125 * using HTTP/1.x 00:44:30.985982 => Send header, 81 bytes (0x51) 0000: GET /91 HTTP/1.1 0012: Host: 127.0.0.1:38277 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: 00:44:31.318052 <= Recv header, 46 bytes (0x2e) 0000: HTTP/1.1 401 Authorization Required swsclose 00:44:31.634293 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:44:31.799599 <= Recv header, 35 bytes (0x23) 0000: WWW-Authenticate: Magic-Negotiate 00:44:31.830801 <= Recv header, 24 bytes (0x18) 0000: WWW-Authenticate: NTLM 00:44:31.842406 <= Recv header, 40 bytes (0x28) 0000: WWW-Authenticate: Basic realm="daniel" 00:44:31.868924 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:44:31.897304 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 0 00:44:31.943230 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:44:32.071160 <= Recv header, 2 bytes (0x2) 0000: 00:44:32.578004 * shutting down connection #0 00:44:33.057538 * Issue another request to this URL: 'http://127.0.0.1:38277/91' 00:44:33.220757 * Hostname 127.0.0.1 was found in DNS cache 00:44:33.261176 * Trying 127.0.0.1:38277... 00:44:33.301699 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 46988 00:44:33.308529 * using HTTP/1.x 00:44:33.423716 * Server auth using NTLM with user 'mydomain\myself' 00:44:33.450774 => Send header, 147 bytes (0x93) 0000: GET /91 HTTP/1.1 0012: Host: 127.0.0.1:38277 0029: Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 006b: User-Agent: curl/8.17.0 0084: Accept: */* 0091: 00:44:33.502685 <= Recv header,CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind93 ../src/curl -q --output log/1/curl93.out --include --trace-ascii log/1/trace93 --trace-time http://127.0.0.1:40641/93 -x 127.0.0.1:40641 > log/1/stdout93 2> log/1/stderr93 CMD (14336): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind94 ../src/curl -q --output log/2/curl94.out --include --trace-ascii log/2/trace94 --trace-time https://test.anything.really.com:94 --proxy1.0 127.0.0.1:39863 > log/2/stdout94 2> log/2/stderr94 52 bytes (0x34) 0000: HTTP/1.1 401 Now gimme that second request of crap 00:44:33.513298 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:44:33.520771 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 34 00:44:33.525829 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:44:33.647634 <= Recv header, 241 bytes (0xf1) 0000: WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgy 0040: NcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQAS 0080: AAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAd 00c0: ABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== 00:44:33.702656 * Ignoring the response-body 00:44:33.716933 * setting size while ignoring 00:44:33.720674 <= Recv header, 2 bytes (0x2) 0000: 00:44:33.913119 * Connection #1 to host 127.0.0.1:38277 left intact 00:44:33.926517 * Issue another request to this URL: 'http://127.0.0.1:38277/91' 00:44:34.096447 * Reusing existing http: connection with host 127.0.0.1 00:44:34.999500 * Server auth using NTLM with user 'mydomain\myself' 00:44:35.014639 => Send header, 287 bytes (0x11f) 0000: GET /91 HTTP/1.1 0012: Host: 127.0.0.1:38277 0029: Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAgACABw 0069: AAAABgAGAHgAAAALAAsAfgAAAAAAAAAAAAAAhoIBAMIyJpR5mHpg2FZha5kRaFZ9 00a9: 436GAxPu0C5llxexSQ5QzVkiLSfkcpVyRgCXXqR+Am15ZG9tYWlubXlzZWxmV09S 00e9: S1NUQVRJT04= 00f7: User-Agent: curl/8.17.0 0110: Accept: */* 011d: 00:44:35.079113 <= Recv header, 54 bytes (0x36) 0000: HTTP/1.1 200 Things are fine in server land swsclose 00:44:35.096423 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:44:35.104523 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:44:35.111761 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 32 00:44:35.129388 <= Recv header, 2 bytes (0x2) 0000: 00:44:35.139999 <= Recv data, 32 bytes (0x20) 0000: Finally, this is the real page!. 00:44:35.245527 * Connection #1 to host 127.0.0.1:38277 left intact === End of file trace91 === Start of file valgrind91 ==200562== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind91 test 0093...[HTTP GET with failed proxy auth] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind93 ../src/curl -q --output log/1/curl93.out --include --trace-ascii log/1/trace93 --trace-time http://127.0.0.1:40641/93 -x 127.0.0.1:40641 > log/1/stdout93 2> log/1/stderr93 valgrind ERROR ==200837== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 93 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind93 ../src/curl -q --output log/1/curl93.out --include --trace-ascii log/1/trace93 --trace-time http://127.0.0.1:40641/93 -x 127.0.0.1:40641 > log/1/stdout93 2> log/1/stderr93 === End of file commands.log === Start of file curl93.out HTTP/1.1 407 Needs proxy authentication Server: test-server/fake swsclose yesyes Proxy-Authenticate: Basic "oh please" Connection: close bing === End of file curl93.out === Start of file http_server.log 00:43:51.262834 ====> Client connect 00:43:51.262986 accept_connection 3 returned 4 00:43:51.263062 accept_connection 3 returned 0 00:43:51.270473 Read 93 bytes 00:43:51.270570 Process 93 bytes request 00:43:51.270663 Got request: GET /verifiedserver HTTP/1.1 00:43:51.270730 Are-we-friendly question received 00:43:51.270844 Wrote request (93 bytes) input to log/1/server.input 00:43:51.270933 Identifying ourselves as friends 00:43:51.271095 Response sent (57 bytes) and written to log/1/server.response 00:43:51.271158 special request received, no persistency 00:43:51.271215 ====> Client disconnect 0 00:44:38.857982 ====> Client connect 00:44:38.858131 accept_connection 3 returned 4 00:44:38.858216 accept_connection 3 returned 0 00:44:40.005500 Read 133 bytes 00:44:40.005726 Process 133 bytes request 00:44:40.005844 Got request: GET http://127.0.0.1:40641/93 HTTP/1.1 00:44:40.005932 Serve test number 93 part 0 00:44:40.006139 - request found to be complete (93) 00:44:40.006433 Wrote request (133 bytes) input to log/1/server.input 00:44:40.006565 Send response test93 section 00:44:40.006818 connection close instruction "swsclose" found in response 00:44:40.007059 Response sent (143 bytes) and written to log/1/server.response 00:44:40.007139 instructed to close connection after server-reply 00:44:40.007215 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 37410 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 93 === End of file server.cmd === Start of file server.input GET http://127.0.0.1:40641/93 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 407 Needs proxy authentication Server: test-server/fake swsclose yesyes Proxy-Authenticate: Basic "oh please" Connection: close bing === End of file server.response === Start of file stderr93 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 5 0 5 0 0 1 0 --:--:-- 0:00:04 --:--:-- 1 100 5 0 5 0 0 0 0 --:--:-- 0:00:05 --:--:-- 1 === End of file stderr93 === Start of file trace93 00:44:37.917534 * Trying 127.0.0.1:40641... 00:44:38.829253 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 38846 00:44:38.975429 * using HTTP/1.x 00:44:39.428610 => Send header, 133 bytes (0x85) 0000: GET http://127.0.0.1:40641/93 HTTP/1.1 0028: Host: 127.0.0.1:40641 003f: User-Agent: curl/8.17.0 0058: Accept: */* 0065: Proxy-Connection: Keep-Alive 0083: 00:44:39.781114 <= Recv header, 40 bytes (0x28) 0000: HTTP/1.1 407 Needs proxy authentication. 00:44:40.065958 <= Recv header, 41 bytes (0x29) 0000: Server: test-server/fake swsclose yesyes. 00:44:40.258672 <= Recv header, 38 bytes (0x26) 0000: Proxy-Authenticate: Basic "oh please". 00:44:40.325732 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:44:40.400381 <= Recv header, 1 bytes (0x1) 0000: . 00:44:40.464712 <= Recv data, 5 bytes (0x5) 0000: bing. 00:44:40.594085 * abort upload 00:44:40.619708 <= Recv data, 0 bytes (0x0) 00:44:41.147503 * shutting down connection #0 === End of file trace93 === Start of file valgrind93 ==200837== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind93 test 0094...[HTTPS GET with failed proxy auth (CONNECT 1.0)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind94 ../src/curl -q --output log/2/curl94.out --include --trace-ascii log/2/trace94 --trace-time https://test.anything.really.com:94 --proxy1.0 127.0.0.1:39863 > log/2/stdout94 2> log/2/stderr94 valgrind ERROR ==201020== error calling PR_SET_PTRACER, vCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind95 ../src/curl -q --output log/5/curl95.out --include --trace-ascii log/5/trace95 --trace-time http://test.95:46263/we/want/that/page/95 -p -x 127.0.0.1:40841 -d "datatopost=ohthatsfunyesyes" > log/5/stdout95 2> log/5/stderr95 gdb might block == Contents of files in the log/2/ dir after test 94 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind94 ../src/curl -q --output log/2/curl94.out --include --trace-ascii log/2/trace94 --trace-time https://test.anything.really.com:94 --proxy1.0 127.0.0.1:39863 > log/2/stdout94 2> log/2/stderr94 === End of file commands.log === Start of file curl94.out HTTP/1.1 407 Needs proxy authentication Server: test-server/fake swsclose yesyes Proxy-Authenticate: Basic "oh please" Connection: close === End of file curl94.out === Start of file http_server.log 00:43:58.785620 ====> Client connect 00:43:58.785775 accept_connection 3 returned 4 00:43:58.785847 accept_connection 3 returned 0 00:43:58.794993 Read 93 bytes 00:43:58.795098 Process 93 bytes request 00:43:58.795184 Got request: GET /verifiedserver HTTP/1.1 00:43:58.795246 Are-we-friendly question received 00:43:58.795356 Wrote request (93 bytes) input to log/2/server.input 00:43:58.795440 Identifying ourselves as friends 00:43:58.795622 Response sent (57 bytes) and written to log/2/server.response 00:43:58.795681 special request received, no persistency 00:43:58.795735 ====> Client disconnect 0 00:44:46.516191 ====> Client connect 00:44:46.516333 accept_connection 3 returned 4 00:44:46.516408 accept_connection 3 returned 0 00:44:47.452091 Read 138 bytes 00:44:47.452319 Process 138 bytes request 00:44:47.452553 Received a CONNECT test.anything.really.com:94 HTTP/1.0 request 00:44:47.452748 Port number: 94, test case number: -7 00:44:47.453025 [log/2/server.cmd] cmdfile says testnum 94 00:44:47.453262 - request found to be complete (94) 00:44:47.453525 Wrote request (138 bytes) input to log/2/server.input 00:44:47.453650 Send response test94 section 00:44:47.453869 connection close instruction "swsclose" found in response 00:44:47.454077 Response sent (143 bytes) and written to log/2/server.response 00:44:47.454145 instructed to close connection after server-reply 00:44:47.454206 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 39578 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 94 === End of file server.cmd === Start of file server.input CONNECT test.anything.really.com:94 HTTP/1.0 Host: test.anything.really.com:94 User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 407 Needs proxy authentication Server: test-server/fake swsclose yesyes Proxy-Authenticate: Basic "oh please" Connection: close bing === End of file server.response === Start of file stderr94 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (56) CONNECT tunnel failed, response 407 === End of file stderr94 === Start of file trace94 00:44:45.589621 * Trying 127.0.0.1:39863... 00:44:46.471833 * CONNECT: no ALPN negotiated 00:44:46.531630 * allocate connect buffer 00:44:46.705047 * Establish HTTP proxy tunnel to test.anything.really.com:94 00:44:46.861120 => Send header, 138 bytes (0x8a) 0000: CONNECT test.anything.really.com:94 HTTP/1.0 002e: Host: test.anything.really.com:94 0051: User-Agent: curl/8.17.0 006a: Proxy-Connection: Keep-Alive 0088: 00:44:47.067787 <= Recv header, 40 bytes (0x28) 0000: HTTP/1.1 407 Needs proxy authentication. 00:44:47.425879 <= Recv header, 41 bytes (0x29) 0000: Server: test-server/fake swsclose yesyes. 00:44:47.526250 <= Recv header, 38 bytes (0x26) 0000: Proxy-Authenticate: Basic "oh please". 00:44:47.631527 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:44:47.656988 <= Recv header, 1 bytes (0x1) 0000: . 00:44:47.757733 * CONNECT tunnel failed, response 407 00:44:48.169773 * closing connection #0 === End of file trace94 === Start of file valgrind94 ==201020== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind94 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/5/server/http2_server.pid" --logfile "log/5/http2_server.log" --logdir "log/5" --portfile log/5/server/http2_server.port --config log/5/server.cmd --id 2 --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP2 server is on PID 201090 port 40841 * pid http-proxy => 201090 201090 test 0095...[HTTP over proxytunnel using POST] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind95 ../src/curl -q --output log/5/curl95.out --include --trace-ascii log/5/trace95 --trace-time http://test.95:46263/we/want/that/page/95 -p -x 127.0.0.1:40841 -d "datatopost=ohthatsfunyesyes" > log/5/stdout95 2> log/5/stderr95 valgrind ERROR ==201164== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 95 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind95 ../src/curl -q --output log/5/curl95.out --include --trace-ascii log/5/trace95 --trace-time http://test.95:46263/we/want/that/page/95 -p -x 127.0.0.1:40841 -d "datatopost=ohthatsfunyesyes" > log/5/stdout95 2> log/5/stderr95 === End of file commands.log === Start of file curl95.out HTTP/1.1 200 Mighty fine indeed HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file curl95.out === Start of file http2_server.log 00:44:00.673220 Run as proxy, CONNECT to host 127.0.0.1 00:44:00.682875 Running HTTP IPv4 version on port 40841 00:44:00.683282 Wrote pid 201090 to log/5/server/http2_server.pid 00:44:00.683532 Wrote port 40841 to log/5/server/http2_server.port 00:44:49.165282 ====> Client connect 00:44:49.165499 accept_connection 3 returned 4 00:44:49.165680 accept_connection 3 returned 0 00:44:49.987007 Read 110 bytes 00:44:49.987816 Process 110 bytes request 00:44:49.989827 Received a CONNECT test.95:46263 HTTP/1.1 request 00:44:49.989990 Port number: 46263, test case number: -7 00:44:49.991000 [log/5/server.cmd] cmdfile says testnum 95 00:44:49.998137 - request found to be complete (95) 00:44:49.999538 Wrote request (110 bytes) input to log/5/proxy.input 00:44:50.000001 Send response test95 section 00:44:50.001179 Response sent (35 bytes) and written to log/5/proxy.response 00:44:50.505490 about to connect to 127.0.0.1:46263 00:44:50.506478 connected fine to 127.0.0.1:46263, now tunnel 00:44:51.310535 [CTRL] READ 194 bytes from client 00:44:51.310968 [CTRL] READ "POST /we/want/that/page/95 HTTP/1.1%0d%0aHost: test.95:46263%0d%0aUser-Agent: curl/8.17.0%0d%0aAccept: */*%0d%0aContent-Length: 27%0d%0aContent-Type: application/x-www-form-urlencoded%0d%0a%0d%0adatatopost=ohthatsfunyesyes" 00:44:51.315420 [CTCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind97 ../src/curl -q --output log/3/curl97.out --include --trace-ascii log/3/trace97 --trace-time -d "hejsanallabarn" -H "Content-Type: silly/type" http://127.0.0.1:46853/97 > log/3/stdout97 2> log/3/stderr97 RL] SENT 194 bytes to server 00:44:51.315544 [CTRL] SENT "POST /we/want/that/page/95 HTTP/1.1%0d%0aHost: test.95:46263%0d%0aUser-Agent: curl/8.17.0%0d%0aAccept: */*%0d%0aContent-Length: 27%0d%0aContent-Type: application/x-www-form-urlencoded%0d%0a%0d%0adatatopost=ohthatsfunyesyes" 00:44:51.315709 [CTRL] READ 157 bytes from server 00:44:51.315823 [CTRL] READ "HTTP/1.1 200 OK%0aDate: Tue, 09 Nov 2010 14:49:00 GMT%0aServer: test-server/fake swsclose%0aContent-Type: text/html%0aFunny-head: yesyes%0aContent-Length: 9%0a%0acontents%0a" 00:44:51.316054 [CTRL] SENT 157 bytes to client 00:44:51.316156 [CTRL] SENT "HTTP/1.1 200 OK%0aDate: Tue, 09 Nov 2010 14:49:00 GMT%0aServer: test-server/fake swsclose%0aContent-Type: text/html%0aFunny-head: yesyes%0aContent-Length: 9%0a%0acontents%0a" 00:44:51.365562 [CTRL] got 0, STOP READING server 00:44:51.365777 [CTRL] DISABLED WRITING client 00:44:53.311102 [CTRL] got 0, STOP READING client 00:44:53.311362 [CTRL] DISABLED WRITING server 00:44:53.561805 [CTRL] CLOSING client socket 00:44:53.562067 [CTRL] CLOSING server socket 00:44:53.562179 [CTRL] ENDING 00:44:53.562356 ====> Client disconnect 0 === End of file http2_server.log === Start of file http_server.log 00:43:58.826380 ====> Client connect 00:43:58.826531 accept_connection 3 returned 4 00:43:58.826605 accept_connection 3 returned 0 00:43:58.835951 Read 93 bytes 00:43:58.836067 Process 93 bytes request 00:43:58.836157 Got request: GET /verifiedserver HTTP/1.1 00:43:58.836221 Are-we-friendly question received 00:43:58.836337 Wrote request (93 bytes) input to log/5/server.input 00:43:58.836431 Identifying ourselves as friends 00:43:58.836587 Response sent (57 bytes) and written to log/5/server.response 00:43:58.836648 special request received, no persistency 00:43:58.836703 ====> Client disconnect 0 00:44:49.507177 ====> Client connect 00:44:49.507317 accept_connection 3 returned 4 00:44:49.507398 accept_connection 3 returned 0 00:44:50.311856 Read 194 bytes 00:44:50.312008 Process 194 bytes request 00:44:50.312121 Got request: POST /we/want/that/page/95 HTTP/1.1 00:44:50.312192 Serve test number 95 part 0 00:44:50.312383 - request found to be complete (95) 00:44:50.312548 Found Content-Length: 27 in the request 00:44:50.312711 Wrote request (194 bytes) input to log/5/server.input 00:44:50.312820 Send response test95 section 00:44:50.313038 connection close instruction "swsclose" found in response 00:44:50.313199 Response sent (157 bytes) and written to log/5/server.response 00:44:50.313264 instructed to close connection after server-reply 00:44:50.313326 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 60210 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file proxy.input CONNECT test.95:46263 HTTP/1.1 Host: test.95:46263 User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive === End of file proxy.input === Start of file proxy.response HTTP/1.1 200 Mighty fine indeed === End of file proxy.response === Start of file server.cmd Testnum 95 === End of file server.cmd === Start of file server.input POST /we/want/that/page/95 HTTP/1.1 Host: test.95:46263 User-Agent: curl/8.17.0 Accept: */* Content-Length: 27 Content-Type: application/x-www-form-urlencoded datatopost=ohthatsfunyesyes === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file server.response === Start of file stderr95 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 27 0 0 100 27 0 5 0:00:05 0:00:04 0:00:01 8 100 36 100 9 100 27 1 5 0:00:09 0:00:05 0:00:04 9 100 36 100 9 100 27 1 4 0:00:09 0:00:05 0:00:04 9 === End of file stderr95 === Start of file trace95 00:44:48.253367 * Trying 127.0.0.1:40841... 00:44:49.036014 * CONNECT: no ALPN negotiated 00:44:49.088293 * allocate connect buffer 00:44:49.248589 * Establish HTTP proxy tunnel to test.95:46263 00:44:49.396228 => Send header, 110 bytes (0x6e) 0000: CONNECT test.95:46263 HTTP/1.1 0020: Host: test.95:46263 0035: User-Agent: curl/8.17.0 004e: Proxy-Connection: Keep-Alive 006c: 00:44:49.589832 <= Recv header, 33 bytes (0x21) 0000: HTTP/1.1 200 Mighty fine indeed 00:44:49.892808 <= Recv header, 2 bytes (0x2) 0000: 00:44:49.974623 * CONNECT phase completed 00:44:49.993643 * CONNECT tunnel established, response 200 00:44:50.188714 * Established connection to 127.0.0.1 (127.0.0.1 port 40841) from 127.0.0.1 port 36860 00:44:50.283208 * using HTTP/1.x 00:44:50.711858 => Send header, 167 bytes (0xa7) 0000: POST /we/want/that/page/95 HTTP/1.1 0025: Host: test.95:46263 003a: User-Agent: curl/8.17.0 0053: Accept: */* 0060: Content-Length: 27 0074: Content-Type: application/x-www-form-urlencoded 00a5: 00:44:50.739282 => Send data, 27 bytes (0x1b) 0000: datatopost=ohthatsfunyesyes 00:44:50.808930 * upload completely sent off: 27 bytes 00:44:51.044749 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:44:51.106383 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:44:51.169738 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 00:44:51.230948 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:44:51.237645 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:44:51.263901 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 9. 00:44:51.348005 <= Recv header, 1 bytes (0x1) 0000: . 00:44:51.402627 <= Recv data, 9 bytes (0x9) 0000: contents. 00:44:51.862356 * Connection #0 to host 127.0.0.1:40841 left intact === End of file trace95 === Start of file valgrind95 ==201164== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind95 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 102 in state 4 Runner 2 (id 185908) running test 103 in state 4 Runner 3 (id 185910) running test 97 in state 4 Runner 4 (id 185912) running test 100 in state 4 Runner 5 (id 185914) running test 104 in state 4 Runner 6 (id 185916) running test 101 in state 4 Runner 7 (id 185918) running test 98 in state 4 Runner 8 (id 185920) running test 99 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 102 in state 4 Runner 2 (id 185908) running test 103 in state 4 Runner 3 (id 185910) running test 97 in state 4 Runner 4 (id 185912) running test 100 in state 4 Runner 5 (id 185914) running test 104 in state 4 Runner 6 (id 185916) running test 101 in state 4 Runner 7 (id 185918) running test 98 in state 4 Runner 8 (id 185920) running test 99 in state 4 test 0097...[HTTP POST with custom content-type] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind97 ../src/curl -q --output log/3/curl97.out --include --trace-ascii log/3/trace97 --trace-time -d "hejsanallabarn" -H "Content-Type: silly/type" http://127.0.0CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind98 ../src/curl -q --output log/7/curl98.out --include --trace-ascii log/7/trace98 --trace-time -T - -H "Transfer-Encoding:" -H "Content-Length: 14" http://127.0.0.1:34897/98 log/7/stdout98 2> log/7/stderr98 .1:46853/97 > log/3/stdout97 2> log/3/stderr97 valgrind ERROR ==201383== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 97 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind97 ../src/curl -q --output log/3/curl97.out --include --trace-ascii log/3/trace97 --trace-time -d "hejsanallabarn" -H "Content-Type: silly/type" http://127.0.0.1:46853/97 > log/3/stdout97 2> log/3/stderr97 === End of file commands.log === Start of file curl97.out HTTP/1.0 200 OK Server: test-server/fake Content-Type: text/html Content-Length: 6 blaha === End of file curl97.out === Start of file http_server.log 00:44:28.751499 ====> Client connect 00:44:28.751658 accept_connection 3 returned 4 00:44:28.751744 accept_connection 3 returned 0 00:44:28.759089 Read 93 bytes 00:44:28.759215 Process 93 bytes request 00:44:28.759303 Got request: GET /verifiedserver HTTP/1.1 00:44:28.759369 Are-we-friendly question received 00:44:28.759491 Wrote request (93 bytes) input to log/3/server.input 00:44:28.759583 Identifying ourselves as friends 00:44:28.759735 Response sent (57 bytes) and written to log/3/server.response 00:44:28.759795 special request received, no persistency 00:44:28.759850 ====> Client disconnect 0 00:45:16.166830 ====> Client connect 00:45:16.166977 accept_connection 3 returned 4 00:45:16.167059 accept_connection 3 returned 0 00:45:17.386559 Read 142 bytes 00:45:17.386763 Process 142 bytes request 00:45:17.386859 Got request: POST /97 HTTP/1.1 00:45:17.386933 Serve test number 97 part 0 00:45:17.387108 - request found to be complete (97) 00:45:17.387258 Found Content-Length: 14 in the request 00:45:17.387419 Wrote request (142 bytes) input to log/3/server.input 00:45:17.387533 Send response test97 section 00:45:17.387830 Response sent (95 bytes) and written to log/3/server.response 00:45:17.387898 => persistent connection request ended, awaits new request 00:45:19.295990 Connection closed by client 00:45:19.296182 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 59054 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 97 === End of file server.cmd === Start of file server.input POST /97 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* Content-Type: silly/type Content-Length: 14 hejsanallabarn === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.0 200 OK Server: test-server/fake Content-Type: text/html Content-Length: 6 blaha === End of file server.response === Start of file stderr97 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 14 0 0 100 14 0 3 0:00:04 0:00:03 0:00:01 5 100 20 100 6 100 14 1 2 0:00:07 0:00:04 0:00:03 5 100 20 100 6 100 14 1 2 0:00:07 0:00:04 0:00:03 5 === End of file stderr97 === Start of file trace97 00:45:16.223479 * Trying 127.0.0.1:46853... 00:45:17.129156 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 40564 00:45:17.248990 * using HTTP/1.x 00:45:17.809940 => Send header, 128 bytes (0x80) 0000: POST /97 HTTP/1.1 0013: Host: 127.0.0.1:46853 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Content-Type: silly/type 006a: Content-Length: 14 007e: 00:45:17.909188 => Send data, 14 bytes (0xe) 0000: hejsanallabarn 00:45:17.987876 * upload completely sent off: 14 bytes 00:45:18.267526 * HTTP 1.0, assume close after body 00:45:18.293237 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.0 200 OK 00:45:18.613855 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 00:45:18.737329 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:45:18.772559 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 00:45:18.857980 <= Recv header, 2 bytes (0x2) 0000: 00:45:18.913617 <= Recv data, 6 bytes (0x6) 0000: blaha. 00:45:19.475039 * shutting down connection #0 === End of file trace97 === Start of file valgrind97 ==201383== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind97 test 0098...[HTTP PUT from stdin with set size, disabling chunked transfer-encoding] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind98 ../src/curl -q --output log/7/curl98.out --include --trace-ascii log/7/trace98 --trace-time -T - -H "Transfer-Encoding:" -H "Content-Length: 14" http://127.0.0.1:34897/98 log/7/stdout98 2> log/7/stderr98 valgrind ERROR ==201548== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 98 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind98 ../src/curl -q --output log/7/curl98.out --include --trace-ascii log/7/trace98 --trace-time -T - -H "Transfer-Encoding:" -H "Content-Length: 14" http://127.0.0.1:34897/98 log/7/stdout98 2> log/7/stderr98 === End of file commands.log === Start of file curl98.out HTTP/1.0 200 OK Server: test-server/fake Content-Type: text/html Content-Length: 6 blaha === End of file curl98.out === Start of file http_server.log 00:44:34.282411 ====> Client connect 00:44:34.282578 accept_connection 3 returned 4 00:44:34.282659 accept_connection 3 returned 0 00:44:34.289364 Read 93 bytes 00:44:34.289481 Process 93 bytes request 00:44:34.289570 Got request: GET /verifiedserver HTTP/1.1 00:44:34.289635 Are-we-friendly question received 00:44:34.289749 Wrote request (93 bytes) input to log/7/server.input 00:44:34.289841 Identifying ourselves as friends 00:44:34.290013 Response sent (57 bytes) and written to log/7/server.response 00:44:34.290075 special request received, no persistency 00:44:34.290131 ====> Client disconnect 0 00:45:21.549294 ====> Client connect 00:45:21.549451 accept_connection 3 returned 4 00:45:21.549543 accept_connection 3 returned 0 00:45:22.800226 Read 123 bytes 00:45:22.800454 Process 123 bytes request 00:45:22.800569 Got request: PUT /98 HTTP/1.1 00:45:22.800660 Serve test number 98 part 0 00:45:22.800876 - request found to be complete (98) 00:45:22.801061 Found Content-Length: 14 in the request 00:45:24.345008 Read 14 bytes 00:45:24.345222 Process 137 bytes request [CONTINUED] 00:45:24.345318 - request found to be complete (98) 00:45:24.345649 Wrote request (137 bytes) input to log/7/server.input 00:45:24.345775 Send response test98 section 00:45:24.346169 Response sent (95 bytes) and written to log/7/server.response 00:45:24.346251 => persistent connection request ended, awaits new request 00:45:26.020097 Connection closed by client 00:45:26.020286 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 49522 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK CMD (8448): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind99 ../src/curl -q --output log/8/curl99.out --include --trace-ascii log/8/trace99 --trace-time http://127.0.0.1:39461/99 -C 9999999999 > log/8/stdout99 2> log/8/stderr99 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind100 ../src/curl -q --output log/4/curl100.out --include --trace-ascii log/4/trace100 --trace-time ftp://127.0.0.1:38207/test-100/ > log/4/stdout100 2> log/4/stderr100 < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 98 === End of file server.cmd === Start of file server.input PUT /98 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* Content-Length: 14 Expect: 100-continue data on stdin === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.0 200 OK Server: test-server/fake Content-Type: text/html Content-Length: 6 blaha === End of file server.response === Start of file stderr98 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 14 0 0 0 14 0 2 --:--:-- 0:00:05 --:--:-- 3 100 20 0 6 0 14 0 2 --:--:-- 0:00:06 --:--:-- 4 100 20 0 6 0 14 0 2 --:--:-- 0:00:06 --:--:-- 5 === End of file stderr98 === Start of file stdin-for-98 data on stdin === End of file stdin-for-98 === Start of file trace98 00:45:21.608279 * Trying 127.0.0.1:34897... 00:45:22.507888 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 49410 00:45:22.639828 * using HTTP/1.x 00:45:23.221313 => Send header, 123 bytes (0x7b) 0000: PUT /98 HTTP/1.1 0012: Host: 127.0.0.1:34897 0029: User-Agent: curl/8.17.0 0042: Accept: */* 004f: Content-Length: 14 0063: Expect: 100-continue 0079: 00:45:24.664552 * Done waiting for 100-continue 00:45:24.736859 => Send data, 14 bytes (0xe) 0000: data on stdin. 00:45:24.920445 * HTTP 1.0, assume close after body 00:45:24.942206 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.0 200 OK 00:45:25.277432 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 00:45:25.409888 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:45:25.448747 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 00:45:25.538011 <= Recv header, 2 bytes (0x2) 0000: 00:45:25.596360 <= Recv data, 6 bytes (0x6) 0000: blaha. 00:45:25.701890 * we are done reading and this is set to close, stop send 00:45:25.739961 * abort upload after having sent 14 bytes 00:45:26.182084 * shutting down connection #0 === End of file trace98 === Start of file valgrind98 ==201548== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind98 test 0099...[HTTP GET with large-file resume point and failed resume] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind99 ../src/curl -q --output log/8/curl99.out --include --trace-ascii log/8/trace99 --trace-time http://127.0.0.1:39461/99 -C 9999999999 > log/8/stdout99 2> log/8/stderr99 valgrind ERROR ==201705== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 99 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind99 ../src/curl -q --output log/8/curl99.out --include --trace-ascii log/8/trace99 --trace-time http://127.0.0.1:39461/99 -C 9999999999 > log/8/stdout99 2> log/8/stderr99 === End of file commands.log === Start of file curl99.out HTTP/1.1 404 Nah Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close Content-Length: 13 Funny-head: yesyes === End of file curl99.out === Start of file http_server.log 00:44:36.061565 ====> Client connect 00:44:36.061737 accept_connection 3 returned 4 00:44:36.061814 accept_connection 3 returned 0 00:44:36.069008 Read 93 bytes 00:44:36.069178 Process 93 bytes request 00:44:36.069278 Got request: GET /verifiedserver HTTP/1.1 00:44:36.069354 Are-we-friendly question received 00:44:36.069492 Wrote request (93 bytes) input to log/8/server.input 00:44:36.069604 Identifying ourselves as friends 00:44:36.069795 Response sent (57 bytes) and written to log/8/server.response 00:44:36.069862 special request received, no persistency 00:44:36.069922 ====> Client disconnect 0 00:45:23.558328 ====> Client connect 00:45:23.558467 accept_connection 3 returned 4 00:45:23.558546 accept_connection 3 returned 0 00:45:24.592257 Read 107 bytes 00:45:24.592447 Process 107 bytes request 00:45:24.592545 Got request: GET /99 HTTP/1.1 00:45:24.592617 Serve test number 99 part 0 00:45:24.592803 - request found to be complete (99) 00:45:24.593197 Wrote request (107 bytes) input to log/8/server.input 00:45:24.593315 Send response test99 section 00:45:24.593666 Response sent (124 bytes) and written to log/8/server.response 00:45:24.593735 => persistent connection request ended, awaits new request 00:45:26.134833 Connection closed by client 00:45:26.135030 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 50142 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 99 === End of file server.cmd === Start of file server.input GET /99 HTTP/1.1 Host: 127.0.0.1:39461 Range: bytes=9999999999- User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 404 Nah Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close Content-Length: 13 Funny-head: yesyes 0123456789123 === End of file server.response === Start of file stderr99 ** Resuming transfer from byte position 9999999999 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (33) HTTP server does not seem to support byte ranges. Cannot resume. === End of file stderr99 === Start of file trace99 00:45:23.619069 * Trying 127.0.0.1:39461... 00:45:24.497832 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 38506 00:45:24.626863 * using HTTP/1.x 00:45:25.021068 => Send header, 107 bytes (0x6b) 0000: GET /99 HTTP/1.1 0012: Host: 127.0.0.1:39461 0029: Range: bytes=9999999999- 0043: User-Agent: curl/8.17.0 005c: Accept: */* 0069: 00:45:25.365975 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 404 Nah. 00:45:25.705321 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:45:25.872093 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:45:25.909116 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 13. 00:45:25.918182 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:45:26.030445 * HTTP server does not seem to support byte ranges. Cannot resume. 00:45:26.047109 <= Recv header, 1 bytes (0x1) 0000: . 00:45:26.421439 * closing connection #0 === End of file trace99 === Start of file valgrind99 ==201705== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind99 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/4/server/ftp_server.pid" --logfile "log/4/ftp_server.log" --logdir "log/4" --portfile "log/4/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 38207 (log/4/server/ftp_server.port) RUN: FTP server is PID 201673 port 38207 * pid ftp => 201673 201673 test 0100...[FTP dir list PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind100 ../src/curl -q --output log/4/curl100.out --include --trace-ascii log/4/trace100 --trace-time ftp://127.0.0.1:38207/test-100/ > log/4/stdout100 2> log/4/stderr100 valgrind ERROR ==201826== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 100 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind100 ../src/curl -q --output log/4/curl100.out --include --trace-ascii log/4/trace100 --trace-time ftp://127.0.0.1:38207/test-100/ > log/4/stdout100 2> log/4/stderr100 === End of file commands.log === Start of file curl100.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 curl-releases -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl100.out === Start of file ftp_server.log 00:44:37.449673 FTP server listens on port IPv4/38207 00:44:37.453811 logged pid 201673 in log/4/server/ftp_server.pid 00:44:37.454118 Awaiting input 00:45:25.227936 ====> Client connect 00:45:25.228879 FTPD: Getting commands from log/4/server.cmd 00:45:25.229339 FTPD: run test case number: 100 00:45:25.235448 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:45:26.553728 < "USER anonymous" 00:45:26.554176 > "331 We are happy you popped in![CR][LF]" 00:45:26.668679 < "PASS ftp@example.com" 00:45:26.671104 > "230 Welcome you silly person[CR][LF]" 00:45:26.769997 < "PWD" 00:45:26.770539 > "257 "/" is current directory[CR][LF]" 00:45:26.961938 < "CWD test-100" 00:45:26.962732 > "250 CWD command successful.[CR][LF]" 00:45:27.039396 < "EPSV" 00:45:27.039777 ====> Passive DATA channel requested by client 00:45:27.039955 DATA sockfilt for passive data channel starting... 00:45:27.102865 DATA sockfilt for passive data channel started (pid 202627) 00:45:27.104225 DATA sockfilt for passive data channel listens on port 41643 00:45:27.104820 > "229 Entering Passive Mode (|||41643|)[CR][LF]" 00:45:27.104994 Client has been notified that DATA conn will be accepted on port 41643 00:45:27.303307 Client connects to port 41643 00:45:27.303933 ====> Client established passive DATA connection on port 41643 00:45:27.425343 < "TYPE A" 00:45:27.425818 > "200 I modify TYPE as you wanted[CR][LF]" 00:45:27.478775 < "LIST" 00:45:27.484459 > "150 here comes a directory[CR][LF]" 00:45:27.484811 pass LIST data on data connection 00:45:27.487466 send total 20 as data 00:45:27.488022 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 00:45:27.488251 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 00:45:27.488488 send drwxr-xr-x 2 98 98 512 May 2 1996 curl-releases as data 00:45:27.488710 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 00:45:27.488929 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 00:45:27.489147 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 00:45:27.489364 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 00:45:27.489575 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 00:45:27.489784 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 00:45:27.489999 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 00:45:27.498065 =====> Closing passive DATA connection... 00:45:27.498402 Server disconnects passive DATA connection 00:45:27.499552 Server disconnected passive DATA connection 00:45:27.499751 DATA sockfilt for passive data channel quits (pid 202627) 00:45:27.508044 DATA sockfilt for passive data channel quit (pid 202627) 00:45:27.508430 =====> Closed passive DATA connection 00:45:27.508757 > "226 ASCII transfer complete[CR][LF]" 00:45:29.680999 < "QUIT" 00:45:29.681432 > "221 bye bye baby[CR][LF]" 00:45:29.817687 MAIN sockfilt said DISC 00:45:29.824437 ====> Client disconnected 00:45:29.825252 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:44:37.044562 Running IPv4 version 00:44:37.058046 Listening on port 38207 00:44:37.058624 Wrote pid 201733 to log/4/server/ftp_sockctrl.pid 00:44:37.061267 Wrote port 38207 to log/4/server/ftp_server.port 00:44:37.062345 Received PING (on stdin) 00:45:24.842085 ====> Client connect 00:45:24.852885 Received DATA (on stdin) 00:45:24.853268 > 160 bytes data, server => client 00:45:24.853671 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:45:24.853792 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:45:24.853898 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:45:26.168407 < 16 bytes data, client => server 00:45:26.171967 'USER anonymous\r\n' 00:45:26.172113 Received DATA (on stdin) 00:45:26.172185 > 33 bytes data, server => client 00:45:26.172272 '331 We are happy you popped in!\r\n' 00:45:26.285202 < 22 bytes data, client => server 00:45:26.285434 'PASS ftp@example.com\r\n' 00:45:26.286693 Received DATA (on stdin) 00:45:26.286772 > 30 bytes data, server => client 00:45:26.288694 '230 Welcome you silly person\r\n' 00:45:26.386229 < 5 bytes data, client => server 00:45:26.386431 'PWD\r\n' 00:45:26.391978 Received DATA (on stdin) 00:45:26.392127 > 30 bytes data, server => client 00:45:26.392228 '257 "/" is current directory\r\n' 00:45:26.578263 < 14 bytes data, client => server 00:45:26.578494 'CWD test-100\r\n' 00:45:26.579977 Received DATA (on stdin) 00:45:26.580061 > 29 bytes data, server => client 00:45:26.580188 '250 CWD command successful.\r\n' 00:45:26.655810 < 6 bytes data, client => server 00:45:26.656003 'EPSV\r\n' 00:45:26.722409 Received DATA (on stdin) 00:45:26.722568 > 39 bytes data, server => client 00:45:26.722671 '229 Entering Passive Mode (|||41643|)\r\n' 00:45:27.039445 < 8 bytes data, client => server 00:45:27.039649 'TYPE A\r\n' 00:45:27.043711 Received DATA (on stdin) 00:45:27.043841 > 33 bytes data, server => client 00:45:27.043935 '200 I modify TYPE as you wanted\r\n' 00:45:27.095172 < 6 bytes data, client => server 00:45:27.095383 'LIST\r\n' 00:45:27.096788 Received DATA (on stdin) 00:45:27.096865 > 28 bytes data, server => client 00:45:27.105329 '150 here comes a directory\r\n' 00:45:27.126635 Received DATA (on stdin) 00:45:27.126773 > 29 bytes data, server => client 00:45:27.126864 '226 ASCII transfer complete\r\n' 00:45:29.297429 < 6 bytes data, client => server 00:45:29.297584 'QUIT\r\n' 00:45:29.299288 Received DATA (on stdin) 00:45:29.299372 > 18 bytes data, server => client 00:45:29.299451 '221 bye bye baby\r\n' 00:45:29.434843 ====> Client disconnect 00:45:29.435909 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:45:27.711185 Running IPv4 versioCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind101 ../src/curl -q --output log/6/curl101.out --include --trace-ascii log/6/trace101 --trace-time ftp://127.0.0.1:39413/ -P 127.0.0.1 > log/6/stdout101 2> log/6/stderr101 n 00:45:27.719009 Listening on port 41643 00:45:27.719440 Wrote pid 202627 to log/4/server/ftp_sockdata.pid 00:45:27.720128 Received PING (on stdin) 00:45:27.721215 Received PORT (on stdin) 00:45:27.920589 ====> Client connect 00:45:28.108653 Received DATA (on stdin) 00:45:28.109017 > 10 bytes data, server => client 00:45:28.109387 'total 20\r\n' 00:45:28.109668 Received DATA (on stdin) 00:45:28.109739 > 57 bytes data, server => client 00:45:28.109845 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 00:45:28.109952 Received DATA (on stdin) 00:45:28.110020 > 58 bytes data, server => client 00:45:28.110125 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 00:45:28.110211 Received DATA (on stdin) 00:45:28.110283 > 69 bytes data, server => client 00:45:28.110411 'drwxr-xr-x 2 98 98 512 May 2 1996 curl-re' 00:45:28.110494 'leases\r\n' 00:45:28.110588 Received DATA (on stdin) 00:45:28.110654 > 62 bytes data, server => client 00:45:28.110759 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 00:45:28.110822 '\n' 00:45:28.110908 Received DATA (on stdin) 00:45:28.110977 > 70 bytes data, server => client 00:45:28.111085 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 00:45:28.111155 'usr/bin\r\n' 00:45:28.111236 Received DATA (on stdin) 00:45:28.111301 > 59 bytes data, server => client 00:45:28.111403 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 00:45:28.111486 Received DATA (on stdin) 00:45:28.111551 > 69 bytes data, server => client 00:45:28.111659 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 00:45:28.111725 'd.html\r\n' 00:45:28.111807 Received DATA (on stdin) 00:45:28.111872 > 59 bytes data, server => client 00:45:28.116275 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 00:45:28.116422 Received DATA (on stdin) 00:45:28.116499 > 59 bytes data, server => client 00:45:28.116618 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 00:45:28.116714 Received DATA (on stdin) 00:45:28.116786 > 59 bytes data, server => client 00:45:28.116903 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 00:45:28.116998 Received DISC (on stdin) 00:45:28.117874 ====> Client forcibly disconnected 00:45:28.118041 Received QUIT (on stdin) 00:45:28.118119 quits 00:45:28.118697 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 100 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD test-100 EPSV TYPE A LIST QUIT === End of file server.input === Start of file stderr100 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 631 0 631 0 0 114 0 --:--:-- 0:00:05 --:--:-- 146 === End of file stderr100 === Start of file trace100 00:45:24.898573 * Trying 127.0.0.1:38207... 00:45:25.820569 * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 58904 00:45:26.074559 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:45:26.429119 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:45:26.456289 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:45:26.463590 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:45:26.468391 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:45:26.570688 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:45:26.646446 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:45:26.668919 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:45:26.747339 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:45:26.768690 => Send header, 5 bytes (0x5) 0000: PWD 00:45:26.786922 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:45:26.824966 * Entry path is '/' 00:45:26.960702 => Send header, 14 bytes (0xe) 0000: CWD test-100 00:45:26.975079 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:45:27.038248 => Send header, 6 bytes (0x6) 0000: EPSV 00:45:27.056325 * Connect data stream passively 00:45:27.126736 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||41643|) 00:45:27.233429 * Connecting to 127.0.0.1 (127.0.0.1) port 41643 00:45:27.296806 * Trying 127.0.0.1:41643... 00:45:27.389514 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 41643) from 127.0.0.1 port 44562 00:45:27.421918 => Send header, 8 bytes (0x8) 0000: TYPE A 00:45:27.444823 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:45:27.479461 => Send header, 6 bytes (0x6) 0000: LIST 00:45:27.537524 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 00:45:27.573825 * Maxdownload = -1 00:45:27.737198 <= Recv data, 631 bytes (0x277) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 curl-relea 00bd: ses 00c2: -r--r--r-- 1 0 1 35 Jul 16 1996 README 0100: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0140: /bin 0146: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0181: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01c1: tml 01c6: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 0201: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 023c: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 00:45:28.174927 * abort upload 00:45:28.203262 <= Recv data, 0 bytes (0x0) 00:45:28.380539 * Remembering we are in dir "test-100/" 00:45:28.584815 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 00:45:28.906023 * Connection #0 to host 127.0.0.1:38207 left intact === End of file trace100 === Start of file valgrind100 ==201826== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind100 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/6/server/ftp_server.pid" --logfile "log/6/ftp_server.log" --logdir "log/6" --portfile "log/6/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 39413 (log/6/server/ftp_server.port) RUN: FTP server is PID 201819 port 39413 * pid ftp => 201819 201819 test 0101...[FTP dir list, PORT with specified IP] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind101 ../src/curl -q --output log/6/curl101.out --include --trace-ascii log/6/trace101 --trace-time ftp://127.0.0.1:39413/ -P 127.0.0.1 > log/6/stdout101 2> log/6/stderr101 valgrind ERROR ==201944== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 101 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind101 ../src/curl -q --output log/6/curl101.out --include --trace-ascii log/6/trace101 --trace-time ftp://127.0.0.1:39413/ -P 127.0.0.1 > log/6/stdout101 2> log/6/stderr101 === End of file commands.log === Start of file curl101.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl101.out === Start of file ftp_server.log 00:44:39.577288 FTP server listens on port IPv4/39413 00:44:39.580798 logged pid 201819 in log/6/server/ftp_server.pid 00:44:39.581079 Awaiting input 00:45:26.831513 ====> Client connect 00:45:26.832332 FTPD: Getting commands from log/6/server.cmd 00:45:26.832742 FTPD: run test case number: 101 00:45:26.844602 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:45:28.177896 < "USER anonymous" 00:45:28.178366 > "331 We are happy you popped in![CR][LF]" 00:45:28.292403 < "PASS ftp@example.com" 00:45:28.297771 > "230 Welcome you silly person[CR][LF]" 00:45:28.386276 < "PWD" 00:45:28.386779 > "257 "/" is current directory[CR][LF]" 00:45:29.180108 < "EPRT |1|127.0.0.1|47023|" 00:45:29.180451 ====> Active DATA channel requested by client 00:45:29.181162 > "200 Thanks for dropping by. We contact you later[CR][LF]" 00:45:29.181529 DATA sockfilt for active data channel starting... 00:45:29.267298 DATA sockfilt for active data channel started (pid 202636) 00:45:29.267801 ====> Active DATA channel connected to client port 47023 00:45:29.584856 < "TYPE A" 00:45:29.585618 > "200 I modify TYPE as you wanted[CR][LF]" 00:45:29.641920 < "LIST" 00:45:29.642728 > "150 here comes a directory[CR][LF]" 00:45:29.642943 pass LIST data on data connection 00:45:29.649094 send total 20 as data 00:45:29.649463 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 00:45:29.649680 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 00:45:29.649891 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 00:45:29.650117 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 00:45:29.650334 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 00:45:29.650543 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 00:45:29.650744 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 00:45:29.650947 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 00:45:29.654539 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 00:45:29.654751 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 00:45:29.656091 =====> Closing active DATA connection... 00:45:29.656267 Server disconnects active DATA connection 00:45:29.658769 Server disconnected active DATA connection 00:45:29.658966 DATA sockfilt for active data channel quits (pid 202636) 00:45:29.664645 DATA sockfilt for active data channel quit (pid 202636) 00:45:29.664941 =====> Closed active DATA connection 00:45:29.665650 > "226 ASCII transfer complete[CR][LF]" 00:45:31.797757 < "QUIT" 00:45:31.801090 > "221 bye bye baby[CR][LF]" 00:45:31.964135 MAIN sockfilt said DISC 00:45:31.964770 ====> Client disconnected 00:45:31.965361 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:44:39.181378 Running IPv4 version 00:44:39.189192 Listening on port 39413 00:44:39.189654 Wrote pid 201903 to log/6/server/ftp_sockctrl.pid 00:44:39.189911 Wrote port 39413 to log/6/server/ftp_server.port 00:44:39.190689 Received PING (on stdin) 00:45:26.448748 ====> Client connect 00:45:26.456257 Received DATA (on stdin) 00:45:26.456611 > 160 bytes data, server => client 00:45:26.462926 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:45:26.463077 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:45:26.463194 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:45:27.793950 < 16 bytes data, client => server 00:45:27.794158 'USER anonymous\r\n' 00:45:27.796283 Received DATA (on stdin) 00:45:27.796374 > 33 bytes data, server => client 00:45:27.796472 '331 We are happy you popped in!\r\n' 00:45:27.908685 < 22 bytes data, client => server 00:45:27.908889 'PASS ftp@example.com\r\n' 00:45:27.910447 Received DATA (on stdin) 00:45:27.910531 > 30 bytes data, server => client 00:45:27.915782 '230 Welcome you silly person\r\n' 00:45:28.002402 < 5 bytes data, client => server 00:45:28.002591 'PWD\r\n' 00:45:28.004644 Received DATA (on stdin) 00:45:28.004728 > 30 bytes data, server => client 00:45:28.004820 '257 "/" is current directory\r\n' 00:45:28.796560 < 26 bytes data, client => server 00:45:28.796757 'EPRT |1|127.0.0.1|47023|\r\n' 00:45:28.805318 Received DATA (on stdin) 00:45:28.805478 > 50 bytes data, server => client 00:45:28.805582 '200 Thanks for dropping by. We contact you later\r\n' 00:45:29.201300 < 8 bytes data, client => server 00:45:29.201465 'TYPE A\r\n' 00:45:29.202879 Received DATA (on stdin) 00:45:29.202961 > 33 bytes data, server => client 00:45:29.203072 '200 I modify TYPE as you wanted\r\n' 00:45:29.258344 < 6 bytes data, client => server 00:45:29.258525 'LIST\r\n' 00:45:29.259958 Received DATA (on stdin) 00:45:29.260048 > 28 bytes data, server => client 00:45:29.260169 '150 here comes a directory\r\n' 00:45:29.282826 Received DATA (on stdin) 00:45:29.282966 > 29 bytes data, server => client 00:45:29.283078 '226 ASCII transfer complete\r\n' 00:45:31.414149 < 6 bytes data, client => server 00:45:31.414348 'QUIT\r\n' 00:45:31.415766 Received DATA (on stdin) 00:45:31.415841 > 18 bytes data, server => client 00:45:31.419028 '221 bye bye baby\r\n' 00:45:31.581306 ====> Client disconnect 00:45:31.583225 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:45:29.865077 ====> Client connect 00:45:29.883149 Running IPv4 version 00:45:29.883319 Connected to port 47023 00:45:29.883770 Wrote pid 202636 to log/6/server/ftp_sockdata.pid 00:45:29.884566 Received PING (on stdin) 00:45:30.268659 Received DATA (on stdin) 00:45:30.269073 > 10 bytes data, server => client 00:45:30.269482 'total 20\r\n' 00:45:30.269784 Received DATA (on stdin) 00:45:30.269855 > 57 bytes data, server => client 00:45:30.269965 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 00:45:30.270077 Received DATA (on stdin) 00:45:30.270146 > 58 bytes data, server => client 00:45:30.270255 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 00:45:30.270345 Received DATA (on stdin) 00:45:30.270414 > 61 bytes data, server => client 00:45:30.270540 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 00:45:30.270616 '\n' 00:45:30.270706 Received DATA (on stdin) 00:45:30.270773 > 62 bytes data, server => client 00:45:30.270885 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 00:45:30.270949 '\n' 00:45:30.271037 Received DATA (on stdin) 00:45:30.271104 > 70 bytes data, server => client 00:45:30.271216 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 00:45:30.271287 'usr/bin\r\n' 00:45:30.271376 Received DATA (on stdin) 00:45:30.271444 > 59 bytes data, server => client 00:45:30.271554 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 00:45:30.271643 Received DATA (on stdin) 00:45:30.271711 > 69 bytes data, server => client 00:45:30.271824 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 00:45:30.271895 'd.html\r\n' 00:45:30.275373 Received DATA (on stdin) 00:45:30.275453 > 59 bytes data, server => client 00:45:30.275568 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 00:45:30.275660 Received DATA (on stdin) 00:45:30.275729 > 59 bytes data, server => client 00:45:30.275841 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 00:45:30.275931 Received DATA (on stdin) 00:45:30.276001 > 59 bytes data, server => client 00:45:CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind102 ../src/curl -q --output log/1/curl102.out --include --trace-ascii log/1/trace102 --trace-time ftp://127.0.0.1:37481/102 > log/1/stdout102 2> log/1/stderr102 30.276115 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 00:45:30.276203 Received DISC (on stdin) 00:45:30.276333 ====> Client forcibly disconnected 00:45:30.276523 disconnected, no socket to read on 00:45:30.276778 Received QUIT (on stdin) 00:45:30.276855 quits 00:45:30.277460 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 101 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPRT |1|127.0.0.1|47023| TYPE A LIST QUIT === End of file server.input === Start of file stderr101 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 623 0 623 0 0 105 0 --:--:-- 0:00:05 --:--:-- 133 100 623 0 623 0 0 99 0 --:--:-- 0:00:06 --:--:-- 160 === End of file stderr101 === Start of file trace101 00:45:26.496752 * Trying 127.0.0.1:39413... 00:45:27.423990 * Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 50666 00:45:27.689845 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:45:28.047787 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:45:28.079119 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:45:28.084789 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:45:28.089621 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:45:28.200489 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:45:28.267513 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:45:28.290364 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:45:28.364896 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:45:28.387473 => Send header, 5 bytes (0x5) 0000: PWD 00:45:28.413658 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:45:28.451551 * Entry path is '/' 00:45:28.544418 * Request has same path as previous transfer 00:45:29.184428 => Send header, 26 bytes (0x1a) 0000: EPRT |1|127.0.0.1|47023| 00:45:29.309138 <= Recv header, 50 bytes (0x32) 0000: 200 Thanks for dropping by. We contact you later 00:45:29.345515 * Connect data stream actively 00:45:29.450320 * Ready to accept data connection from server 00:45:29.466995 * Connection accepted from server 00:45:29.551065 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 35972) from 127.0.0.1 port 47023 00:45:29.586004 => Send header, 8 bytes (0x8) 0000: TYPE A 00:45:29.605067 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:45:29.644504 => Send header, 6 bytes (0x6) 0000: LIST 00:45:29.768589 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 00:45:29.804287 * Maxdownload = -1 00:45:29.977579 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 00:45:30.433887 * abort upload 00:45:30.462447 <= Recv data, 0 bytes (0x0) 00:45:30.669717 * Remembering we are in dir "" 00:45:30.796547 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 00:45:31.085195 * Connection #0 to host 127.0.0.1:39413 left intact === End of file trace101 === Start of file valgrind101 ==201944== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind101 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/1/server/ftp_server.pid" --logfile "log/1/ftp_server.log" --logdir "log/1" --portfile "log/1/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 37481 (log/1/server/ftp_server.port) RUN: FTP server is PID 202066 port 37481 * pid ftp => 202066 202066 test 0102...[FTP RETR PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind102 ../src/curl -q --output log/1/curl102.out --include --trace-ascii log/1/trace102 --trace-time ftp://127.0.0.1:37481/102 > log/1/stdout102 2> log/1/stderr102 valgrind ERROR ==202079== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 102 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind102 ../src/curl -q --output log/1/curl102.out --include --trace-ascii log/1/trace102 --trace-time ftp://127.0.0.1:37481/102 > log/1/stdout102 2> log/1/stderr102 === End of file commands.log === Start of file curl102.out data to see that FTP works so does it? === End of file curl102.out === Start of file ftp_server.log 00:44:45.308952 FTP server listens on port IPv4/37481 00:44:45.312139 logged pid 202066 in log/1/server/ftp_server.pid 00:44:45.312375 Awaiting input 00:45:32.394505 ====> Client connect 00:45:32.395387 FTPD: Getting commands from log/1/server.cmd 00:45:32.396423 FTPD: set custom reply for EPSV command 00:45:32.396857 FTPD: run test case number: 102 00:45:32.402953 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:45:33.798289 < "USER anonymous" 00:45:33.798770 > "331 We are happy you popped in![CR][LF]" 00:45:33.914140 < "PASS ftp@example.com" 00:45:33.914892 > "230 Welcome you silly person[CR][LF]" 00:45:34.011089 < "PWD" 00:45:34.011646 > "257 "/" is current directory[CR][LF]" 00:45:34.232281 < "EPSV" 00:45:34.234812 > "500 no such command[CR][LF]" 00:45:34.326445 < "PASV" 00:45:34.326834 ====> Passive DATA channel requested by client 00:45:34.327011 DATA sockfilt for passive data channel starting... 00:45:34.387812 DATA sockfilt for passive data channel started (pid 202971) 00:45:34.389141 DATA sockfilt for passive data channel listens on port 46855 00:45:34.390518 > "227 Entering Passive Mode (127,0,0,1,183,7)[CR][LF]" 00:45:34.390721 Client has been notified that DATA conn will be accepted on port 46855 00:45:34.611509 Client connects to port 46855 00:45:34.612261 ====> Client established passive DATA connection on port 46855 00:45:34.732306 < "TYPE I" 00:45:34.732789 > "200 I modify TYPE as you wanted[CR][LF]" 00:45:34.786587 < "SIZE 102" 00:45:34.794589 > "213 51[CR][LF]" 00:45:34.871131 < "RETR 102" 00:45:34.877761 > "150 Binary data connection for 102 () (51 bytes).[CR][LF]" 00:45:34.879484 =====> Closing passive DATA connection... 00:45:34.879679 Server disconnects passive DATA connection 00:45:34.884410 Server disconnected passive DATA connection 00:45:34.884724 DATA sockfilt for passive data channel quits (pid 202971) 00:45:34.888765 DATA sockfilt for passive data channel quit (pid 202971) 00:45:34.888976 =====> Closed passive DATA connection 00:45:34.889501 > "226 File transfer complete[CR][LF]" 00:45:37.108235 < "QUIT" 00:45:37.108975 > "221 bye bye baby[CR][LF]" 00:45:37.242287 MAIN sockfilt said DISC 00:45:37.243178 ====> Client disconnected 00:45:37.243771 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:44:45.913809 Running IPv4 version 00:44:45.921338 Listening on port 37481 00:44:45.921777 Wrote pid 202070 to log/1/server/ftp_sockctrl.pid 00:44:45.922047 Wrote port 37481 to log/1/server/ftp_server.port 00:44:45.922771 Received PING (on stdin) 00:45:33.008599 ====> Client connect 00:45:33.021987 Received DATA (on stdin) 00:45:33.022379 > 160 bytes data, server => client 00:45:33.022792 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:45:33.022919 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:45:33.023039 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:45:34.409443 < 16 bytes data, client => server 00:45:34.409687 'USER anonymous\r\n' 00:45:34.418636 Received DATA (on stdin) 00:45:34.418796 > 33 bytes data, server => client 00:45:34.418894 '331 We are happy you popped in!\r\n' 00:45:34.530621 < 22 bytes data, client => server 00:45:34.530821 'PASS ftp@example.com\r\n' 00:45:34.532161 Received DATA (on stdin) 00:45:34.532241 > 30 bytes data, server => client 00:45:34.532350 '230 Welcome you silly person\r\n' 00:45:34.624542 < 5 bytes data, client => server 00:45:34.624735 'PWD\r\n' 00:45:34.629501 Received DATA (on stdin) 00:45:34.629605 > 30 bytes data, server => client 00:45:34.629692 '257 "/" is current directory\r\n' 00:45:34.848676 < 6 bytes data, client => server 00:45:34.848855 'EPSV\r\n' 00:45:34.850272 Received DATA (on stdin) 00:45:34.850349 > 21 bytes data, server => client 00:45:34.852245 '500 no such command\r\n' 00:45:34.942776 < 6 bytes data, client => server 00:45:34.942976 'PASV\r\n' 00:45:35.008112 Received DATA (on stdin) 00:45:35.008275 > 45 bytes data, server => client 00:45:35.008393 '227 Entering Passive Mode (127,0,0,1,183,7)\r\n' 00:45:35.348676 < 8 bytes data, client => server 00:45:35.348845 'TYPE I\r\n' 00:45:35.355308 Received DATA (on stdin) 00:45:35.355458 > 33 bytes data, server => client 00:45:35.355546 '200 I modify TYPE as you wanted\r\n' 00:45:35.403024 < 10 bytes data, client => server 00:45:35.403207 'SIZE 102\r\n' 00:45:35.408115 Received DATA (on stdin) 00:45:35.408236 > 8 bytes data, server => client 00:45:35.411987 '213 51\r\n' 00:45:35.487510 < 10 bytes data, client => server 00:45:35.487692 'RETR 102\r\n' 00:45:35.491960 Received DATA (on stdin) 00:45:35.492070 > 51 bytes data, server => client 00:45:35.497553 '150 Binary data connection for 102 () (51 bytes).\r\n' 00:45:35.506846 Received DATA (on stdin) 00:45:35.506969 > 28 bytes data, server => client 00:45:35.507370 '226 File transfer complete\r\n' 00:45:37.724576 < 6 bytes data, client => server 00:45:37.724768 'QUIT\r\n' 00:45:37.726244 Received DATA (on stdin) 00:45:37.726320 > 18 bytes data, server => client 00:45:37.726420 '221 bye bye baby\r\n' 00:45:37.859473 ====> Client disconnect 00:45:37.860444 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:45:34.990812 Running IPv4 version 00:45:35.000303 Listening on port 46855 00:45:35.000848 Wrote pid 202971 to log/1/server/ftp_sockdata.pid 00:45:35.001634 Received PING (on stdin) 00:45:35.005991 Received PORT (on stdin) 00:45:35.228754 ====> Client connect 00:45:35.495771 Received DATA (on stdin) 00:45:35.496195 > 5 bytes data, server => client 00:45:35.496593 'data\n' 00:45:35.496918 Received DATA (on stdin) 00:45:35.496997 > 7 bytes data, server => client 00:45:35.497072 ' to\n' 00:45:35.497179 Received DATA (on stdin) 00:45:35.497248 > 10 bytes data, server => client 00:45:35.497325 ' see\n' 00:45:35.497425 Received DATA (on stdin) 00:45:35.497495 > 9 bytes data, server => client 00:45:35.497572 'that FTP\n' 00:45:35.497661 Received DATA (on stdin) 00:45:35.497729 > 6 bytes data, server => client 00:45:35.497801 'works\n' 00:45:35.497890 Received DATA (on stdin) 00:45:35.497959 > 14 bytes data, server => client 00:45:35.498038 ' so does it?\n' 00:45:35.498127 Received DISC (on stdin) 00:45:35.498251 ====> Client forcibly disconnected 00:45:35.502878 Received QUIT (on stdin) 00:45:35.502989 quits 00:45:35.503552 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPSV 500 no such command Testnum 102 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV PASV TYPE I SIZE 102 RETR 102 QUIT === End of file server.input === Start of file stderr102 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 51 100 51 0 0 9 0 0:00:05 0:00:05 --:--:-- 12 100 51 100 51 0 0 8 0 0:00:06 0:00:05 0:00:01 11 === End of file stderr102 === Start of file trace102 00:45:32.021873 * Trying 127.0.0.1:37481... 00:45:33.020526 * Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 127.0.0.1 port 39962 00:45:33.294362 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:45:33.664109 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:45:33.693878 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:45:33.699790 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:45:33.705051 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:45:33.814727 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:45:33.892227 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:45:33.914742 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:45:33.984281 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:45:34.007003 => Send header, 5 bytes (0x5) 0000: PWD 00:45:34.027596 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:45:34.068609 * Entry path is '/' 00:45:34.177121 * Request has same path as previous transfer 00:45:34.229532 => Send header, 6 bytes (0x6) 0000: EPSV 00:45:34.244234 * Connect data stream passively 00:45:34.254498 <= Recv header, 21 bytes (0x15) 0000: 500 no such command 00:45:34.300867 * Failed EPSV attempt. Disabling EPSV 00:45:34.325226 => Send header, 6 bytes (0x6) 0000: PASV 00:45:34.418817 <= Recv header, 45 bytes (0x2d) 0000: 227 Entering Passive Mode (127,0,0,1,183,7) 00:45:34.459512 * Skip 127.0.0.1 for data connection, reuse 127.0.0.1 instead 00:45:34.539197 * Connecting to 127.0.0.1 (127.0.0.1) port 46855 00:45:34.599331 * Trying 127.0.0.1:46855... 00:45:34.695755 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 46855) from 127.0.0.1 port 52030 00:45:34.730528 => Send header, 8 bytes (0x8) 0000: TYPE I 00:45:34.752568 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:45:34.785468 => Send header, 10 bytes (0xa) 0000: SIZE 102 00:45:34.813840 <= Recv header, 8 bytes (0x8) 0000: 213 51 00:45:34.869965 => Send header, 10 bytes (0xa) 0000: RETR 102 00:45:34.885444 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 102 () (51 bytes). 00:45:34.925002 * Maxdownload = -1 00:45:34.938518 * Getting file with size: 51 00:45:35.118535 <= Recv data, 51 bytes (0x33) 0000: data. to. see.that FTP.works. so does it?. 00:45:35.476448 * abort upload 00:45:35.503917 <= Recv data, 0 bytes (0x0) 00:45:35.728559 * Remembering we are in dir "" 00:45:35.919360 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:45:36.270875 * Connection #0 to host 127.0.0.1:37481 left intact === End of file trace102 === CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind103 ../src/curl -q --output log/2/curl103.out --include --trace-ascii log/2/trace103 --trace-time ftp://127.0.0.1:39881/a/path/103 -P - > log/2/stdout103 2> log/2/stderr103 Start of file valgrind102 ==202079== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind102 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/2/server/ftp_server.pid" --logfile "log/2/ftp_server.log" --logdir "log/2" --portfile "log/2/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 39881 (log/2/server/ftp_server.port) RUN: FTP server is PID 202189 port 39881 * pid ftp => 202189 202189 test 0103...[FTP RETR PORT with CWD] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind103 ../src/curl -q --output log/2/curl103.out --include --trace-ascii log/2/trace103 --trace-time ftp://127.0.0.1:39881/a/path/103 -P - > log/2/stdout103 2> log/2/stderr103 valgrind ERROR ==202208== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 103 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind103 ../src/curl -q --output log/2/curl103.out --include --trace-ascii log/2/trace103 --trace-time ftp://127.0.0.1:39881/a/path/103 -P - > log/2/stdout103 2> log/2/stderr103 === End of file commands.log === Start of file curl103.out data to see that FTP works so does it? === End of file curl103.out === Start of file ftp_server.log 00:44:52.394883 FTP server listens on port IPv4/39881 00:44:52.398145 logged pid 202189 in log/2/server/ftp_server.pid 00:44:52.398393 Awaiting input 00:45:41.068920 ====> Client connect 00:45:41.069770 FTPD: Getting commands from log/2/server.cmd 00:45:41.070211 FTPD: run test case number: 103 00:45:41.081285 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:45:42.448730 < "USER anonymous" 00:45:42.449500 > "331 We are happy you popped in![CR][LF]" 00:45:42.564846 < "PASS ftp@example.com" 00:45:42.567761 > "230 Welcome you silly person[CR][LF]" 00:45:42.664152 < "PWD" 00:45:42.667772 > "257 "/" is current directory[CR][LF]" 00:45:42.852775 < "CWD a" 00:45:42.853208 > "250 CWD command successful.[CR][LF]" 00:45:42.908197 < "CWD path" 00:45:42.908596 > "250 CWD command successful.[CR][LF]" 00:45:43.082716 < "EPRT |1|127.0.0.1|60945|" 00:45:43.083069 ====> Active DATA channel requested by client 00:45:43.084093 > "200 Thanks for dropping by. We contact you later[CR][LF]" 00:45:43.084491 DATA sockfilt for active data channel starting... 00:45:43.168993 DATA sockfilt for active data channel started (pid 203386) 00:45:43.169522 ====> Active DATA channel connected to client port 60945 00:45:43.555870 < "TYPE I" 00:45:43.556594 > "200 I modify TYPE as you wanted[CR][LF]" 00:45:43.607060 < "SIZE 103" 00:45:43.614731 > "213 51[CR][LF]" 00:45:43.725239 < "RETR 103" 00:45:43.731083 > "150 Binary data connection for 103 () (51 bytes).[CR][LF]" 00:45:43.732737 =====> Closing active DATA connection... 00:45:43.732935 Server disconnects active DATA connection 00:45:43.737744 Server disconnected active DATA connection 00:45:43.737975 DATA sockfilt for active data channel quits (pid 203386) 00:45:43.741550 DATA sockfilt for active data channel quit (pid 203386) 00:45:43.741760 =====> Closed active DATA connection 00:45:43.742337 > "226 File transfer complete[CR][LF]" 00:45:45.664228 < "QUIT" 00:45:45.664665 > "221 bye bye baby[CR][LF]" 00:45:45.820681 MAIN sockfilt said DISC 00:45:45.821563 ====> Client disconnected 00:45:45.822201 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:44:52.999651 Running IPv4 version 00:44:53.007193 Listening on port 39881 00:44:53.007649 Wrote pid 202199 to log/2/server/ftp_sockctrl.pid 00:44:53.007908 Wrote port 39881 to log/2/server/ftp_server.port 00:44:53.008643 Received PING (on stdin) 00:45:41.686104 ====> Client connect 00:45:41.695282 Received DATA (on stdin) 00:45:41.695619 > 160 bytes data, server => client 00:45:41.698991 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:45:41.699142 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:45:41.699269 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:45:43.063023 < 16 bytes data, client => server 00:45:43.063234 'USER anonymous\r\n' 00:45:43.066737 Received DATA (on stdin) 00:45:43.066818 > 33 bytes data, server => client 00:45:43.066930 '331 We are happy you popped in!\r\n' 00:45:43.181015 < 22 bytes data, client => server 00:45:43.181198 'PASS ftp@example.com\r\n' 00:45:43.182856 Received DATA (on stdin) 00:45:43.182943 > 30 bytes data, server => client 00:45:43.185657 '230 Welcome you silly person\r\n' 00:45:43.280150 < 5 bytes data, client => server 00:45:43.280321 'PWD\r\n' 00:45:43.282256 Received DATA (on stdin) 00:45:43.282344 > 30 bytes data, server => client 00:45:43.285722 '257 "/" is current directory\r\n' 00:45:43.469170 < 7 bytes data, client => server 00:45:43.469368 'CWD a\r\n' 00:45:43.471341 Received DATA (on stdin) 00:45:43.471420 > 29 bytes data, server => client 00:45:43.471518 '250 CWD command successful.\r\n' 00:45:43.524845 < 10 bytes data, client => server 00:45:43.524987 'CWD path\r\n' 00:45:43.531937 Received DATA (on stdin) 00:45:43.532027 > 29 bytes data, server => client 00:45:43.532115 '250 CWD command successful.\r\n' 00:45:43.699137 < 26 bytes data, client => server 00:45:43.699321 'EPRT |1|127.0.0.1|60945|\r\n' 00:45:43.701345 Received DATA (on stdin) 00:45:43.701423 > 50 bytes data, server => client 00:45:43.701545 '200 Thanks for dropping by. We contact you later\r\n' 00:45:44.172257 < 8 bytes data, client => server 00:45:44.172449 'TYPE I\r\n' 00:45:44.173845 Received DATA (on stdin) 00:45:44.173920 > 33 bytes data, server => client 00:45:44.174028 '200 I modify TYPE as you wanted\r\n' 00:45:44.223613 < 10 bytes data, client => server 00:45:44.223768 'SIZE 103\r\n' 00:45:44.231939 Received DATA (on stdin) 00:45:44.232051 > 8 bytes data, server => client 00:45:44.232158 '213 51\r\n' 00:45:44.341763 < 10 bytes data, client => server 00:45:44.341944 'RETR 103\r\n' 00:45:44.344641 Received DATA (on stdin) 00:45:44.344723 > 51 bytes data, server => client 00:45:44.350793 '150 Binary data connection for 103 () (51 bytes).\r\n' 00:45:44.359595 Received DATA (on stdin) 00:45:44.359683 > 28 bytes data, server => client 00:45:44.359785 '226 File transfer complete\r\n' 00:45:46.280640 < 6 bytes data, client => server 00:45:46.280832 'QUIT\r\n' 00:45:46.282486 Received DATA (on stdin) 00:45:46.282564 > 18 bytes data, server => client 00:45:46.282644 '221 bye bye baby\r\n' 00:45:46.437876 ====> Client disconnect 00:45:46.438817 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:45:43.767164 ====> Client connect 00:45:43.781542 Running IPv4 version 00:45:43.781681 Connected to port 60945 00:45:43.785442 Wrote pid 203386 to log/2/server/ftp_sockdata.pid 00:45:43.786239 Received PING (on stdin) 00:45:44.349011 Received DATA (on stdin) 00:45:44.349451 > 5 bytes data, server => client 00:45:44.349864 'data\n' 00:45:44.350197 Received DATA (on stdin) 00:45:44.350274 > 7 bytes data, server => client 00:45:44.350352 ' to\n' 00:45:44.350461 Received DATA (on stdin) 00:45:44.350533 > 10 bytes data, server => client 00:45:44.350612 ' see\n' 00:45:44.350726 Received DATA (on stdin) 00:45:44.350795 > 9 bytes data, server => client 00:45:44.350870 'that FTP\n' 00:45:44.350959 Received DATA (on stdin) 00:45:44.351021 > 6 bytes data, server => client 00:45:44.351084 'works\n' 00:45:44.351160 Received DATA (on stdin) 00:45:44.351223 > 14 bytes data, server => client 00:45:44.351301 ' so does it?\n' 00:45:44.351386 Received DISC (on stdin) 00:45:44.3515CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind104 ../src/curl -q --output log/5/curl104.out --include --trace-ascii log/5/trace104 --trace-time ftp://127.0.0.1:33729/a/path/104 --head > log/5/stdout104 2> log/5/stderr104 05 ====> Client forcibly disconnected 00:45:44.351679 disconnected, no socket to read on 00:45:44.355767 Received QUIT (on stdin) 00:45:44.355871 quits 00:45:44.356434 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 103 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD a CWD path EPRT |1|127.0.0.1|60945| TYPE I SIZE 103 RETR 103 QUIT === End of file server.input === Start of file stderr103 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 51 100 51 0 0 9 0 0:00:05 0:00:05 --:--:-- 12 100 51 100 51 0 0 8 0 0:00:06 0:00:05 0:00:01 14 === End of file stderr103 === Start of file trace103 00:45:40.759473 * Trying 127.0.0.1:39881... 00:45:41.687213 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 54516 00:45:41.942549 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:45:42.291791 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:45:42.332956 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:45:42.340403 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:45:42.345696 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:45:42.469869 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:45:42.543643 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:45:42.567354 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:45:42.643057 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:45:42.665000 => Send header, 5 bytes (0x5) 0000: PWD 00:45:42.683832 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:45:42.719671 * Entry path is '/' 00:45:42.854172 => Send header, 7 bytes (0x7) 0000: CWD a 00:45:42.867040 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:45:42.908990 => Send header, 10 bytes (0xa) 0000: CWD path 00:45:42.947118 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:45:43.087163 => Send header, 26 bytes (0x1a) 0000: EPRT |1|127.0.0.1|60945| 00:45:43.311729 <= Recv header, 50 bytes (0x32) 0000: 200 Thanks for dropping by. We contact you later 00:45:43.328490 * Connect data stream actively 00:45:43.429071 * Ready to accept data connection from server 00:45:43.444983 * Connection accepted from server 00:45:43.523809 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 60398) from 127.0.0.1 port 60945 00:45:43.556944 => Send header, 8 bytes (0x8) 0000: TYPE I 00:45:43.575198 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:45:43.610426 => Send header, 10 bytes (0xa) 0000: SIZE 103 00:45:43.677638 <= Recv header, 8 bytes (0x8) 0000: 213 51 00:45:43.724588 => Send header, 10 bytes (0xa) 0000: RETR 103 00:45:43.748214 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 103 () (51 bytes). 00:45:43.789801 * Maxdownload = -1 00:45:43.799844 * Getting file with size: 51 00:45:43.955246 <= Recv data, 51 bytes (0x33) 0000: data. to. see.that FTP.works. so does it?. 00:45:44.266240 * abort upload 00:45:44.292183 <= Recv data, 0 bytes (0x0) 00:45:44.507430 * Remembering we are in dir "a/path/" 00:45:44.627582 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:45:44.916128 * Connection #0 to host 127.0.0.1:39881 left intact === End of file trace103 === Start of file valgrind103 ==202208== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind103 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/5/server/ftp_server.pid" --logfile "log/5/ftp_server.log" --logdir "log/5" --portfile "log/5/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 33729 (log/5/server/ftp_server.port) RUN: FTP server is PID 202313 port 33729 * pid ftp => 202313 202313 test 0104...[FTP --head to get file size only] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind104 ../src/curl -q --output log/5/curl104.out --include --trace-ascii log/5/trace104 --trace-time ftp://127.0.0.1:33729/a/path/104 --head > log/5/stdout104 2> log/5/stderr104 valgrind ERROR ==202331== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 104 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind104 ../src/curl -q --output log/5/curl104.out --include --trace-ascii log/5/trace104 --trace-time ftp://127.0.0.1:33729/a/path/104 --head > log/5/stdout104 2> log/5/stderr104 === End of file commands.log === Start of file curl104.out Content-Length: 51 Accept-ranges: bytes === End of file curl104.out === Start of file ftp_server.log 00:44:56.147921 FTP server listens on port IPv4/33729 00:44:56.150876 logged pid 202313 in log/5/server/ftp_server.pid 00:44:56.151149 Awaiting input 00:45:43.994473 ====> Client connect 00:45:43.995334 FTPD: Getting commands from log/5/server.cmd 00:45:43.995760 FTPD: run test case number: 104 00:45:44.001599 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:45:45.273865 < "USER anonymous" 00:45:45.277739 > "331 We are happy you popped in![CR][LF]" 00:45:45.377123 < "PASS ftp@example.com" 00:45:45.377523 > "230 Welcome you silly person[CR][LF]" 00:45:45.488815 < "PWD" 00:45:45.489291 > "257 "/" is current directory[CR][LF]" 00:45:45.669807 < "CWD a" 00:45:45.670217 > "250 CWD command successful.[CR][LF]" 00:45:45.722308 < "CWD path" 00:45:45.722946 > "250 CWD command successful.[CR][LF]" 00:45:45.781815 < "MDTM 104" 00:45:45.787727 > "500 MDTM: no such command.[CR][LF]" 00:45:45.849664 < "TYPE I" 00:45:45.850064 > "200 I modify TYPE as you wanted[CR][LF]" 00:45:45.886611 < "SIZE 104" 00:45:45.891322 > "213 51[CR][LF]" 00:45:46.062452 < "REST 0" 00:45:46.063148 > "350 Yeah yeah we set it there for you[CR][LF]" 00:45:46.063337 Set REST position to 0 00:45:47.221465 < "QUIT" 00:45:47.224399 > "221 bye bye baby[CR][LF]" 00:45:47.452541 MAIN sockfilt said DISC 00:45:47.475390 ====> Client disconnected 00:45:47.476206 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:44:56.753510 Running IPv4 version 00:44:56.760663 Listening on port 33729 00:44:56.761078 Wrote pid 202322 to log/5/server/ftp_sockctrl.pid 00:44:56.761318 Wrote port 33729 to log/5/server/ftp_server.port 00:44:56.761980 Received PING (on stdin) 00:45:44.608718 ====> Client connect 00:45:44.619014 Received DATA (on stdin) 00:45:44.619360 > 160 bytes data, server => client 00:45:44.619764 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:45:44.619889 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:45:44.619997 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:45:45.888860 < 16 bytes data, client => server 00:45:45.889068 'USER anonymous\r\n' 00:45:45.891833 Received DATA (on stdin) 00:45:45.891919 > 33 bytes data, server => client 00:45:45.895718 '331 We are happy you popped in!\r\n' 00:45:45.993472 < 22 bytes data, client => server 00:45CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind105 ../src/curl -q --output log/3/curl105.out --include --trace-ascii log/3/trace105 --trace-time ftp://userdude:passfellow@127.0.0.1:37331/105 --use-ascii > log/3/stdout105 2> log/3/stderr105 :45.993645 'PASS ftp@example.com\r\n' 00:45:45.995346 Received DATA (on stdin) 00:45:45.995420 > 30 bytes data, server => client 00:45:45.995509 '230 Welcome you silly person\r\n' 00:45:46.102259 < 5 bytes data, client => server 00:45:46.102431 'PWD\r\n' 00:45:46.107100 Received DATA (on stdin) 00:45:46.107187 > 30 bytes data, server => client 00:45:46.107271 '257 "/" is current directory\r\n' 00:45:46.286733 < 7 bytes data, client => server 00:45:46.286878 'CWD a\r\n' 00:45:46.291937 Received DATA (on stdin) 00:45:46.292028 > 29 bytes data, server => client 00:45:46.292111 '250 CWD command successful.\r\n' 00:45:46.338982 < 10 bytes data, client => server 00:45:46.339120 'CWD path\r\n' 00:45:46.340229 Received DATA (on stdin) 00:45:46.340298 > 29 bytes data, server => client 00:45:46.340399 '250 CWD command successful.\r\n' 00:45:46.398395 < 10 bytes data, client => server 00:45:46.398545 'MDTM 104\r\n' 00:45:46.401232 Received DATA (on stdin) 00:45:46.401306 > 28 bytes data, server => client 00:45:46.405600 '500 MDTM: no such command.\r\n' 00:45:46.466180 < 8 bytes data, client => server 00:45:46.466329 'TYPE I\r\n' 00:45:46.467874 Received DATA (on stdin) 00:45:46.467946 > 33 bytes data, server => client 00:45:46.468029 '200 I modify TYPE as you wanted\r\n' 00:45:46.503367 < 10 bytes data, client => server 00:45:46.503492 'SIZE 104\r\n' 00:45:46.508599 Received DATA (on stdin) 00:45:46.508684 > 8 bytes data, server => client 00:45:46.508779 '213 51\r\n' 00:45:46.678950 < 8 bytes data, client => server 00:45:46.679103 'REST 0\r\n' 00:45:46.680420 Received DATA (on stdin) 00:45:46.680492 > 39 bytes data, server => client 00:45:46.680598 '350 Yeah yeah we set it there for you\r\n' 00:45:47.837926 < 6 bytes data, client => server 00:45:47.838106 'QUIT\r\n' 00:45:47.839408 Received DATA (on stdin) 00:45:47.839482 > 18 bytes data, server => client 00:45:47.842246 '221 bye bye baby\r\n' 00:45:48.069678 ====> Client disconnect 00:45:48.094050 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 104 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD a CWD path MDTM 104 TYPE I SIZE 104 REST 0 QUIT === End of file server.input === Start of file stderr104 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 51 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr104 === Start of file trace104 00:45:43.670629 * Trying 127.0.0.1:33729... 00:45:44.558010 * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 48402 00:45:44.805125 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:45:45.146089 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:45:45.174944 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:45:45.181746 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:45:45.186951 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:45:45.290296 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:45:45.355989 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:45:45.377099 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:45:45.465325 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:45:45.484716 => Send header, 5 bytes (0x5) 0000: PWD 00:45:45.500825 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:45:45.536963 * Entry path is '/' 00:45:45.668752 => Send header, 7 bytes (0x7) 0000: CWD a 00:45:45.681800 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:45:45.721447 => Send header, 10 bytes (0xa) 0000: CWD path 00:45:45.760461 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:45:45.780836 => Send header, 10 bytes (0xa) 0000: MDTM 104 00:45:45.809546 <= Recv header, 28 bytes (0x1c) 0000: 500 MDTM: no such command. 00:45:45.824708 * unsupported MDTM reply format 00:45:45.848624 => Send header, 8 bytes (0x8) 0000: TYPE I 00:45:45.860173 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:45:45.885823 => Send header, 10 bytes (0xa) 0000: SIZE 104 00:45:45.894797 <= Recv header, 8 bytes (0x8) 0000: 213 51 00:45:46.061429 => Send header, 8 bytes (0x8) 0000: REST 0 00:45:46.072951 <= Recv header, 39 bytes (0x27) 0000: 350 Yeah yeah we set it there for you 00:45:46.239576 * Remembering we are in dir "a/path/" 00:45:46.525580 * Connection #0 to host 127.0.0.1:33729 left intact === End of file trace104 === Start of file valgrind104 ==202331== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind104 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 110 in state 4 Runner 2 (id 185908) running test 111 in state 4 Runner 3 (id 185910) running test 105 in state 4 Runner 4 (id 185912) running test 108 in state 4 Runner 5 (id 185914) running test 112 in state 4 Runner 6 (id 185916) running test 109 in state 4 Runner 7 (id 185918) running test 106 in state 4 Runner 8 (id 185920) running test 107 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 110 in state 4 Runner 2 (id 185908) running test 111 in state 4 Runner 3 (id 185910) running test 105 in state 4 Runner 4 (id 185912) running test 108 in state 4 Runner 5 (id 185914) running test 112 in state 4 Runner 6 (id 185916) running test 109 in state 4 Runner 7 (id 185918) running test 106 in state 4 Runner 8 (id 185920) running test 107 in state 4 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/3/server/ftp_server.pid" --logfile "log/3/ftp_server.log" --logdir "log/3" --portfile "log/3/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 37331 (log/3/server/ftp_server.port) RUN: FTP server is PID 202504 port 37331 * pid ftp => 202504 202504 test 0105...[FTP user+password in URL and ASCII transfer] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind105 ../src/curl -q --output log/3/curl105.out --include --trace-ascii log/3/trace105 --trace-time ftp://userdude:passfellow@127.0.0.1:37331/105 --use-ascii > log/3/stdout105 2> log/3/stderr105 valgrind ERROR ==202517== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 105 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind105 ../src/curl -q --output log/3/curl105.out --include --trace-ascii log/3/trace105 --trace-time ftp://userdude:passfellow@127.0.0.1:37331/105 --use-ascii > log/3/stdout105 2> log/3/stderr105 === End of file commands.log === Start of file curl105.out data to see that FTP works so does it? === End of file curl105.out === Start of file ftp_server.log 00:45:23.831837 FTP server listens on port IPv4/37331 00:45:23.835134 logged pid 202504 in log/3/server/ftp_server.pid 00:45:23.835379 Awaiting input 00:46:12.021144 ====> Client connect 00:46:12.022025 FTPD: Getting commands from log/3/server.cmd 00:46:12.022988 FTPD: set custom reply for EPSV command 00:46:12.023381 FTPD: run test case number: 105 00:46:12.029162 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:46:13.333085 < "USER userdude" 00:46:13.338100 > "331 We are happy you popped in![CR][LF]" 00:46:13.448964 < "PASS passfellow" 00:46:13.449704 > "230 Welcome you silly person[CR][LF]" 00:46:13.542431 < "PWD" 00:46:13.547764 > "257 "/" is current directory[CR][LF]" 00:46:13.737883 < "EPSV" 00:46:13.738293 > "500 no such command[CR][LF]" 00:46:13.833788 < "PASV" 00:46:13.834157 ====> Passive DATA channel requested by client 00:46:13.834328 DATA sockfilt for passive data channel starting... 00:46:13.923485 DATA sockfilt for passive data channel started (pid 203787) 00:46:13.924688 DATA sockfilt for passive data channel listens on port 45703 00:46:13.926091 > "227 Entering Passive Mode (127,0,0,1,178,135)[CR][LF]" 00:46:13.926283 Client has been notified that DATA conn will be accepted on port 45703 00:46:14.141084 Client connects to port 45703 00:46:14.141720 ====> Client established passive DATA connection on port 45703 00:46:14.253110 < "TYPE A" 00:46:14.257768 > "200 I modify TYPE as you wanted[CR][LF]" 00:46:14.305008 < "RETR 105" 00:46:14.312232 > "150 Binary data connection for 105 () (51 bytes).[CR][LF]" 00:46:14.313847 =====> Closing passive DATA connection... 00:46:14.314038 Server disconnects passive DATA connection 00:46:14.316744 Server disconnected passive DATA connection 00:46:14.316954 DATA sockfilt for passive data channel quits (pid 203787) 00:46:14.324347 DATA sockfilt for passive data channel quit (pid 203787) 00:46:14.324619 =====> Closed passive DATA connection 00:46:14.324917 > "226 File transfer complete[CR][LF]" 00:46:16.351784 < "QUIT" 00:46:16.354459 > "221 bye bye baby[CR][LF]" 00:46:16.480913 MAIN sockfilt said DISC 00:46:16.481537 ====> Client disconnected 00:46:16.482163 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:45:23.436491 Running IPv4 version 00:45:23.444181 Listening on port 37331 00:45:23.444635 Wrote pid 202511 to log/3/server/ftp_sockctrl.pid 00:45:23.444896 Wrote port 37331 to log/3/server/ftp_server.port 00:45:23.445680 Received PING (on stdin) 00:46:11.635348 ====> Client connect 00:46:11.646997 Received DATA (on stdin) 00:46:11.647370 > 160 bytes data, server => client 00:46:11.647777 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:46:11.647905 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:46:11.648015 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:46:12.947434 < 15 bytes data, client => server 00:46:12.947629 'USER userdude\r\n' 00:46:12.955214 Received DATA (on stdin) 00:46:12.955313 > 33 bytes data, server => client 00:46:12.955429 '331 We are happy you popped in!\r\n' 00:46:13.065136 < 17 bytes data, client => server 00:46:13.065331 'PASS passfellow\r\n' 00:46:13.066900 Received DATA (on stdin) 00:46:13.066982 > 30 bytes data, server => client 00:46:13.067084 '230 Welcome you silly person\r\n' 00:46:13.158486 < 5 bytes data, client => server 00:46:13.158672 'PWD\r\n' 00:46:13.160416 Received DATA (on stdin) 00:46:13.160497 > 30 bytes data, server => client 00:46:13.165618 '257 "/" is current directory\r\n' 00:46:13.354297 < 6 bytes data, client => server 00:46:13.354465 'EPSV\r\n' 00:46:13.356057 Received DATA (on stdin) 00:46:13.356147 > 21 bytes data, server => client 00:46:13.356229 '500 no such command\r\n' 00:46:13.450108 < 6 bytes data, client => server 00:46:13.450309 'PASV\r\n' 00:46:13.545239 Received DATA (on stdin) 00:46:13.545384 > 47 bytes data, server => client 00:46:13.545483 '227 Entering Passive Mode (127,0,0,1,178,135)\r\n' 00:46:13.869422 < 8 bytes data, client => server 00:46:13.869621 'TYPE A\r\n' 00:46:13.871084 Received DATA (on stdin) 00:46:13.871174 > 33 bytes data, server => client 00:46:13.875651 '200 I modify TYPE as you wanted\r\n' 00:46:13.921473 < 10 bytes data, client => server 00:46:13.921653 'RETR 105\r\n' 00:46:13.930315 Received DATA (on stdin) 00:46:13.930467 > 51 bytes data, server => client 00:46:13.930589 '150 Binary data connection for 105 () (51 bytes).\r\n' 00:46:13.942703 Received DATA (on stdin) 00:46:13.942823 > 28 bytes data, server => client 00:46:13.942910 '226 File transfer complete\r\n' 00:46:15.968539 < 6 bytes data, client => server 00:46:15.968743 'QUIT\r\n' 00:46:15.969695 Received DATA (on stdin) 00:46:15.969772 > 18 bytes data, server => client 00:46:15.971919 '221 bye bye baby\r\n' 00:46:16.098041 ====> Client disconnect 00:46:16.099018 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:46:13.520969 Running IPv4 version 00:46:13.539190 Listening on port 45703 00:46:13.539748 Wrote pid 203787 to log/3/server/ftp_sockdata.pid 00:46:13.540632 Received PING (on stdin) 00:46:13.541565 Received PORT (on stdin) 00:46:13.756147 ====> Client connect 00:46:13.931897 Received DATA (on stdin) 00:46:13.932284 > 5 bytes data, server => client 00:46:13.932638 'data\n' 00:46:13.932932 Received DATA (on stdin) 00:46:13.933002 > 7 bytes data, server => client 00:46:13.933072 ' to\n' 00:46:13.933175 Received DATA (on stdin) 00:46:13.933251 > 10 bytes data, server => client 00:46:13.933332 ' see\n' 00:46:13.933431 Received DATA (on stdin) 00:46:13.933498 > 9 bytes data, server => client 00:46:13.933570 'that FTP\n' 00:46:13.933654 Received DATA (on stdin) 00:46:13.933722 > 6 bytes data, server => client 00:46:13.933794 'works\n' 00:46:13.933882 Received DATA (on stdin) 00:46:13.933952 > 14 bytes data, server => client 00:46:13.934031 ' so does it?\n' 00:46:13.934117 Received DISC (on stdin) 00:46:13.934237 ====> Client forcibly disconnected 00:46:13.938543 Received QUIT (on stdin) 00:46:13.938663 quits 00:46:13.939218 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPSV 500 no such command Testnum 105 === End of file server.cmd === Start of file server.input USER userdude PASS passfellow PWD EPSV PASV TYPE A RETR 105 QUIT === End of file server.input === Start of file stderr105 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 51 0 51 0 0 9 0 --:--:-- 0:00:05 --:--:-- 11 === End of file stderr105 === Start of file trace105 00:46:11.696985 * Trying 127.0.0.1:37331... 00:46:12.596395 * Established connection to 127.0.0.1 (127.0.0.1 port 37331) from 127.0.0.1 port 48986 00:46:12.845657 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:46:13.200947 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:46:13.230908 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:46:13.237924 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:46:13.243796 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:46:13.350064 => Send header, 15 bytes (0xf) 0000: USER userdude 00:46:13.427174 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:46:13.448870 => Send header, 17 bytes (0x11) 0000: PASS passfellow 00:46:13.521242 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:46:13.541002 => Send header, 5 bytes (0x5) 0000: PWD 00:46:13.558013 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:46:13.595380 * Entry path is '/' 00:46:13.684448 * Request has same path as previous transfer 00:46:13.736839 => Send header, 6 bytes (0x6) 0000: EPSV 00:46:CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind106 ../src/curl -q --output log/7/curl106.out --include --trace-ascii log/7/trace106 --trace-time "ftp://127.0.0.1:45353//path%20with%20%20spaces//and%20things2/106;type=A" > log/7/stdout106 2> log/7/stderr106 13.752123 * Connect data stream passively 00:46:13.761692 <= Recv header, 21 bytes (0x15) 0000: 500 no such command 00:46:13.807860 * Failed EPSV attempt. Disabling EPSV 00:46:13.832641 => Send header, 6 bytes (0x6) 0000: PASV 00:46:13.950716 <= Recv header, 47 bytes (0x2f) 0000: 227 Entering Passive Mode (127,0,0,1,178,135) 00:46:13.991796 * Skip 127.0.0.1 for data connection, reuse 127.0.0.1 instead 00:46:14.069439 * Connecting to 127.0.0.1 (127.0.0.1) port 45703 00:46:14.132584 * Trying 127.0.0.1:45703... 00:46:14.221752 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 45703) from 127.0.0.1 port 60696 00:46:14.251967 => Send header, 8 bytes (0x8) 0000: TYPE A 00:46:14.271226 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:46:14.303992 => Send header, 10 bytes (0xa) 0000: RETR 105 00:46:14.339223 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 105 () (51 bytes). 00:46:14.379769 * Maxdownload = -1 00:46:14.390750 * Getting file with size: -1 00:46:14.562118 <= Recv data, 51 bytes (0x33) 0000: data. to. see.that FTP.works. so does it?. 00:46:14.887370 * abort upload 00:46:14.913814 <= Recv data, 0 bytes (0x0) 00:46:15.089937 * Remembering we are in dir "" 00:46:15.278103 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:46:15.595408 * Connection #0 to host 127.0.0.1:37331 left intact === End of file trace105 === Start of file valgrind105 ==202517== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind105 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/7/server/ftp_server.pid" --logfile "log/7/ftp_server.log" --logdir "log/7" --portfile "log/7/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 45353 (log/7/server/ftp_server.port) RUN: FTP server is PID 202639 port 45353 * pid ftp => 202639 202639 test 0106...[FTP GET with type=A style ASCII URL using %20 codes] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind106 ../src/curl -q --output log/7/curl106.out --include --trace-ascii log/7/trace106 --trace-time "ftp://127.0.0.1:45353//path%20with%20%20spaces//and%20things2/106;type=A" > log/7/stdout106 2> log/7/stderr106 valgrind ERROR ==202665== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 106 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind106 ../src/curl -q --output log/7/curl106.out --include --trace-ascii log/7/trace106 --trace-time "ftp://127.0.0.1:45353//path%20with%20%20spaces//and%20things2/106;type=A" > log/7/stdout106 2> log/7/stderr106 === End of file commands.log === Start of file curl106.out data to see that FTP works so does it? === End of file curl106.out === Start of file ftp_server.log 00:45:30.720933 FTP server listens on port IPv4/45353 00:45:30.724402 logged pid 202639 in log/7/server/ftp_server.pid 00:45:30.724677 Awaiting input 00:46:18.697794 ====> Client connect 00:46:18.698611 FTPD: Getting commands from log/7/server.cmd 00:46:18.699022 FTPD: run test case number: 106 00:46:18.704831 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:46:20.084706 < "USER anonymous" 00:46:20.085521 > "331 We are happy you popped in![CR][LF]" 00:46:20.222440 < "PASS ftp@example.com" 00:46:20.222896 > "230 Welcome you silly person[CR][LF]" 00:46:20.325651 < "PWD" 00:46:20.326482 > "257 "/" is current directory[CR][LF]" 00:46:20.574896 < "CWD /" 00:46:20.575688 > "250 CWD command successful.[CR][LF]" 00:46:20.636342 < "CWD path with spaces" 00:46:20.641083 > "250 CWD command successful.[CR][LF]" 00:46:20.690397 < "CWD and things2" 00:46:20.690831 > "250 CWD command successful.[CR][LF]" 00:46:20.762675 < "EPSV" 00:46:20.763034 ====> Passive DATA channel requested by client 00:46:20.763199 DATA sockfilt for passive data channel starting... 00:46:20.817939 DATA sockfilt for passive data channel started (pid 203870) 00:46:20.819360 DATA sockfilt for passive data channel listens on port 43079 00:46:20.820531 > "229 Entering Passive Mode (|||43079|)[CR][LF]" 00:46:20.820774 Client has been notified that DATA conn will be accepted on port 43079 00:46:21.021093 Client connects to port 43079 00:46:21.021724 ====> Client established passive DATA connection on port 43079 00:46:21.143212 < "TYPE A" 00:46:21.143652 > "200 I modify TYPE as you wanted[CR][LF]" 00:46:21.202042 < "RETR 106" 00:46:21.214678 > "150 Binary data connection for 106 () (51 bytes).[CR][LF]" 00:46:21.216481 =====> Closing passive DATA connection... 00:46:21.216700 Server disconnects passive DATA connection 00:46:21.219749 Server disconnected passive DATA connection 00:46:21.219970 DATA sockfilt for passive data channel quits (pid 203870) 00:46:21.224502 DATA sockfilt for passive data channel quit (pid 203870) 00:46:21.224730 =====> Closed passive DATA connection 00:46:21.225407 > "226 File transfer complete[CR][LF]" 00:46:23.388554 < "QUIT" 00:46:23.389011 > "221 bye bye baby[CR][LF]" 00:46:23.526760 MAIN sockfilt said DISC 00:46:23.527354 ====> Client disconnected 00:46:23.527990 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:45:30.324837 Running IPv4 version 00:45:30.332901 Listening on port 45353 00:45:30.333394 Wrote pid 202650 to log/7/server/ftp_sockctrl.pid 00:45:30.333661 Wrote port 45353 to log/7/server/ftp_server.port 00:45:30.334425 Received PING (on stdin) 00:46:18.311984 ====> Client connect 00:46:18.322178 Received DATA (on stdin) 00:46:18.322568 > 160 bytes data, server => client 00:46:18.322993 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:46:18.323119 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:46:18.323231 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:46:19.699332 < 16 bytes data, client => server 00:46:19.699546 'USER anonymous\r\n' 00:46:19.702646 Received DATA (on stdin) 00:46:19.702735 > 33 bytes data, server => client 00:46:19.702846 '331 We are happy you popped in!\r\n' 00:46:19.838581 < 22 bytes data, client => server 00:46:19.838767 'PASS ftp@example.com\r\n' 00:46:19.846122 Received DATA (on stdin) 00:46:19.846230 > 30 bytes data, server => client 00:46:19.846324 '230 Welcome you silly person\r\n' 00:46:19.941596 < 5 bytes data, client => server 00:46:19.941760 'PWD\r\n' 00:46:19.943639 Received DATA (on stdin) 00:46:19.943722 > 30 bytes data, server => client 00:46:19.943838 '257 "/" is current directory\r\n' 00:46:20.191160 < 7 bytes data, client => server 00:46:20.191359 'CWD /\r\n' 00:46:20.192827 Received DATA (on stdin) 00:46:20.192915 > 29 bytes data, server => client 00:46:20.193031 '250 CWD command successful.\r\n' 00:46:20.252600 < 23 bytes data, client => server 00:46:20.252792 'CWD path with spaces\r\n' 00:46:20.254272 Received DATA (on stdin) 00:46:20.254356 > 29 bytes data, server => client 00:46:20.259269 '250 CWD command successful.\r\n' 00:46:20.306733 < 17 bytes data, client => server 00:46:20.306920 'CWD and things2\r\n' 00:46:20.308706 Received DATA (on stdin) 00:46:20.308793 > 29 bytes data, server => client 00:46:20.308882 '250 CWD command successful.\r\n' 00:46:20.379060 < 6 bytes data, client => server 00:46:20.379229 'EPSV\r\n' 00:46:20.437506 Received DATA (on stdin) 00:46:20.437668 > 39 bytes data, server => client 00:46:20.437807 '229 Entering Passive Mode (|||43079|)\r\n' 00:46:20.759563 < 8 bytes data, client => server 00:46:20.759758 'TYPE A\r\n' 00:46:20.762154 Received DATA (on stdin) 00:46:20.762244 > 33 bytes data, server => client 00:46:20.762337 '200 ICMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind107 ../src/curl -q --output log/8/curl107.out --include --trace-ascii log/8/trace107 --trace-time ftp://127.0.0.1:43843/107 -T log/8/test107.txt > log/8/stdout107 2> log/8/stderr107 modify TYPE as you wanted\r\n' 00:46:20.818332 < 10 bytes data, client => server 00:46:20.818522 'RETR 106\r\n' 00:46:20.834468 Received DATA (on stdin) 00:46:20.834628 > 51 bytes data, server => client 00:46:20.834746 '150 Binary data connection for 106 () (51 bytes).\r\n' 00:46:20.842522 Received DATA (on stdin) 00:46:20.842634 > 28 bytes data, server => client 00:46:20.842747 '226 File transfer complete\r\n' 00:46:23.001990 < 6 bytes data, client => server 00:46:23.002184 'QUIT\r\n' 00:46:23.006483 Received DATA (on stdin) 00:46:23.006610 > 18 bytes data, server => client 00:46:23.006707 '221 bye bye baby\r\n' 00:46:23.143897 ====> Client disconnect 00:46:23.144820 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:46:20.424493 Running IPv4 version 00:46:20.433642 Listening on port 43079 00:46:20.434178 Wrote pid 203870 to log/7/server/ftp_sockdata.pid 00:46:20.435068 Received PING (on stdin) 00:46:20.436094 Received PORT (on stdin) 00:46:20.636540 ====> Client connect 00:46:20.834930 Received DATA (on stdin) 00:46:20.835370 > 5 bytes data, server => client 00:46:20.835754 'data\n' 00:46:20.836027 Received DATA (on stdin) 00:46:20.836093 > 7 bytes data, server => client 00:46:20.836159 ' to\n' 00:46:20.836255 Received DATA (on stdin) 00:46:20.836320 > 10 bytes data, server => client 00:46:20.836390 ' see\n' 00:46:20.836484 Received DATA (on stdin) 00:46:20.836546 > 9 bytes data, server => client 00:46:20.836611 'that FTP\n' 00:46:20.836689 Received DATA (on stdin) 00:46:20.836750 > 6 bytes data, server => client 00:46:20.836813 'works\n' 00:46:20.836892 Received DATA (on stdin) 00:46:20.836953 > 14 bytes data, server => client 00:46:20.837022 ' so does it?\n' 00:46:20.837100 Received DISC (on stdin) 00:46:20.838582 ====> Client forcibly disconnected 00:46:20.838763 Received QUIT (on stdin) 00:46:20.838841 quits 00:46:20.839345 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 106 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD / CWD path with spaces CWD and things2 EPSV TYPE A RETR 106 QUIT === End of file server.input === Start of file stderr106 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 51 0 51 0 0 9 0 --:--:-- 0:00:05 --:--:-- 12 100 51 0 51 0 0 8 0 --:--:-- 0:00:05 --:--:-- 11 === End of file stderr106 === Start of file trace106 00:46:18.372464 * Trying 127.0.0.1:45353... 00:46:19.288811 * Established connection to 127.0.0.1 (127.0.0.1 port 45353) from 127.0.0.1 port 38006 00:46:19.596608 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:46:19.955488 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:46:19.982532 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:46:19.990446 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:46:19.996183 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:46:20.105697 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:46:20.197821 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:46:20.223837 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:46:20.303610 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:46:20.326849 => Send header, 5 bytes (0x5) 0000: PWD 00:46:20.343746 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:46:20.376950 * Entry path is '/' 00:46:20.573732 => Send header, 7 bytes (0x7) 0000: CWD / 00:46:20.588096 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:46:20.635173 => Send header, 23 bytes (0x17) 0000: CWD path with spaces 00:46:20.678611 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:46:20.689280 => Send header, 17 bytes (0x11) 0000: CWD and things2 00:46:20.719882 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:46:20.761621 => Send header, 6 bytes (0x6) 0000: EPSV 00:46:20.779566 * Connect data stream passively 00:46:20.822889 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||43079|) 00:46:20.944837 * Connecting to 127.0.0.1 (127.0.0.1) port 43079 00:46:21.011593 * Trying 127.0.0.1:43079... 00:46:21.106932 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 43079) from 127.0.0.1 port 47054 00:46:21.142149 => Send header, 8 bytes (0x8) 0000: TYPE A 00:46:21.162476 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:46:21.200885 => Send header, 10 bytes (0xa) 0000: RETR 106 00:46:21.237332 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 106 () (51 bytes). 00:46:21.283607 * Maxdownload = -1 00:46:21.296150 * Getting file with size: -1 00:46:21.471323 <= Recv data, 51 bytes (0x33) 0000: data. to. see.that FTP.works. so does it?. 00:46:21.827317 * abort upload 00:46:21.854397 <= Recv data, 0 bytes (0x0) 00:46:22.062336 * Remembering we are in dir "/path with spaces//and things2/" 00:46:22.276157 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:46:22.611987 * Connection #0 to host 127.0.0.1:45353 left intact === End of file trace106 === Start of file valgrind106 ==202665== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind106 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/8/server/ftp_server.pid" --logfile "log/8/ftp_server.log" --logdir "log/8" --portfile "log/8/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 43843 (log/8/server/ftp_server.port) RUN: FTP server is PID 202642 port 43843 * pid ftp => 202642 202642 test 0107...[FTP PASV upload file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind107 ../src/curl -q --output log/8/curl107.out --include --trace-ascii log/8/trace107 --trace-time ftp://127.0.0.1:43843/107 -T log/8/test107.txt > log/8/stdout107 2> log/8/stderr107 valgrind ERROR ==202668== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 107 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind107 ../src/curl -q --output log/8/curl107.out --include --trace-ascii log/8/trace107 --trace-time ftp://127.0.0.1:43843/107 -T log/8/test107.txt > log/8/stdout107 2> log/8/stderr107 === End of file commands.log === Start of file ftp_server.log 00:45:30.832823 FTP server listens on port IPv4/43843 00:45:30.836193 logged pid 202642 in log/8/server/ftp_server.pid 00:45:30.836442 Awaiting input 00:46:19.374947 ====> Client connect 00:46:19.398167 FTPD: Getting commands from log/8/server.cmd 00:46:19.398835 FTPD: run test case number: 107 00:46:19.409282 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:46:20.737328 < "USER anonymous" 00:46:20.741337 > "331 We are happy you popped in![CR][LF]" 00:46:20.860929 < "PASS ftp@example.com" 00:46:20.861378 > "230 Welcome you silly person[CR][LF]" 00:46:20.954996 < "PWD" 00:46:20.955512 > "257 "/" is current directory[CR][LF]" 00:46:21.181934 < "EPSV" 00:46:21.182316 ====> Passive DATCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind108 ../src/curl -q --output log/4/curl108.out --include --trace-ascii log/4/trace108 --trace-time ftp://127.0.0.1:38207/CWD/STOR/RETR/108 -T log/4/upload108 -P - > log/4/stdout108 2> log/4/stderr108 A channel requested by client 00:46:21.182488 DATA sockfilt for passive data channel starting... 00:46:21.263360 DATA sockfilt for passive data channel started (pid 203918) 00:46:21.264943 DATA sockfilt for passive data channel listens on port 32771 00:46:21.265667 > "229 Entering Passive Mode (|||32771|)[CR][LF]" 00:46:21.265896 Client has been notified that DATA conn will be accepted on port 32771 00:46:21.525308 Client connects to port 32771 00:46:21.525902 ====> Client established passive DATA connection on port 32771 00:46:21.628570 < "TYPE I" 00:46:21.629007 > "200 I modify TYPE as you wanted[CR][LF]" 00:46:21.681976 < "STOR 107" 00:46:21.682325 STOR test number 107 in log/8/upload.107 00:46:21.682611 > "125 Gimme gimme gimme![CR][LF]" 00:46:21.990600 > Appending 51 bytes to file 00:46:22.425957 =====> Closing passive DATA connection... 00:46:22.426272 Server knows passive DATA connection is already disconnected 00:46:22.426460 DATA sockfilt for passive data channel quits (pid 203918) 00:46:22.438027 DATA sockfilt for passive data channel quit (pid 203918) 00:46:22.438365 =====> Closed passive DATA connection 00:46:22.438568 received 51 bytes upload 00:46:22.438865 > "226 File transfer complete[CR][LF]" 00:46:23.723270 < "QUIT" 00:46:23.723704 > "221 bye bye baby[CR][LF]" 00:46:23.861103 MAIN sockfilt said DISC 00:46:23.861707 ====> Client disconnected 00:46:23.862371 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:45:30.437047 Running IPv4 version 00:45:30.444791 Listening on port 43843 00:45:30.445253 Wrote pid 202653 to log/8/server/ftp_sockctrl.pid 00:45:30.445539 Wrote port 43843 to log/8/server/ftp_server.port 00:45:30.446324 Received PING (on stdin) 00:46:18.991991 ====> Client connect 00:46:19.025228 Received DATA (on stdin) 00:46:19.025625 > 160 bytes data, server => client 00:46:19.026109 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:46:19.026234 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:46:19.026341 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:46:20.348795 < 16 bytes data, client => server 00:46:20.349002 'USER anonymous\r\n' 00:46:20.358804 Received DATA (on stdin) 00:46:20.358949 > 33 bytes data, server => client 00:46:20.359046 '331 We are happy you popped in!\r\n' 00:46:20.477409 < 22 bytes data, client => server 00:46:20.477598 'PASS ftp@example.com\r\n' 00:46:20.481869 Received DATA (on stdin) 00:46:20.481969 > 30 bytes data, server => client 00:46:20.482059 '230 Welcome you silly person\r\n' 00:46:20.571261 < 5 bytes data, client => server 00:46:20.571455 'PWD\r\n' 00:46:20.572997 Received DATA (on stdin) 00:46:20.573089 > 30 bytes data, server => client 00:46:20.573178 '257 "/" is current directory\r\n' 00:46:20.794951 < 6 bytes data, client => server 00:46:20.795200 'EPSV\r\n' 00:46:20.883140 Received DATA (on stdin) 00:46:20.883309 > 39 bytes data, server => client 00:46:20.883417 '229 Entering Passive Mode (|||32771|)\r\n' 00:46:21.243938 < 8 bytes data, client => server 00:46:21.244105 'TYPE I\r\n' 00:46:21.246498 Received DATA (on stdin) 00:46:21.246592 > 33 bytes data, server => client 00:46:21.246689 '200 I modify TYPE as you wanted\r\n' 00:46:21.295694 < 10 bytes data, client => server 00:46:21.295868 'STOR 107\r\n' 00:46:21.301877 Received DATA (on stdin) 00:46:21.302006 > 24 bytes data, server => client 00:46:21.302091 '125 Gimme gimme gimme!\r\n' 00:46:22.056343 Received DATA (on stdin) 00:46:22.056491 > 28 bytes data, server => client 00:46:22.056582 '226 File transfer complete\r\n' 00:46:23.339819 < 6 bytes data, client => server 00:46:23.340022 'QUIT\r\n' 00:46:23.341182 Received DATA (on stdin) 00:46:23.341267 > 18 bytes data, server => client 00:46:23.341357 '221 bye bye baby\r\n' 00:46:23.476241 ====> Client disconnect 00:46:23.479170 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:46:21.865645 Running IPv4 version 00:46:21.879243 Listening on port 32771 00:46:21.879773 Wrote pid 203918 to log/8/server/ftp_sockdata.pid 00:46:21.880466 Received PING (on stdin) 00:46:21.881675 Received PORT (on stdin) 00:46:22.142523 ====> Client connect 00:46:22.607534 < 51 bytes data, client => server 00:46:22.608041 'data\n to\n see\nthat FTP\nworks\n so does it?\n' 00:46:23.041024 ====> Client disconnect 00:46:23.044483 Received ACKD (on stdin) 00:46:23.044809 Received QUIT (on stdin) 00:46:23.044896 quits 00:46:23.045428 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 107 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I STOR 107 QUIT === End of file server.input === Start of file stderr107 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 51 0 0 100 51 0 9 0:00:05 0:00:05 --:--:-- 12 === End of file stderr107 === Start of file test107.txt data to see that FTP works so does it? === End of file test107.txt === Start of file trace107 00:46:19.030470 * Trying 127.0.0.1:43843... 00:46:19.986728 * Established connection to 127.0.0.1 (127.0.0.1 port 43843) from 127.0.0.1 port 38926 00:46:20.229071 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:46:20.602413 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:46:20.631175 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:46:20.638878 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:46:20.644436 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:46:20.752870 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:46:20.838195 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:46:20.861632 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:46:20.933597 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:46:20.954175 => Send header, 5 bytes (0x5) 0000: PWD 00:46:20.973171 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:46:21.010315 * Entry path is '/' 00:46:21.123816 * Request has same path as previous transfer 00:46:21.181220 => Send header, 6 bytes (0x6) 0000: EPSV 00:46:21.203126 * Connect data stream passively 00:46:21.309446 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||32771|) 00:46:21.445020 * Connecting to 127.0.0.1 (127.0.0.1) port 32771 00:46:21.518861 * Trying 127.0.0.1:32771... 00:46:21.607059 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 32771) from 127.0.0.1 port 35560 00:46:21.626821 => Send header, 8 bytes (0x8) 0000: TYPE I 00:46:21.642071 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:46:21.678549 => Send header, 10 bytes (0xa) 0000: STOR 107 00:46:21.712826 <= Recv header, 24 bytes (0x18) 0000: 125 Gimme gimme gimme 00:46:22.010897 => Send data, 51 bytes (0x33) 0000: data. to. see.that FTP.works. so does it?. 00:46:22.208790 * upload completely sent off: 51 bytes 00:46:22.343409 * Remembering we are in dir "" 00:46:22.529860 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:46:22.904745 * Connection #0 to host 127.0.0.1:43843 left intact === End of file trace107 === Start of file upload.107 data to see that FTP works so does it? === End of file upload.107 === Start of file valgrind107 ==202668== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind107 test 0108...[FTP PORT upload with CWD] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind108 ../src/curl -q --output log/4/curl108.out --include --trace-ascii log/4/trace108 --trace-time ftp://127.0.0.1:38207/CWD/STOR/RETR/108 -T log/4/upload108 -P - > log/4/stdout108 2> log/4/stderr108 valgrind ERROR ==202928== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 108 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind108 ../src/curl -q --output log/4/curl108.out --include --trace-ascii log/4/trace108 --trace-time ftp://127.0.0.1:38207/CWD/STOR/RETR/108 -T log/4/upload108 -P - > log/4/stdout108 2> log/4/stderr108 === End of file commands.log === Start of file ftp_server.log 00:45:33.250187 ====> Client connect 00:45:33.251546 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:45:33.262201 < "USER anonymous" 00:45:33.262912 > "331 We are happy you popped in![CR][LF]" 00:45:33.263670 < "PASS ftp@example.com" 00:45:33.266634 > "230 Welcome you silly person[CR][LF]" 00:45:33.268192 < "PWD" 00:45:33.271064 > "257 "/" is current directory[CR][LF]" 00:45:33.273442 < "EPSV" 00:45:33.273654 ====> Passive DATA channel requested by client 00:45:33.273799 DATA sockfilt for passive data channel starting... 00:45:33.326857 DATA sockfilt for passive data channel started (pid 202885) 00:45:33.328192 DATA sockfilt for passive data channel listens on port 45691 00:45:33.328558 > "229 Entering Passive Mode (|||45691|)[CR][LF]" 00:45:33.328724 Client has been notified that DATA conn will be accepted on port 45691 00:45:33.330652 Client connects to port 45691 00:45:33.330869 ====> Client established passive DATA connection on port 45691 00:45:33.332342 < "TYPE I" 00:45:33.332641 > "200 I modify TYPE as you wanted[CR][LF]" 00:45:33.333676 < "SIZE verifiedserver" 00:45:33.334335 > "213 18[CR][LF]" 00:45:33.335642 < "RETR verifiedserver" 00:45:33.335950 > "150 Binary junk (18 bytes).[CR][LF]" 00:45:33.336585 =====> Closing passive DATA connection... 00:45:33.336763 Server disconnects passive DATA connection 00:45:33.344372 Server disconnected passive DATA connection 00:45:33.344672 DATA sockfilt for passive data channel quits (pid 202885) 00:45:33.348106 DATA sockfilt for passive data channel quit (pid 202885) 00:45:33.348310 =====> Closed passive DATA connection 00:45:33.348977 > "226 File transfer complete[CR][LF]" 00:45:33.389811 < "QUIT" 00:45:33.390272 > "221 bye bye baby[CR][LF]" 00:45:33.394477 MAIN sockfilt said DISC 00:45:33.394864 ====> Client disconnected 00:45:33.395157 Awaiting input 00:46:20.694110 ====> Client connect 00:46:20.694903 FTPD: Getting commands from log/4/server.cmd 00:46:20.695261 FTPD: run test case number: 108 00:46:20.696460 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:46:22.028192 < "USER anonymous" 00:46:22.031658 > "331 We are happy you popped in![CR][LF]" 00:46:22.145508 < "PASS ftp@example.com" 00:46:22.151089 > "230 Welcome you silly person[CR][LF]" 00:46:22.233888 < "PWD" 00:46:22.234345 > "257 "/" is current directory[CR][LF]" 00:46:22.420188 < "CWD CWD" 00:46:22.420814 > "250 CWD command successful.[CR][LF]" 00:46:22.476685 < "CWD STOR" 00:46:22.477117 > "250 CWD command successful.[CR][LF]" 00:46:22.533075 < "CWD RETR" 00:46:22.533795 > "250 CWD command successful.[CR][LF]" 00:46:22.690659 < "EPRT |1|127.0.0.1|34707|" 00:46:22.691045 ====> Active DATA channel requested by client 00:46:22.691822 > "200 Thanks for dropping by. We contact you later[CR][LF]" 00:46:22.692201 DATA sockfilt for active data channel starting... 00:46:22.776822 DATA sockfilt for active data channel started (pid 203955) 00:46:22.777327 ====> Active DATA channel connected to client port 34707 00:46:23.109473 < "TYPE I" 00:46:23.109910 > "200 I modify TYPE as you wanted[CR][LF]" 00:46:23.157251 < "STOR 108" 00:46:23.157581 STOR test number 108 in log/4/upload.108 00:46:23.158183 > "125 Gimme gimme gimme![CR][LF]" 00:46:23.511431 > Appending 27 bytes to file 00:46:23.928379 =====> Closing active DATA connection... 00:46:23.928665 Server knows active DATA connection is already disconnected 00:46:23.928840 DATA sockfilt for active data channel quits (pid 203955) 00:46:23.932315 DATA sockfilt for active data channel quit (pid 203955) 00:46:23.932561 =====> Closed active DATA connection 00:46:23.932770 received 27 bytes upload 00:46:23.933547 > "226 File transfer complete[CR][LF]" 00:46:25.126558 < "QUIT" 00:46:25.127328 > "221 bye bye baby[CR][LF]" 00:46:25.296878 MAIN sockfilt said DISC 00:46:25.297604 ====> Client disconnected 00:46:25.297974 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:45:32.867381 ====> Client connect 00:45:32.869428 Received DATA (on stdin) 00:45:32.869518 > 160 bytes data, server => client 00:45:32.869641 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:45:32.869751 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:45:32.869849 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:45:32.878660 < 16 bytes data, client => server 00:45:32.878811 'USER anonymous\r\n' 00:45:32.880181 Received DATA (on stdin) 00:45:32.880257 > 33 bytes data, server => client 00:45:32.880374 '331 We are happy you popped in!\r\n' 00:45:32.880680 < 22 bytes data, client => server 00:45:32.880767 'PASS ftp@example.com\r\n' 00:45:32.881524 Received DATA (on stdin) 00:45:32.881596 > 30 bytes data, server => client 00:45:32.884079 '230 Welcome you silly person\r\n' 00:45:32.884425 < 5 bytes data, client => server 00:45:32.884495 'PWD\r\n' 00:45:32.886079 Received DATA (on stdin) 00:45:32.886158 > 30 bytes data, server => client 00:45:32.888956 '257 "/" is current directory\r\n' 00:45:32.890494 < 6 bytes data, client => server 00:45:32.890568 'EPSV\r\n' 00:45:32.946127 Received DATA (on stdin) 00:45:32.946280 > 39 bytes data, server => client 00:45:32.946375 '229 Entering Passive Mode (|||45691|)\r\n' 00:45:32.949514 < 8 bytes data, client => server 00:45:32.949605 'TYPE I\r\n' 00:45:32.950224 Received DATA (on stdin) 00:45:32.950290 > 33 bytes data, server => client 00:45:32.950375 '200 I modify TYPE as you wanted\r\n' 00:45:32.950823 < 21 bytes data, client => server 00:45:32.950900 'SIZE verifiedserver\r\n' 00:45:32.951763 Received DATA (on stdin) 00:45:32.951833 > 8 bytes data, server => client 00:45:32.952218 '213 18\r\n' 00:45:32.952775 < 21 bytes data, client => server 00:45:32.952851 'RETR verifiedserver\r\n' 00:45:32.954588 Received DATA (on stdin) 00:45:32.954665 > 29 bytes data, server => client 00:45:32.954757 '150 Binary junk (18 bytes).\r\n' 00:45:32.966184 Received DATA (on stdin) 00:45:32.966315 > 28 bytes data, server => client 00:45:32.966437 '226 File transfer complete\r\n' 00:45:33.006141 < 6 bytes data, client => server 00:45:33.006317 'QUIT\r\n' 00:45:33.008322 Received DATA (on stdin) 00:45:33.008399 > 18 bytes data, server => client 00:45:33.008474 '221 bye bye baby\r\n' 00:45:33.011958 ====> Client disconnect 00:45:33.012353 Received ACKD (on stdin) 00:46:20.311340 ====> Client connect 00:46:20.315202 Received DATA (on stdin) 00:46:20.315327 > 160 bytes data, server => client 00:46:20.315439 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:46:20.315543 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:46:20.315635 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:46:21.644422 < 16 bytes data, client => server 00:46:21.644593 'USER anonymous\r\n' 00:46:21.646138 Received DATA (on stdin) 00:46:21.646227 > 33 bytes data, server => client 00:46:21.649523 '331 We are happy you popped in!\r\n' 00:46:CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind109 ../src/curl -q --output log/6/curl109.out --include --trace-ascii log/6/trace109 --trace-time ftp://127.0.0.1:39413/109 -T log/6/upload109 --append > log/6/stdout109 2> log/6/stderr109 21.761787 < 22 bytes data, client => server 00:46:21.761990 'PASS ftp@example.com\r\n' 00:46:21.763430 Received DATA (on stdin) 00:46:21.763511 > 30 bytes data, server => client 00:46:21.768949 '230 Welcome you silly person\r\n' 00:46:21.850274 < 5 bytes data, client => server 00:46:21.850456 'PWD\r\n' 00:46:21.852113 Received DATA (on stdin) 00:46:21.852194 > 30 bytes data, server => client 00:46:21.852282 '257 "/" is current directory\r\n' 00:46:22.036313 < 9 bytes data, client => server 00:46:22.036526 'CWD CWD\r\n' 00:46:22.038910 Received DATA (on stdin) 00:46:22.039005 > 29 bytes data, server => client 00:46:22.039092 '250 CWD command successful.\r\n' 00:46:22.093022 < 10 bytes data, client => server 00:46:22.093219 'CWD STOR\r\n' 00:46:22.098535 Received DATA (on stdin) 00:46:22.098637 > 29 bytes data, server => client 00:46:22.098726 '250 CWD command successful.\r\n' 00:46:22.149471 < 10 bytes data, client => server 00:46:22.149653 'CWD RETR\r\n' 00:46:22.150966 Received DATA (on stdin) 00:46:22.151045 > 29 bytes data, server => client 00:46:22.151153 '250 CWD command successful.\r\n' 00:46:22.306847 < 26 bytes data, client => server 00:46:22.307110 'EPRT |1|127.0.0.1|34707|\r\n' 00:46:22.315210 Received DATA (on stdin) 00:46:22.315352 > 50 bytes data, server => client 00:46:22.315465 '200 Thanks for dropping by. We contact you later\r\n' 00:46:22.725783 < 8 bytes data, client => server 00:46:22.725983 'TYPE I\r\n' 00:46:22.727673 Received DATA (on stdin) 00:46:22.727749 > 33 bytes data, server => client 00:46:22.727832 '200 I modify TYPE as you wanted\r\n' 00:46:22.773705 < 10 bytes data, client => server 00:46:22.773892 'STOR 108\r\n' 00:46:22.775356 Received DATA (on stdin) 00:46:22.775439 > 24 bytes data, server => client 00:46:22.775541 '125 Gimme gimme gimme!\r\n' 00:46:23.550558 Received DATA (on stdin) 00:46:23.550708 > 28 bytes data, server => client 00:46:23.550829 '226 File transfer complete\r\n' 00:46:24.742802 < 6 bytes data, client => server 00:46:24.743014 'QUIT\r\n' 00:46:24.744471 Received DATA (on stdin) 00:46:24.744555 > 18 bytes data, server => client 00:46:24.744663 '221 bye bye baby\r\n' 00:46:24.914086 ====> Client disconnect 00:46:24.914951 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:45:33.934585 Running IPv4 version 00:45:33.942662 Listening on port 45691 00:45:33.943126 Wrote pid 202885 to log/4/server/ftp_sockdata.pid 00:45:33.943919 Received PING (on stdin) 00:45:33.945063 Received PORT (on stdin) 00:45:33.948107 ====> Client connect 00:45:33.954871 Received DATA (on stdin) 00:45:33.955227 > 18 bytes data, server => client 00:45:33.955636 'WE ROOLZ: 201673\r\n' 00:45:33.955886 Received DISC (on stdin) 00:45:33.956003 ====> Client forcibly disconnected 00:45:33.962550 Received QUIT (on stdin) 00:45:33.962657 quits 00:45:33.963178 ============> sockfilt quits 00:46:22.374715 ====> Client connect 00:46:22.392526 Running IPv4 version 00:46:22.392720 Connected to port 34707 00:46:22.393211 Wrote pid 203955 to log/4/server/ftp_sockdata.pid 00:46:22.394003 Received PING (on stdin) 00:46:23.128353 < 27 bytes data, client => server 00:46:23.128836 'Moooooooooooo\n upload this\n' 00:46:23.541900 ====> Client disconnect 00:46:23.545317 Received ACKD (on stdin) 00:46:23.545657 disconnected, no socket to read on 00:46:23.546550 Received QUIT (on stdin) 00:46:23.546651 quits 00:46:23.547180 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 108 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD CWD CWD STOR CWD RETR EPRT |1|127.0.0.1|34707| TYPE I STOR 108 QUIT === End of file server.input === Start of file stderr108 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 27 0 0 100 27 0 5 0:00:05 0:00:05 --:--:-- 6 100 27 0 0 100 27 0 4 0:00:06 0:00:05 0:00:01 6 === End of file stderr108 === Start of file trace108 00:46:20.367657 * Trying 127.0.0.1:38207... 00:46:21.301022 * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 46706 00:46:21.561500 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:46:21.903528 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:46:21.929271 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:46:21.935137 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:46:21.940226 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:46:22.046621 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:46:22.125469 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:46:22.145494 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:46:22.213382 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:46:22.232798 => Send header, 5 bytes (0x5) 0000: PWD 00:46:22.249170 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:46:22.285562 * Entry path is '/' 00:46:22.418871 => Send header, 9 bytes (0x9) 0000: CWD CWD 00:46:22.433371 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:46:22.475561 => Send header, 10 bytes (0xa) 0000: CWD STOR 00:46:22.523496 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:46:22.531993 => Send header, 10 bytes (0xa) 0000: CWD RETR 00:46:22.557618 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:46:22.689407 => Send header, 26 bytes (0x1a) 0000: EPRT |1|127.0.0.1|34707| 00:46:22.884410 <= Recv header, 50 bytes (0x32) 0000: 200 Thanks for dropping by. We contact you later 00:46:22.901993 * Connect data stream actively 00:46:22.990990 * Ready to accept data connection from server 00:46:23.006276 * Connection accepted from server 00:46:23.089696 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 45294) from 127.0.0.1 port 34707 00:46:23.108310 => Send header, 8 bytes (0x8) 0000: TYPE I 00:46:23.122306 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:46:23.156251 => Send header, 10 bytes (0xa) 0000: STOR 108 00:46:23.213333 <= Recv header, 24 bytes (0x18) 0000: 125 Gimme gimme gimme 00:46:23.528676 => Send data, 27 bytes (0x1b) 0000: Moooooooooooo. upload this. 00:46:23.725209 * upload completely sent off: 27 bytes 00:46:23.891481 * Remembering we are in dir "CWD/STOR/RETR/" 00:46:24.001501 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:46:24.317225 * Connection #0 to host 127.0.0.1:38207 left intact === End of file trace108 === Start of file upload.108 Moooooooooooo upload this === End of file upload.108 === Start of file upload108 Moooooooooooo upload this === End of file upload108 === Start of file valgrind108 ==202928== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind108 test 0109...[FTP PASV upload append] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind109 ../src/curl -q --output log/6/curl109.out --include --trace-ascii log/6/trace109 --trace-time ftp://127.0.0.1:39413/109 -T log/6/upload109 --append > log/6/stdout109 2> log/6/stderr109 valgrind ERROR ==203100== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 109 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind109 ../src/curl -q --output log/6/curl109.out --include --trace-ascii log/6/trace109 --trace-time ftp://127.0.0.1:39413/109 -T log/6/upload109 --append > log/6/stdout109 2> log/6/stderr109 === End of file commands.log === Start of file ftp_server.log 00:45:35.685983 ====> Client connect 00:45:35.687311 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:45:35.696843 < "USER anonymous" 00:45:35.701128 > "331 We are happy you popped in![CR][LF]" 00:45:35.702618 < "PASS ftp@example.com" 00:45:35.702944 > "230 Welcome you silly person[CR][LF]" 00:45:35.703677 < "PWD" 00:45:35.703948 > "257 "/" is current directory[CR][LF]" 00:45:35.706054 < "EPSV" 00:45:35.706290 ====> Passive DATA channel requested by client 00:45:35.706440 DATA sockfilt for passive data channel starting... 00:45:35.757260 DATA sockfilt for passive data channel started (pid 203091) 00:45:35.758715 DATA sockfilt for passive data channel listens on port 44511 00:45:35.759258 > "229 Entering Passive Mode (|||44511|)[CR][LF]" 00:45:35.759443 Client has been notified that DATA conn will be accepted on port 44511 00:45:35.762340 Client connects to port 44511 00:45:35.762568 ====> Client established passive DATA connection on port 44511 00:45:35.763199 < "TYPE I" 00:45:35.763475 > "200 I modify TYPE as you wanted[CR][LF]" 00:45:35.764420 < "SIZE verifiedserver" 00:45:35.764890 > "213 18[CR][LF]" 00:45:35.765868 < "RETR verifiedserver" 00:45:35.766171 > "150 Binary junk (18 bytes).[CR][LF]" 00:45:35.768732 =====> Closing passive DATA connection... 00:45:35.768917 Server disconnects passive DATA connection 00:45:35.770391 Server disconnected passive DATA connection 00:45:35.770576 DATA sockfilt for passive data channel quits (pid 203091) 00:45:35.773886 DATA sockfilt for passive data channel quit (pid 203091) 00:45:35.774067 =====> Closed passive DATA connection 00:45:35.774340 > "226 File transfer complete[CR][LF]" 00:45:35.825190 < "QUIT" 00:45:35.825604 > "221 bye bye baby[CR][LF]" 00:45:35.826402 MAIN sockfilt said DISC 00:45:35.826585 ====> Client disconnected 00:45:35.826853 Awaiting input 00:46:22.887216 ====> Client connect 00:46:22.888017 FTPD: Getting commands from log/6/server.cmd 00:46:22.888385 FTPD: run test case number: 109 00:46:22.889486 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:46:24.217556 < "USER anonymous" 00:46:24.217978 > "331 We are happy you popped in![CR][LF]" 00:46:24.319646 < "PASS ftp@example.com" 00:46:24.320133 > "230 Welcome you silly person[CR][LF]" 00:46:24.421348 < "PWD" 00:46:24.422000 > "257 "/" is current directory[CR][LF]" 00:46:24.639713 < "EPSV" 00:46:24.640077 ====> Passive DATA channel requested by client 00:46:24.640238 DATA sockfilt for passive data channel starting... 00:46:24.723476 DATA sockfilt for passive data channel started (pid 203958) 00:46:24.728439 DATA sockfilt for passive data channel listens on port 34553 00:46:24.728898 > "229 Entering Passive Mode (|||34553|)[CR][LF]" 00:46:24.729081 Client has been notified that DATA conn will be accepted on port 34553 00:46:24.931070 Client connects to port 34553 00:46:24.931667 ====> Client established passive DATA connection on port 34553 00:46:25.042005 < "TYPE I" 00:46:25.042823 > "200 I modify TYPE as you wanted[CR][LF]" 00:46:25.093384 < "APPE 109" 00:46:25.093722 STOR test number 109 in log/6/upload.109 00:46:25.094017 > "125 Gimme gimme gimme![CR][LF]" 00:46:25.451533 > Appending 27 bytes to file 00:46:25.918679 =====> Closing passive DATA connection... 00:46:25.918958 Server knows passive DATA connection is already disconnected 00:46:25.919140 DATA sockfilt for passive data channel quits (pid 203958) 00:46:25.922132 DATA sockfilt for passive data channel quit (pid 203958) 00:46:25.922343 =====> Closed passive DATA connection 00:46:25.922536 received 27 bytes upload 00:46:25.923263 > "226 File transfer complete[CR][LF]" 00:46:27.258344 < "QUIT" 00:46:27.259080 > "221 bye bye baby[CR][LF]" 00:46:27.403768 MAIN sockfilt said DISC 00:46:27.404468 ====> Client disconnected 00:46:27.404783 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:45:35.303154 ====> Client connect 00:45:35.308658 Received DATA (on stdin) 00:45:35.308800 > 160 bytes data, server => client 00:45:35.308904 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:45:35.308999 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:45:35.309082 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:45:35.312993 < 16 bytes data, client => server 00:45:35.313161 'USER anonymous\r\n' 00:45:35.314874 Received DATA (on stdin) 00:45:35.314956 > 33 bytes data, server => client 00:45:35.319156 '331 We are happy you popped in!\r\n' 00:45:35.319596 < 22 bytes data, client => server 00:45:35.319675 'PASS ftp@example.com\r\n' 00:45:35.320525 Received DATA (on stdin) 00:45:35.320592 > 30 bytes data, server => client 00:45:35.320671 '230 Welcome you silly person\r\n' 00:45:35.320949 < 5 bytes data, client => server 00:45:35.321020 'PWD\r\n' 00:45:35.321535 Received DATA (on stdin) 00:45:35.321602 > 30 bytes data, server => client 00:45:35.321683 '257 "/" is current directory\r\n' 00:45:35.323241 < 6 bytes data, client => server 00:45:35.323321 'EPSV\r\n' 00:45:35.376825 Received DATA (on stdin) 00:45:35.376974 > 39 bytes data, server => client 00:45:35.377080 '229 Entering Passive Mode (|||44511|)\r\n' 00:45:35.379422 < 8 bytes data, client => server 00:45:35.379513 'TYPE I\r\n' 00:45:35.381056 Received DATA (on stdin) 00:45:35.381126 > 33 bytes data, server => client 00:45:35.381212 '200 I modify TYPE as you wanted\r\n' 00:45:35.381605 < 21 bytes data, client => server 00:45:35.381680 'SIZE verifiedserver\r\n' 00:45:35.382477 Received DATA (on stdin) 00:45:35.382545 > 8 bytes data, server => client 00:45:35.382612 '213 18\r\n' 00:45:35.383053 < 21 bytes data, client => server 00:45:35.383129 'RETR verifiedserver\r\n' 00:45:35.383758 Received DATA (on stdin) 00:45:35.383825 > 29 bytes data, server => client 00:45:35.383905 '150 Binary junk (18 bytes).\r\n' 00:45:35.391919 Received DATA (on stdin) 00:45:35.392024 > 28 bytes data, server => client 00:45:35.392104 '226 File transfer complete\r\n' 00:45:35.439710 < 6 bytes data, client => server 00:45:35.439890 'QUIT\r\n' 00:45:35.443175 Received DATA (on stdin) 00:45:35.443260 > 18 bytes data, server => client 00:45:35.443337 '221 bye bye baby\r\n' 00:45:35.443930 ====> Client disconnect 00:45:35.444209 Received ACKD (on stdin) 00:46:22.504436 ====> Client connect 00:46:22.506912 Received DATA (on stdin) 00:46:22.507029 > 160 bytes data, server => client 00:46:22.507141 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:46:22.507245 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:46:22.507339 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:46:23.828571 < 16 bytes data, client => server 00:46:23.828772 'USER anonymous\r\n' 00:46:23.835468 Received DATA (on stdin) 00:46:23.835578 > 33 bytes data, server => client 00:46:23.835671 '331 We are happy you popped in!\r\n' 00:46:23.935993 < 22 bytes data, client => server 00:46:23.936193 'PASS ftp@example.com\r\n' 00:46:23.937912 Received DATA (on stdin) 00:46:23.937995 > 30 bytes data, server => client 00:46:23.938088 '230 Welcome you silly person\r\n' 00:46:24.030309 < 5 bytes data, client => server 00:46:24.035852 'PWD\r\n' 00:46:24.039828 Received DATA (on stdin) 00:46:24.039963 > 30 bytes data, server => client 00:46:24.040058 '257 "/" is current directory\r\n' 00:46:24.256505 < 6 bytes data, client => server 00:46:24.256687 'EPSV\r\n' 00:46:24.348549 Received DATA (on stdin) 00:46:24.348707 > 39 bytes data, server => client 00:46:24.348808 '229 Entering Passive Mode (|||34553|)CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind110 ../src/curl -q --output log/1/curl110.out --include --trace-ascii log/1/trace110 --trace-time ftp://127.0.0.1:37481/110 -C 20 > log/1/stdout110 2> log/1/stderr110 \r\n' 00:46:24.658587 < 8 bytes data, client => server 00:46:24.658768 'TYPE I\r\n' 00:46:24.659934 Received DATA (on stdin) 00:46:24.660014 > 33 bytes data, server => client 00:46:24.660130 '200 I modify TYPE as you wanted\r\n' 00:46:24.709736 < 10 bytes data, client => server 00:46:24.709927 'APPE 109\r\n' 00:46:24.715197 Received DATA (on stdin) 00:46:24.715307 > 24 bytes data, server => client 00:46:24.715397 '125 Gimme gimme gimme!\r\n' 00:46:25.540306 Received DATA (on stdin) 00:46:25.540464 > 28 bytes data, server => client 00:46:25.540576 '226 File transfer complete\r\n' 00:46:26.874711 < 6 bytes data, client => server 00:46:26.874888 'QUIT\r\n' 00:46:26.876254 Received DATA (on stdin) 00:46:26.876335 > 18 bytes data, server => client 00:46:26.876435 '221 bye bye baby\r\n' 00:46:27.020988 ====> Client disconnect 00:46:27.021820 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:45:35.365351 Running IPv4 version 00:45:35.373241 Listening on port 44511 00:45:35.373712 Wrote pid 203091 to log/6/server/ftp_sockdata.pid 00:45:35.374510 Received PING (on stdin) 00:45:35.375622 Received PORT (on stdin) 00:45:35.379778 ====> Client connect 00:45:35.386726 Received DATA (on stdin) 00:45:35.387051 > 18 bytes data, server => client 00:45:35.387443 'WE ROOLZ: 201819\r\n' 00:45:35.387697 Received DISC (on stdin) 00:45:35.387814 ====> Client forcibly disconnected 00:45:35.388367 Received QUIT (on stdin) 00:45:35.388442 quits 00:45:35.388969 ============> sockfilt quits 00:46:24.321185 Running IPv4 version 00:46:24.339250 Listening on port 34553 00:46:24.339813 Wrote pid 203958 to log/6/server/ftp_sockdata.pid 00:46:24.340627 Received PING (on stdin) 00:46:24.345199 Received PORT (on stdin) 00:46:24.545706 ====> Client connect 00:46:25.066210 < 27 bytes data, client => server 00:46:25.066650 'Moooooooooooo\n upload this\n' 00:46:25.535238 ====> Client disconnect 00:46:25.535617 Received ACKD (on stdin) 00:46:25.536864 Received QUIT (on stdin) 00:46:25.536956 quits 00:46:25.537440 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 109 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I APPE 109 QUIT === End of file server.input === Start of file stderr109 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 27 0 0 100 27 0 5 0:00:05 0:00:04 0:00:01 7 100 27 0 0 100 27 0 5 0:00:05 0:00:05 --:--:-- 6 === End of file stderr109 === Start of file trace109 00:46:22.556740 * Trying 127.0.0.1:39413... 00:46:23.466270 * Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 54782 00:46:23.724061 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:46:24.084361 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:46:24.113758 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:46:24.120326 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:46:24.125219 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:46:24.228961 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:46:24.295824 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:46:24.319797 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:46:24.391755 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:46:24.412853 => Send header, 5 bytes (0x5) 0000: PWD 00:46:24.447549 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:46:24.484953 * Entry path is '/' 00:46:24.588440 * Request has same path as previous transfer 00:46:24.638601 => Send header, 6 bytes (0x6) 0000: EPSV 00:46:24.654115 * Connect data stream passively 00:46:24.734154 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||34553|) 00:46:24.856233 * Connecting to 127.0.0.1 (127.0.0.1) port 34553 00:46:24.922096 * Trying 127.0.0.1:34553... 00:46:25.016748 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 34553) from 127.0.0.1 port 46566 00:46:25.038802 => Send header, 8 bytes (0x8) 0000: TYPE I 00:46:25.054928 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:46:25.092278 => Send header, 10 bytes (0xa) 0000: APPE 109 00:46:25.125918 <= Recv header, 24 bytes (0x18) 0000: 125 Gimme gimme gimme 00:46:25.466545 => Send data, 27 bytes (0x1b) 0000: Moooooooooooo. upload this. 00:46:25.661574 * upload completely sent off: 27 bytes 00:46:25.829955 * Remembering we are in dir "" 00:46:26.043555 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:46:26.398407 * Connection #0 to host 127.0.0.1:39413 left intact === End of file trace109 === Start of file upload.109 Moooooooooooo upload this === End of file upload.109 === Start of file upload109 Moooooooooooo upload this === End of file upload109 === Start of file valgrind109 ==203100== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind109 test 0110...[FTP download resume with set limit] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind110 ../src/curl -q --output log/1/curl110.out --include --trace-ascii log/1/trace110 --trace-time ftp://127.0.0.1:37481/110 -C 20 > log/1/stdout110 2> log/1/stderr110 valgrind ERROR ==203273== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 110 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind110 ../src/curl -q --output log/1/curl110.out --include --trace-ascii log/1/trace110 --trace-time ftp://127.0.0.1:37481/110 -C 20 > log/1/stdout110 2> log/1/stderr110 === End of file commands.log === Start of file curl110.out expected to be a file without the first part but we emulate that === End of file curl110.out === Start of file ftp_server.log 00:45:40.418072 ====> Client connect 00:45:40.419946 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:45:40.424844 < "USER anonymous" 00:45:40.425955 > "331 We are happy you popped in![CR][LF]" 00:45:40.426921 < "PASS ftp@example.com" 00:45:40.427187 > "230 Welcome you silly person[CR][LF]" 00:45:40.428302 < "PWD" 00:45:40.430667 > "257 "/" is current directory[CR][LF]" 00:45:40.431327 < "EPSV" 00:45:40.431536 ====> Passive DATA channel requested by client 00:45:40.431681 DATA sockfilt for passive data channel starting... 00:45:40.475021 DATA sockfilt for passive data channel started (pid 203267) 00:45:40.476348 DATA sockfilt for passive data channel listens on port 40171 00:45:40.477281 > "229 Entering Passive Mode (|||40171|)[CR][LF]" 00:45:40.477457 Client has been notified that DATA conn will be accepted on port 40171 00:45:40.480322 Client connects to port 40171 00:45:40.480530 ====> Client established passive DATA connection on port 40171 00:45:40.481163 < "TYPE I" 00:45:40.481710 > "200 I modify TYPE as you wanted[CR][LF]" 00:45:40.482636 < "SIZE verifiedserver" 00:45:40.483950 > "213 18[CR][LF]" 00:45:40.484509 < "RETR verifiedserver" 00:45:40.486894 > "150 Binary junk (18 bytes).[CR][LF]" 00:45:40.487456 =====> Closing passive DATA connection... 00:45:40.487613 Server disconnects passive DATA connection 00:45:40.491323 Server disconnected passive DATA connection 00:45:40.491501 DATA sockfilt for passive data channel quits (pid 203267) 00:45:40.494873 DATA sockfilt for passive data channel quit (pid 203267) 00:45:40.495044 =====> Closed passive DATA connection 00:45:40.495291 > "226 File transfer complete[CR][LF]" 00:45:40.535632 < "QUIT" 00:45:40.536195 > "221 bye bye baby[CR][LF]" 00:45:40.537074 MAIN sockfilt said DISC 00:45:40.537372 ====> Client disconnected 00:45:40.537626 Awaiting input 00:46:27.323578 ====> Client connect 00:46:27.324417 FTPD: Getting commands from log/1/server.cmd 00:46:27.325292 FTPD: set custom reply for EPSV command 00:46:27.325576 FTPD: run test case number: 110 00:46:27.331149 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:46:28.717207 < "USER anonymous" 00:46:28.717991 > "331 We are happy you popped in![CR][LF]" 00:46:28.847547 < "PASS ftp@example.com" 00:46:28.848046 > "230 Welcome you silly person[CR][LF]" 00:46:28.940659 < "PWD" 00:46:28.941325 > "257 "/" is current directory[CR][LF]" 00:46:29.161919 < "EPSV" 00:46:29.162375 > "500 no such command[CR][LF]" 00:46:29.262015 < "PASV" 00:46:29.262373 ====> Passive DATA channel requested by client 00:46:29.262528 DATA sockfilt for passive data channel starting... 00:46:29.321787 DATA sockfilt for passive data channel started (pid 204305) 00:46:29.323315 DATA sockfilt for passive data channel listens on port 38175 00:46:29.324330 > "227 Entering Passive Mode (127,0,0,1,149,31)[CR][LF]" 00:46:29.324544 Client has been notified that DATA conn will be accepted on port 38175 00:46:29.567768 Client connects to port 38175 00:46:29.568386 ====> Client established passive DATA connection on port 38175 00:46:29.711928 < "TYPE I" 00:46:29.712393 > "200 I modify TYPE as you wanted[CR][LF]" 00:46:29.771927 < "SIZE 110" 00:46:29.773960 > "213 85[CR][LF]" 00:46:29.871937 < "REST 20" 00:46:29.872403 > "350 Yeah yeah we set it there for you[CR][LF]" 00:46:29.872660 Set REST position to 20 00:46:29.903069 < "RETR 110" 00:46:29.905783 REST 20 was removed from size, makes 45 left 00:46:29.906116 > "150 Binary data connection for 110 () (45 bytes).[CR][LF]" 00:46:29.906721 =====> Closing passive DATA connection... 00:46:29.906903 Server disconnects passive DATA connection 00:46:29.909866 Server disconnected passive DATA connection 00:46:29.910140 DATA sockfilt for passive data channel quits (pid 204305) 00:46:29.913682 DATA sockfilt for passive data channel quit (pid 204305) 00:46:29.914025 =====> Closed passive DATA connection 00:46:29.914411 > "226 File transfer complete[CR][LF]" 00:46:32.002501 < "QUIT" 00:46:32.002943 > "221 bye bye baby[CR][LF]" 00:46:32.139824 MAIN sockfilt said DISC 00:46:32.140487 ====> Client disconnected 00:46:32.140815 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:45:41.035319 ====> Client connect 00:45:41.036897 Received DATA (on stdin) 00:45:41.036972 > 160 bytes data, server => client 00:45:41.037106 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:45:41.037215 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:45:41.037313 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:45:41.041465 < 16 bytes data, client => server 00:45:41.041597 'USER anonymous\r\n' 00:45:41.042768 Received DATA (on stdin) 00:45:41.042842 > 33 bytes data, server => client 00:45:41.043404 '331 We are happy you popped in!\r\n' 00:45:41.043986 < 22 bytes data, client => server 00:45:41.044064 'PASS ftp@example.com\r\n' 00:45:41.044996 Received DATA (on stdin) 00:45:41.045064 > 30 bytes data, server => client 00:45:41.045142 '230 Welcome you silly person\r\n' 00:45:41.045380 < 5 bytes data, client => server 00:45:41.045448 'PWD\r\n' 00:45:41.046148 Received DATA (on stdin) 00:45:41.046215 > 30 bytes data, server => client 00:45:41.046313 '257 "/" is current directory\r\n' 00:45:41.048505 < 6 bytes data, client => server 00:45:41.048581 'EPSV\r\n' 00:45:41.094424 Received DATA (on stdin) 00:45:41.094576 > 39 bytes data, server => client 00:45:41.094701 '229 Entering Passive Mode (|||40171|)\r\n' 00:45:41.097771 < 8 bytes data, client => server 00:45:41.097845 'TYPE I\r\n' 00:45:41.099016 Received DATA (on stdin) 00:45:41.099089 > 33 bytes data, server => client 00:45:41.099195 '200 I modify TYPE as you wanted\r\n' 00:45:41.099791 < 21 bytes data, client => server 00:45:41.099866 'SIZE verifiedserver\r\n' 00:45:41.100613 Received DATA (on stdin) 00:45:41.100676 > 8 bytes data, server => client 00:45:41.100861 '213 18\r\n' 00:45:41.101368 < 21 bytes data, client => server 00:45:41.101447 'RETR verifiedserver\r\n' 00:45:41.102394 Received DATA (on stdin) 00:45:41.102462 > 29 bytes data, server => client 00:45:41.102558 '150 Binary junk (18 bytes).\r\n' 00:45:41.115050 Received DATA (on stdin) 00:45:41.115143 > 28 bytes data, server => client 00:45:41.115222 '226 File transfer complete\r\n' 00:45:41.152491 < 6 bytes data, client => server 00:45:41.152592 'QUIT\r\n' 00:45:41.153519 Received DATA (on stdin) 00:45:41.153587 > 18 bytes data, server => client 00:45:41.153678 '221 bye bye baby\r\n' 00:45:41.154597 ====> Client disconnect 00:45:41.154871 Received ACKD (on stdin) 00:46:27.940763 ====> Client connect 00:46:27.945190 Received DATA (on stdin) 00:46:27.945312 > 160 bytes data, server => client 00:46:27.949052 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:46:27.949180 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:46:27.949271 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:46:29.333770 < 16 bytes data, client => server 00:46:29.333975 'USER anonymous\r\n' 00:46:29.335130 Received DATA (on stdin) 00:46:29.335218 > 33 bytes data, server => client 00:46:29.335326 '331 We are happy you popped in!\r\n' 00:46:29.463662 < 22 bytes data, client => server 00:46:29.463855 'PASS ftp@example.com\r\n' 00:46:29.468517 Received DATA (on stdin) 00:46:29.468622 > 30 bytes data, server => client 00:46:29.468722 '230 Welcome you silly person\r\n' 00:46:29.556930 < 5 bytes data, client => server 00:46:29.557125 'PWD\r\n' 00:46:29.558614 Received DATA (on stdin) 00:46:29.558699 > 30 bytes data, server => client 00:46:29.559087 '257 "/" is current directory\r\n' 00:46:29.776220 < 6 bytes data, client => server 00:46:29.776419 'EPSV\r\n' 00:46:29.780144 Received DATA (on stdin) 00:46:29.780272 > 21 bytes data, server => client 00:46:29.780363 '500 no such command\r\n' 00:46:29.878568 < 6 bytes data, client => server 00:46:29.878753 'PASV\r\n' 00:46:29.941305 Received DATA (on stdin) 00:46:29.941467 > 46 bytes data, server => client 00:46:29.941606 '227 Entering Passive Mode (127,0,0,1,149,31)\r\n' 00:46:30.327341 < 8 bytes data, client => server 00:46:30.327533 'TYPE I\r\n' 00:46:30.329838 Received DATA (on stdin) 00:46:30.329936 > 33 bytes data, server => client 00:46:30.330044 '200 I modify TYPE as you wanted\r\n' 00:46:30.386265 < 10 bytes data, client => server 00:46:30.386491 'SIZE 110\r\n' 00:46:30.391446 Received DATA (on stdin) 00:46:30.391559 > 8 bytes data, server => client 00:46:30.391640 '213 85\r\n' 00:46:30.485225 < 9 bytes data, client => server 00:46:30.485435 'REST 20\r\n' 00:46:30.489874 Received DATA (on stdin) 00:46:30.489988 > 39 bytes data, server => client 00:46:30.490086 '350 Yeah yeah we set it there for you\r\n' 00:46:30.519622 < 10 bytes data, client => server 00:46:30.519826 'RETR 110\r\n' 00:46:30.523601 Received DATA (on stdin) 00:46:30.523710 > 51 bytes data, server => client 00:46:30.523818 '150 Binary data connection for 110 () (45 bytes).\r\n' 00:46:30.531855 Received DATA (on stdin) 00:46:30.532012 > 28 bytes data, server => client 00:46:30.532116 '226 File transfer complete\r\n' 00:46:32.618605 < 6 bytes data, client => server 00:46:32.618996 'QUIT\r\n' 00:46:32.625197 Received DATA (on stdin) 00:46:32.625330 > 18 bytes data, server => clientCMD (9216): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind111 ../src/curl -q --output log/2/curl111.out --include --trace-ascii log/2/trace111 --trace-time ftp://127.0.0.1:39881/111 -C 2000 > log/2/stdout111 2> log/2/stderr111 00:46:32.625426 '221 bye bye baby\r\n' 00:46:32.757030 ====> Client disconnect 00:46:32.757831 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:45:40.083420 Running IPv4 version 00:45:40.091099 Listening on port 40171 00:45:40.091531 Wrote pid 203267 to log/1/server/ftp_sockdata.pid 00:45:40.092291 Received PING (on stdin) 00:45:40.093304 Received PORT (on stdin) 00:45:40.097612 ====> Client connect 00:45:40.105416 Received DATA (on stdin) 00:45:40.105713 > 18 bytes data, server => client 00:45:40.106119 'WE ROOLZ: 202066\r\n' 00:45:40.108620 Received DISC (on stdin) 00:45:40.108747 ====> Client forcibly disconnected 00:45:40.109318 Received QUIT (on stdin) 00:45:40.109396 quits 00:45:40.109893 ============> sockfilt quits 00:46:29.928609 Running IPv4 version 00:46:29.937442 Listening on port 38175 00:46:29.937996 Wrote pid 204305 to log/1/server/ftp_sockdata.pid 00:46:29.938897 Received PING (on stdin) 00:46:29.940105 Received PORT (on stdin) 00:46:30.184562 ====> Client connect 00:46:30.523999 Received DATA (on stdin) 00:46:30.524383 > 45 bytes data, server => client 00:46:30.524791 'expected to be a file without the first part\n' 00:46:30.525070 Received DATA (on stdin) 00:46:30.525148 > 20 bytes data, server => client 00:46:30.525246 'but we emulate that\n' 00:46:30.525350 Received DISC (on stdin) 00:46:30.525471 ====> Client forcibly disconnected 00:46:30.527846 Received QUIT (on stdin) 00:46:30.527957 quits 00:46:30.528586 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPSV 500 no such command Testnum 110 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV PASV TYPE I SIZE 110 REST 20 RETR 110 QUIT === End of file server.input === Start of file stderr110 ** Resuming transfer from byte position 20 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 65 100 65 0 0 11 0 0:00:05 0:00:05 --:--:-- 15 100 65 100 65 0 0 10 0 0:00:06 0:00:05 0:00:01 13 === End of file stderr110 === Start of file trace110 00:46:26.947925 * Trying 127.0.0.1:37481... 00:46:27.911759 * Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 127.0.0.1 port 43472 00:46:28.174381 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:46:28.558532 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:46:28.589830 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:46:28.598180 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:46:28.603607 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:46:28.735634 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:46:28.823248 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:46:28.847443 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:46:28.918828 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:46:28.939494 => Send header, 5 bytes (0x5) 0000: PWD 00:46:28.958145 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:46:28.996752 * Entry path is '/' 00:46:29.103428 * Request has same path as previous transfer 00:46:29.158797 => Send header, 6 bytes (0x6) 0000: EPSV 00:46:29.174173 * Connect data stream passively 00:46:29.184206 <= Recv header, 21 bytes (0x15) 0000: 500 no such command 00:46:29.234127 * Failed EPSV attempt. Disabling EPSV 00:46:29.259190 => Send header, 6 bytes (0x6) 0000: PASV 00:46:29.342969 <= Recv header, 46 bytes (0x2e) 0000: 227 Entering Passive Mode (127,0,0,1,149,31) 00:46:29.383427 * Skip 127.0.0.1 for data connection, reuse 127.0.0.1 instead 00:46:29.483033 * Connecting to 127.0.0.1 (127.0.0.1) port 38175 00:46:29.559704 * Trying 127.0.0.1:38175... 00:46:29.661530 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 38175) from 127.0.0.1 port 42400 00:46:29.709917 => Send header, 8 bytes (0x8) 0000: TYPE I 00:46:29.731834 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:46:29.768824 => Send header, 10 bytes (0xa) 0000: SIZE 110 00:46:29.800535 <= Recv header, 8 bytes (0x8) 0000: 213 85 00:46:29.858754 * Instructs server to resume from offset 20 00:46:29.866026 => Send header, 9 bytes (0x9) 0000: REST 20 00:46:29.885213 <= Recv header, 39 bytes (0x27) 0000: 350 Yeah yeah we set it there for you 00:46:29.902201 => Send header, 10 bytes (0xa) 0000: RETR 110 00:46:29.913662 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 110 () (45 bytes). 00:46:29.961184 * Maxdownload = -1 00:46:29.974085 * Getting file with size: 65 00:46:30.131376 <= Recv data, 65 bytes (0x41) 0000: expected to be a file without the first part.but we emulate that 0040: . 00:46:30.451478 * abort upload 00:46:30.477859 <= Recv data, 0 bytes (0x0) 00:46:30.690002 * Remembering we are in dir "" 00:46:30.875106 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:46:31.203670 * Connection #0 to host 127.0.0.1:37481 left intact === End of file trace110 === Start of file valgrind110 ==203273== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind110 test 0111...[FTP download resume beyond file size] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind111 ../src/curl -q --output log/2/curl111.out --include --trace-ascii log/2/trace111 --trace-time ftp://127.0.0.1:39881/111 -C 2000 > log/2/stdout111 2> log/2/stderr111 valgrind ERROR ==203447== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 111 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind111 ../src/curl -q --output log/2/curl111.out --include --trace-ascii log/2/trace111 --trace-time ftp://127.0.0.1:39881/111 -C 2000 > log/2/stdout111 2> log/2/stderr111 === End of file commands.log === Start of file ftp_server.log 00:45:49.140052 ====> Client connect 00:45:49.141751 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:45:49.148637 < "USER anonymous" 00:45:49.149143 > "331 We are happy you popped in![CR][LF]" 00:45:49.154738 < "PASS ftp@example.com" 00:45:49.154974 > "230 Welcome you silly person[CR][LF]" 00:45:49.155927 < "PWD" 00:45:49.156180 > "257 "/" is current directory[CR][LF]" 00:45:49.158317 < "EPSV" 00:45:49.158507 ====> Passive DATA channel requested by client 00:45:49.158641 DATA sockfilt for passive data channel starting... 00:45:49.200970 DATA sockfilt for passive data channel started (pid 203438) 00:45:49.204856 DATA sockfilt for passive data channel listens on port 32923 00:45:49.205406 > "229 Entering Passive Mode (|||32923|)[CR][LF]" 00:45:49.205573 Client has been notified that DATA conn will be accepted on port 32923 00:45:49.208441 Client connects to port 32923 00:45:49.208649 ====> Client established passive DATA connection on port 32923 00:45:49.209757 < "TYPE I" 00:45:49.210057 > "200 I modify TYPE as you wanted[CR][LF]" 00:45:49.211594 < "SIZE verifiedserver" 00:45:49.212027 > "213 18[CR][LF]" 00:45:49.213609 < "RETR verifiedserver" 00:45:49.214085 > "150 Binary junk (18 bytes).[CR][LF]" 00:45:49.217502 =====> Closing passive DATA connection... 00:45:49.218291 Server disconnects passive DATA connection 00:45:49.218823 Server disconnected passive DATA connection 00:45:49.218998 DATA sockfilt for passive data channel quits (pid 203438) 00:45:49.222565 DATA sockfilt for passive data channel quit (pid 203438) 00:45:49.222762 =====> Closed passive DATA connection 00:45:49.223023 > "226 File transfer complete[CR][LF]" 00:45:49.267049 < "QUIT" 00:45:49.268336 > "221 bye bye baby[CR][LF]" 00:45:49.268569 MAIN sockfilt said DISC 00:45:49.268764 ====> Client disconnected 00:45:49.269054 Awaiting input 00:46:37.312717 ====> Client connect 00:46:37.313468 FTPD: Getting commands from log/2/server.cmd 00:46:37.313787 FTPD: run test case number: 111 00:46:37.315389 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:46:38.557484 < "USER anonymous" 00:46:38.558223 > "331 We are happy you popped in![CR][LF]" 00:46:38.668607 < "PASS ftp@example.com" 00:46:38.669338 > "230 Welcome you silly person[CR][LF]" 00:46:38.754335 < "PWD" 00:46:38.755052 > "257 "/" is current directory[CR][LF]" 00:46:38.951366 < "EPSV" 00:46:38.951698 ====> Passive DATA channel requested by client 00:46:38.951856 DATA sockfilt for passive data channel starting... 00:46:39.016077 DATA sockfilt for passive data channel started (pid 204747) 00:46:39.017474 DATA sockfilt for passive data channel listens on port 39411 00:46:39.017855 > "229 Entering Passive Mode (|||39411|)[CR][LF]" 00:46:39.018049 Client has been notified that DATA conn will be accepted on port 39411 00:46:39.227758 Client connects to port 39411 00:46:39.228352 ====> Client established passive DATA connection on port 39411 00:46:39.350325 < "TYPE I" 00:46:39.350764 > "200 I modify TYPE as you wanted[CR][LF]" 00:46:39.401505 < "SIZE 111" 00:46:39.403311 > "213 85[CR][LF]" 00:46:40.711870 < "QUIT" 00:46:40.712290 > "221 bye bye baby[CR][LF]" 00:46:40.897287 MAIN sockfilt said DISC 00:46:40.897792 ====> Client disconnected 00:46:40.901189 DATA sockfilt for passive data channel killed now 00:46:40.901467 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:45:49.757275 ====> Client connect 00:45:49.758771 Received DATA (on stdin) 00:45:49.758845 > 160 bytes data, server => client 00:45:49.758963 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:45:49.759051 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:45:49.759132 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:45:49.765509 < 16 bytes data, client => server 00:45:49.765584 'USER anonymous\r\n' 00:45:49.766471 Received DATA (on stdin) 00:45:49.766531 > 33 bytes data, server => client 00:45:49.766621 '331 We are happy you popped in!\r\n' 00:45:49.766857 < 22 bytes data, client => server 00:45:49.766926 'PASS ftp@example.com\r\n' 00:45:49.772747 Received DATA (on stdin) 00:45:49.772815 > 30 bytes data, server => client 00:45:49.772888 '230 Welcome you silly person\r\n' 00:45:49.773106 < 5 bytes data, client => server 00:45:49.773163 'PWD\r\n' 00:45:49.773949 Received DATA (on stdin) 00:45:49.774008 > 30 bytes data, server => client 00:45:49.774079 '257 "/" is current directory\r\n' 00:45:49.775489 < 6 bytes data, client => server 00:45:49.775552 'EPSV\r\n' 00:45:49.823251 Received DATA (on stdin) 00:45:49.823410 > 39 bytes data, server => client 00:45:49.823515 '229 Entering Passive Mode (|||32923|)\r\n' 00:45:49.826869 < 8 bytes data, client => server 00:45:49.826956 'TYPE I\r\n' 00:45:49.828065 Received DATA (on stdin) 00:45:49.828142 > 33 bytes data, server => client 00:45:49.828236 '200 I modify TYPE as you wanted\r\n' 00:45:49.828671 < 21 bytes data, client => server 00:45:49.828757 'SIZE verifiedserver\r\n' 00:45:49.829985 Received DATA (on stdin) 00:45:49.830059 > 8 bytes data, server => client 00:45:49.830136 '213 18\r\n' 00:45:49.830696 < 21 bytes data, client => server 00:45:49.830778 'RETR verifiedserver\r\n' 00:45:49.831486 Received DATA (on stdin) 00:45:49.831557 > 29 bytes data, server => client 00:45:49.832431 '150 Binary junk (18 bytes).\r\n' 00:45:49.840818 Received DATA (on stdin) 00:45:49.840895 > 28 bytes data, server => client 00:45:49.840975 '226 File transfer complete\r\n' 00:45:49.883647 < 6 bytes data, client => server 00:45:49.883774 'QUIT\r\n' 00:45:49.884985 Received DATA (on stdin) 00:45:49.885060 > 18 bytes data, server => client 00:45:49.885166 '221 bye bye baby\r\n' 00:45:49.885789 ====> Client disconnect 00:45:49.891915 Received ACKD (on stdin) 00:46:37.929903 ====> Client connect 00:46:37.932270 Received DATA (on stdin) 00:46:37.932352 > 160 bytes data, server => client 00:46:37.932485 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:46:37.932588 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:46:37.932679 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:46:39.173738 < 16 bytes data, client => server 00:46:39.173925 'USER anonymous\r\n' 00:46:39.175375 Received DATA (on stdin) 00:46:39.175454 > 33 bytes data, server => client 00:46:39.175563 '331 We are happy you popped in!\r\n' 00:46:39.284904 < 22 bytes data, client => server 00:46:39.285098 'PASS ftp@example.com\r\n' 00:46:39.286496 Received DATA (on stdin) 00:46:39.286574 > 30 bytes data, server => client 00:46:39.286676 '230 Welcome you silly person\r\n' 00:46:39.370800 < 5 bytes data, client => server 00:46:39.370954 'PWD\r\n' 00:46:39.372205 Received DATA (on stdin) 00:46:39.372281 > 30 bytes data, server => client 00:46:39.372385 '257 "/" is current directory\r\n' 00:46:39.567698 < 6 bytes data, client => server 00:46:39.567890 'EPSV\r\n' 00:46:39.635895 Received DATA (on stdin) 00:46:39.636040 > 39 bytes data, server => client 00:46:39.636136 '229 Entering Passive Mode (|||39411|)\r\n' 00:46:39.966807 < 8 bytes data, client => server 00:46:39.967019 'TYPE I\r\n' 00:46:39.968204 Received DATA (on stdin) 00:46:39.968278 > 33 bytes data, server => client 00:46:39.968367 '200 I modify TYPE as you wanted\r\n' 00:46:40.018204 < 10 bytes data, client => server 00:46:40.018355 'SIZE 111\r\n' 00:46:40.020768 Received DATA (on stdin) 00:46:40.020850 > 8 bytes data, server => client 00:46:40.020926 '213 85\r\n' 00:46:41.326080 < 6 bytes data, client => server 00:46:41.326274 'QUIT\r\n' 00:46:41.329732 Received DATA (on stdin) 00:46:41.329806 > 18 bytes data, server => client 00:46:41.329880 '221 bye bye baby\r\n' 00:46:41.514507 ====> Client disconnect 00:46:41.516426 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:45:49.807854 Running IPv4 version 00:45:49.816759 Listening on port 32923 00:45:49.817263 Wrote pid 203438 to log/2/server/ftp_sockdata.pid 00:45:49.818164 Received PING (on stdin) 00:45:49.819097 Received PORT (on stdin) 00:45:49.825922 ====> Client connect 00:45:49.831927 Received DATA (on stdin) 00:45:49.832258 > 18 bytes data, server => client 00:45:49.835524 'WE ROOLZ: 202189\r\n' 00:45:49.836091 Received DISC (on stdin) 00:45:49.836217 ====> Client forcibly disconnected 00:45:49.836815 Received QUIT (on stdin) 00:45:49.836896 quits 00:45:49.837435 ============> sockfilt quits 00:46:39.622825 Running IPv4 version 00:46:39.632005 Listening on port 39411 00:46:39.632493 Wrote pid 204747 to log/2/server/ftp_sockdata.pid 00:46:39.633211 Received PING (on stdin) 00:46:39.634300 Received PORT (on stdin) 00:46:39.843371 ====> Client connect 00:46:40.281913 ====> Client disconnect === End of file ftp_sockdata.log === Start of file server.cmd Testnum 111 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE 111 QUIT === End of file server.input === Start of file stderr111 ** Resuming transfer from byte position 2000 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind112 ../src/curl -q --output log/5/curl112.out --include --trace-ascii log/5/trace112 --trace-time ftp://127.0.0.1:33729/112 -T log/5/upload112 -C 40 > log/5/stdout112 2> log/5/stderr112 :--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 85 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (36) Offset (2000) was beyond file size (85) === End of file stderr111 === Start of file trace111 00:46:37.006232 * Trying 127.0.0.1:39881... 00:46:37.865027 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 57160 00:46:38.093378 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:46:38.439481 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:46:38.464314 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:46:38.471425 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:46:38.476391 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:46:38.575874 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:46:38.646875 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:46:38.668591 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:46:38.734628 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:46:38.753345 => Send header, 5 bytes (0x5) 0000: PWD 00:46:38.769566 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:46:38.804379 * Entry path is '/' 00:46:38.901448 * Request has same path as previous transfer 00:46:38.950207 => Send header, 6 bytes (0x6) 0000: EPSV 00:46:38.966788 * Connect data stream passively 00:46:39.034564 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||39411|) 00:46:39.154011 * Connecting to 127.0.0.1 (127.0.0.1) port 39411 00:46:39.219867 * Trying 127.0.0.1:39411... 00:46:39.308683 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 39411) from 127.0.0.1 port 43398 00:46:39.349437 => Send header, 8 bytes (0x8) 0000: TYPE I 00:46:39.368128 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:46:39.400785 => Send header, 10 bytes (0xa) 0000: SIZE 111 00:46:39.438568 <= Recv header, 8 bytes (0x8) 0000: 213 85 00:46:39.511158 * Offset (2000) was beyond file size (85) 00:46:39.587651 * Remembering we are in dir "" 00:46:40.002190 * Connection #0 to host 127.0.0.1:39881 left intact === End of file trace111 === Start of file valgrind111 ==203447== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind111 test 0112...[FTP PASV upload resume] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind112 ../src/curl -q --output log/5/curl112.out --include --trace-ascii log/5/trace112 --trace-time ftp://127.0.0.1:33729/112 -T log/5/upload112 -C 40 > log/5/stdout112 2> log/5/stderr112 valgrind ERROR ==203597== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 112 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind112 ../src/curl -q --output log/5/curl112.out --include --trace-ascii log/5/trace112 --trace-time ftp://127.0.0.1:33729/112 -T log/5/upload112 -C 40 > log/5/stdout112 2> log/5/stderr112 === End of file commands.log === Start of file ftp_server.log 00:45:50.805456 ====> Client connect 00:45:50.806675 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:45:50.816076 < "USER anonymous" 00:45:50.816755 > "331 We are happy you popped in![CR][LF]" 00:45:50.817447 < "PASS ftp@example.com" 00:45:50.821037 > "230 Welcome you silly person[CR][LF]" 00:45:50.821915 < "PWD" 00:45:50.822163 > "257 "/" is current directory[CR][LF]" 00:45:50.824263 < "EPSV" 00:45:50.824468 ====> Passive DATA channel requested by client 00:45:50.824609 DATA sockfilt for passive data channel starting... 00:45:50.863814 DATA sockfilt for passive data channel started (pid 203583) 00:45:50.864952 DATA sockfilt for passive data channel listens on port 38509 00:45:50.868895 > "229 Entering Passive Mode (|||38509|)[CR][LF]" 00:45:50.869080 Client has been notified that DATA conn will be accepted on port 38509 00:45:50.872068 Client connects to port 38509 00:45:50.872344 ====> Client established passive DATA connection on port 38509 00:45:50.873005 < "TYPE I" 00:45:50.873940 > "200 I modify TYPE as you wanted[CR][LF]" 00:45:50.874442 < "SIZE verifiedserver" 00:45:50.877699 > "213 18[CR][LF]" 00:45:50.878550 < "RETR verifiedserver" 00:45:50.878838 > "150 Binary junk (18 bytes).[CR][LF]" 00:45:50.879906 =====> Closing passive DATA connection... 00:45:50.880066 Server disconnects passive DATA connection 00:45:50.887708 Server disconnected passive DATA connection 00:45:50.887879 DATA sockfilt for passive data channel quits (pid 203583) 00:45:50.891149 DATA sockfilt for passive data channel quit (pid 203583) 00:45:50.891303 =====> Closed passive DATA connection 00:45:50.891536 > "226 File transfer complete[CR][LF]" 00:45:50.931360 < "QUIT" 00:45:50.931768 > "221 bye bye baby[CR][LF]" 00:45:50.932968 MAIN sockfilt said DISC 00:45:50.937660 ====> Client disconnected 00:45:50.938007 Awaiting input 00:46:39.139509 ====> Client connect 00:46:39.140271 FTPD: Getting commands from log/5/server.cmd 00:46:39.140601 FTPD: run test case number: 112 00:46:39.141720 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:46:40.380973 < "USER anonymous" 00:46:40.384390 > "331 We are happy you popped in![CR][LF]" 00:46:40.495608 < "PASS ftp@example.com" 00:46:40.495997 > "230 Welcome you silly person[CR][LF]" 00:46:40.582108 < "PWD" 00:46:40.582510 > "257 "/" is current directory[CR][LF]" 00:46:40.776140 < "EPSV" 00:46:40.776491 ====> Passive DATA channel requested by client 00:46:40.776644 DATA sockfilt for passive data channel starting... 00:46:40.858420 DATA sockfilt for passive data channel started (pid 204750) 00:46:40.859609 DATA sockfilt for passive data channel listens on port 39075 00:46:40.859941 > "229 Entering Passive Mode (|||39075|)[CR][LF]" 00:46:40.860112 Client has been notified that DATA conn will be accepted on port 39075 00:46:41.074406 Client connects to port 39075 00:46:41.074993 ====> Client established passive DATA connection on port 39075 00:46:41.173937 < "TYPE I" 00:46:41.174377 > "200 I modify TYPE as you wanted[CR][LF]" 00:46:41.244126 < "APPE 112" 00:46:41.244455 STOR test number 112 in log/5/upload.112 00:46:41.246320 > "125 Gimme gimme gimme![CR][LF]" 00:46:41.536072 > Appending 21 bytes to file 00:46:41.969070 =====> Closing passive DATA connection... 00:46:41.969336 Server knows passive DATA connection is already disconnected 00:46:41.969506 DATA sockfilt for passive data channel quits (pid 204750) 00:46:41.972835 DATA sockfilt for passive data channel quit (pid 204750) 00:46:41.973008 =====> Closed passive DATA connection 00:46:41.973192 received 21 bytes upload 00:46:41.973500 > "226 File transfer complete[CR][LF]" 00:46:43.131838 < "QUIT" 00:46:43.132258 > "221 bye bye baby[CR][LF]" 00:46:43.270437 MAIN sockfilt said DISC 00:46:43.271003 ====> Client disconnected 00:46:43.271302 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:45:51.422684 ====> Client connect 00:45:51.428593 Received DATA (on stdin) 00:45:51.428680 > 160 bytes data, server => client 00:45:51.428786 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:45:51.428880 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:45:51.428964 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:45:51.432584 < 16 bytes data, client => server 00:45:51.432669 'USER anonymous\r\n' 00:45:51.434039 Received DATA (on stdin) 00:45:51.434106 > 33 bytes data, server => client 00:45:51.434207 '331 We are happy you popped in!\r\n' 00:45:51.434472 < 22 bytes data, client => server 00:45:51.434547 'PASS ftp@example.com\r\n' 00:45:51.435259 Received DATA (on stdin) 00:45:51.435326 > 30 bytes data, server => client 00:45:51.438837 '230 Welcome you silly person\r\n' 00:45:51.439065 < 5 bytes data, client => server 00:45:51.439128 'PWD\r\n' 00:45:51.439935 Received DATA (on stdin) 00:45:51.439998 > 30 bytes data, server => client 00:45:51.440075 '257 "/" is current directory\r\n' 00:45:51.441421 < 6 bytes data, client => server 00:45:51.441484 'EPSV\r\n' 00:45:51.483118 Received DATA (on stdin) 00:45:51.483272 > 39 bytes data, server => client 00:45:51.486954 '229 Entering Passive Mode (|||38509|)\r\n' 00:45:51.489276 < 8 bytes data, client => server 00:45:51.489352 'TYPE I\r\n' 00:45:51.490831 Received DATA (on stdin) 00:45:51.490899 > 33 bytes data, server => client 00:45:51.490998 '200 I modify TYPE as you wanted\r\n' 00:45:51.491346 < 21 bytes data, client => server 00:45:51.491419 'SIZE verifiedserver\r\n' 00:45:51.492381 Received DATA (on stdin) 00:45:51.492449 > 8 bytes data, server => client 00:45:51.495389 '213 18\r\n' 00:45:51.495824 < 21 bytes data, client => server 00:45:51.495900 'RETR verifiedserver\r\n' 00:45:51.496401 Received DATA (on stdin) 00:45:51.496465 > 29 bytes data, server => client 00:45:51.496542 '150 Binary junk (18 bytes).\r\n' 00:45:51.509102 Received DATA (on stdin) 00:45:51.509176 > 28 bytes data, server => client 00:45:51.509255 '226 File transfer complete\r\n' 00:45:51.549568 < 6 bytes data, client => server 00:45:51.549697 'QUIT\r\n' 00:45:51.549775 Received DATA (on stdin) 00:45:51.549837 > 18 bytes data, server => client 00:45:51.549911 '221 bye bye baby\r\n' 00:45:51.550467 ====> Client disconnect 00:45:51.550748 Received ACKD (on stdin) 00:46:39.756693 ====> Client connect 00:46:39.761835 Received DATA (on stdin) 00:46:39.761941 > 160 bytes data, server => client 00:46:39.762053 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:46:39.762154 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:46:39.762246 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:46:40.997283 < 16 bytes data, client => server 00:46:40.997457 'USER anonymous\r\n' 00:46:40.998818 Received DATA (on stdin) 00:46:40.998894 > 33 bytes data, server => client 00:46:41.002137 '331 We are happy you popped in!\r\n' 00:46:41.112026 < 22 bytes data, client => server 00:46:41.112182 'PASS ftp@example.com\r\n' 00:46:41.113699 Received DATA (on stdin) 00:46:41.113771 > 30 bytes data, server => client 00:46:41.113851 '230 Welcome you silly person\r\n' 00:46:41.198684 < 5 bytes data, client => server 00:46:41.198818 'PWD\r\n' 00:46:41.205159 Received DATA (on stdin) 00:46:41.205235 > 30 bytes data, server => client 00:46:41.205317 '257 "/" is current directory\r\n' 00:46:41.392519 < 6 bytes data, client => server 00:46:41.392691 'EPSV\r\n' 00:46:41.477381 Received DATA (on stdin) 00:46:41.477532 > 39 bytes data, server => client 00:46:41.477626 '229 Entering Passive Mode (|||39075|)\r\n' 00:46:41.790462 < 8 bytes data, client => server 00:46:41.790666 'TYPE I\r\n' 00:46:41.791809 Received DATA (on stdin) 00:46:41.791878 > 33 bytes data, server => client 00:46:41.791961 '200 I modify TYPE as you wanted\r\n' 00:46:41.860657 < 10 bytes data, client => server 00:46:41.860823 'APPE 112\r\n' 00:46:41.863754 Received DATA (on stdin) 00:46:41.863828 > 24 bytes data, server => client 00:46:41.863904 '125 Gimme gimme gimme!\r\n' 00:46:42.590921 Received DATA (on stdin) 00:46:42.591081 > 28 bytes data, server => client 00:46:42.591164 '226 File transfer complete\r\n' 00:46:43.745818 < 6 bytes data, client => server 00:46:43.745988 'QUIT\r\n' 00:46:43.749698 Received DATA (on stdin) 00:46:43.749778 > 18 bytes data, server => client 00:46:43.749848 '221 bye bye baby\r\n' 00:46:43.887620 ====> Client disconnect 00:46:43.888494 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:45:50.472526 Running IPv4 version 00:45:50.479928 Listening on port 38509 00:45:50.480365 Wrote pid 203583 to log/5/server/ftp_sockdata.pid 00:45:50.481106 Received PING (on stdin) 00:45:50.481855 Received PORT (on stdin) 00:45:50.489489 ====> Client connect 00:45:50.496650 Received DATA (on stdin) 00:45:50.496930 > 18 bytes data, server => client 00:45:50.497292 'WE ROOLZ: 202313\r\n' 00:45:50.501915 Received DISC (on stdin) 00:45:50.502038 ====> Client forcibly disconnected 00:45:50.505638 Received QUIT (on stdin) 00:45:50.505717 quits 00:45:50.506208 ============> sockfilt quits 00:46:40.455989 Running IPv4 version 00:46:40.470790 Listening on port 39075 00:46:40.471283 Wrote pid 204750 to log/5/server/ftp_sockdata.pid 00:46:40.475380 Received PING (on stdin) 00:46:40.476447 Received PORT (on stdin) 00:46:40.688867 ====> Client connect 00:46:41.152480 < 21 bytes data, client => server 00:46:41.152908 ' gonna upload\n\nworx?\n' 00:46:41.585196 ====> Client disconnect 00:46:41.585631 Received ACKD (on stdin) 00:46:41.587167 Received QUIT (on stdin) 00:46:41.587254 quits 00:46:41.587754 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 112 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I APPE 112 QUIT === End of file server.input === Start of file stderr112 ** Resuming transfer from byte position 40 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 21 0 0 100 21 0 4 0:00:05 0:00:04 0:00:01 5 100 21 0 0 100 21 0 4 0:00:05 0:00:05 --:--:-- 5 === End of file stderr112 === Start of file trace112 00:46:38.824486 * Trying 127.0.0.1:33729... 00:46:39.690452 * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 46534 00:46:39.929910 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:46:40.257529 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:46:40.284797 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:46:40.291655 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:46:40.297833 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:46:40.400580 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:46:40.475095 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:46:40.495804 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:46:40.563099 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:46:40.581233 => Send header, 5 bytes (0x5) 0000: PWD 00:46:40.596586 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:46:40.631006 * Entry path is '/' 00:46:40.726648 * Request has same path as previous transfer 00:46:40.775106 => Send header, 6 bytes (0x6) 0000: EPSV 00:46:40.798880 * Connect data stream passively 00:46:40.880176 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||39075|) 00:46:40.993682 * Connecting to 127.0.0.1 (127.0.0.1) port 39075 00:46:41.063956 * Trying 127.0.0.1:39075... 00:46:41.152747 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 39075) from 127.0.0.1 port 41494 00:46:41.173089 => Send header, 8 bytes (0x8) 0000: TYPE I 00:46:41.188560 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:46:41.243278 => Send hCMD (17152): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind113 ../src/curl -q --output log/3/curl113.out --include --trace-ascii log/3/trace113 --trace-time ftp://127.0.0.1:37331/113 > log/3/stdout113 2> log/3/stderr113 eader, 10 bytes (0xa) 0000: APPE 112 00:46:41.274866 <= Recv header, 24 bytes (0x18) 0000: 125 Gimme gimme gimme 00:46:41.553787 => Send data, 21 bytes (0x15) 0000: gonna upload..worx?. 00:46:41.733593 * upload completely sent off: 21 bytes 00:46:41.890224 * Remembering we are in dir "" 00:46:42.077319 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:46:42.383787 * Connection #0 to host 127.0.0.1:33729 left intact === End of file trace112 === Start of file upload.112 gonna upload worx? === End of file upload.112 === Start of file upload112 this is the *****crap******** that we're gonna upload worx? === End of file upload112 === Start of file valgrind112 ==203597== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind112 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 118 in state 4 Runner 2 (id 185908) running test 119 in state 4 Runner 3 (id 185910) running test 113 in state 4 Runner 4 (id 185912) running test 116 in state 4 Runner 5 (id 185914) running test 120 in state 4 Runner 6 (id 185916) running test 117 in state 4 Runner 7 (id 185918) running test 114 in state 4 Runner 8 (id 185920) running test 115 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 118 in state 4 Runner 2 (id 185908) running test 119 in state 4 Runner 3 (id 185910) running test 113 in state 4 Runner 4 (id 185912) running test 116 in state 4 Runner 5 (id 185914) running test 120 in state 4 Runner 6 (id 185916) running test 117 in state 4 Runner 7 (id 185918) running test 114 in state 4 Runner 8 (id 185920) running test 115 in state 4 test 0113...[FTP download, failed login: USER not valid] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind113 ../src/curl -q --output log/3/curl113.out --include --trace-ascii log/3/trace113 --trace-time ftp://127.0.0.1:37331/113 > log/3/stdout113 2> log/3/stderr113 valgrind ERROR ==203839== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 113 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind113 ../src/curl -q --output log/3/curl113.out --include --trace-ascii log/3/trace113 --trace-time ftp://127.0.0.1:37331/113 > log/3/stdout113 2> log/3/stderr113 === End of file commands.log === Start of file ftp_server.log 00:46:19.824415 ====> Client connect 00:46:19.825777 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:46:19.830828 < "USER anonymous" 00:46:19.831196 > "331 We are happy you popped in![CR][LF]" 00:46:19.831994 < "PASS ftp@example.com" 00:46:19.832277 > "230 Welcome you silly person[CR][LF]" 00:46:19.838104 < "PWD" 00:46:19.838427 > "257 "/" is current directory[CR][LF]" 00:46:19.840481 < "EPSV" 00:46:19.840698 ====> Passive DATA channel requested by client 00:46:19.840846 DATA sockfilt for passive data channel starting... 00:46:19.884109 DATA sockfilt for passive data channel started (pid 203833) 00:46:19.885533 DATA sockfilt for passive data channel listens on port 34999 00:46:19.888802 > "229 Entering Passive Mode (|||34999|)[CR][LF]" 00:46:19.889021 Client has been notified that DATA conn will be accepted on port 34999 00:46:19.889678 Client connects to port 34999 00:46:19.889882 ====> Client established passive DATA connection on port 34999 00:46:19.890510 < "TYPE I" 00:46:19.891610 > "200 I modify TYPE as you wanted[CR][LF]" 00:46:19.892169 < "SIZE verifiedserver" 00:46:19.893350 > "213 18[CR][LF]" 00:46:19.893919 < "RETR verifiedserver" 00:46:19.895805 > "150 Binary junk (18 bytes).[CR][LF]" 00:46:19.898667 =====> Closing passive DATA connection... 00:46:19.898871 Server disconnects passive DATA connection 00:46:19.903904 Server disconnected passive DATA connection 00:46:19.904095 DATA sockfilt for passive data channel quits (pid 203833) 00:46:19.907398 DATA sockfilt for passive data channel quit (pid 203833) 00:46:19.907575 =====> Closed passive DATA connection 00:46:19.907863 > "226 File transfer complete[CR][LF]" 00:46:19.946093 < "QUIT" 00:46:19.947376 > "221 bye bye baby[CR][LF]" 00:46:19.947606 MAIN sockfilt said DISC 00:46:19.947806 ====> Client disconnected 00:46:19.948077 Awaiting input 00:47:07.477850 ====> Client connect 00:47:07.478616 FTPD: Getting commands from log/3/server.cmd 00:47:07.479481 FTPD: set custom reply for USER command 00:47:07.479772 FTPD: run test case number: 113 00:47:07.484440 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:47:08.720398 < "USER anonymous" 00:47:08.721237 > "314 bluah you fewl![CR][LF]" 00:47:09.319718 MAIN sockfilt said DISC 00:47:09.324337 ====> Client disconnected 00:47:09.324752 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:46:19.438557 ====> Client connect 00:46:19.443172 Received DATA (on stdin) 00:46:19.443313 > 160 bytes data, server => client 00:46:19.443434 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:46:19.443540 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:46:19.443634 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:46:19.447799 < 16 bytes data, client => server 00:46:19.447897 'USER anonymous\r\n' 00:46:19.448685 Received DATA (on stdin) 00:46:19.448772 > 33 bytes data, server => client 00:46:19.448857 '331 We are happy you popped in!\r\n' 00:46:19.449142 < 22 bytes data, client => server 00:46:19.449221 'PASS ftp@example.com\r\n' 00:46:19.449780 Received DATA (on stdin) 00:46:19.449843 > 30 bytes data, server => client 00:46:19.449919 '230 Welcome you silly person\r\n' 00:46:19.450139 < 5 bytes data, client => server 00:46:19.450201 'PWD\r\n' 00:46:19.455926 Received DATA (on stdin) 00:46:19.456008 > 30 bytes data, server => client 00:46:19.456133 '257 "/" is current directory\r\n' 00:46:19.460738 < 6 bytes data, client => server 00:46:19.460844 'EPSV\r\n' 00:46:19.503571 Received DATA (on stdin) 00:46:19.503712 > 39 bytes data, server => client 00:46:19.503842 '229 Entering Passive Mode (|||34999|)\r\n' 00:46:19.506818 < 8 bytes data, client => server 00:46:19.506896 'TYPE I\r\n' 00:46:19.508284 Received DATA (on stdin) 00:46:19.508350 > 33 bytes data, server => client 00:46:19.508450 '200 I modify TYPE as you wanted\r\n' 00:46:19.508826 < 21 bytes data, client => server 00:46:19.508909 'SIZE verifiedserver\r\n' 00:46:19.510106 Received DATA (on stdin) 00:46:19.510173 > 8 bytes data, server => client 00:46:19.510261 '213 18\r\n' 00:46:19.510704 < 21 bytes data, client => server 00:46:19.510778 'RETR verifiedserver\r\n' 00:46:19.511809 Received DATA (on stdin) 00:46:19.511889 > 29 bytes data, server => client 00:46:19.511991 '150 Binary junk (18 bytes).\r\n' 00:46:19.525625 Received DATA (on stdin) 00:46:19.525739 > 28 bytes data, server => client 00:46:19.525820 '226 File transfer complete\r\n' 00:46:19.562672 < 6 bytes data, client => server 00:46:19.562817 'QUIT\r\n' 00:46:19.563978 Received DATA (on stdin) 00:46:19.564052 > 18 bytes data, server => client 00:46:19.564147 '221 bye bye baby\r\n' 00:46:19.564767 ====> Client disconnect 00:46:19.568529 Received ACKD (on stdin) 00:47:07.094982 ====> Client connect 00:47:07.098132 Received DATA (on stdin) 00:47:07.098244 > 160 bytes data, server => client 00:47:07.102184 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:47:07.102302 ' \r\n220- / __| | | | |_) | | \r\n220- |CMD (17152): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind114 ../src/curl -q --output log/7/curl114.out --include --trace-ascii log/7/trace114 --trace-time ftp://127.0.0.1:45353/114 > log/7/stdout114 2> log/7/stderr114 (__| |_| | ' 00:47:07.102393 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:47:08.336626 < 16 bytes data, client => server 00:47:08.336807 'USER anonymous\r\n' 00:47:08.338197 Received DATA (on stdin) 00:47:08.338272 > 21 bytes data, server => client 00:47:08.338483 '314 bluah you fewl!\r\n' 00:47:08.936871 ====> Client disconnect 00:47:08.937665 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:46:19.492149 Running IPv4 version 00:46:19.499972 Listening on port 34999 00:46:19.500424 Wrote pid 203833 to log/3/server/ftp_sockdata.pid 00:46:19.501273 Received PING (on stdin) 00:46:19.502393 Received PORT (on stdin) 00:46:19.507052 ====> Client connect 00:46:19.513656 Received DATA (on stdin) 00:46:19.514012 > 18 bytes data, server => client 00:46:19.515487 'WE ROOLZ: 202504\r\n' 00:46:19.516611 Received DISC (on stdin) 00:46:19.516732 ====> Client forcibly disconnected 00:46:19.521852 Received QUIT (on stdin) 00:46:19.521937 quits 00:46:19.522435 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY USER 314 bluah you fewl Testnum 113 === End of file server.cmd === Start of file server.input USER anonymous === End of file server.input === Start of file stderr113 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 curl: (67) Access denied: 314 === End of file stderr113 === Start of file trace113 00:47:07.163041 * Trying 127.0.0.1:37331... 00:47:08.022038 * Established connection to 127.0.0.1 (127.0.0.1 port 37331) from 127.0.0.1 port 46396 00:47:08.262639 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:47:08.601525 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:47:08.628164 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:47:08.633515 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:47:08.638026 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:47:08.738883 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:47:08.813384 <= Recv header, 21 bytes (0x15) 0000: 314 bluah you fewl 00:47:08.853957 * Access denied: 314 00:47:09.187025 * closing connection #0 === End of file trace113 === Start of file valgrind113 ==203839== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind113 test 0114...[FTP download, failed login: PASS not valid] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind114 ../src/curl -q --output log/7/curl114.out --include --trace-ascii log/7/trace114 --trace-time ftp://127.0.0.1:45353/114 > log/7/stdout114 2> log/7/stderr114 valgrind ERROR ==204056== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 114 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind114 ../src/curl -q --output log/7/curl114.out --include --trace-ascii log/7/trace114 --trace-time ftp://127.0.0.1:45353/114 > log/7/stdout114 2> log/7/stderr114 === End of file commands.log === Start of file ftp_server.log 00:46:26.954877 ====> Client connect 00:46:26.956213 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:46:26.965499 < "USER anonymous" 00:46:26.965982 > "331 We are happy you popped in![CR][LF]" 00:46:26.968102 < "PASS ftp@example.com" 00:46:26.968378 > "230 Welcome you silly person[CR][LF]" 00:46:26.973241 < "PWD" 00:46:26.973924 > "257 "/" is current directory[CR][LF]" 00:46:26.976238 < "EPSV" 00:46:26.976463 ====> Passive DATA channel requested by client 00:46:26.976606 DATA sockfilt for passive data channel starting... 00:46:27.020798 DATA sockfilt for passive data channel started (pid 204036) 00:46:27.022189 DATA sockfilt for passive data channel listens on port 33155 00:46:27.022556 > "229 Entering Passive Mode (|||33155|)[CR][LF]" 00:46:27.022715 Client has been notified that DATA conn will be accepted on port 33155 00:46:27.026700 Client connects to port 33155 00:46:27.027002 ====> Client established passive DATA connection on port 33155 00:46:27.027691 < "TYPE I" 00:46:27.027992 > "200 I modify TYPE as you wanted[CR][LF]" 00:46:27.029335 < "SIZE verifiedserver" 00:46:27.030557 > "213 18[CR][LF]" 00:46:27.031152 < "RETR verifiedserver" 00:46:27.033663 > "150 Binary junk (18 bytes).[CR][LF]" 00:46:27.034293 =====> Closing passive DATA connection... 00:46:27.034461 Server disconnects passive DATA connection 00:46:27.037689 Server disconnected passive DATA connection 00:46:27.037921 DATA sockfilt for passive data channel quits (pid 204036) 00:46:27.041338 DATA sockfilt for passive data channel quit (pid 204036) 00:46:27.041604 =====> Closed passive DATA connection 00:46:27.042207 > "226 File transfer complete[CR][LF]" 00:46:27.089435 < "QUIT" 00:46:27.089841 > "221 bye bye baby[CR][LF]" 00:46:27.094336 MAIN sockfilt said DISC 00:46:27.094553 ====> Client disconnected 00:46:27.094817 Awaiting input 00:47:14.210882 ====> Client connect 00:47:14.211670 FTPD: Getting commands from log/7/server.cmd 00:47:14.212656 FTPD: set custom reply for PASS command 00:47:14.212936 FTPD: run test case number: 114 00:47:14.217870 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:47:15.581212 < "USER anonymous" 00:47:15.581635 > "331 We are happy you popped in![CR][LF]" 00:47:15.695231 < "PASS ftp@example.com" 00:47:15.695628 > "314 bluah you f00l![CR][LF]" 00:47:16.274415 MAIN sockfilt said DISC 00:47:16.274958 ====> Client disconnected 00:47:16.275270 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:46:26.572006 ====> Client connect 00:46:26.573592 Received DATA (on stdin) 00:46:26.573676 > 160 bytes data, server => client 00:46:26.573800 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:46:26.573915 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:46:26.574009 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:46:26.580318 < 16 bytes data, client => server 00:46:26.580567 'USER anonymous\r\n' 00:46:26.583444 Received DATA (on stdin) 00:46:26.583553 > 33 bytes data, server => client 00:46:26.583654 '331 We are happy you popped in!\r\n' 00:46:26.585197 < 22 bytes data, client => server 00:46:26.585300 'PASS ftp@example.com\r\n' 00:46:26.588520 Received DATA (on stdin) 00:46:26.588645 > 30 bytes data, server => client 00:46:26.588731 '230 Welcome you silly person\r\n' 00:46:26.589930 < 5 bytes data, client => server 00:46:26.590007 'PWD\r\n' 00:46:26.591129 Received DATA (on stdin) 00:46:26.591197 > 30 bytes data, server => client 00:46:26.591298 '257 "/" is current directory\r\n' 00:46:26.593316 < 6 bytes data, client => server 00:46:26.593413 'EPSV\r\n' 00:46:26.640868 Received DATA (on stdin) 00:46:26.641014 > 39 bytes data, server => client 00:46:26.641109 '229 Entering Passive Mode (|||33155|)\r\n' 00:46:26.644014 < 8 bytes data, client => server 00:46:26.644105 'TYPE I\r\n' 00:46:26.645721 Received DATA (on stdin) 00:46:26.645801 > 33 bytes data, server => client 00:46:26.645889 '200 I modify TYPE as you wanted\r\n' 00:46:26.646282 < 21 bytes data, client => server 00:46:26.646356 'SIZE verifiedserveCMD (3328): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind115 ../src/curl -q --output log/8/curl115.out --include --trace-ascii log/8/trace115 --trace-time ftp://127.0.0.1:43843/115 > log/8/stdout115 2> log/8/stderr115 r\r\n' 00:46:26.647348 Received DATA (on stdin) 00:46:26.647415 > 8 bytes data, server => client 00:46:26.647499 '213 18\r\n' 00:46:26.647895 < 21 bytes data, client => server 00:46:26.647969 'RETR verifiedserver\r\n' 00:46:26.649025 Received DATA (on stdin) 00:46:26.649097 > 29 bytes data, server => client 00:46:26.649198 '150 Binary junk (18 bytes).\r\n' 00:46:26.659397 Received DATA (on stdin) 00:46:26.659543 > 28 bytes data, server => client 00:46:26.659998 '226 File transfer complete\r\n' 00:46:26.705695 < 6 bytes data, client => server 00:46:26.705865 'QUIT\r\n' 00:46:26.707574 Received DATA (on stdin) 00:46:26.707643 > 18 bytes data, server => client 00:46:26.707715 '221 bye bye baby\r\n' 00:46:26.708265 ====> Client disconnect 00:46:26.712514 Received ACKD (on stdin) 00:47:13.827974 ====> Client connect 00:47:13.831252 Received DATA (on stdin) 00:47:13.831373 > 160 bytes data, server => client 00:47:13.835804 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:47:13.835968 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:47:13.836065 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:47:15.197287 < 16 bytes data, client => server 00:47:15.197487 'USER anonymous\r\n' 00:47:15.201757 Received DATA (on stdin) 00:47:15.201867 > 33 bytes data, server => client 00:47:15.201960 '331 We are happy you popped in!\r\n' 00:47:15.311764 < 22 bytes data, client => server 00:47:15.311968 'PASS ftp@example.com\r\n' 00:47:15.313013 Received DATA (on stdin) 00:47:15.313085 > 21 bytes data, server => client 00:47:15.313165 '314 bluah you f00l!\r\n' 00:47:15.888802 ====> Client disconnect 00:47:15.892388 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:46:27.627539 Running IPv4 version 00:46:27.636528 Listening on port 33155 00:46:27.637005 Wrote pid 204036 to log/7/server/ftp_sockdata.pid 00:46:27.637741 Received PING (on stdin) 00:46:27.638988 Received PORT (on stdin) 00:46:27.643805 ====> Client connect 00:46:27.652168 Received DATA (on stdin) 00:46:27.652498 > 18 bytes data, server => client 00:46:27.652864 'WE ROOLZ: 202639\r\n' 00:46:27.653104 Received DISC (on stdin) 00:46:27.653215 ====> Client forcibly disconnected 00:46:27.655672 Received QUIT (on stdin) 00:46:27.655755 quits 00:46:27.656268 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASS 314 bluah you f00l Testnum 114 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com === End of file server.input === Start of file stderr114 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 curl: (67) Access denied: 314 === End of file stderr114 === Start of file trace114 00:47:13.880156 * Trying 127.0.0.1:45353... 00:47:14.834457 * Established connection to 127.0.0.1 (127.0.0.1 port 45353) from 127.0.0.1 port 49664 00:47:15.093762 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:47:15.452701 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:47:15.481181 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:47:15.489257 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:47:15.494246 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:47:15.600510 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:47:15.674389 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:47:15.695627 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:47:15.767512 <= Recv header, 21 bytes (0x15) 0000: 314 bluah you f00l 00:47:15.805470 * Access denied: 314 00:47:16.140322 * closing connection #0 === End of file trace114 === Start of file valgrind114 ==204056== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind114 test 0115...[FTP download, failed PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind115 ../src/curl -q --output log/8/curl115.out --include --trace-ascii log/8/trace115 --trace-time ftp://127.0.0.1:43843/115 > log/8/stdout115 2> log/8/stderr115 valgrind ERROR ==204077== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 115 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind115 ../src/curl -q --output log/8/curl115.out --include --trace-ascii log/8/trace115 --trace-time ftp://127.0.0.1:43843/115 > log/8/stdout115 2> log/8/stderr115 === End of file commands.log === Start of file ftp_server.log 00:46:27.271387 ====> Client connect 00:46:27.278636 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:46:27.279957 < "USER anonymous" 00:46:27.280284 > "331 We are happy you popped in![CR][LF]" 00:46:27.281995 < "PASS ftp@example.com" 00:46:27.282511 > "230 Welcome you silly person[CR][LF]" 00:46:27.283404 < "PWD" 00:46:27.285891 > "257 "/" is current directory[CR][LF]" 00:46:27.286706 < "EPSV" 00:46:27.286908 ====> Passive DATA channel requested by client 00:46:27.287049 DATA sockfilt for passive data channel starting... 00:46:27.328620 DATA sockfilt for passive data channel started (pid 204050) 00:46:27.330053 DATA sockfilt for passive data channel listens on port 40989 00:46:27.331248 > "229 Entering Passive Mode (|||40989|)[CR][LF]" 00:46:27.331451 Client has been notified that DATA conn will be accepted on port 40989 00:46:27.334070 Client connects to port 40989 00:46:27.334307 ====> Client established passive DATA connection on port 40989 00:46:27.334975 < "TYPE I" 00:46:27.336054 > "200 I modify TYPE as you wanted[CR][LF]" 00:46:27.336583 < "SIZE verifiedserver" 00:46:27.337027 > "213 18[CR][LF]" 00:46:27.338390 < "RETR verifiedserver" 00:46:27.340827 > "150 Binary junk (18 bytes).[CR][LF]" 00:46:27.341511 =====> Closing passive DATA connection... 00:46:27.341675 Server disconnects passive DATA connection 00:46:27.343164 Server disconnected passive DATA connection 00:46:27.343348 DATA sockfilt for passive data channel quits (pid 204050) 00:46:27.351025 DATA sockfilt for passive data channel quit (pid 204050) 00:46:27.351288 =====> Closed passive DATA connection 00:46:27.351910 > "226 File transfer complete[CR][LF]" 00:46:27.392666 < "QUIT" 00:46:27.393053 > "221 bye bye baby[CR][LF]" 00:46:27.394088 MAIN sockfilt said DISC 00:46:27.397667 ====> Client disconnected 00:46:27.398022 Awaiting input 00:47:14.640814 ====> Client connect 00:47:14.641606 FTPD: Getting commands from log/8/server.cmd 00:47:14.642576 FTPD: set custom reply for PASV command 00:47:14.643059 FTPD: set custom reply for EPSV command 00:47:14.643316 FTPD: run test case number: 115 00:47:14.648277 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:47:16.089396 < "USER anonymous" 00:47:16.089833 > "331 We are happy you popped in![CR][LF]" 00:47:16.219283 < "PASS ftp@example.com" 00:47:16.224427 > "230 Welcome you silly person[CR][LF]" 00:47:16.310044 < "PWD" 00:47:16.310514 > "257 "/" is current directory[CR][LF]" 00:47:16.523468 < "EPSV" 00:47:16.523885 > "314 bluah you f00l![CR]CMD (7680): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind116 ../src/curl -q --output log/4/curl116.out --include --trace-ascii log/4/trace116 --trace-time ftp://127.0.0.1:38207/116 -P 1.2.3.4 > log/4/stdout116 2> log/4/stderr116 [LF]" 00:47:16.621528 < "PASV" 00:47:16.621954 > "314 bluah you f00l![CR][LF]" 00:47:17.810444 < "QUIT" 00:47:17.810865 > "221 bye bye baby[CR][LF]" 00:47:18.041325 MAIN sockfilt said DISC 00:47:18.047669 ====> Client disconnected 00:47:18.048088 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:46:26.888547 ====> Client connect 00:46:26.890141 Received DATA (on stdin) 00:46:26.890240 > 160 bytes data, server => client 00:46:26.892064 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:46:26.892187 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:46:26.892277 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:46:26.896646 < 16 bytes data, client => server 00:46:26.896756 'USER anonymous\r\n' 00:46:26.898048 Received DATA (on stdin) 00:46:26.898117 > 33 bytes data, server => client 00:46:26.898194 '331 We are happy you popped in!\r\n' 00:46:26.898941 < 22 bytes data, client => server 00:46:26.899027 'PASS ftp@example.com\r\n' 00:46:26.899749 Received DATA (on stdin) 00:46:26.899814 > 30 bytes data, server => client 00:46:26.899913 '230 Welcome you silly person\r\n' 00:46:26.900439 < 5 bytes data, client => server 00:46:26.900502 'PWD\r\n' 00:46:26.901169 Received DATA (on stdin) 00:46:26.901234 > 30 bytes data, server => client 00:46:26.901412 '257 "/" is current directory\r\n' 00:46:26.903685 < 6 bytes data, client => server 00:46:26.903769 'EPSV\r\n' 00:46:26.947880 Received DATA (on stdin) 00:46:26.948021 > 39 bytes data, server => client 00:46:26.948161 '229 Entering Passive Mode (|||40989|)\r\n' 00:46:26.951408 < 8 bytes data, client => server 00:46:26.951498 'TYPE I\r\n' 00:46:26.952745 Received DATA (on stdin) 00:46:26.952819 > 33 bytes data, server => client 00:46:26.952926 '200 I modify TYPE as you wanted\r\n' 00:46:26.953294 < 21 bytes data, client => server 00:46:26.953368 'SIZE verifiedserver\r\n' 00:46:26.954791 Received DATA (on stdin) 00:46:26.954858 > 8 bytes data, server => client 00:46:26.954927 '213 18\r\n' 00:46:26.955357 < 21 bytes data, client => server 00:46:26.955438 'RETR verifiedserver\r\n' 00:46:26.956190 Received DATA (on stdin) 00:46:26.956256 > 29 bytes data, server => client 00:46:26.956356 '150 Binary junk (18 bytes).\r\n' 00:46:26.969053 Received DATA (on stdin) 00:46:26.969173 > 28 bytes data, server => client 00:46:26.969281 '226 File transfer complete\r\n' 00:46:27.008995 < 6 bytes data, client => server 00:46:27.009147 'QUIT\r\n' 00:46:27.010792 Received DATA (on stdin) 00:46:27.010864 > 18 bytes data, server => client 00:46:27.010939 '221 bye bye baby\r\n' 00:46:27.011512 ====> Client disconnect 00:46:27.011798 Received ACKD (on stdin) 00:47:14.257951 ====> Client connect 00:47:14.265103 Received DATA (on stdin) 00:47:14.265223 > 160 bytes data, server => client 00:47:14.265332 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:47:14.265437 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:47:14.265543 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:47:15.705562 < 16 bytes data, client => server 00:47:15.705728 'USER anonymous\r\n' 00:47:15.707485 Received DATA (on stdin) 00:47:15.707561 > 33 bytes data, server => client 00:47:15.707651 '331 We are happy you popped in!\r\n' 00:47:15.835515 < 22 bytes data, client => server 00:47:15.835708 'PASS ftp@example.com\r\n' 00:47:15.837088 Received DATA (on stdin) 00:47:15.837168 > 30 bytes data, server => client 00:47:15.842189 '230 Welcome you silly person\r\n' 00:47:15.926261 < 5 bytes data, client => server 00:47:15.926456 'PWD\r\n' 00:47:15.928169 Received DATA (on stdin) 00:47:15.928252 > 30 bytes data, server => client 00:47:15.928346 '257 "/" is current directory\r\n' 00:47:16.139696 < 6 bytes data, client => server 00:47:16.139910 'EPSV\r\n' 00:47:16.141533 Received DATA (on stdin) 00:47:16.141614 > 21 bytes data, server => client 00:47:16.141696 '314 bluah you f00l!\r\n' 00:47:16.235086 < 6 bytes data, client => server 00:47:16.235263 'PASV\r\n' 00:47:16.239609 Received DATA (on stdin) 00:47:16.239709 > 21 bytes data, server => client 00:47:16.239793 '314 bluah you f00l!\r\n' 00:47:17.426711 < 6 bytes data, client => server 00:47:17.426907 'QUIT\r\n' 00:47:17.428524 Received DATA (on stdin) 00:47:17.428605 > 18 bytes data, server => client 00:47:17.428690 '221 bye bye baby\r\n' 00:47:17.658446 ====> Client disconnect 00:47:17.659253 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:46:27.937051 Running IPv4 version 00:46:27.944471 Listening on port 40989 00:46:27.944929 Wrote pid 204050 to log/8/server/ftp_sockdata.pid 00:46:27.945775 Received PING (on stdin) 00:46:27.946884 Received PORT (on stdin) 00:46:27.951228 ====> Client connect 00:46:27.959428 Received DATA (on stdin) 00:46:27.959746 > 18 bytes data, server => client 00:46:27.960106 'WE ROOLZ: 202642\r\n' 00:46:27.960339 Received DISC (on stdin) 00:46:27.960446 ====> Client forcibly disconnected 00:46:27.965194 Received QUIT (on stdin) 00:46:27.965291 quits 00:46:27.965785 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASV 314 bluah you f00l REPLY EPSV 314 bluah you f00l Testnum 115 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV PASV QUIT === End of file server.input === Start of file stderr115 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (13) Bad PASV/EPSV response: 314 === End of file stderr115 === Start of file trace115 00:47:14.275317 * Trying 127.0.0.1:43843... 00:47:15.302196 * Established connection to 127.0.0.1 (127.0.0.1 port 43843) from 127.0.0.1 port 58652 00:47:15.585490 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:47:15.953040 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:47:15.984896 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:47:15.990475 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:47:15.996947 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:47:16.110919 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:47:16.197263 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:47:16.219469 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:47:16.289221 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:47:16.308924 => Send header, 5 bytes (0x5) 0000: PWD 00:47:16.325441 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:47:16.362613 * Entry path is '/' 00:47:16.470423 * Request has same path as previous transfer 00:47:16.522366 => Send header, 6 bytes (0x6) 0000: EPSV 00:47:16.537287 * Connect data stream passively 00:47:16.546573 <= Recv header, 21 bytes (0x15) 0000: 314 bluah you f00l 00:47:16.591868 * Failed EPSV attempt. Disabling EPSV 00:47:16.615623 => Send header, 6 bytes (0x6) 0000: PASV 00:47:16.677798 <= Recv header, 21 bytes (0x15) 0000: 314 bluah you f00l 00:47:16.717976 * Bad PASV/EPSV response: 314 00:47:16.802276 * Remembering we are in dir "" 00:47:17.089446 * Connection #0 to host 127.0.0.1:43843 left intact === End of file trace115 === Start of file valgrind115 ==204077== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind115 test 0116...[FTP download, failed PORT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind116 ../src/curl -q --output log/4/curl116.out --include --trace-ascii log/4/trace116 --trace-time ftp://127.0.0.1:38207/116 -P 1.2.3.4 > log/4/stdout116 2> log/4/stderr116 valgrind ERROR ==204317== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 116 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind116 ../src/curl -q --output log/4/curl116.out --include --trace-ascii log/4/trace116 --trace-time ftp://127.0.0.1:38207/116 -P 1.2.3.4 > log/4/stdout116 2> log/4/stderr116 === End of file commands.log === Start of file ftp_server.log 00:46:28.846209 ====> Client connect 00:46:28.847443 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:46:28.856175 < "USER anonymous" 00:46:28.856564 > "331 We are happy you popped in![CR][LF]" 00:46:28.857900 < "PASS ftp@example.com" 00:46:28.858435 > "230 Welcome you silly person[CR][LF]" 00:46:28.859095 < "PWD" 00:46:28.859530 > "257 "/" is current directory[CR][LF]" 00:46:28.861662 < "EPSV" 00:46:28.861867 ====> Passive DATA channel requested by client 00:46:28.862012 DATA sockfilt for passive data channel starting... 00:46:28.904382 DATA sockfilt for passive data channel started (pid 204282) 00:46:28.905809 DATA sockfilt for passive data channel listens on port 33773 00:46:28.906147 > "229 Entering Passive Mode (|||33773|)[CR][LF]" 00:46:28.906313 Client has been notified that DATA conn will be accepted on port 33773 00:46:28.909714 Client connects to port 33773 00:46:28.909999 ====> Client established passive DATA connection on port 33773 00:46:28.910652 < "TYPE I" 00:46:28.911750 > "200 I modify TYPE as you wanted[CR][LF]" 00:46:28.912277 < "SIZE verifiedserver" 00:46:28.912608 > "213 18[CR][LF]" 00:46:28.913986 < "RETR verifiedserver" 00:46:28.916536 > "150 Binary junk (18 bytes).[CR][LF]" 00:46:28.917141 =====> Closing passive DATA connection... 00:46:28.917302 Server disconnects passive DATA connection 00:46:28.918866 Server disconnected passive DATA connection 00:46:28.919060 DATA sockfilt for passive data channel quits (pid 204282) 00:46:28.927186 DATA sockfilt for passive data channel quit (pid 204282) 00:46:28.927523 =====> Closed passive DATA connection 00:46:28.927859 > "226 File transfer complete[CR][LF]" 00:46:28.968797 < "QUIT" 00:46:28.969531 > "221 bye bye baby[CR][LF]" 00:46:28.970522 MAIN sockfilt said DISC 00:46:28.970862 ====> Client disconnected 00:46:28.971156 Awaiting input 00:47:15.728491 ====> Client connect 00:47:15.729243 FTPD: Getting commands from log/4/server.cmd 00:47:15.730274 FTPD: set custom reply for EPRT command 00:47:15.730758 FTPD: set custom reply for PORT command 00:47:15.731025 FTPD: run test case number: 116 00:47:15.737785 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:47:17.030462 < "USER anonymous" 00:47:17.031244 > "331 We are happy you popped in![CR][LF]" 00:47:17.155279 < "PASS ftp@example.com" 00:47:17.161168 > "230 Welcome you silly person[CR][LF]" 00:47:17.250001 < "PWD" 00:47:17.250438 > "257 "/" is current directory[CR][LF]" 00:47:18.212291 < "EPRT |1|1.2.3.4|58207|" 00:47:18.217786 > "500 we don't like EPRT now[CR][LF]" 00:47:18.490447 < "PORT 1,2,3,4,213,71" 00:47:18.490889 > "314 bluah you f00l![CR][LF]" 00:47:19.850275 < "QUIT" 00:47:19.850719 > "221 bye bye baby[CR][LF]" 00:47:20.067601 MAIN sockfilt said DISC 00:47:20.071182 ====> Client disconnected 00:47:20.071504 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:46:28.463277 ====> Client connect 00:46:28.468602 Received DATA (on stdin) 00:46:28.468726 > 160 bytes data, server => client 00:46:28.468837 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:46:28.468952 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:46:28.469051 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:46:28.474293 < 16 bytes data, client => server 00:46:28.474410 'USER anonymous\r\n' 00:46:28.474484 Received DATA (on stdin) 00:46:28.474545 > 33 bytes data, server => client 00:46:28.474626 '331 We are happy you popped in!\r\n' 00:46:28.474886 < 22 bytes data, client => server 00:46:28.474965 'PASS ftp@example.com\r\n' 00:46:28.475647 Received DATA (on stdin) 00:46:28.475717 > 30 bytes data, server => client 00:46:28.475822 '230 Welcome you silly person\r\n' 00:46:28.476044 < 5 bytes data, client => server 00:46:28.476109 'PWD\r\n' 00:46:28.476848 Received DATA (on stdin) 00:46:28.476922 > 30 bytes data, server => client 00:46:28.477276 '257 "/" is current directory\r\n' 00:46:28.478692 < 6 bytes data, client => server 00:46:28.478764 'EPSV\r\n' 00:46:28.524093 Received DATA (on stdin) 00:46:28.524239 > 39 bytes data, server => client 00:46:28.524335 '229 Entering Passive Mode (|||33773|)\r\n' 00:46:28.527048 < 8 bytes data, client => server 00:46:28.527128 'TYPE I\r\n' 00:46:28.528418 Received DATA (on stdin) 00:46:28.528489 > 33 bytes data, server => client 00:46:28.528610 '200 I modify TYPE as you wanted\r\n' 00:46:28.528981 < 21 bytes data, client => server 00:46:28.529056 'SIZE verifiedserver\r\n' 00:46:28.530347 Received DATA (on stdin) 00:46:28.530414 > 8 bytes data, server => client 00:46:28.530480 '213 18\r\n' 00:46:28.530935 < 21 bytes data, client => server 00:46:28.531009 'RETR verifiedserver\r\n' 00:46:28.531782 Received DATA (on stdin) 00:46:28.531871 > 29 bytes data, server => client 00:46:28.531969 '150 Binary junk (18 bytes).\r\n' 00:46:28.545641 Received DATA (on stdin) 00:46:28.545776 > 28 bytes data, server => client 00:46:28.545871 '226 File transfer complete\r\n' 00:46:28.585088 < 6 bytes data, client => server 00:46:28.585268 'QUIT\r\n' 00:46:28.586701 Received DATA (on stdin) 00:46:28.586775 > 18 bytes data, server => client 00:46:28.586874 '221 bye bye baby\r\n' 00:46:28.587937 ====> Client disconnect 00:46:28.588244 Received ACKD (on stdin) 00:47:15.345608 ====> Client connect 00:47:15.351760 Received DATA (on stdin) 00:47:15.351878 > 160 bytes data, server => client 00:47:15.355529 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:47:15.355642 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:47:15.355732 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:47:16.646619 < 16 bytes data, client => server 00:47:16.646811 'USER anonymous\r\n' 00:47:16.648260 Received DATA (on stdin) 00:47:16.648336 > 33 bytes data, server => client 00:47:16.648490 '331 We are happy you popped in!\r\n' 00:47:16.771526 < 22 bytes data, client => server 00:47:16.771714 'PASS ftp@example.com\r\n' 00:47:16.773075 Received DATA (on stdin) 00:47:16.773147 > 30 bytes data, server => client 00:47:16.779065 '230 Welcome you silly person\r\n' 00:47:16.866198 < 5 bytes data, client => server 00:47:16.866388 'PWD\r\n' 00:47:16.868076 Received DATA (on stdin) 00:47:16.868153 > 30 bytes data, server => client 00:47:16.868238 '257 "/" is current directory\r\n' 00:47:17.828493 < 24 bytes data, client => server 00:47:17.828708 'EPRT |1|1.2.3.4|58207|\r\n' 00:47:17.830075 Received DATA (on stdin) 00:47:17.830151 > 28 bytes data, server => client 00:47:17.835585 '500 we don't like EPRT now\r\n' 00:47:18.106645 < 21 bytes data, client => server 00:47:18.106859 'PORT 1,2,3,4,213,71\r\n' 00:47:18.108547 Received DATA (on stdin) 00:47:18.108627 > 21 bytes data, server => client 00:47:18.108707 '314 bluah you f00l!\r\n' 00:47:19.466494 < 6 bytes data, client => server 00:47:19.466683 'QUIT\r\n' 00:47:19.468383 Received DATA (on stdin) 00:47:19.468469 > 18 bytes data, server => client 00:47:19.468554 '221 bye bye baby\r\n' 00:47:19.682470 ====> Client disconnect 00:47:19.68912CMD (4352): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind117 ../src/curl -q --output log/6/curl117.out --include --trace-ascii log/6/trace117 --trace-time ftp://127.0.0.1:39413/117 > log/6/stdout117 2> log/6/stderr117 8 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:46:28.512047 Running IPv4 version 00:46:28.520143 Listening on port 33773 00:46:28.520640 Wrote pid 204282 to log/4/server/ftp_sockdata.pid 00:46:28.521452 Received PING (on stdin) 00:46:28.522640 Received PORT (on stdin) 00:46:28.526865 ====> Client connect 00:46:28.535018 Received DATA (on stdin) 00:46:28.535390 > 18 bytes data, server => client 00:46:28.535772 'WE ROOLZ: 201673\r\n' 00:46:28.536051 Received DISC (on stdin) 00:46:28.536175 ====> Client forcibly disconnected 00:46:28.538513 Received QUIT (on stdin) 00:46:28.538620 quits 00:46:28.539224 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPRT 500 we don't like EPRT now REPLY PORT 314 bluah you f00l Testnum 116 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPRT |1|1.2.3.4|58207| PORT 1,2,3,4,213,71 QUIT === End of file server.input === Start of file stderr116 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 curl: (30) Failed to do PORT === End of file stderr116 === Start of file trace116 00:47:15.399325 * Trying 127.0.0.1:38207... 00:47:16.302626 * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 53016 00:47:16.547993 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:47:16.900666 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:47:16.929051 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:47:16.936256 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:47:16.941770 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:47:17.050047 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:47:17.133530 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:47:17.155275 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:47:17.228115 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:47:17.249005 => Send header, 5 bytes (0x5) 0000: PWD 00:47:17.266333 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:47:17.303244 * Entry path is '/' 00:47:17.406238 * Request has same path as previous transfer 00:47:18.161025 * bind(port=0) on non-local address failed: Cannot assign requested address 00:47:18.211168 => Send header, 24 bytes (0x18) 0000: EPRT |1|1.2.3.4|58207| 00:47:18.334260 <= Recv header, 28 bytes (0x1c) 0000: 500 we don't like EPRT now 00:47:18.369776 * disabling EPRT usage 00:47:18.451400 * Hostname 1.2.3.4 was found in DNS cache 00:47:18.468765 * bind(port=0) on non-local address failed: Cannot assign requested address 00:47:18.489301 => Send header, 21 bytes (0x15) 0000: PORT 1,2,3,4,213,71 00:47:18.651502 <= Recv header, 21 bytes (0x15) 0000: 314 bluah you f00l 00:47:18.692352 * Failed to do PORT 00:47:18.779347 * Remembering we are in dir "" 00:47:19.074035 * Connection #0 to host 127.0.0.1:38207 left intact === End of file trace116 === Start of file valgrind116 ==204317== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind116 test 0117...[FTP download, failed TYPE] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind117 ../src/curl -q --output log/6/curl117.out --include --trace-ascii log/6/trace117 --trace-time ftp://127.0.0.1:39413/117 > log/6/stdout117 2> log/6/stderr117 valgrind ERROR ==204475== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 117 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind117 ../src/curl -q --output log/6/curl117.out --include --trace-ascii log/6/trace117 --trace-time ftp://127.0.0.1:39413/117 > log/6/stdout117 2> log/6/stderr117 === End of file commands.log === Start of file ftp_server.log 00:46:31.084404 ====> Client connect 00:46:31.091153 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:46:31.096611 < "USER anonymous" 00:46:31.097063 > "331 We are happy you popped in![CR][LF]" 00:46:31.098698 < "PASS ftp@example.com" 00:46:31.098982 > "230 Welcome you silly person[CR][LF]" 00:46:31.100127 < "PWD" 00:46:31.100398 > "257 "/" is current directory[CR][LF]" 00:46:31.102761 < "EPSV" 00:46:31.102961 ====> Passive DATA channel requested by client 00:46:31.103100 DATA sockfilt for passive data channel starting... 00:46:31.149723 DATA sockfilt for passive data channel started (pid 204465) 00:46:31.151173 DATA sockfilt for passive data channel listens on port 35157 00:46:31.151770 > "229 Entering Passive Mode (|||35157|)[CR][LF]" 00:46:31.151944 Client has been notified that DATA conn will be accepted on port 35157 00:46:31.154641 Client connects to port 35157 00:46:31.154893 ====> Client established passive DATA connection on port 35157 00:46:31.155755 < "TYPE I" 00:46:31.156797 > "200 I modify TYPE as you wanted[CR][LF]" 00:46:31.157312 < "SIZE verifiedserver" 00:46:31.158422 > "213 18[CR][LF]" 00:46:31.158949 < "RETR verifiedserver" 00:46:31.161427 > "150 Binary junk (18 bytes).[CR][LF]" 00:46:31.161959 =====> Closing passive DATA connection... 00:46:31.162114 Server disconnects passive DATA connection 00:46:31.162834 Server disconnected passive DATA connection 00:46:31.162996 DATA sockfilt for passive data channel quits (pid 204465) 00:46:31.166232 DATA sockfilt for passive data channel quit (pid 204465) 00:46:31.166420 =====> Closed passive DATA connection 00:46:31.166675 > "226 File transfer complete[CR][LF]" 00:46:31.213212 < "QUIT" 00:46:31.214545 > "221 bye bye baby[CR][LF]" 00:46:31.214784 MAIN sockfilt said DISC 00:46:31.214963 ====> Client disconnected 00:46:31.215224 Awaiting input 00:47:18.685427 ====> Client connect 00:47:18.686183 FTPD: Getting commands from log/6/server.cmd 00:47:18.687133 FTPD: set custom reply for EPSV command 00:47:18.687615 FTPD: set custom reply for TYPE command 00:47:18.687872 FTPD: run test case number: 117 00:47:18.697816 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:47:20.066427 < "USER anonymous" 00:47:20.066852 > "331 We are happy you popped in![CR][LF]" 00:47:20.202923 < "PASS ftp@example.com" 00:47:20.203385 > "230 Welcome you silly person[CR][LF]" 00:47:20.299219 < "PWD" 00:47:20.300844 > "257 "/" is current directory[CR][LF]" 00:47:20.526080 < "EPSV" 00:47:20.526510 > "314 bluah you f00l![CR][LF]" 00:47:20.639159 < "PASV" 00:47:20.639611 ====> Passive DATA channel requested by client 00:47:20.639770 DATA sockfilt for passive data channel starting... 00:47:20.703169 DATA sockfilt for passive data channel started (pid 205351) 00:47:20.704650 DATA sockfilt for passive data channel listens on port 42229 00:47:20.706115 > "227 Entering Passive Mode (127,0,0,1,164,245)[CR][LF]" 00:47:20.706322 Client has been notified that DATA conn will be accepted on port 42229 00:47:20.908722 Client connects to port 42229 00:47:20.909311 ====> Client established passive DATA connection on port 42229 00:47:21.043276 < "TYPE I" 00:47:21.047880 > "314 bluah you f00l![CR][LF]" 00:47:22.523492 < "QUIT" 00:47:22.523977 > "221 bye bye baby[CR][LF]" 00:47:22.756935 MAIN sockfilt said DISC 00:47:22.760997 ====> Client disconnected 00:47:22.764951 DATA sockfilt for passive data channel killed now 00:47:22.765201 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:46:30.701501 ====> Client connect 00:46:30.702830 Received DATA (on stdin) 00:46:30.702924 > 160 bytes data, server => client 00:46:30.708594 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:46:30.708750 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:46:30.708841 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:46:30.714821 < 16 bytes data, client => server 00:46:30.714964 'USER anonymous\r\n' 00:46:30.715043 Received DATA (on stdin) 00:46:30.715115 > 33 bytes data, server => client 00:46:30.715217 '331 We are happy you popped in!\r\n' 00:46:30.716689 < 22 bytes data, client => server 00:46:30.716771 'PASS ftp@example.com\r\n' 00:46:30.716837 Received DATA (on stdin) 00:46:30.716897 > 30 bytes data, server => client 00:46:30.716974 '230 Welcome you silly person\r\n' 00:46:30.718094 < 5 bytes data, client => server 00:46:30.718163 'PWD\r\n' 00:46:30.718228 Received DATA (on stdin) 00:46:30.718286 > 30 bytes data, server => client 00:46:30.718362 '257 "/" is current directory\r\n' 00:46:30.719807 < 6 bytes data, client => server 00:46:30.719880 'EPSV\r\n' 00:46:30.768985 Received DATA (on stdin) 00:46:30.769126 > 39 bytes data, server => client 00:46:30.769716 '229 Entering Passive Mode (|||35157|)\r\n' 00:46:30.772656 < 8 bytes data, client => server 00:46:30.772746 'TYPE I\r\n' 00:46:30.773502 Received DATA (on stdin) 00:46:30.773569 > 33 bytes data, server => client 00:46:30.773670 '200 I modify TYPE as you wanted\r\n' 00:46:30.774023 < 21 bytes data, client => server 00:46:30.774098 'SIZE verifiedserver\r\n' 00:46:30.775103 Received DATA (on stdin) 00:46:30.775178 > 8 bytes data, server => client 00:46:30.775263 '213 18\r\n' 00:46:30.775692 < 21 bytes data, client => server 00:46:30.775764 'RETR verifiedserver\r\n' 00:46:30.776737 Received DATA (on stdin) 00:46:30.776808 > 29 bytes data, server => client 00:46:30.776909 '150 Binary junk (18 bytes).\r\n' 00:46:30.784399 Received DATA (on stdin) 00:46:30.784504 > 28 bytes data, server => client 00:46:30.784587 '226 File transfer complete\r\n' 00:46:30.829647 < 6 bytes data, client => server 00:46:30.829807 'QUIT\r\n' 00:46:30.831149 Received DATA (on stdin) 00:46:30.831225 > 18 bytes data, server => client 00:46:30.831321 '221 bye bye baby\r\n' 00:46:30.831920 ====> Client disconnect 00:46:30.835235 Received ACKD (on stdin) 00:47:18.302552 ====> Client connect 00:47:18.308428 Received DATA (on stdin) 00:47:18.308564 > 160 bytes data, server => client 00:47:18.308708 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:47:18.308811 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:47:18.308899 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:47:19.682581 < 16 bytes data, client => server 00:47:19.682758 'USER anonymous\r\n' 00:47:19.684500 Received DATA (on stdin) 00:47:19.684578 > 33 bytes data, server => client 00:47:19.684668 '331 We are happy you popped in!\r\n' 00:47:19.819522 < 22 bytes data, client => server 00:47:19.819723 'PASS ftp@example.com\r\n' 00:47:19.821037 Received DATA (on stdin) 00:47:19.821118 > 30 bytes data, server => client 00:47:19.821212 '230 Welcome you silly person\r\n' 00:47:19.915498 < 5 bytes data, client => server 00:47:19.915669 'PWD\r\n' 00:47:19.917036 Received DATA (on stdin) 00:47:19.917120 > 30 bytes data, server => client 00:47:19.919170 '257 "/" is current directory\r\n' 00:47:20.142266 < 6 bytes data, client => server 00:47:20.142455 'EPSV\r\n' 00:47:20.145954 Received DATA (on stdin) 00:47:20.146057 > 21 bytes data, server => client 00:47:20.146142 '314 bluah you f00l!\r\n' 00:47:20.244847 < 6 bytes data, client => server 00:47:20.259570 'PASV\r\n' 00:47:20.324035 Received DATA (on stdin) 00:47:20.324180 > 47 bytes data, server => client 00:47:20.324288 '227 Entering Passive Mode (127,0,0,1,164,245)\r\n' 00:47:20.659429 < 8 bytes data, client => server 00:47:20.659630 'TYPE I\r\n' 00:47:20.661065 Received DATA (on stdin) 00:47:20.661143 > 21 bytes data, server => client 00:47:20.665658 '314 bluah you f00l!\r\n' 00:47:22.141666 < 6 bytes data, client => server 00:47:22.141871 'QUIT\r\n' 00:47:22.141953 Received DATA (on stdin) 00:47:22.142024 > 18 bytes data, server => client 00:47:22.142103 '221 bye bye baby\r\n' 00:47:22.373983 ====> Client disconnect 00:47:22.374911 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:46:31.757758 Running IPv4 version 00:46:31.765492 Listening on port 35157 00:46:31.765994 Wrote pid 204465 to log/6/server/ftp_sockdata.pid 00:46:31.766859 Received PING (on stdin) 00:46:31.767996 Received PORT (on stdin) 00:46:31.771339 ====> Client connect 00:46:31.779190 Received DATA (on stdin) 00:46:31.779543 > 18 bytes data, server => client 00:46:31.779948 'WE ROOLZ: 201819\r\n' 00:46:31.780224 Received DISC (on stdin) 00:46:31.780343 ====> Client forcibly disconnected 00:46:31.780677 Received QUIT (on stdin) 00:46:31.780753 quits 00:46:31.781286 ============> sockfilt quits 00:47:20.310877 Running IPv4 version 00:47:20.318883 Listening on port 42229 00:47:20.319408 Wrote pid 205351 to log/6/server/ftp_sockdata.pid 00:47:20.320206 Received PING (on stdin) 00:47:20.321351 Received PORT (on stdin) 00:47:20.525804 ====> Client connect 00:47:20.894259 ====> Client disconnect === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPSV 314 bluah you f00l REPLY TYPE 314 bluah you f00l Testnum 117 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV PASV TYPE I QUIT === End of file server.input === Start of file stderr117 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (17) Couldn't set desired mode === End of file stderr117 === Start of file trace117 00:47:18.352400 * Trying 127.0.0.1:39413... 00:47:19.257361 * Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 34938 00:47:19.525641 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:47:19.922922 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:47:19.954628 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:47:19.960455 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:47:19.966096 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:47:20.087405 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:47:20.177958 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:47:20.203031 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:47:20.277709 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:47:20.298199 => Send header, 5 bytes (0x5) 0000: PWD 00:47:20.318123 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:47:20.358792 * Entry path is '/' 00:47:20.466907 * Request has same path as previous transfer 00:47:20.524961 => Send header, 6 bytes (0x6) 0000: EPSV 00:47:20.541757 * Connect data stream passively 00:47:20.552468 <= Recv header, 21 bytes (0x15) 0000: 314 bluah you f00l 00:47:20.604918 * Failed EPSV attempt. Disabling EPSV 00:47:20.627516 => Send header, 6 bytes (0x6) 0000: PASV 00:47:20.710283 <= Recv headerCMD (4864): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind118 ../src/curl -q --output log/1/curl118.out --include --trace-ascii log/1/trace118 --trace-time ftp://127.0.0.1:37481/118 > log/1/stdout118 2> log/1/stderr118 , 47 bytes (0x2f) 0000: 227 Entering Passive Mode (127,0,0,1,164,245) 00:47:20.754466 * Skip 127.0.0.1 for data connection, reuse 127.0.0.1 instead 00:47:20.825290 * Connecting to 127.0.0.1 (127.0.0.1) port 42229 00:47:20.901120 * Trying 127.0.0.1:42229... 00:47:21.003790 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 42229) from 127.0.0.1 port 50796 00:47:21.042094 => Send header, 8 bytes (0x8) 0000: TYPE I 00:47:21.062768 <= Recv header, 21 bytes (0x15) 0000: 314 bluah you f00l 00:47:21.111685 * Couldn't set desired mode 00:47:21.201408 * Remembering we are in dir "" 00:47:21.650486 * Connection #0 to host 127.0.0.1:39413 left intact === End of file trace117 === Start of file valgrind117 ==204475== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind117 test 0118...[FTP download, failed RETR] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind118 ../src/curl -q --output log/1/curl118.out --include --trace-ascii log/1/trace118 --trace-time ftp://127.0.0.1:37481/118 > log/1/stdout118 2> log/1/stderr118 valgrind ERROR ==204637== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 118 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind118 ../src/curl -q --output log/1/curl118.out --include --trace-ascii log/1/trace118 --trace-time ftp://127.0.0.1:37481/118 > log/1/stdout118 2> log/1/stderr118 === End of file commands.log === Start of file ftp_server.log 00:46:35.480563 ====> Client connect 00:46:35.482072 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:46:35.489444 < "USER anonymous" 00:46:35.490057 > "331 We are happy you popped in![CR][LF]" 00:46:35.490755 < "PASS ftp@example.com" 00:46:35.494397 > "230 Welcome you silly person[CR][LF]" 00:46:35.495003 < "PWD" 00:46:35.495281 > "257 "/" is current directory[CR][LF]" 00:46:35.497302 < "EPSV" 00:46:35.497503 ====> Passive DATA channel requested by client 00:46:35.497662 DATA sockfilt for passive data channel starting... 00:46:35.538433 DATA sockfilt for passive data channel started (pid 204631) 00:46:35.539829 DATA sockfilt for passive data channel listens on port 46089 00:46:35.540178 > "229 Entering Passive Mode (|||46089|)[CR][LF]" 00:46:35.540343 Client has been notified that DATA conn will be accepted on port 46089 00:46:35.543121 Client connects to port 46089 00:46:35.543344 ====> Client established passive DATA connection on port 46089 00:46:35.544043 < "TYPE I" 00:46:35.544331 > "200 I modify TYPE as you wanted[CR][LF]" 00:46:35.545762 < "SIZE verifiedserver" 00:46:35.546066 > "213 18[CR][LF]" 00:46:35.547335 < "RETR verifiedserver" 00:46:35.547623 > "150 Binary junk (18 bytes).[CR][LF]" 00:46:35.550562 =====> Closing passive DATA connection... 00:46:35.550727 Server disconnects passive DATA connection 00:46:35.551757 Server disconnected passive DATA connection 00:46:35.551927 DATA sockfilt for passive data channel quits (pid 204631) 00:46:35.555164 DATA sockfilt for passive data channel quit (pid 204631) 00:46:35.555363 =====> Closed passive DATA connection 00:46:35.555628 > "226 File transfer complete[CR][LF]" 00:46:35.601602 < "QUIT" 00:46:35.601921 > "221 bye bye baby[CR][LF]" 00:46:35.602630 MAIN sockfilt said DISC 00:46:35.602791 ====> Client disconnected 00:46:35.603028 Awaiting input 00:47:22.734382 ====> Client connect 00:47:22.735255 FTPD: Getting commands from log/1/server.cmd 00:47:22.736111 FTPD: set custom reply for RETR command 00:47:22.736557 FTPD: set custom reply for EPSV command 00:47:22.736969 FTPD: set custom reply for SIZE command 00:47:22.737222 FTPD: run test case number: 118 00:47:22.741603 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:47:24.222037 < "USER anonymous" 00:47:24.222489 > "331 We are happy you popped in![CR][LF]" 00:47:24.325116 < "PASS ftp@example.com" 00:47:24.326458 > "230 Welcome you silly person[CR][LF]" 00:47:24.428664 < "PWD" 00:47:24.429209 > "257 "/" is current directory[CR][LF]" 00:47:24.690503 < "EPSV" 00:47:24.691139 > "314 bluah you f00l![CR][LF]" 00:47:24.794726 < "PASV" 00:47:24.795078 ====> Passive DATA channel requested by client 00:47:24.795243 DATA sockfilt for passive data channel starting... 00:47:24.861521 DATA sockfilt for passive data channel started (pid 205725) 00:47:24.862814 DATA sockfilt for passive data channel listens on port 41271 00:47:24.863267 > "227 Entering Passive Mode (127,0,0,1,161,55)[CR][LF]" 00:47:24.863466 Client has been notified that DATA conn will be accepted on port 41271 00:47:25.091350 Client connects to port 41271 00:47:25.091960 ====> Client established passive DATA connection on port 41271 00:47:25.211697 < "TYPE I" 00:47:25.212128 > "200 I modify TYPE as you wanted[CR][LF]" 00:47:25.265488 < "SIZE 118" 00:47:25.265936 > "500 command not understood[CR][LF]" 00:47:25.332237 < "RETR 118" 00:47:25.332708 > "314 bluah you f00l![CR][LF]" 00:47:26.672195 < "QUIT" 00:47:26.673024 > "221 bye bye baby[CR][LF]" 00:47:26.866336 MAIN sockfilt said DISC 00:47:26.867047 ====> Client disconnected 00:47:26.869175 DATA sockfilt for passive data channel killed now 00:47:26.869394 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:46:36.097690 ====> Client connect 00:46:36.098947 Received DATA (on stdin) 00:46:36.099026 > 160 bytes data, server => client 00:46:36.099154 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:46:36.099250 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:46:36.099335 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:46:36.106048 < 16 bytes data, client => server 00:46:36.106168 'USER anonymous\r\n' 00:46:36.107248 Received DATA (on stdin) 00:46:36.107316 > 33 bytes data, server => client 00:46:36.107425 '331 We are happy you popped in!\r\n' 00:46:36.107674 < 22 bytes data, client => server 00:46:36.107752 'PASS ftp@example.com\r\n' 00:46:36.108490 Received DATA (on stdin) 00:46:36.108562 > 30 bytes data, server => client 00:46:36.111871 '230 Welcome you silly person\r\n' 00:46:36.112133 < 5 bytes data, client => server 00:46:36.112212 'PWD\r\n' 00:46:36.112745 Received DATA (on stdin) 00:46:36.112825 > 30 bytes data, server => client 00:46:36.112920 '257 "/" is current directory\r\n' 00:46:36.114331 < 6 bytes data, client => server 00:46:36.114398 'EPSV\r\n' 00:46:36.157620 Received DATA (on stdin) 00:46:36.157778 > 39 bytes data, server => client 00:46:36.157872 '229 Entering Passive Mode (|||46089|)\r\n' 00:46:36.162046 < 8 bytes data, client => server 00:46:36.162135 'TYPE I\r\n' 00:46:36.162210 Received DATA (on stdin) 00:46:36.162272 > 33 bytes data, server => client 00:46:36.162355 '200 I modify TYPE as you wanted\r\n' 00:46:36.162803 < 21 bytes data, client => server 00:46:36.162878 'SIZE verifiedserver\r\n' 00:46:36.163768 Received DATA (on stdin) 00:46:36.163834 > 8 bytes data, server => client 00:46:36.163901 '213 18\r\n' 00:46:36.164389 < 21 bytes data, client => server 00:46:36.164463 'RETR verifiedserver\r\n' 00:46:36.165172 Received DATA (on stdin) 00:46:36.165252 > 29 bytes data, server => client 00:46:36.165327 '150 Binary junk (18 bytes).\r\n' 00:46:36.175164 Received DATA (on stdin) 00:46:36.175253 > 28 bytes data, server => client 00:46:36.175330 '226 File transfer complete\r\n' 00:46:36.215903 < 6 bytes data, client => server 00:46:36.216003 'QUIT\r\n' 00:46:36.219391 Received DATA (on stdin) 00:46:36.219460 > 18 bytes data, server => client 00:46:36.219527 '221 bye bye baby\r\n' 00:46:36.220057 =CMD (4864): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind119 ../src/curl -q --output log/2/curl119.out --include --trace-ascii log/2/trace119 --trace-time ftp://127.0.0.1:39881/119 -P - > log/2/stdout119 2> log/2/stderr119 ===> Client disconnect 00:46:36.220303 Received ACKD (on stdin) 00:47:23.351434 ====> Client connect 00:47:23.358929 Received DATA (on stdin) 00:47:23.359058 > 160 bytes data, server => client 00:47:23.359183 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:47:23.359299 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:47:23.359402 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:47:24.836071 < 16 bytes data, client => server 00:47:24.836270 'USER anonymous\r\n' 00:47:24.840141 Received DATA (on stdin) 00:47:24.840237 > 33 bytes data, server => client 00:47:24.840343 '331 We are happy you popped in!\r\n' 00:47:24.941737 < 22 bytes data, client => server 00:47:24.941940 'PASS ftp@example.com\r\n' 00:47:24.942915 Received DATA (on stdin) 00:47:24.942989 > 30 bytes data, server => client 00:47:24.943662 '230 Welcome you silly person\r\n' 00:47:25.042900 < 5 bytes data, client => server 00:47:25.043110 'PWD\r\n' 00:47:25.046873 Received DATA (on stdin) 00:47:25.046975 > 30 bytes data, server => client 00:47:25.047068 '257 "/" is current directory\r\n' 00:47:25.301669 < 6 bytes data, client => server 00:47:25.301879 'EPSV\r\n' 00:47:25.308854 Received DATA (on stdin) 00:47:25.308977 > 21 bytes data, server => client 00:47:25.309065 '314 bluah you f00l!\r\n' 00:47:25.411401 < 6 bytes data, client => server 00:47:25.411583 'PASV\r\n' 00:47:25.481138 Received DATA (on stdin) 00:47:25.481282 > 46 bytes data, server => client 00:47:25.481388 '227 Entering Passive Mode (127,0,0,1,161,55)\r\n' 00:47:25.827919 < 8 bytes data, client => server 00:47:25.828103 'TYPE I\r\n' 00:47:25.831742 Received DATA (on stdin) 00:47:25.831841 > 33 bytes data, server => client 00:47:25.831933 '200 I modify TYPE as you wanted\r\n' 00:47:25.881656 < 10 bytes data, client => server 00:47:25.881878 'SIZE 118\r\n' 00:47:25.885301 Received DATA (on stdin) 00:47:25.885418 > 28 bytes data, server => client 00:47:25.885517 '500 command not understood\r\n' 00:47:25.948457 < 10 bytes data, client => server 00:47:25.948627 'RETR 118\r\n' 00:47:25.955081 Received DATA (on stdin) 00:47:25.955214 > 21 bytes data, server => client 00:47:25.955309 '314 bluah you f00l!\r\n' 00:47:27.288325 < 6 bytes data, client => server 00:47:27.288548 'QUIT\r\n' 00:47:27.290025 Received DATA (on stdin) 00:47:27.290110 > 18 bytes data, server => client 00:47:27.290225 '221 bye bye baby\r\n' 00:47:27.483420 ====> Client disconnect 00:47:27.484273 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:46:35.146563 Running IPv4 version 00:46:35.154252 Listening on port 46089 00:46:35.154719 Wrote pid 204631 to log/1/server/ftp_sockdata.pid 00:46:35.155561 Received PING (on stdin) 00:46:35.156644 Received PORT (on stdin) 00:46:35.160469 ====> Client connect 00:46:35.165396 Received DATA (on stdin) 00:46:35.165722 > 18 bytes data, server => client 00:46:35.168700 'WE ROOLZ: 202066\r\n' 00:46:35.168956 Received DISC (on stdin) 00:46:35.169072 ====> Client forcibly disconnected 00:46:35.169645 Received QUIT (on stdin) 00:46:35.169716 quits 00:46:35.170199 ============> sockfilt quits 00:47:24.467609 Running IPv4 version 00:47:24.476981 Listening on port 41271 00:47:24.477539 Wrote pid 205725 to log/1/server/ftp_sockdata.pid 00:47:24.478341 Received PING (on stdin) 00:47:24.479509 Received PORT (on stdin) 00:47:24.708449 ====> Client connect 00:47:25.159522 ====> Client disconnect === End of file ftp_sockdata.log === Start of file server.cmd REPLY RETR 314 bluah you f00l REPLY EPSV 314 bluah you f00l REPLY SIZE 500 command not understood Testnum 118 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV PASV TYPE I SIZE 118 RETR 118 QUIT === End of file server.input === Start of file stderr118 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 curl: (19) RETR response: 314 === End of file stderr118 === Start of file trace118 00:47:22.369696 * Trying 127.0.0.1:37481... 00:47:23.433323 * Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 127.0.0.1 port 44256 00:47:23.700063 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:47:24.084435 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:47:24.119480 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:47:24.125783 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:47:24.129805 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:47:24.235033 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:47:24.300844 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:47:24.324444 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:47:24.396151 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:47:24.425608 => Send header, 5 bytes (0x5) 0000: PWD 00:47:24.455839 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:47:24.498913 * Entry path is '/' 00:47:24.622372 * Request has same path as previous transfer 00:47:24.683942 => Send header, 6 bytes (0x6) 0000: EPSV 00:47:24.699328 * Connect data stream passively 00:47:24.710759 <= Recv header, 21 bytes (0x15) 0000: 314 bluah you f00l 00:47:24.764467 * Failed EPSV attempt. Disabling EPSV 00:47:24.793640 => Send header, 6 bytes (0x6) 0000: PASV 00:47:24.881774 <= Recv header, 46 bytes (0x2e) 0000: 227 Entering Passive Mode (127,0,0,1,161,55) 00:47:24.926111 * Skip 127.0.0.1 for data connection, reuse 127.0.0.1 instead 00:47:25.009821 * Connecting to 127.0.0.1 (127.0.0.1) port 41271 00:47:25.084214 * Trying 127.0.0.1:41271... 00:47:25.180245 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 41271) from 127.0.0.1 port 42280 00:47:25.212491 => Send header, 8 bytes (0x8) 0000: TYPE I 00:47:25.231743 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:47:25.266324 => Send header, 10 bytes (0xa) 0000: SIZE 118 00:47:25.301228 <= Recv header, 28 bytes (0x1c) 0000: 500 command not understood 00:47:25.330175 => Send header, 10 bytes (0xa) 0000: RETR 118 00:47:25.345706 <= Recv header, 21 bytes (0x15) 0000: 314 bluah you f00l 00:47:25.385137 * RETR response: 314 00:47:25.468706 * Remembering we are in dir "" 00:47:25.968377 * Connection #0 to host 127.0.0.1:37481 left intact === End of file trace118 === Start of file valgrind118 ==204637== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind118 test 0119...[FTP download, failed RETR with PORT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind119 ../src/curl -q --output log/2/curl119.out --include --trace-ascii log/2/trace119 --trace-time ftp://127.0.0.1:39881/119 -P - > log/2/stdout119 2> log/2/stderr119 valgrind ERROR ==204808== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 119 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind119 ../src/curl -q --output log/2/curl119.out --include --trace-ascii log/2/trace119 --trace-time ftp://127.0.0.1:39881/119 -P - > log/2/stdout119 2> log/2/stderr119 === End of file commands.log === Start of file ftp_server.log 00:46:44.060179 ====> Client connect 00:46:44.064456 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:46:44.071361 < "USER anonymous" 00:46:44.071671 > "331 We are happy you popped in![CR][LF]" 00:46:44.072747 < "PASS ftp@example.com" 00:46:44.072993 > "230 Welcome you silly person[CR][LF]" 00:46:44.074105 < "PWD" 00:46:44.074498 > "257 "/" is current directory[CR][LF]" 00:46:44.076901 < "EPSV" 00:46:44.077088 ====> Passive DATA channel requested by client 00:46:44.077222 DATA sockfilt for passive data channel starting... 00:46:44.120278 DATA sockfilt for passive data channel started (pid 204802) 00:46:44.121432 DATA sockfilt for passive data channel listens on port 42243 00:46:44.121746 > "229 Entering Passive Mode (|||42243|)[CR][LF]" 00:46:44.121908 Client has been notified that DATA conn will be accepted on port 42243 00:46:44.124989 Client connects to port 42243 00:46:44.125188 ====> Client established passive DATA connection on port 42243 00:46:44.125760 < "TYPE I" 00:46:44.126266 > "200 I modify TYPE as you wanted[CR][LF]" 00:46:44.127167 < "SIZE verifiedserver" 00:46:44.127462 > "213 18[CR][LF]" 00:46:44.128830 < "RETR verifiedserver" 00:46:44.129113 > "150 Binary junk (18 bytes).[CR][LF]" 00:46:44.131387 =====> Closing passive DATA connection... 00:46:44.131582 Server disconnects passive DATA connection 00:46:44.134442 Server disconnected passive DATA connection 00:46:44.134633 DATA sockfilt for passive data channel quits (pid 204802) 00:46:44.137362 DATA sockfilt for passive data channel quit (pid 204802) 00:46:44.137542 =====> Closed passive DATA connection 00:46:44.137832 > "226 File transfer complete[CR][LF]" 00:46:44.177939 < "QUIT" 00:46:44.178221 > "221 bye bye baby[CR][LF]" 00:46:44.178954 MAIN sockfilt said DISC 00:46:44.179265 ====> Client disconnected 00:46:44.179551 Awaiting input 00:47:31.731348 ====> Client connect 00:47:31.732150 FTPD: Getting commands from log/2/server.cmd 00:47:31.733144 FTPD: set custom reply for RETR command 00:47:31.733632 FTPD: set custom reply for SIZE command 00:47:31.733879 FTPD: run test case number: 119 00:47:31.742160 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:47:33.118850 < "USER anonymous" 00:47:33.121090 > "331 We are happy you popped in![CR][LF]" 00:47:33.235551 < "PASS ftp@example.com" 00:47:33.235992 > "230 Welcome you silly person[CR][LF]" 00:47:33.327672 < "PWD" 00:47:33.328112 > "257 "/" is current directory[CR][LF]" 00:47:33.643842 < "EPRT |1|127.0.0.1|33135|" 00:47:33.644181 ====> Active DATA channel requested by client 00:47:33.647731 > "200 Thanks for dropping by. We contact you later[CR][LF]" 00:47:33.647953 DATA sockfilt for active data channel starting... 00:47:33.729532 DATA sockfilt for active data channel started (pid 206099) 00:47:33.730030 ====> Active DATA channel connected to client port 33135 00:47:34.026640 < "TYPE I" 00:47:34.027412 > "200 I modify TYPE as you wanted[CR][LF]" 00:47:34.083198 < "SIZE 119" 00:47:34.087740 > "500 command not understood[CR][LF]" 00:47:34.214795 < "RETR 119" 00:47:34.215205 > "314 bluah you f00l![CR][LF]" 00:47:35.392045 < "QUIT" 00:47:35.392456 > "221 bye bye baby[CR][LF]" 00:47:35.590402 MAIN sockfilt said DISC 00:47:35.590882 ====> Client disconnected 00:47:35.597766 DATA sockfilt for active data channel killed now 00:47:35.597968 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:46:44.677307 ====> Client connect 00:46:44.678504 Received DATA (on stdin) 00:46:44.678581 > 160 bytes data, server => client 00:46:44.678704 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:46:44.678800 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:46:44.678883 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:46:44.688045 < 16 bytes data, client => server 00:46:44.688133 'USER anonymous\r\n' 00:46:44.689369 Received DATA (on stdin) 00:46:44.689440 > 33 bytes data, server => client 00:46:44.689521 '331 We are happy you popped in!\r\n' 00:46:44.689771 < 22 bytes data, client => server 00:46:44.689845 'PASS ftp@example.com\r\n' 00:46:44.690736 Received DATA (on stdin) 00:46:44.690801 > 30 bytes data, server => client 00:46:44.690878 '230 Welcome you silly person\r\n' 00:46:44.691155 < 5 bytes data, client => server 00:46:44.691219 'PWD\r\n' 00:46:44.691817 Received DATA (on stdin) 00:46:44.691883 > 30 bytes data, server => client 00:46:44.692189 '257 "/" is current directory\r\n' 00:46:44.693952 < 6 bytes data, client => server 00:46:44.694019 'EPSV\r\n' 00:46:44.739626 Received DATA (on stdin) 00:46:44.739752 > 39 bytes data, server => client 00:46:44.739841 '229 Entering Passive Mode (|||42243|)\r\n' 00:46:44.742334 < 8 bytes data, client => server 00:46:44.742403 'TYPE I\r\n' 00:46:44.743473 Received DATA (on stdin) 00:46:44.743536 > 33 bytes data, server => client 00:46:44.743634 '200 I modify TYPE as you wanted\r\n' 00:46:44.744208 < 21 bytes data, client => server 00:46:44.744282 'SIZE verifiedserver\r\n' 00:46:44.745242 Received DATA (on stdin) 00:46:44.745323 > 8 bytes data, server => client 00:46:44.745386 '213 18\r\n' 00:46:44.745803 < 21 bytes data, client => server 00:46:44.745875 'RETR verifiedserver\r\n' 00:46:44.747216 Received DATA (on stdin) 00:46:44.747280 > 29 bytes data, server => client 00:46:44.747357 '150 Binary junk (18 bytes).\r\n' 00:46:44.755276 Received DATA (on stdin) 00:46:44.755363 > 28 bytes data, server => client 00:46:44.755457 '226 File transfer complete\r\n' 00:46:44.794927 < 6 bytes data, client => server 00:46:44.795027 'QUIT\r\n' 00:46:44.795666 Received DATA (on stdin) 00:46:44.795750 > 18 bytes data, server => client 00:46:44.795837 '221 bye bye baby\r\n' 00:46:44.796349 ====> Client disconnect 00:46:44.796647 Received ACKD (on stdin) 00:47:32.348425 ====> Client connect 00:47:32.358859 Received DATA (on stdin) 00:47:32.358985 > 160 bytes data, server => client 00:47:32.359115 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:47:32.359218 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:47:32.359311 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:47:33.734858 < 16 bytes data, client => server 00:47:33.735082 'USER anonymous\r\n' 00:47:33.736632 Received DATA (on stdin) 00:47:33.736708 > 33 bytes data, server => client 00:47:33.738442 '331 We are happy you popped in!\r\n' 00:47:33.851782 < 22 bytes data, client => server 00:47:33.851959 'PASS ftp@example.com\r\n' 00:47:33.853625 Received DATA (on stdin) 00:47:33.853705 > 30 bytes data, server => client 00:47:33.853791 '230 Welcome you silly person\r\n' 00:47:33.943952 < 5 bytes data, client => server 00:47:33.944115 'PWD\r\n' 00:47:33.948386 Received DATA (on stdin) 00:47:33.948478 > 30 bytes data, server => client 00:47:33.948579 '257 "/" is current directory\r\n' 00:47:34.260082 < 26 bytes data, client => server 00:47:34.260265 'EPRT |1|127.0.0.1|33135|\r\n' 00:47:34.261838 Received DATA (on stdin) 00:47:34.261913 > 50 bytes data, server => client 00:47:34.267607 '200 Thanks for dropping by. We contact you later\r\n' 00:47:34.642844 < 8 bytes data, client => server 00:47:34.643030 'TYPE I\r\n' 00:47:34.644433 Received DATA (on stdin) 00:47:34.644510 > 33 bytes data, server => client 00:47:34.644624 '200 I modify TYPE as you wanted\r\n' 00:47:34.699541 < 10 bytes data, client => server 00:47:34.699694 'SIZE 119\r\n' 00:47:34.700934 Received DATA (on stdin) 00:47:34.701009 > 28 bytes data, server => client 00:47:34.705401 '500 command not understood\r\n' 00:47:34.831049 < 10 bytes data, client => server 00:47:34.831218 'RETR 119\r\n' 00:47:34.832812 Received DATA (on stdin) 00:47:34.832890 > 21 bytes data, server => client 00:47:34.832967 '314 bluah you f00l!\r\n' 00:47:36.008302 < 6 bytes data, client => server 00:47:36.008489 'QUIT\r\n' 00:47:36.010068 Received DATA (on stdin) 00:47:36.01CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind120 ../src/curl -q --output log/5/curl120.out --include --trace-ascii log/5/trace120 --trace-time ftp://127.0.0.1:33729/120 -Q "-DELE file" > log/5/stdout120 2> log/5/stderr120 0135 > 18 bytes data, server => client 00:47:36.010207 '221 bye bye baby\r\n' 00:47:36.207539 ====> Client disconnect 00:47:36.209553 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:46:44.728966 Running IPv4 version 00:46:44.736366 Listening on port 42243 00:46:44.736781 Wrote pid 204802 to log/2/server/ftp_sockdata.pid 00:46:44.737494 Received PING (on stdin) 00:46:44.738326 Received PORT (on stdin) 00:46:44.742188 ====> Client connect 00:46:44.746817 Received DATA (on stdin) 00:46:44.747087 > 18 bytes data, server => client 00:46:44.748778 'WE ROOLZ: 202189\r\n' 00:46:44.751808 Received DISC (on stdin) 00:46:44.751931 ====> Client forcibly disconnected 00:46:44.752314 Received QUIT (on stdin) 00:46:44.752391 quits 00:46:44.752819 ============> sockfilt quits 00:47:33.327548 ====> Client connect 00:47:33.345200 Running IPv4 version 00:47:33.345359 Connected to port 33135 00:47:33.345815 Wrote pid 206099 to log/2/server/ftp_sockdata.pid 00:47:33.346587 Received PING (on stdin) 00:47:34.005470 ====> Client disconnect === End of file ftp_sockdata.log === Start of file server.cmd REPLY RETR 314 bluah you f00l REPLY SIZE 500 command not understood Testnum 119 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPRT |1|127.0.0.1|33135| TYPE I SIZE 119 RETR 119 QUIT === End of file server.input === Start of file stderr119 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (19) RETR response: 314 === End of file stderr119 === Start of file trace119 00:47:31.406409 * Trying 127.0.0.1:39881... 00:47:32.352811 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 45112 00:47:32.614473 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:47:32.976442 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:47:33.005263 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:47:33.017620 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:47:33.023652 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:47:33.138482 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:47:33.214045 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:47:33.237703 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:47:33.307539 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:47:33.328431 => Send header, 5 bytes (0x5) 0000: PWD 00:47:33.344631 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:47:33.380318 * Entry path is '/' 00:47:33.490137 * Request has same path as previous transfer 00:47:33.644724 => Send header, 26 bytes (0x1a) 0000: EPRT |1|127.0.0.1|33135| 00:47:33.764153 <= Recv header, 50 bytes (0x32) 0000: 200 Thanks for dropping by. We contact you later 00:47:33.798435 * Connect data stream actively 00:47:33.898344 * Ready to accept data connection from server 00:47:33.913606 * Connection accepted from server 00:47:33.992953 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 59692) from 127.0.0.1 port 33135 00:47:34.027850 => Send header, 8 bytes (0x8) 0000: TYPE I 00:47:34.049067 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:47:34.083821 => Send header, 10 bytes (0xa) 0000: SIZE 119 00:47:34.184032 <= Recv header, 28 bytes (0x1c) 0000: 500 command not understood 00:47:34.215812 => Send header, 10 bytes (0xa) 0000: RETR 119 00:47:34.239739 <= Recv header, 21 bytes (0x15) 0000: 314 bluah you f00l 00:47:34.278684 * RETR response: 314 00:47:34.359103 * Remembering we are in dir "" 00:47:34.670041 * Connection #0 to host 127.0.0.1:39881 left intact === End of file trace119 === Start of file valgrind119 ==204808== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind119 test 0120...[ftp download with post-quote delete operation] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind120 ../src/curl -q --output log/5/curl120.out --include --trace-ascii log/5/trace120 --trace-time ftp://127.0.0.1:33729/120 -Q "-DELE file" > log/5/stdout120 2> log/5/stderr120 valgrind ERROR ==204961== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 120 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind120 ../src/curl -q --output log/5/curl120.out --include --trace-ascii log/5/trace120 --trace-time ftp://127.0.0.1:33729/120 -Q "-DELE file" > log/5/stdout120 2> log/5/stderr120 === End of file commands.log === Start of file curl120.out data to see that FTP works so does it? === End of file curl120.out === Start of file ftp_server.log 00:46:46.481077 ====> Client connect 00:46:46.482080 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:46:46.491592 < "USER anonymous" 00:46:46.491872 > "331 We are happy you popped in![CR][LF]" 00:46:46.492532 < "PASS ftp@example.com" 00:46:46.492763 > "230 Welcome you silly person[CR][LF]" 00:46:46.493371 < "PWD" 00:46:46.493614 > "257 "/" is current directory[CR][LF]" 00:46:46.495263 < "EPSV" 00:46:46.495453 ====> Passive DATA channel requested by client 00:46:46.495588 DATA sockfilt for passive data channel starting... 00:46:46.533388 DATA sockfilt for passive data channel started (pid 204955) 00:46:46.534377 DATA sockfilt for passive data channel listens on port 45111 00:46:46.534699 > "229 Entering Passive Mode (|||45111|)[CR][LF]" 00:46:46.534855 Client has been notified that DATA conn will be accepted on port 45111 00:46:46.537331 Client connects to port 45111 00:46:46.537513 ====> Client established passive DATA connection on port 45111 00:46:46.538073 < "TYPE I" 00:46:46.538320 > "200 I modify TYPE as you wanted[CR][LF]" 00:46:46.539075 < "SIZE verifiedserver" 00:46:46.539356 > "213 18[CR][LF]" 00:46:46.542608 < "RETR verifiedserver" 00:46:46.543175 > "150 Binary junk (18 bytes).[CR][LF]" 00:46:46.545892 =====> Closing passive DATA connection... 00:46:46.546055 Server disconnects passive DATA connection 00:46:46.546808 Server disconnected passive DATA connection 00:46:46.546968 DATA sockfilt for passive data channel quits (pid 204955) 00:46:46.550149 DATA sockfilt for passive data channel quit (pid 204955) 00:46:46.550357 =====> Closed passive DATA connection 00:46:46.550633 > "226 File transfer complete[CR][LF]" 00:46:46.591894 < "QUIT" 00:46:46.592459 > "221 bye bye baby[CR][LF]" 00:46:46.593326 MAIN sockfilt said DISC 00:46:46.593509 ====> Client disconnected 00:46:46.593761 Awaiting input 00:47:34.281446 ====> Client connect 00:47:34.282199 FTPD: Getting commands from log/5/server.cmd 00:47:34.283174 FTPD: set custom reply for EPSV command 00:47:34.283456 FTPD: run test case number: 120 00:47:34.287813 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:47:35.531712 < "USER anonymous" 00:47:35.534377 > "331 We are happy you popped in![CR][LF]" 00:47:35.636221 < "PASS ftp@example.com" 00:47:35.641051 > "230 Welcome you silly person[CR][LF]" 00:47:35.717202 < "PWD" 00:47:35.717615 > "257 "/" is current directory[CR][LF]" 00:47:35.905714 < "EPSV" 00:47:35.906119 > "314 bluah you f00l![CR][LF]" 00:47:35.989872 < "PASV" 00:47:35.990220 ====> Passive DATA channel requested by client 00:47:35.990375 DATA sockfilt for passive data channel starting... 00:47:36.053928 DATA sockfilt for passive data channel started (pid 206105) 00:47:36.058361 DATA sockfilt for passive data channel listens on port 34699 00:47:36.059848 > "227 Entering Passive Mode (127,0,0,1,135,139)[CR][LF]" 00:47:36.060039 Client has been notified that DATA conn will be accepted on port 34699 00:47:36.237732 Client connects to port 34699 00:47:36.238282 ====> Client established passive DATA connection on port 34699 00:47:36.341996 < "TYPE I" 00:47:36.342544 > "200 I modify TYPE as you wanted[CR][LF]" 00:47:36.386893 < "SIZE 120" 00:47:36.394383 > "213 51[CR][LF]" 00:47:36.468177 < "RETR 120" 00:47:36.470518 > "150 Binary data connection for 120 () (51 bytes).[CR][LF]" 00:47:36.473510 =====> Closing passive DATA connection... 00:47:36.473689 Server disconnects passive DATA connection 00:47:36.474154 Server disconnected passive DATA connection 00:47:36.474322 DATA sockfilt for passive data channel quits (pid 206105) 00:47:36.477406 DATA sockfilt for passive data channel quit (pid 206105) 00:47:36.477563 =====> Closed passive DATA connection 00:47:36.478125 > "226 File transfer complete[CR][LF]" 00:47:37.363173 < "DELE file" 00:47:37.363597 > "200 OK OK OK whatever you say[CR][LF]" 00:47:38.427368 < "QUIT" 00:47:38.428075 > "221 bye bye baby[CR][LF]" 00:47:38.584761 MAIN sockfilt said DISC 00:47:38.585311 ====> Client disconnected 00:47:38.585625 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:46:47.097217 ====> Client connect 00:46:47.099452 Received DATA (on stdin) 00:46:47.099530 > 160 bytes data, server => client 00:46:47.099636 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:46:47.099731 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:46:47.099813 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:46:47.105843 < 16 bytes data, client => server 00:46:47.105924 'USER anonymous\r\n' 00:46:47.109328 Received DATA (on stdin) 00:46:47.109394 > 33 bytes data, server => client 00:46:47.109472 '331 We are happy you popped in!\r\n' 00:46:47.109705 < 22 bytes data, client => server 00:46:47.109776 'PASS ftp@example.com\r\n' 00:46:47.110222 Received DATA (on stdin) 00:46:47.110281 > 30 bytes data, server => client 00:46:47.110356 '230 Welcome you silly person\r\n' 00:46:47.110560 < 5 bytes data, client => server 00:46:47.110620 'PWD\r\n' 00:46:47.111073 Received DATA (on stdin) 00:46:47.111132 > 30 bytes data, server => client 00:46:47.111206 '257 "/" is current directory\r\n' 00:46:47.112446 < 6 bytes data, client => server 00:46:47.112511 'EPSV\r\n' 00:46:47.152127 Received DATA (on stdin) 00:46:47.152269 > 39 bytes data, server => client 00:46:47.152359 '229 Entering Passive Mode (|||45111|)\r\n' 00:46:47.154867 < 8 bytes data, client => server 00:46:47.154936 'TYPE I\r\n' 00:46:47.155778 Received DATA (on stdin) 00:46:47.155846 > 33 bytes data, server => client 00:46:47.155926 '200 I modify TYPE as you wanted\r\n' 00:46:47.156259 < 21 bytes data, client => server 00:46:47.156332 'SIZE verifiedserver\r\n' 00:46:47.156817 Received DATA (on stdin) 00:46:47.156880 > 8 bytes data, server => client 00:46:47.156944 '213 18\r\n' 00:46:47.157347 < 21 bytes data, client => server 00:46:47.157422 'RETR verifiedserver\r\n' 00:46:47.160371 Received DATA (on stdin) 00:46:47.160441 > 29 bytes data, server => client 00:46:47.160537 '150 Binary junk (18 bytes).\r\n' 00:46:47.171582 Received DATA (on stdin) 00:46:47.171667 > 28 bytes data, server => client 00:46:47.171761 '226 File transfer complete\r\n' 00:46:47.208655 < 6 bytes data, client => server 00:46:47.208746 'QUIT\r\n' 00:46:47.209658 Received DATA (on stdin) 00:46:47.209726 > 18 bytes data, server => client 00:46:47.209817 '221 bye bye baby\r\n' 00:46:47.210724 ====> Client disconnect 00:46:47.211414 Received ACKD (on stdin) 00:47:34.898536 ====> Client connect 00:47:34.905464 Received DATA (on stdin) 00:47:34.905579 > 160 bytes data, server => client 00:47:34.905696 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:47:34.905799 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:47:34.905892 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:47:36.147830 < 16 bytes data, client => server 00:47:36.148022 'USER anonymous\r\n' 00:47:36.151997 Received DATA (on stdin) 00:47:36.152076 > 33 bytes data, server => client 00:47:36.152165 '331 We are happy you popped in!\r\n' 00:47:36.252551 < 22 bytes data, client => server 00:47:36.252702 'PASS ftp@example.com\r\n' 00:47:36.253969 Received DATA (on stdin) 00:47:36.254045 > 30 bytes data, server => client 00:47:36.258636 '230 Welcome you silly person\r\n' 00:47:36.333603 < 5 bytes data, client => server 00:47:36.333746 'PWD\r\n' 00:47:36.335224 Received DATA (on stdin) 00:47:36.335307 > 30 bytes data, server => client 00:47:36.335405 '257 "/" is current directory\r\n' 00:47:36.521940 < 6 bytes data, client => server 00:47:36.522131 'EPSV\r\n' 00:47:36.523718 Received DATA (on stdin) 00:47:36.523793 > 21 bytes data, server => client 00:47:36.523874 '314 bluah you f00l!\r\n' 00:47:36.606049 < 6 bytes data, client => server 00:47:36.606237 'PASV\r\n' 00:47:36.681521 Received DATA (on stdin) 00:47:36.681666 > 47 bytes data, server => client 00:47:36.681869 '227 Entering Passive Mode (127,0,0,1,135,139)\r\n' 00:47:36.958425 < 8 bytes data, client => server 00:47:36.958645 'TYPE I\r\n' 00:47:36.960174 Received DATA (on stdin) 00:47:36.960256 > 33 bytes data, server => client 00:47:36.960349 '200 I modify TYPE as you wanted\r\n' 00:47:37.003358 < 10 bytes data, client => server 00:47:37.003525 'SIZE 120\r\n' 00:47:37.008380 Received DATA (on stdin) 00:47:37.008470 > 8 bytes data, server => client 00:47:37.012047 '213 51\r\n' 00:47:37.084345 < 10 bytes data, client => server 00:47:37.084514 'RETR 120\r\n' 00:47:37.087550 Received DATA (on stdin) 00:47:37.087637 > 51 bytes data, server => client 00:47:37.087749 '150 Binary data connection for 120 () (51 bytes).\r\n' 00:47:37.095175 Received DATA (on stdin) 00:47:37.095272 > 28 bytes data, server => client 00:47:37.095368 '226 File transfer complete\r\n' 00:47:37.979399 < 11 bytes data, client => server 00:47:37.979588 'DELE file\r\n' 00:47:37.985042 Received DATA (on stdin) 00:47:37.985125 > 31 bytes data, server => client 00:47:37.985214 '200 OK OK OK whatever you say\r\n' 00:47:39.043634 < 6 bytes data, client => server 00:47:39.043806 'QUIT\r\n' 00:47:39.045113 Received DATA (on stdin) 00:47:39.045187 > 18 bytes data, server => client 00:47:39.045285 '221 bye bye baby\r\n' 00:47:39.201821 ====> Client disconnect 00:47:39.203222 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:46:46.142169 Running IPv4 version 00:46:46.149420 Listening on port 45111 00:46:46.149847 Wrote pid 204955 to log/5/server/ftp_sockdata.pid 00:46:46.150562 Received PING (on stdin) 00:46:46.151291 Received PORT (on stdin) 00:46:46.154718 ====> Client connect 00:46:46.160881 Received DATA (on stdin) 00:46:46.161145 > 18 bytes data, server => client 00:46:46.163947 'WE ROOLZ: 202313\r\n' 00:46:46.164178 Received DISC (on stdin) 00:46:46.164672 ====> Client forcibly disconnected 00:46:46.164829 Received QUIT (on stdin) 00:46:46.164899 quits 00:46:46.165360 ============> sockfilt quits 00:47:36.661455 Running IPv4 version 00:47:36.669683 Listening on port 34699 00:47:36.670178 Wrote pid 206105 to log/5/server/ftp_sockdata.pid 00:47:36.670948 Received PING (on stdin) 00:47:36.675052 Received PORT (on stdin) 00:47:36.852133 ====> Client connect 00:47:37.088181 Received DATA (on stdin) 00:47:37.088564 > 5 bytes data, server => client 00:47:37.088930 'data\n' 00:47:37.089243 Received DATA (on stdin) 00:47:37.0CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind121 ../src/curl -q --output log/3/curl121.out --include --trace-ascii log/3/trace121 --trace-time ftp://127.0.0.1:37331/121 -Q "-DELE after_transfer" -Q "DELE before_transfer" > log/3/stdout121 2> log/3/stderr121 89309 > 7 bytes data, server => client 00:47:37.089393 ' to\n' 00:47:37.089528 Received DATA (on stdin) 00:47:37.089592 > 10 bytes data, server => client 00:47:37.089677 ' see\n' 00:47:37.089807 Received DATA (on stdin) 00:47:37.089871 > 9 bytes data, server => client 00:47:37.089955 'that FTP\n' 00:47:37.090074 Received DATA (on stdin) 00:47:37.090138 > 6 bytes data, server => client 00:47:37.090219 'works\n' 00:47:37.090338 Received DATA (on stdin) 00:47:37.090402 > 14 bytes data, server => client 00:47:37.090488 ' so does it?\n' 00:47:37.091247 Received DISC (on stdin) 00:47:37.091363 ====> Client forcibly disconnected 00:47:37.091877 Received QUIT (on stdin) 00:47:37.091952 quits 00:47:37.092416 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPSV 314 bluah you f00l Testnum 120 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV PASV TYPE I SIZE 120 RETR 120 DELE file QUIT === End of file server.input === Start of file stderr120 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 51 100 51 0 0 9 0 0:00:05 0:00:05 --:--:-- 12 === End of file stderr120 === Start of file trace120 00:47:33.966466 * Trying 127.0.0.1:33729... 00:47:34.843914 * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 43678 00:47:35.073599 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:47:35.411088 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:47:35.437875 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:47:35.445640 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:47:35.450160 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:47:35.549011 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:47:35.616507 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:47:35.636268 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:47:35.699101 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:47:35.716257 => Send header, 5 bytes (0x5) 0000: PWD 00:47:35.731283 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:47:35.765433 * Entry path is '/' 00:47:35.858424 * Request has same path as previous transfer 00:47:35.904585 => Send header, 6 bytes (0x6) 0000: EPSV 00:47:35.917485 * Connect data stream passively 00:47:35.925727 <= Recv header, 21 bytes (0x15) 0000: 314 bluah you f00l 00:47:35.966412 * Failed EPSV attempt. Disabling EPSV 00:47:35.988719 => Send header, 6 bytes (0x6) 0000: PASV 00:47:36.067979 <= Recv header, 47 bytes (0x2f) 0000: 227 Entering Passive Mode (127,0,0,1,135,139) 00:47:36.106652 * Skip 127.0.0.1 for data connection, reuse 127.0.0.1 instead 00:47:36.175120 * Connecting to 127.0.0.1 (127.0.0.1) port 34699 00:47:36.229347 * Trying 127.0.0.1:34699... 00:47:36.311983 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 34699) from 127.0.0.1 port 40914 00:47:36.339858 => Send header, 8 bytes (0x8) 0000: TYPE I 00:47:36.357273 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:47:36.386028 => Send header, 10 bytes (0xa) 0000: SIZE 120 00:47:36.422468 <= Recv header, 8 bytes (0x8) 0000: 213 51 00:47:36.467010 => Send header, 10 bytes (0xa) 0000: RETR 120 00:47:36.483555 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 120 () (51 bytes). 00:47:36.525442 * Maxdownload = -1 00:47:36.535152 * Getting file with size: 51 00:47:36.673002 <= Recv data, 51 bytes (0x33) 0000: data. to. see.that FTP.works. so does it?. 00:47:36.957836 * abort upload 00:47:36.980669 <= Recv data, 0 bytes (0x0) 00:47:37.139486 * Remembering we are in dir "" 00:47:37.314955 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:47:37.362066 => Send header, 11 bytes (0xb) 0000: DELE file 00:47:37.376046 <= Recv header, 31 bytes (0x1f) 0000: 200 OK OK OK whatever you say 00:47:37.643813 * Connection #0 to host 127.0.0.1:33729 left intact === End of file trace120 === Start of file valgrind120 ==204961== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind120 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 126 in state 4 Runner 2 (id 185908) running test 127 in state 4 Runner 3 (id 185910) running test 121 in state 4 Runner 4 (id 185912) running test 124 in state 4 Runner 5 (id 185914) running test 128 in state 4 Runner 6 (id 185916) running test 125 in state 4 Runner 7 (id 185918) running test 122 in state 4 Runner 8 (id 185920) running test 123 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 126 in state 4 Runner 2 (id 185908) running test 127 in state 4 Runner 3 (id 185910) running test 121 in state 4 Runner 4 (id 185912) running test 124 in state 4 Runner 5 (id 185914) running test 128 in state 4 Runner 6 (id 185916) running test 125 in state 4 Runner 7 (id 185918) running test 122 in state 4 Runner 8 (id 185920) running test 123 in state 4 test 0121...[ftp download with post- and pre-transfer delete operations] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind121 ../src/curl -q --output log/3/curl121.out --include --trace-ascii log/3/trace121 --trace-time ftp://127.0.0.1:37331/121 -Q "-DELE after_transfer" -Q "DELE before_transfer" > log/3/stdout121 2> log/3/stderr121 valgrind ERROR ==205180== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 121 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind121 ../src/curl -q --output log/3/curl121.out --include --trace-ascii log/3/trace121 --trace-time ftp://127.0.0.1:37331/121 -Q "-DELE after_transfer" -Q "DELE before_transfer" > log/3/stdout121 2> log/3/stderr121 === End of file commands.log === Start of file curl121.out data to see that FTP works so does it? === End of file curl121.out === Start of file ftp_server.log 00:47:13.178515 ====> Client connect 00:47:13.179500 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:47:13.187523 < "USER anonymous" 00:47:13.187919 > "331 We are happy you popped in![CR][LF]" 00:47:13.189363 < "PASS ftp@example.com" 00:47:13.190190 > "230 Welcome you silly person[CR][LF]" 00:47:13.190711 < "PWD" 00:47:13.190998 > "257 "/" is current directory[CR][LF]" 00:47:13.193951 < "EPSV" 00:47:13.194158 ====> Passive DATA channel requested by client 00:47:13.194332 DATA sockfilt for passive data channel starting... 00:47:13.237027 DATA sockfilt for passive data channel started (pid 205174) 00:47:13.238440 DATA sockfilt for passive data channel listens on port 40027 00:47:13.238807 > "229 Entering Passive Mode (|||40027|)[CR][LF]" 00:47:13.238988 Client has been notified that DATA conn will be accepted on port 40027 00:47:13.242336 Client connects to port 40027 00:47:13.242623 ====> Client established passive DATA connection on port 40027 00:47:13.243285 < "TYPE I" 00:47:13.243839 > "200 I modify TYPE as you wanted[CR][LF]" 00:47:13.244922 < "SIZE verifiedserver" 00:47:13.245503 > "213 18[CR][LF]" 00:47:13.246708 < "RETR verifiedserver" 00:47:13.249346 > "150 Binary junk (18 bytes).[CR][LF]" 00:47:13.249946 =====> Closing passive DATA connection... 00:47:13.250111 Server disconnects passive DATA connection 00:47:13.254714 Server disconnected passive DATA connection 00:47:13.254943 DATA sockfilt for passive data channel quits (pid 205174) 00:47:13.260116 DATA sockfilt for passive data channel quit (pid 205174) 00:47:13.260374 =====> Closed passive DATA connection 00:47:13.260884 > "226 File transfer complete[CR][LF]" 00:47:13.299571 < "QUIT" 00:47:13.299964 > "221 bye bye baby[CR][LF]" 00:47:13.304350 MAIN sockfilt said DISC 00:47:13.304621 ====> Client disconnected 00:47:13.304927 Awaiting input 00:48:00.706116 ====> Client connect 00:48:00.706852 FTPD: Getting commands from log/3/server.cmd 00:48:00.707185 FTPD: run test case number: 121 00:48:00.708149 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:48:01.995599 < "USER anonymous" 00:48:02.001463 > "331 We are happy you popped in![CR][LF]" 00:48:02.117787 < "PASS ftp@example.com" 00:48:02.118219 > "230 Welcome you silly person[CR][LF]" 00:48:02.209525 < "PWD" 00:48:02.209960 > "257 "/" is current directory[CR][LF]" 00:48:02.394097 < "DELE before_transfer" 00:48:02.394532 > "200 OK OK OK whatever you say[CR][LF]" 00:48:02.496824 < "EPSV" 00:48:02.497282 ====> Passive DATA channel requested by client 00:48:02.497446 DATA sockfilt for passive data channel starting... 00:48:02.583402 DATA sockfilt for passive data channel started (pid 206491) 00:48:02.588353 DATA sockfilt for passive data channel listens on port 37329 00:48:02.594440 > "229 Entering Passive Mode (|||37329|)[CR][LF]" 00:48:02.594735 Client has been notified that DATA conn will be accepted on port 37329 00:48:02.772393 Client connects to port 37329 00:48:02.772957 ====> Client established passive DATA connection on port 37329 00:48:02.886166 < "TYPE I" 00:48:02.886592 > "200 I modify TYPE as you wanted[CR][LF]" 00:48:02.936593 < "SIZE 121" 00:48:02.941376 > "213 51[CR][LF]" 00:48:03.016117 < "RETR 121" 00:48:03.020354 > "150 Binary data connection for 121 () (51 bytes).[CR][LF]" 00:48:03.021415 =====> Closing passive DATA connection... 00:48:03.021607 Server disconnects passive DATA connection 00:48:03.027701 Server disconnected passive DATA connection 00:48:03.027995 DATA sockfilt for passive data channel quits (pid 206491) 00:48:03.031410 DATA sockfilt for passive data channel quit (pid 206491) 00:48:03.031613 =====> Closed passive DATA connection 00:48:03.031951 > "226 File transfer complete[CR][LF]" 00:48:04.021920 < "DELE after_transfer" 00:48:04.022394 > "200 OK OK OK whatever you say[CR][LF]" 00:48:05.075773 < "QUIT" 00:48:05.076250 > "221 bye bye baby[CR][LF]" 00:48:05.214432 MAIN sockfilt said DISC 00:48:05.214975 ====> Client disconnected 00:48:05.215304 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:47:12.795572 ====> Client connect 00:47:12.797193 Received DATA (on stdin) 00:47:12.797275 > 160 bytes data, server => client 00:47:12.797395 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:47:12.797506 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:47:12.797605 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:47:12.805563 < 16 bytes data, client => server 00:47:12.805688 'USER anonymous\r\n' 00:47:12.805769 Received DATA (on stdin) 00:47:12.805835 > 33 bytes data, server => client 00:47:12.805921 '331 We are happy you popped in!\r\n' 00:47:12.806261 < 22 bytes data, client => server 00:47:12.806344 'PASS ftp@example.com\r\n' 00:47:12.807029 Received DATA (on stdin) 00:47:12.807095 > 30 bytes data, server => client 00:47:12.807194 '230 Welcome you silly person\r\n' 00:47:12.807433 < 5 bytes data, client => server 00:47:12.807503 'PWD\r\n' 00:47:12.808726 Received DATA (on stdin) 00:47:12.808799 > 30 bytes data, server => client 00:47:12.808883 '257 "/" is current directory\r\n' 00:47:12.810872 < 6 bytes data, client => server 00:47:12.810948 'EPSV\r\n' 00:47:12.856673 Received DATA (on stdin) 00:47:12.856817 > 39 bytes data, server => client 00:47:12.856910 '229 Entering Passive Mode (|||40027|)\r\n' 00:47:12.859321 < 8 bytes data, client => server 00:47:12.859407 'TYPE I\r\n' 00:47:12.860968 Received DATA (on stdin) 00:47:12.861039 > 33 bytes data, server => client 00:47:12.861141 '200 I modify TYPE as you wanted\r\n' 00:47:12.861842 < 21 bytes data, client => server 00:47:12.861925 'SIZE verifiedserver\r\n' 00:47:12.862655 Received DATA (on stdin) 00:47:12.862723 > 8 bytes data, server => client 00:47:12.862812 '213 18\r\n' 00:47:12.863648 < 21 bytes data, client => server 00:47:12.863725 'RETR verifiedserver\r\n' 00:47:12.864406 Received DATA (on stdin) 00:47:12.864471 > 29 bytes data, server => client 00:47:12.864665 '150 Binary junk (18 bytes).\r\n' 00:47:12.878055 Received DATA (on stdin) 00:47:12.878173 > 28 bytes data, server => client 00:47:12.878587 '226 File transfer complete\r\n' 00:47:12.915800 < 6 bytes data, client => server 00:47:12.915954 'QUIT\r\n' 00:47:12.917619 Received DATA (on stdin) 00:47:12.917689 > 18 bytes data, server => client 00:47:12.917762 '221 bye bye baby\r\n' 00:47:12.918323 ====> Client disconnect 00:47:12.922055 Received ACKD (on stdin) 00:48:00.323143 ====> Client connect 00:48:00.325391 Received DATA (on stdin) 00:48:00.325516 > 160 bytes data, server => client 00:48:00.325645 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:48:00.325762 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:48:00.325866 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:48:01.611710 < 16 bytes data, client => server 00:48:01.611900 'USER anonymous\r\n' 00:48:01.613322 Received DATA (on stdin) 00:48:01.613400 > 33 bytes data, server => client 00:48:01.619180 '331 We are happy you popped in!\r\n' 00:48:01.733999 < 22 bytes data, client => server 00:48:01.734170 'PASS ftp@example.com\r\n' 00:48:01.735785 Received DATA (on stdin) 00:48:01.735873 > 30 bytes data, server => client 00:48:01.735957 '230 Welcome you silly person\r\n' 00:48:01.825763 < 5 bytes data, client => server 00:48:01.825931 'PWD\r\n' 00:48:01.827516 Received DATA (on stdin) 00:48:01.827596 > 30 bytes data, server => client 00:48:01.827680 '257 "/" is current directory\r\n' 00:48:02.010225 < 22 bytes data, client => server 00:48:02.010439 'DELE before_transfer\r\n' 00:48:02.015004 Received DATA (on stdin) 00:48:02.015112 > 31 bytes data, server => client 00:48:02.015210 '200 OK OK OK whatever you say\r\n' 00:48:02.090956 < 6 bytes data, client => server 00:48:02.091158 'EPSV\r\n' 00:48:02.206123 Received DATA (on stdin) 00:48:02.206261 > 39 bytes data, server => client 00:48:02.212359 '229 Entering Passive Mode (|||37329|)\r\n' 00:48:02.502335 < 8 bytes data, client => server 00:48:02.502540 'TYPE I\r\n' 00:48:02.504153 Received DATA (on stdin) 00:48:02.504230 > 33 bytes data, server => client 00:48:02.504314 '200 I modify TYPE as you wanted\r\n' 00:48:02.552860 < 10 bytes data, client => server 00:48:02.553056 'SIZE 121\r\n' 00:48:02.558332 Received DATA (on stdin) 00:48:02.558439 > 8 bytes data, server => client 00:48:02.558534 '213 51\r\n' 00:48:02.632308 < 10 bytes data, client => server 00:48:02.632487 'RETR 121\r\n' 00:48:02.634686 Received DATA (on stdin) 00:48:02.634766 > 51 bytes data, server => client 00:48:02.638365 '150 Binary data connection for 121 () (51 bytes).\r\n' 00:48:02.649560 Received DATA (on stdin) 00:48:02.649693 > 28 bytes data, server => client 00:48:02.649790 '226 File transfer complete\r\n' 00:48:03.637981 < 21 bytes data, client => server 00:48:03.638174 'DELE after_transfer\r\n' 00:48:03.639982 Received DATA (on stdin) 00:48:03.640071 > 31 bytes data, server => client 00:48:03.640159 '200 OK OKCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind122 ../src/curl -q --output log/7/curl122.out --include --trace-ascii log/7/trace122 --trace-time ftp://127.0.0.1:45353/122 -C 5 > log/7/stdout122 2> log/7/stderr122 OK whatever you say\r\n' 00:48:04.692131 < 6 bytes data, client => server 00:48:04.692361 'QUIT\r\n' 00:48:04.693524 Received DATA (on stdin) 00:48:04.693615 > 18 bytes data, server => client 00:48:04.693706 '221 bye bye baby\r\n' 00:48:04.829924 ====> Client disconnect 00:48:04.832863 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:47:13.845090 Running IPv4 version 00:47:13.852821 Listening on port 40027 00:47:13.853322 Wrote pid 205174 to log/3/server/ftp_sockdata.pid 00:47:13.854109 Received PING (on stdin) 00:47:13.855180 Received PORT (on stdin) 00:47:13.859592 ====> Client connect 00:47:13.867745 Received DATA (on stdin) 00:47:13.868085 > 18 bytes data, server => client 00:47:13.868473 'WE ROOLZ: 202504\r\n' 00:47:13.871780 Received DISC (on stdin) 00:47:13.871930 ====> Client forcibly disconnected 00:47:13.872615 Received QUIT (on stdin) 00:47:13.872696 quits 00:47:13.873209 ============> sockfilt quits 00:48:02.181005 Running IPv4 version 00:48:02.199009 Listening on port 37329 00:48:02.199565 Wrote pid 206491 to log/3/server/ftp_sockdata.pid 00:48:02.200374 Received PING (on stdin) 00:48:02.204993 Received PORT (on stdin) 00:48:02.389421 ====> Client connect 00:48:02.638281 Received DATA (on stdin) 00:48:02.638710 > 5 bytes data, server => client 00:48:02.639063 'data\n' 00:48:02.639357 Received DATA (on stdin) 00:48:02.639429 > 7 bytes data, server => client 00:48:02.639498 ' to\n' 00:48:02.639596 Received DATA (on stdin) 00:48:02.639662 > 10 bytes data, server => client 00:48:02.639732 ' see\n' 00:48:02.639826 Received DATA (on stdin) 00:48:02.639892 > 9 bytes data, server => client 00:48:02.639962 'that FTP\n' 00:48:02.640046 Received DATA (on stdin) 00:48:02.640113 > 6 bytes data, server => client 00:48:02.640180 'works\n' 00:48:02.640262 Received DATA (on stdin) 00:48:02.640327 > 14 bytes data, server => client 00:48:02.640399 ' so does it?\n' 00:48:02.640481 Received DISC (on stdin) 00:48:02.640602 ====> Client forcibly disconnected 00:48:02.645591 Received QUIT (on stdin) 00:48:02.645698 quits 00:48:02.646225 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 121 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD DELE before_transfer EPSV TYPE I SIZE 121 RETR 121 DELE after_transfer QUIT === End of file server.input === Start of file stderr121 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 51 100 51 0 0 10 0 0:00:05 0:00:05 --:--:-- 13 100 51 100 51 0 0 9 0 0:00:05 0:00:05 --:--:-- 11 === End of file stderr121 === Start of file trace121 00:48:00.375222 * Trying 127.0.0.1:37331... 00:48:01.281897 * Established connection to 127.0.0.1 (127.0.0.1 port 37331) from 127.0.0.1 port 42452 00:48:01.523134 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:48:01.872158 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:48:01.897995 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:48:01.903571 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:48:01.908591 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:48:02.015817 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:48:02.095548 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:48:02.117726 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:48:02.187988 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:48:02.208464 => Send header, 5 bytes (0x5) 0000: PWD 00:48:02.223434 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:48:02.260786 * Entry path is '/' 00:48:02.361912 * Request has same path as previous transfer 00:48:02.392967 => Send header, 22 bytes (0x16) 0000: DELE before_transfer 00:48:02.408194 <= Recv header, 31 bytes (0x1f) 0000: 200 OK OK OK whatever you say 00:48:02.473705 => Send header, 6 bytes (0x6) 0000: EPSV 00:48:02.516833 * Connect data stream passively 00:48:02.600401 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||37329|) 00:48:02.704913 * Connecting to 127.0.0.1 (127.0.0.1) port 37329 00:48:02.765880 * Trying 127.0.0.1:37329... 00:48:02.855127 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 37329) from 127.0.0.1 port 59572 00:48:02.885080 => Send header, 8 bytes (0x8) 0000: TYPE I 00:48:02.903746 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:48:02.935590 => Send header, 10 bytes (0xa) 0000: SIZE 121 00:48:02.963437 <= Recv header, 8 bytes (0x8) 0000: 213 51 00:48:03.014959 => Send header, 10 bytes (0xa) 0000: RETR 121 00:48:03.035239 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 121 () (51 bytes). 00:48:03.077958 * Maxdownload = -1 00:48:03.088490 * Getting file with size: 51 00:48:03.235180 <= Recv data, 51 bytes (0x33) 0000: data. to. see.that FTP.works. so does it?. 00:48:03.546312 * abort upload 00:48:03.571049 <= Recv data, 0 bytes (0x0) 00:48:03.771612 * Remembering we are in dir "" 00:48:03.967100 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:48:04.020739 => Send header, 21 bytes (0x15) 0000: DELE after_transfer 00:48:04.040623 <= Recv header, 31 bytes (0x1f) 0000: 200 OK OK OK whatever you say 00:48:04.323554 * Connection #0 to host 127.0.0.1:37331 left intact === End of file trace121 === Start of file valgrind121 ==205180== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind121 test 0122...[FTP download resume with whole file already downloaded] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind122 ../src/curl -q --output log/7/curl122.out --include --trace-ascii log/7/trace122 --trace-time ftp://127.0.0.1:45353/122 -C 5 > log/7/stdout122 2> log/7/stderr122 valgrind ERROR ==205361== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 122 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind122 ../src/curl -q --output log/7/curl122.out --include --trace-ascii log/7/trace122 --trace-time ftp://127.0.0.1:45353/122 -C 5 > log/7/stdout122 2> log/7/stderr122 === End of file commands.log === Start of file ftp_server.log 00:47:20.267089 ====> Client connect 00:47:20.268139 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:47:20.276629 < "USER anonymous" 00:47:20.277035 > "331 We are happy you popped in![CR][LF]" 00:47:20.281439 < "PASS ftp@example.com" 00:47:20.281738 > "230 Welcome you silly person[CR][LF]" 00:47:20.282660 < "PWD" 00:47:20.282947 > "257 "/" is current directory[CR][LF]" 00:47:20.285475 < "EPSV" 00:47:20.285699 ====> Passive DATA channel requested by client 00:47:20.285853 DATA sockfilt for passive data channel starting... 00:47:20.336167 DATA sockfilt for passive data channel started (pid 205342) 00:47:20.337404 DATA sockfilt for passive data channel listens on port 40853 00:47:20.340443 > "229 Entering Passive Mode (|||40853|)[CR][LF]" 00:47:20.340664 Client has been notified that DATA conn will be accepted on port 40853 00:47:20.341367 Client connects to port 40853 00:47:20.341586 ====> Client established passive DATA connection on port 40853 00:47:20.342208 < "TYPE I" 00:47:20.342485 > "200 I modify TYPE as you wanted[CR][LF]" 00:47:20.343822 < "SIZE verifiedserver" 00:47:20.344921 > "213 18[CR][LF]" 00:47:20.345462 < "RETR verifiedserver" 00:47:20.345757 > "150 Binary junk (18 bytes).[CR][LF]" 00:47:20.349011 =====> Closing passive DATA connection... 00:47:20.349198 Server disconnects passive DATA connection 00:47:20.350192 Server disconnected passive DATA connection 00:47:20.350369 DATA sockfilt for passive data channel quits (pid 205342) 00:47:20.353608 DATA sockfilt for passive data channel quit (pid 205342) 00:47:20.353794 =====> Closed passive DATA connection 00:47:20.354059 > "226 File transfer complete[CR][LF]" 00:47:20.396331 < "QUIT" 00:47:20.397018 > "221 bye bye baby[CR][LF]" 00:47:20.398063 MAIN sockfilt said DISC 00:47:20.398426 ====> Client disconnected 00:47:20.398711 Awaiting input 00:48:07.843809 ====> Client connect 00:48:07.844589 FTPD: Getting commands from log/7/server.cmd 00:48:07.845488 FTPD: set custom reply for EPSV command 00:48:07.845765 FTPD: run test case number: 122 00:48:07.847808 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:48:09.289848 < "USER anonymous" 00:48:09.290289 > "331 We are happy you popped in![CR][LF]" 00:48:09.414499 < "PASS ftp@example.com" 00:48:09.415271 > "230 Welcome you silly person[CR][LF]" 00:48:09.529682 < "PWD" 00:48:09.534459 > "257 "/" is current directory[CR][LF]" 00:48:09.752639 < "EPSV" 00:48:09.753053 > "500 no such command[CR][LF]" 00:48:09.854784 < "PASV" 00:48:09.855120 ====> Passive DATA channel requested by client 00:48:09.855279 DATA sockfilt for passive data channel starting... 00:48:09.923033 DATA sockfilt for passive data channel started (pid 206622) 00:48:09.931547 DATA sockfilt for passive data channel listens on port 44573 00:48:09.937768 > "227 Entering Passive Mode (127,0,0,1,174,29)[CR][LF]" 00:48:09.938110 Client has been notified that DATA conn will be accepted on port 44573 00:48:10.164373 Client connects to port 44573 00:48:10.164953 ====> Client established passive DATA connection on port 44573 00:48:10.291592 < "TYPE I" 00:48:10.292367 > "200 I modify TYPE as you wanted[CR][LF]" 00:48:10.345424 < "SIZE 122" 00:48:10.347737 > "213 5[CR][LF]" 00:48:11.710485 < "QUIT" 00:48:11.711246 > "221 bye bye baby[CR][LF]" 00:48:11.905222 MAIN sockfilt said DISC 00:48:11.905892 ====> Client disconnected 00:48:11.911195 DATA sockfilt for passive data channel killed now 00:48:11.911433 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:47:19.884157 ====> Client connect 00:47:19.885448 Received DATA (on stdin) 00:47:19.885532 > 160 bytes data, server => client 00:47:19.885637 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:47:19.885735 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:47:19.885825 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:47:19.893197 < 16 bytes data, client => server 00:47:19.893362 'USER anonymous\r\n' 00:47:19.894415 Received DATA (on stdin) 00:47:19.894493 > 33 bytes data, server => client 00:47:19.894589 '331 We are happy you popped in!\r\n' 00:47:19.894896 < 22 bytes data, client => server 00:47:19.894978 'PASS ftp@example.com\r\n' 00:47:19.899135 Received DATA (on stdin) 00:47:19.899228 > 30 bytes data, server => client 00:47:19.899312 '230 Welcome you silly person\r\n' 00:47:19.900563 < 5 bytes data, client => server 00:47:19.900635 'PWD\r\n' 00:47:19.900704 Received DATA (on stdin) 00:47:19.900764 > 30 bytes data, server => client 00:47:19.900844 '257 "/" is current directory\r\n' 00:47:19.902343 < 6 bytes data, client => server 00:47:19.902421 'EPSV\r\n' 00:47:19.955122 Received DATA (on stdin) 00:47:19.955263 > 39 bytes data, server => client 00:47:19.955382 '229 Entering Passive Mode (|||40853|)\r\n' 00:47:19.958359 < 8 bytes data, client => server 00:47:19.958456 'TYPE I\r\n' 00:47:19.960108 Received DATA (on stdin) 00:47:19.960179 > 33 bytes data, server => client 00:47:19.960276 '200 I modify TYPE as you wanted\r\n' 00:47:19.960657 < 21 bytes data, client => server 00:47:19.960733 'SIZE verifiedserver\r\n' 00:47:19.961538 Received DATA (on stdin) 00:47:19.961607 > 8 bytes data, server => client 00:47:19.961694 '213 18\r\n' 00:47:19.962155 < 21 bytes data, client => server 00:47:19.962233 'RETR verifiedserver\r\n' 00:47:19.963920 Received DATA (on stdin) 00:47:19.963994 > 29 bytes data, server => client 00:47:19.964077 '150 Binary junk (18 bytes).\r\n' 00:47:19.975083 Received DATA (on stdin) 00:47:19.975202 > 28 bytes data, server => client 00:47:19.975291 '226 File transfer complete\r\n' 00:47:20.012607 < 6 bytes data, client => server 00:47:20.012783 'QUIT\r\n' 00:47:20.014117 Received DATA (on stdin) 00:47:20.014190 > 18 bytes data, server => client 00:47:20.014289 '221 bye bye baby\r\n' 00:47:20.015370 ====> Client disconnect 00:47:20.015708 Received ACKD (on stdin) 00:48:07.460811 ====> Client connect 00:48:07.464992 Received DATA (on stdin) 00:48:07.465123 > 160 bytes data, server => client 00:48:07.465232 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:48:07.465332 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:48:07.465422 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:48:08.905890 < 16 bytes data, client => server 00:48:08.906084 'USER anonymous\r\n' 00:48:08.911666 Received DATA (on stdin) 00:48:08.911775 > 33 bytes data, server => client 00:48:08.911864 '331 We are happy you popped in!\r\n' 00:48:09.030564 < 22 bytes data, client => server 00:48:09.030762 'PASS ftp@example.com\r\n' 00:48:09.032216 Received DATA (on stdin) 00:48:09.032298 > 30 bytes data, server => client 00:48:09.032417 '230 Welcome you silly person\r\n' 00:48:09.145746 < 5 bytes data, client => server 00:48:09.145962 'PWD\r\n' 00:48:09.147437 Received DATA (on stdin) 00:48:09.147518 > 30 bytes data, server => client 00:48:09.152199 '257 "/" is current directory\r\n' 00:48:09.368785 < 6 bytes data, client => server 00:48:09.368971 'EPSV\r\n' 00:48:09.370588 Received DATA (on stdin) 00:48:09.370672 > 21 bytes data, server => client 00:48:09.370766 '500 no such command\r\n' 00:48:09.470954 < 6 bytes data, client => server 00:48:09.471128 'PASV\r\n' 00:48:09.550406 Received DATA (on stdin) 00:48:09.550560 > 46 bytes data, server => client 00:48:09.561693 '227 Entering Passive Mode (127,0,0,1,174,29)\r\n' 00:48:09.907729 < 8 bytes data, client => server 00:48:09.907912 'TYPE I\r\n' 00:48:09.909304 Received DATA (on stdin) 00:48:09.909391 > 33 bytes data, server => client 00:48:09.909517 '200 I modify TYPE as you wanted\r\n' 00:48:09.961637 < 10 bytes data, client => server 00:48:09.961837 'SIZE 122\r\n' 00:48:09.964721 Received DATA (on stdin) 00:48:09.964808 > 7 bytes data, server => client 00:48:09.964902 '213 5\r\n' 00:48:11.326642 < 6 bytes data, client => server 00:48:11.326832 'QUIT\r\n' 00:48:11.328187 Received DATA (on stdin) 00:48:11.328265 > 18 bytes data, server => client 00:48:11.328386 '221 bye bye baby\r\n' 00:48:11.522204 ====> Client disconnect 00:48:11.523042 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:47:20.943439 Running IPv4 version 00:47:20.951301 Listening on port 40853 00:47:20.951802 Wrote pid 205342 to log/7/server/ftp_sockdata.pid 00:47:20.952574 Received PING (on stdin) 00:47:20.954099 Received PORT (on stdin) 00:47:20.958620 ====> Client connect 00:47:20.963475 Received DATA (on stdin) 00:47:20.963771 > 18 bytes data, server => client 00:47:20.967046 'WE ROOLZ: 202639\r\n' 00:47:20.967303 Received DISC (on stdin) 00:47:20.967419 ====> Client forcibly disconnected 00:47:20.967963 Received QUIT (on stdin) 00:47:20.968041 quits 00:47:20.968564 ============> sockfilt quits 00:48:09.530081 Running IPv4 version 00:48:09.538714 ListeCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind123 ../src/curl -q --output log/8/curl123.out --include --trace-ascii log/8/trace123 --trace-time ftp://127.0.0.1:43843/123 -T log/8/upload123 -C 51 > log/8/stdout123 2> log/8/stderr123 ning on port 44573 00:48:09.539228 Wrote pid 206622 to log/7/server/ftp_sockdata.pid 00:48:09.539995 Received PING (on stdin) 00:48:09.545019 Received PORT (on stdin) 00:48:09.781383 ====> Client connect 00:48:10.270408 ====> Client disconnect === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPSV 500 no such command Testnum 122 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV PASV TYPE I SIZE 122 QUIT === End of file server.input === Start of file stderr122 ** Resuming transfer from byte position 5 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 5 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 5 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 === End of file stderr122 === Start of file trace122 00:48:07.521756 * Trying 127.0.0.1:45353... 00:48:08.493550 * Established connection to 127.0.0.1 (127.0.0.1 port 45353) from 127.0.0.1 port 40868 00:48:08.766744 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:48:09.145220 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:48:09.173379 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:48:09.181607 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:48:09.187725 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:48:09.309807 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:48:09.389293 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:48:09.417116 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:48:09.506145 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:48:09.530453 => Send header, 5 bytes (0x5) 0000: PWD 00:48:09.549765 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:48:09.587285 * Entry path is '/' 00:48:09.692589 * Request has same path as previous transfer 00:48:09.753727 => Send header, 6 bytes (0x6) 0000: EPSV 00:48:09.768230 * Connect data stream passively 00:48:09.777537 <= Recv header, 21 bytes (0x15) 0000: 500 no such command 00:48:09.826330 * Failed EPSV attempt. Disabling EPSV 00:48:09.857800 => Send header, 6 bytes (0x6) 0000: PASV 00:48:09.966971 <= Recv header, 46 bytes (0x2e) 0000: 227 Entering Passive Mode (127,0,0,1,174,29) 00:48:10.013942 * Skip 127.0.0.1 for data connection, reuse 127.0.0.1 instead 00:48:10.096672 * Connecting to 127.0.0.1 (127.0.0.1) port 44573 00:48:10.157919 * Trying 127.0.0.1:44573... 00:48:10.248081 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 44573) from 127.0.0.1 port 60704 00:48:10.292779 => Send header, 8 bytes (0x8) 0000: TYPE I 00:48:10.312088 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:48:10.348137 => Send header, 10 bytes (0xa) 0000: SIZE 122 00:48:10.378041 <= Recv header, 7 bytes (0x7) 0000: 213 5 00:48:10.448586 * File already completely downloaded 00:48:10.578484 * Remembering we are in dir "" 00:48:10.993814 * Connection #0 to host 127.0.0.1:45353 left intact === End of file trace122 === Start of file valgrind122 ==205361== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind122 test 0123...[FTP upload resume with whole file already downloaded] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind123 ../src/curl -q --output log/8/curl123.out --include --trace-ascii log/8/trace123 --trace-time ftp://127.0.0.1:43843/123 -T log/8/upload123 -C 51 > log/8/stdout123 2> log/8/stderr123 valgrind ERROR ==205490== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 123 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind123 ../src/curl -q --output log/8/curl123.out --include --trace-ascii log/8/trace123 --trace-time ftp://127.0.0.1:43843/123 -T log/8/upload123 -C 51 > log/8/stdout123 2> log/8/stderr123 === End of file commands.log === Start of file ftp_server.log 00:47:21.452287 ====> Client connect 00:47:21.453434 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:47:21.462582 < "USER anonymous" 00:47:21.463223 > "331 We are happy you popped in![CR][LF]" 00:47:21.464429 < "PASS ftp@example.com" 00:47:21.464701 > "230 Welcome you silly person[CR][LF]" 00:47:21.465666 < "PWD" 00:47:21.465953 > "257 "/" is current directory[CR][LF]" 00:47:21.473339 < "EPSV" 00:47:21.473662 ====> Passive DATA channel requested by client 00:47:21.473813 DATA sockfilt for passive data channel starting... 00:47:21.521289 DATA sockfilt for passive data channel started (pid 205439) 00:47:21.522423 DATA sockfilt for passive data channel listens on port 32863 00:47:21.522782 > "229 Entering Passive Mode (|||32863|)[CR][LF]" 00:47:21.522956 Client has been notified that DATA conn will be accepted on port 32863 00:47:21.526175 Client connects to port 32863 00:47:21.526544 ====> Client established passive DATA connection on port 32863 00:47:21.527263 < "TYPE I" 00:47:21.527565 > "200 I modify TYPE as you wanted[CR][LF]" 00:47:21.528573 < "SIZE verifiedserver" 00:47:21.529697 > "213 18[CR][LF]" 00:47:21.530245 < "RETR verifiedserver" 00:47:21.530539 > "150 Binary junk (18 bytes).[CR][LF]" 00:47:21.531111 =====> Closing passive DATA connection... 00:47:21.534446 Server disconnects passive DATA connection 00:47:21.537860 Server disconnected passive DATA connection 00:47:21.538130 DATA sockfilt for passive data channel quits (pid 205439) 00:47:21.542136 DATA sockfilt for passive data channel quit (pid 205439) 00:47:21.542382 =====> Closed passive DATA connection 00:47:21.543030 > "226 File transfer complete[CR][LF]" 00:47:21.586552 < "QUIT" 00:47:21.587021 > "221 bye bye baby[CR][LF]" 00:47:21.588175 MAIN sockfilt said DISC 00:47:21.590990 ====> Client disconnected 00:47:21.591331 Awaiting input 00:48:09.022402 ====> Client connect 00:48:09.023167 FTPD: Getting commands from log/8/server.cmd 00:48:09.023496 FTPD: run test case number: 123 00:48:09.024442 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:48:10.356336 < "USER anonymous" 00:48:10.361084 > "331 We are happy you popped in![CR][LF]" 00:48:10.472157 < "PASS ftp@example.com" 00:48:10.472591 > "230 Welcome you silly person[CR][LF]" 00:48:10.566385 < "PWD" 00:48:10.567042 > "257 "/" is current directory[CR][LF]" 00:48:10.778569 < "EPSV" 00:48:10.778920 ====> Passive DATA channel requested by client 00:48:10.779077 DATA sockfilt for passive data channel starting... 00:48:10.826006 DATA sockfilt for passive data channel started (pid 206656) 00:48:10.827404 DATA sockfilt for passive data channel listens on port 35593 00:48:10.827790 > "229 Entering Passive Mode (|||35593|)[CR][LF]" 00:48:10.827966 Client has been notified that DATA conn will be accepted on port 35593 00:48:11.044394 Client connects to port 35593 00:48:11.044984 ====> Client established passive DATA connection on port 35593 00:48:11.145612 < "TYPE I" 00:48:11.151093 > "200 I modify TYPE as you wanted[CR][LF]" 00:48:12.471863 < "QUIT" 00:48:12.472282 > "221 bye bye baby[CR][LF]" 00:48:12.671636 MAIN sockfilt said DISC 00:48:12.672289 ====> Client disconnected 00:48:12.674279 DATA sockfilt for passive data channel killed now 00:48:12.674495 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:47:21.069300 ====> Client connect 00:47:21.070704 Received DATA (on stdin) 00:47:21.070799 > 160 bytes data, server => client 00:47:21.070925 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:47:21.071043 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:47:21.071136 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:47:21.078891 < 16 bytes data, client => server 00:47:21.079101 'USER anonymous\r\n' 00:47:21.080417 Received DATA (on stdin) 00:47:21.080501 > 33 bytes data, server => client 00:47:21.080894 '331 We are happy you popped in!\r\n' 00:47:21.081294 < 22 bytes data, client => server 00:47:21.081373 'PASS ftp@example.com\r\n' 00:47:21.082111 Received DATA (on stdin) 00:47:21.082198 > 30 bytes data, server => client 00:47:21.082284 '230 Welcome you silly person\r\n' 00:47:21.082558 < 5 bytes data, client => server 00:47:21.082625 'PWD\r\n' 00:47:21.086652 Received DATA (on stdin) 00:47:21.086800 > 30 bytes data, server => client 00:47:21.086890 '257 "/" is current directory\r\n' 00:47:21.089871 < 6 bytes data, client => server 00:47:21.089962 'EPSV\r\n' 00:47:21.140609 Received DATA (on stdin) 00:47:21.140744 > 39 bytes data, server => client 00:47:21.140836 '229 Entering Passive Mode (|||32863|)\r\n' 00:47:21.143181 < 8 bytes data, client => server 00:47:21.143276 'TYPE I\r\n' 00:47:21.144952 Received DATA (on stdin) 00:47:21.145038 > 33 bytes data, server => client 00:47:21.145148 '200 I modify TYPE as you wanted\r\n' 00:47:21.145564 < 21 bytes data, client => server 00:47:21.145643 'SIZE verifiedserver\r\n' 00:47:21.146274 Received DATA (on stdin) 00:47:21.146345 > 8 bytes data, server => client 00:47:21.146433 '213 18\r\n' 00:47:21.146855 < 21 bytes data, client => server 00:47:21.146928 'RETR verifiedserver\r\n' 00:47:21.149650 Received DATA (on stdin) 00:47:21.149743 > 29 bytes data, server => client 00:47:21.149829 '150 Binary junk (18 bytes).\r\n' 00:47:21.160054 Received DATA (on stdin) 00:47:21.160178 > 28 bytes data, server => client 00:47:21.160285 '226 File transfer complete\r\n' 00:47:21.202691 < 6 bytes data, client => server 00:47:21.202891 'QUIT\r\n' 00:47:21.204684 Received DATA (on stdin) 00:47:21.204767 > 18 bytes data, server => client 00:47:21.204847 '221 bye bye baby\r\n' 00:47:21.205488 ====> Client disconnect 00:47:21.205788 Received ACKD (on stdin) 00:48:08.637437 ====> Client connect 00:48:08.644993 Received DATA (on stdin) 00:48:08.645125 > 160 bytes data, server => client 00:48:08.645237 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:48:08.645355 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:48:08.645459 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:48:09.972469 < 16 bytes data, client => server 00:48:09.972630 'USER anonymous\r\n' 00:48:09.974050 Received DATA (on stdin) 00:48:09.974129 > 33 bytes data, server => client 00:48:09.978763 '331 We are happy you popped in!\r\n' 00:48:10.088319 < 22 bytes data, client => server 00:48:10.088514 'PASS ftp@example.com\r\n' 00:48:10.090143 Received DATA (on stdin) 00:48:10.090219 > 30 bytes data, server => client 00:48:10.090304 '230 Welcome you silly person\r\n' 00:48:10.182506 < 5 bytes data, client => server 00:48:10.182708 'PWD\r\n' 00:48:10.184132 Received DATA (on stdin) 00:48:10.184215 > 30 bytes data, server => client 00:48:10.185006 '257 "/" is current directory\r\n' 00:48:10.392518 < 6 bytes data, client => server 00:48:10.392699 'EPSV\r\n' 00:48:10.445587 Received DATA (on stdin) 00:48:10.445725 > 39 bytes data, server => client 00:48:10.445819 '229 Entering Passive Mode (|||35593|)\r\n' 00:48:10.762151 < 8 bytes data, client => server 00:48:10.762355 'TYPE I\r\n' 00:48:10.763322 Received DATA (on stdin) 00:48:10.763406 > 33 bytes data, server => client 00:48:10.768746 '200 I modify TYPE as you wanted\r\n' 00:48:12.088093 < 6 bytes data, client => server 00:48:12.088247 'QUIT\r\n' 00:48:12.089834 Received DATA (on stdin) 00:48:12.089911 > 18 bytes data, server => client 00:48:12.089994 '221 bye bye baby\r\n' 00:48:12.279579 ====> Client disconnect 00:48:12.291228 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:47:21.129225 Running IPv4 version 00:47:21.137055 Listening on port 32863 00:47:21.137549 Wrote pid 205439 to log/8/server/ftp_sockdata.pid 00:47:21.138344 Received PING (on stdin) 00:47:21.139207 Received PORT (on stdin) 00:47:21.143373 ====> Client connect 00:47:21.148683 Received DATA (on stdin) 00:47:21.149020 > 18 bytes data, server => client 00:47:21.149386 'WE ROOLZ: 202642\r\n' 00:47:21.155077 Received DISC (on stdin) 00:47:21.155257 ====> Client forcibly disconnected 00:47:21.155743 Received QUIT (on stdin) 00:47:21.155824 quits 00:47:21.156340 ============> sockfilt quits 00:48:10.433860 Running IPv4 version 00:48:10.441680 Listening on port 35593 00:48:10.442194 Wrote pid 206656 to log/8/server/ftp_sockdata.pid 00:48:10.442968 Received PING (on stdin) 00:48:10.444044 Received PORT (on stdin) 00:48:10.659197 ====> Client connect 00:48:11.021742 ====> Client disconnect === End of file ftp_sockdata.log === Start of file server.cmd Testnum 123 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I QUIT === End of file server.input === Start of file stderr123 ** Resuming transfer from byte position 51 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr123 === Start of file trace123 00:48:08.706195 * Trying 127.0.0.1:43843... 00:48:09.604572 * Established connection to 127.0.0.1 (127.0.0.1 port 43843) from 127.0.0.1 port 40988 00:48:09.861184 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:48:10.225881 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:48:10.254876 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:48:10.262442 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:48:10.267871 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:48:10.375532 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:48:10.451346 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:48:10.472274 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:48:10.545297 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:48:10.565238 => Send header, 5 bytes (0x5) 0000: PWD 00:48:10.581954 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:48:10.622343 * Entry path is '/' 00:48:10.723991 * Request has same path as previous transfer 00:48:10.775314 => Send header, 6 bytes (0x6) 0000: EPSV 00:48:10.790040 * Connect data stream passively 00:48:10.840682 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||35593|) 00:48:10.962542 * Connecting to 127.0.0.1 (127.0.0.1) port 35593 00:48:11.034226 * Trying 127.0.0.1:35593... 00:48:11.125619 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 35593) from 127.0.0.1 port 36150 00:48:11.143879 => Send header, 8 bytes (0x8) 0000: TYPE I 00:48:11.159143 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:48:11.208411 * File already completely uploaded 00:48:11.329449 * Remembering we are in dir "" 00:48:11.726250 * Connection #0 to host 127.0.0.1:43843 lCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind124 ../src/curl -q --output log/4/curl124.out --include --trace-ascii log/4/trace124 --trace-time ftp://127.0.0.1:38207/124 > log/4/stdout124 2> log/4/stderr124 eft intact === End of file trace123 === Start of file upload123 -------------------------------------------------- === End of file upload123 === Start of file valgrind123 ==205490== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind123 test 0124...[FTP download, failed PWD] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind124 ../src/curl -q --output log/4/curl124.out --include --trace-ascii log/4/trace124 --trace-time ftp://127.0.0.1:38207/124 > log/4/stdout124 2> log/4/stderr124 valgrind ERROR ==205671== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 124 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind124 ../src/curl -q --output log/4/curl124.out --include --trace-ascii log/4/trace124 --trace-time ftp://127.0.0.1:38207/124 > log/4/stdout124 2> log/4/stderr124 === End of file commands.log === Start of file curl124.out we can still send data even if pwd fails === End of file curl124.out === Start of file ftp_server.log 00:47:23.631560 ====> Client connect 00:47:23.632618 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:47:23.640678 < "USER anonymous" 00:47:23.641122 > "331 We are happy you popped in![CR][LF]" 00:47:23.645148 < "PASS ftp@example.com" 00:47:23.645679 > "230 Welcome you silly person[CR][LF]" 00:47:23.646345 < "PWD" 00:47:23.646898 > "257 "/" is current directory[CR][LF]" 00:47:23.648663 < "EPSV" 00:47:23.648863 ====> Passive DATA channel requested by client 00:47:23.649005 DATA sockfilt for passive data channel starting... 00:47:23.691784 DATA sockfilt for passive data channel started (pid 205660) 00:47:23.693168 DATA sockfilt for passive data channel listens on port 39575 00:47:23.693533 > "229 Entering Passive Mode (|||39575|)[CR][LF]" 00:47:23.693712 Client has been notified that DATA conn will be accepted on port 39575 00:47:23.695969 Client connects to port 39575 00:47:23.696200 ====> Client established passive DATA connection on port 39575 00:47:23.701938 < "TYPE I" 00:47:23.702315 > "200 I modify TYPE as you wanted[CR][LF]" 00:47:23.703656 < "SIZE verifiedserver" 00:47:23.704229 > "213 18[CR][LF]" 00:47:23.705066 < "RETR verifiedserver" 00:47:23.705640 > "150 Binary junk (18 bytes).[CR][LF]" 00:47:23.706169 =====> Closing passive DATA connection... 00:47:23.706330 Server disconnects passive DATA connection 00:47:23.707655 Server disconnected passive DATA connection 00:47:23.707829 DATA sockfilt for passive data channel quits (pid 205660) 00:47:23.711362 DATA sockfilt for passive data channel quit (pid 205660) 00:47:23.711595 =====> Closed passive DATA connection 00:47:23.712221 > "226 File transfer complete[CR][LF]" 00:47:23.760151 < "QUIT" 00:47:23.761484 > "221 bye bye baby[CR][LF]" 00:47:23.761728 MAIN sockfilt said DISC 00:47:23.761915 ====> Client disconnected 00:47:23.762186 Awaiting input 00:48:10.930131 ====> Client connect 00:48:10.930889 FTPD: Getting commands from log/4/server.cmd 00:48:10.931676 FTPD: set custom reply for PWD command 00:48:10.932103 FTPD: set custom reply for EPSV command 00:48:10.932362 FTPD: run test case number: 124 00:48:10.937771 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:48:12.251395 < "USER anonymous" 00:48:12.252157 > "331 We are happy you popped in![CR][LF]" 00:48:12.359558 < "PASS ftp@example.com" 00:48:12.359998 > "230 Welcome you silly person[CR][LF]" 00:48:12.464134 < "PWD" 00:48:12.464898 > "314 bluah you f00l![CR][LF]" 00:48:12.671905 < "EPSV" 00:48:12.677772 > "314 bluah you f00l![CR][LF]" 00:48:12.763078 < "PASV" 00:48:12.763408 ====> Passive DATA channel requested by client 00:48:12.763553 DATA sockfilt for passive data channel starting... 00:48:12.825369 DATA sockfilt for passive data channel started (pid 206662) 00:48:12.826719 DATA sockfilt for passive data channel listens on port 45853 00:48:12.828470 > "227 Entering Passive Mode (127,0,0,1,179,29)[CR][LF]" 00:48:12.828693 Client has been notified that DATA conn will be accepted on port 45853 00:48:13.034399 Client connects to port 45853 00:48:13.034975 ====> Client established passive DATA connection on port 45853 00:48:13.147440 < "TYPE I" 00:48:13.147876 > "200 I modify TYPE as you wanted[CR][LF]" 00:48:13.199297 < "SIZE 124" 00:48:13.204595 > "213 42[CR][LF]" 00:48:13.277359 < "RETR 124" 00:48:13.281262 > "150 Binary data connection for 124 () (42 bytes).[CR][LF]" 00:48:13.285172 =====> Closing passive DATA connection... 00:48:13.285368 Server disconnects passive DATA connection 00:48:13.286356 Server disconnected passive DATA connection 00:48:13.286525 DATA sockfilt for passive data channel quits (pid 206662) 00:48:13.289685 DATA sockfilt for passive data channel quit (pid 206662) 00:48:13.289927 =====> Closed passive DATA connection 00:48:13.290567 > "226 File transfer complete[CR][LF]" 00:48:15.361037 < "QUIT" 00:48:15.361471 > "221 bye bye baby[CR][LF]" 00:48:15.507765 MAIN sockfilt said DISC 00:48:15.508325 ====> Client disconnected 00:48:15.508642 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:47:23.248590 ====> Client connect 00:47:23.250279 Received DATA (on stdin) 00:47:23.250365 > 160 bytes data, server => client 00:47:23.250470 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:47:23.250571 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:47:23.250663 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:47:23.257147 < 16 bytes data, client => server 00:47:23.257313 'USER anonymous\r\n' 00:47:23.258774 Received DATA (on stdin) 00:47:23.258854 > 33 bytes data, server => client 00:47:23.258936 '331 We are happy you popped in!\r\n' 00:47:23.261970 < 22 bytes data, client => server 00:47:23.262058 'PASS ftp@example.com\r\n' 00:47:23.262802 Received DATA (on stdin) 00:47:23.262867 > 30 bytes data, server => client 00:47:23.262964 '230 Welcome you silly person\r\n' 00:47:23.263199 < 5 bytes data, client => server 00:47:23.263261 'PWD\r\n' 00:47:23.264002 Received DATA (on stdin) 00:47:23.264073 > 30 bytes data, server => client 00:47:23.264182 '257 "/" is current directory\r\n' 00:47:23.265609 < 6 bytes data, client => server 00:47:23.265680 'EPSV\r\n' 00:47:23.311372 Received DATA (on stdin) 00:47:23.311509 > 39 bytes data, server => client 00:47:23.311603 '229 Entering Passive Mode (|||39575|)\r\n' 00:47:23.318534 < 8 bytes data, client => server 00:47:23.318652 'TYPE I\r\n' 00:47:23.319977 Received DATA (on stdin) 00:47:23.320049 > 33 bytes data, server => client 00:47:23.320133 '200 I modify TYPE as you wanted\r\n' 00:47:23.320551 < 21 bytes data, client => server 00:47:23.320627 'SIZE verifiedserver\r\n' 00:47:23.321359 Received DATA (on stdin) 00:47:23.321428 > 8 bytes data, server => client 00:47:23.321518 '213 18\r\n' 00:47:23.321974 < 21 bytes data, client => server 00:47:23.322053 'RETR verifiedserver\r\n' 00:47:23.322756 Received DATA (on stdin) 00:47:23.322823 > 29 bytes data, server => client 00:47:23.322925 '150 Binary junk (18 bytes).\r\n' 00:47:23.329253 Received DATA (on stdin) 00:47:23.329372 > 28 bytes data, server => client 00:47:23.329481 '226 File transfer complete\r\n' 00:47:23.376304 < 6 bytes data, client => server 00:47:23.376488 'QUIT\r\n' 00:47:23.377950 Received DATA (on stdin) 00:47:23.378024 > 18 bytes data, server => client 00:47:23.378120 '221 bye bye baby\r\n' 00:47:23.378749 ====> Client disconnect 00:47:23.381754 Received ACKD (on stdin) 00:48:10.547137 ====> Client connect 00:48:10.551649 Received DATA (on CMD (2304): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind125 ../src/curl -q --output log/6/curl125.out --include --trace-ascii log/6/trace125 --trace-time ftp://127.0.0.1:39413/path/to/file/125 > log/6/stdout125 2> log/6/stderr125 stdin) 00:48:10.551774 > 160 bytes data, server => client 00:48:10.555394 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:48:10.555513 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:48:10.555608 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:48:11.867398 < 16 bytes data, client => server 00:48:11.867598 'USER anonymous\r\n' 00:48:11.869108 Received DATA (on stdin) 00:48:11.869190 > 33 bytes data, server => client 00:48:11.869301 '331 We are happy you popped in!\r\n' 00:48:11.975713 < 22 bytes data, client => server 00:48:11.975896 'PASS ftp@example.com\r\n' 00:48:11.981648 Received DATA (on stdin) 00:48:11.981763 > 30 bytes data, server => client 00:48:11.981858 '230 Welcome you silly person\r\n' 00:48:12.080263 < 5 bytes data, client => server 00:48:12.080455 'PWD\r\n' 00:48:12.081855 Received DATA (on stdin) 00:48:12.081939 > 21 bytes data, server => client 00:48:12.082040 '314 bluah you f00l!\r\n' 00:48:12.265644 < 6 bytes data, client => server 00:48:12.288778 'EPSV\r\n' 00:48:12.289831 Received DATA (on stdin) 00:48:12.289947 > 21 bytes data, server => client 00:48:12.295501 '314 bluah you f00l!\r\n' 00:48:12.379297 < 6 bytes data, client => server 00:48:12.379477 'PASV\r\n' 00:48:12.445290 Received DATA (on stdin) 00:48:12.445447 > 46 bytes data, server => client 00:48:12.445572 '227 Entering Passive Mode (127,0,0,1,179,29)\r\n' 00:48:12.763590 < 8 bytes data, client => server 00:48:12.763790 'TYPE I\r\n' 00:48:12.765431 Received DATA (on stdin) 00:48:12.765512 > 33 bytes data, server => client 00:48:12.765601 '200 I modify TYPE as you wanted\r\n' 00:48:12.815495 < 10 bytes data, client => server 00:48:12.815696 'SIZE 124\r\n' 00:48:12.821652 Received DATA (on stdin) 00:48:12.821764 > 8 bytes data, server => client 00:48:12.822251 '213 42\r\n' 00:48:12.893601 < 10 bytes data, client => server 00:48:12.893769 'RETR 124\r\n' 00:48:12.896340 Received DATA (on stdin) 00:48:12.896437 > 51 bytes data, server => client 00:48:12.898369 '150 Binary data connection for 124 () (42 bytes).\r\n' 00:48:12.907492 Received DATA (on stdin) 00:48:12.907607 > 28 bytes data, server => client 00:48:12.907708 '226 File transfer complete\r\n' 00:48:14.977210 < 6 bytes data, client => server 00:48:14.977377 'QUIT\r\n' 00:48:14.979081 Received DATA (on stdin) 00:48:14.979164 > 18 bytes data, server => client 00:48:14.979242 '221 bye bye baby\r\n' 00:48:15.121650 ====> Client disconnect 00:48:15.125644 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:47:23.299671 Running IPv4 version 00:47:23.307526 Listening on port 39575 00:47:23.307976 Wrote pid 205660 to log/4/server/ftp_sockdata.pid 00:47:23.308827 Received PING (on stdin) 00:47:23.309926 Received PORT (on stdin) 00:47:23.313220 ====> Client connect 00:47:23.323950 Received DATA (on stdin) 00:47:23.324308 > 18 bytes data, server => client 00:47:23.324692 'WE ROOLZ: 201673\r\n' 00:47:23.324944 Received DISC (on stdin) 00:47:23.325475 ====> Client forcibly disconnected 00:47:23.325654 Received QUIT (on stdin) 00:47:23.325726 quits 00:47:23.326254 ============> sockfilt quits 00:48:12.433795 Running IPv4 version 00:48:12.441124 Listening on port 45853 00:48:12.441655 Wrote pid 206662 to log/4/server/ftp_sockdata.pid 00:48:12.442332 Received PING (on stdin) 00:48:12.443380 Received PORT (on stdin) 00:48:12.647685 ====> Client connect 00:48:12.901658 Received DATA (on stdin) 00:48:12.902013 > 42 bytes data, server => client 00:48:12.903100 'we can still send data even if pwd fails!\n' 00:48:12.903372 Received DISC (on stdin) 00:48:12.903489 ====> Client forcibly disconnected 00:48:12.904059 Received QUIT (on stdin) 00:48:12.904134 quits 00:48:12.904611 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PWD 314 bluah you f00l REPLY EPSV 314 bluah you f00l Testnum 124 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV PASV TYPE I SIZE 124 RETR 124 QUIT === End of file server.input === Start of file stderr124 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 42 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 42 100 42 0 0 7 0 0:00:06 0:00:05 0:00:01 9 === End of file stderr124 === Start of file trace124 00:48:10.603734 * Trying 127.0.0.1:38207... 00:48:11.519397 * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 37584 00:48:11.770511 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:48:12.122261 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:48:12.152938 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:48:12.159836 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:48:12.164987 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:48:12.270675 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:48:12.337717 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:48:12.359664 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:48:12.443182 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:48:12.463008 => Send header, 5 bytes (0x5) 0000: PWD 00:48:12.490406 <= Recv header, 21 bytes (0x15) 0000: 314 bluah you f00l 00:48:12.598110 * Request has same path as previous transfer 00:48:12.648402 => Send header, 6 bytes (0x6) 0000: EPSV 00:48:12.684990 * Connect data stream passively 00:48:12.694284 <= Recv header, 21 bytes (0x15) 0000: 314 bluah you f00l 00:48:12.738793 * Failed EPSV attempt. Disabling EPSV 00:48:12.762047 => Send header, 6 bytes (0x6) 0000: PASV 00:48:12.842564 <= Recv header, 46 bytes (0x2e) 0000: 227 Entering Passive Mode (127,0,0,1,179,29) 00:48:12.883744 * Skip 127.0.0.1 for data connection, reuse 127.0.0.1 instead 00:48:12.960639 * Connecting to 127.0.0.1 (127.0.0.1) port 45853 00:48:13.022382 * Trying 127.0.0.1:45853... 00:48:13.115798 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 45853) from 127.0.0.1 port 40336 00:48:13.146348 => Send header, 8 bytes (0x8) 0000: TYPE I 00:48:13.165989 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:48:13.198246 => Send header, 10 bytes (0xa) 0000: SIZE 124 00:48:13.227673 <= Recv header, 8 bytes (0x8) 0000: 213 42 00:48:13.276348 => Send header, 10 bytes (0xa) 0000: RETR 124 00:48:13.292870 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 124 () (42 bytes). 00:48:13.336197 * Maxdownload = -1 00:48:13.346754 * Getting file with size: 42 00:48:13.524685 <= Recv data, 42 bytes (0x2a) 0000: we can still send data even if pwd fails!. 00:48:13.837373 * abort upload 00:48:13.862360 <= Recv data, 0 bytes (0x0) 00:48:14.035859 * Remembering we are in dir "" 00:48:14.224050 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:48:14.567000 * Connection #0 to host 127.0.0.1:38207 left intact === End of file trace124 === Start of file valgrind124 ==205671== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind124 test 0125...[FTP download, failed CWD] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind125 ../src/curl -q --output log/6/curl125.out --include --trace-ascii log/6/trace125 --trace-time ftp://127.0.0.1:39413/path/to/file/125 > log/6/stdout125 2> log/6/stderr125 valgrind ERROR ==205830== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 125 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind125 ../src/curl -q --output log/6/curl125.out --include --trace-ascii log/6/trace125 --trace-time ftp://127.0.0.1:39413/path/to/file/125 > log/6/stdout125 2> log/6/stderr125 === End of file commands.log === Start of file ftp_server.log 00:47:26.271720 ====> Client connect 00:47:26.272762 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:47:26.285210 < "USER anonymous" 00:47:26.285603 > "331 We are happy you popped in![CR][LF]" 00:47:26.286398 < "PASS ftp@example.com" 00:47:26.286652 > "230 Welcome you silly person[CR][LF]" 00:47:26.287319 < "PWD" 00:47:26.287589 > "257 "/" is current directory[CR][LF]" 00:47:26.289568 < "EPSV" 00:47:26.289766 ====> Passive DATA channel requested by client 00:47:26.289907 DATA sockfilt for passive data channel starting... 00:47:26.332312 DATA sockfilt for passive data channel started (pid 205821) 00:47:26.333431 DATA sockfilt for passive data channel listens on port 45035 00:47:26.333779 > "229 Entering Passive Mode (|||45035|)[CR][LF]" 00:47:26.333952 Client has been notified that DATA conn will be accepted on port 45035 00:47:26.336547 Client connects to port 45035 00:47:26.336769 ====> Client established passive DATA connection on port 45035 00:47:26.337387 < "TYPE I" 00:47:26.337669 > "200 I modify TYPE as you wanted[CR][LF]" 00:47:26.338516 < "SIZE verifiedserver" 00:47:26.338817 > "213 18[CR][LF]" 00:47:26.339655 < "RETR verifiedserver" 00:47:26.339934 > "150 Binary junk (18 bytes).[CR][LF]" 00:47:26.340443 =====> Closing passive DATA connection... 00:47:26.340605 Server disconnects passive DATA connection 00:47:26.344337 Server disconnected passive DATA connection 00:47:26.344511 DATA sockfilt for passive data channel quits (pid 205821) 00:47:26.350461 DATA sockfilt for passive data channel quit (pid 205821) 00:47:26.350624 =====> Closed passive DATA connection 00:47:26.350876 > "226 File transfer complete[CR][LF]" 00:47:26.392469 < "QUIT" 00:47:26.392892 > "221 bye bye baby[CR][LF]" 00:47:26.401032 MAIN sockfilt said DISC 00:47:26.401311 ====> Client disconnected 00:47:26.401590 Awaiting input 00:48:13.154165 ====> Client connect 00:48:13.154900 FTPD: Getting commands from log/6/server.cmd 00:48:13.155682 FTPD: set custom reply for CWD command 00:48:13.155969 FTPD: run test case number: 125 00:48:13.156860 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:48:14.468640 < "USER anonymous" 00:48:14.469065 > "331 We are happy you popped in![CR][LF]" 00:48:14.578218 < "PASS ftp@example.com" 00:48:14.578627 > "230 Welcome you silly person[CR][LF]" 00:48:14.672440 < "PWD" 00:48:14.677882 > "257 "/" is current directory[CR][LF]" 00:48:14.865239 < "CWD path" 00:48:14.865661 > "314 bluah you f00l![CR][LF]" 00:48:16.082106 < "QUIT" 00:48:16.084621 > "221 bye bye baby[CR][LF]" 00:48:16.351335 MAIN sockfilt said DISC 00:48:16.352046 ====> Client disconnected 00:48:16.352390 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:47:25.888774 ====> Client connect 00:47:25.894079 Received DATA (on stdin) 00:47:25.894199 > 160 bytes data, server => client 00:47:25.894323 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:47:25.894427 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:47:25.894519 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:47:25.898401 < 16 bytes data, client => server 00:47:25.898500 'USER anonymous\r\n' 00:47:25.902971 Received DATA (on stdin) 00:47:25.903056 > 33 bytes data, server => client 00:47:25.903140 '331 We are happy you popped in!\r\n' 00:47:25.903439 < 22 bytes data, client => server 00:47:25.903525 'PASS ftp@example.com\r\n' 00:47:25.904033 Received DATA (on stdin) 00:47:25.904100 > 30 bytes data, server => client 00:47:25.904183 '230 Welcome you silly person\r\n' 00:47:25.904415 < 5 bytes data, client => server 00:47:25.904478 'PWD\r\n' 00:47:25.904972 Received DATA (on stdin) 00:47:25.905041 > 30 bytes data, server => client 00:47:25.905147 '257 "/" is current directory\r\n' 00:47:25.906661 < 6 bytes data, client => server 00:47:25.906731 'EPSV\r\n' 00:47:25.951131 Received DATA (on stdin) 00:47:25.951277 > 39 bytes data, server => client 00:47:25.951371 '229 Entering Passive Mode (|||45035|)\r\n' 00:47:25.954012 < 8 bytes data, client => server 00:47:25.954101 'TYPE I\r\n' 00:47:25.955031 Received DATA (on stdin) 00:47:25.955118 > 33 bytes data, server => client 00:47:25.955215 '200 I modify TYPE as you wanted\r\n' 00:47:25.955595 < 21 bytes data, client => server 00:47:25.955676 'SIZE verifiedserver\r\n' 00:47:25.956202 Received DATA (on stdin) 00:47:25.956270 > 8 bytes data, server => client 00:47:25.956336 '213 18\r\n' 00:47:25.956758 < 21 bytes data, client => server 00:47:25.956833 'RETR verifiedserver\r\n' 00:47:25.957317 Received DATA (on stdin) 00:47:25.957382 > 29 bytes data, server => client 00:47:25.957461 '150 Binary junk (18 bytes).\r\n' 00:47:25.968259 Received DATA (on stdin) 00:47:25.968351 > 28 bytes data, server => client 00:47:25.968445 '226 File transfer complete\r\n' 00:47:26.008945 < 6 bytes data, client => server 00:47:26.009139 'QUIT\r\n' 00:47:26.010253 Received DATA (on stdin) 00:47:26.010331 > 18 bytes data, server => client 00:47:26.010408 '221 bye bye baby\r\n' 00:47:26.015075 ====> Client disconnect 00:47:26.018726 Received ACKD (on stdin) 00:48:12.771235 ====> Client connect 00:48:12.774097 Received DATA (on stdin) 00:48:12.774210 > 160 bytes data, server => client 00:48:12.774317 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:48:12.774417 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:48:12.774506 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:48:14.082269 < 16 bytes data, client => server 00:48:14.082457 'USER anonymous\r\n' 00:48:14.086342 Received DATA (on stdin) 00:48:14.086429 > 33 bytes data, server => client 00:48:14.086519 '331 We are happy you popped in!\r\n' 00:48:14.194622 < 22 bytes data, client => server 00:48:14.194827 'PASS ftp@example.com\r\n' 00:48:14.195903 Received DATA (on stdin) 00:48:14.195980 > 30 bytes data, server => client 00:48:14.196067 '230 Welcome you silly person\r\n' 00:48:14.288453 < 5 bytes data, client => server 00:48:14.288672 'PWD\r\n' 00:48:14.290318 Received DATA (on stdin) 00:48:14.290409 > 30 bytes data, server => client 00:48:14.295832 '257 "/" is current directory\r\n' 00:48:14.481373 < 10 bytes data, client => server 00:48:14.481555 'CWD path\r\n' 00:48:14.483195 Received DATA (on stdin) 00:48:14.483277 > 21 bytes data, server => client 00:48:14.483362 '314 bluah you f00l!\r\n' 00:48:15.698214 < 6 bytes data, client => server 00:48:15.698395 'QUIT\r\n' 00:48:15.699822 Received DATA (on stdin) 00:48:15.699906 > 18 bytes data, server => client 00:48:15.701697 '221 bye bye baby\r\n' 00:48:15.968329 ====> Client disconnect 00:48:15.969171 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:47:26.940129 Running IPv4 version 00:47:26.947999 Listening on port 45035 00:47:26.948536 Wrote pid 205821 to log/6/server/ftp_sockdata.pid 00:47:26.949376 Received PING (on stdin) 00:47:26.950221 Received PORT (on stdin) 00:47:26.953849 ====> Client connect 00:47:26.957556 Received DATA (on stdin) 00:47:26.957847 > 18 bytes data, server => client 00:47:26.958209 'WE ROOLZ: 201819\r\n' 00:47:26.958464 Received DISC (on stdin) 00:47:26.958587 ====> Client forcibly disconnected 00:47:26.964849 Received QUIT (on stdin) 00:47:26.964938 quits 00:47:26.965441 ============> sCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind126 ../src/curl -q --output log/1/curl126.out --include --trace-ascii log/1/trace126 --trace-time ftp://127.0.0.1:37481/blalbla/lululul/126 > log/1/stdout126 2> log/1/stderr126 ockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY CWD 314 bluah you f00l Testnum 125 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD path QUIT === End of file server.input === Start of file stderr125 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (9) Server denied you to change to the given directory === End of file stderr125 === Start of file trace125 00:48:12.828367 * Trying 127.0.0.1:39413... 00:48:13.736323 * Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 60144 00:48:13.985890 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:48:14.340092 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:48:14.368133 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:48:14.374175 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:48:14.378997 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:48:14.485214 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:48:14.558664 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:48:14.578420 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:48:14.650418 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:48:14.671222 => Send header, 5 bytes (0x5) 0000: PWD 00:48:14.689813 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:48:14.726550 * Entry path is '/' 00:48:14.864128 => Send header, 10 bytes (0xa) 0000: CWD path 00:48:14.877731 <= Recv header, 21 bytes (0x15) 0000: 314 bluah you f00l 00:48:14.933259 * Server denied you to change to the given directory 00:48:15.301173 * Connection #0 to host 127.0.0.1:39413 left intact === End of file trace125 === Start of file valgrind125 ==205830== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind125 test 0126...[FTP download with multiple replies at once in RETR] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind126 ../src/curl -q --output log/1/curl126.out --include --trace-ascii log/1/trace126 --trace-time ftp://127.0.0.1:37481/blalbla/lululul/126 > log/1/stdout126 2> log/1/stderr126 valgrind ERROR ==205989== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 126 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind126 ../src/curl -q --output log/1/curl126.out --include --trace-ascii log/1/trace126 --trace-time ftp://127.0.0.1:37481/blalbla/lululul/126 > log/1/stdout126 2> log/1/stderr126 === End of file commands.log === Start of file curl126.out this is file contents === End of file curl126.out === Start of file ftp_server.log 00:47:30.304411 ====> Client connect 00:47:30.305490 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:47:30.312197 < "USER anonymous" 00:47:30.312590 > "331 We are happy you popped in![CR][LF]" 00:47:30.313617 < "PASS ftp@example.com" 00:47:30.313908 > "230 Welcome you silly person[CR][LF]" 00:47:30.315037 < "PWD" 00:47:30.315311 > "257 "/" is current directory[CR][LF]" 00:47:30.317561 < "EPSV" 00:47:30.317779 ====> Passive DATA channel requested by client 00:47:30.317927 DATA sockfilt for passive data channel starting... 00:47:30.360281 DATA sockfilt for passive data channel started (pid 205983) 00:47:30.361472 DATA sockfilt for passive data channel listens on port 39213 00:47:30.364703 > "229 Entering Passive Mode (|||39213|)[CR][LF]" 00:47:30.364916 Client has been notified that DATA conn will be accepted on port 39213 00:47:30.365407 Client connects to port 39213 00:47:30.365616 ====> Client established passive DATA connection on port 39213 00:47:30.366235 < "TYPE I" 00:47:30.367152 > "200 I modify TYPE as you wanted[CR][LF]" 00:47:30.367868 < "SIZE verifiedserver" 00:47:30.368170 > "213 18[CR][LF]" 00:47:30.369393 < "RETR verifiedserver" 00:47:30.369689 > "150 Binary junk (18 bytes).[CR][LF]" 00:47:30.370190 =====> Closing passive DATA connection... 00:47:30.370348 Server disconnects passive DATA connection 00:47:30.377675 Server disconnected passive DATA connection 00:47:30.377902 DATA sockfilt for passive data channel quits (pid 205983) 00:47:30.381120 DATA sockfilt for passive data channel quit (pid 205983) 00:47:30.381328 =====> Closed passive DATA connection 00:47:30.381629 > "226 File transfer complete[CR][LF]" 00:47:30.422658 < "QUIT" 00:47:30.423054 > "221 bye bye baby[CR][LF]" 00:47:30.424295 MAIN sockfilt said DISC 00:47:30.424496 ====> Client disconnected 00:47:30.424768 Awaiting input 00:48:17.864683 ====> Client connect 00:48:17.865641 FTPD: Getting commands from log/1/server.cmd 00:48:17.866099 FTPD: instructed to use RETRWEIRDO 00:48:17.866445 FTPD: run test case number: 126 00:48:17.871561 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:48:19.324532 < "USER anonymous" 00:48:19.325012 > "331 We are happy you popped in![CR][LF]" 00:48:19.460313 < "PASS ftp@example.com" 00:48:19.460815 > "230 Welcome you silly person[CR][LF]" 00:48:19.561868 < "PWD" 00:48:19.562353 > "257 "/" is current directory[CR][LF]" 00:48:19.781295 < "CWD blalbla" 00:48:19.781939 > "250 CWD command successful.[CR][LF]" 00:48:19.853478 < "CWD lululul" 00:48:19.853935 > "250 CWD command successful.[CR][LF]" 00:48:19.951830 < "EPSV" 00:48:19.952185 ====> Passive DATA channel requested by client 00:48:19.952350 DATA sockfilt for passive data channel starting... 00:48:20.012896 DATA sockfilt for passive data channel started (pid 207110) 00:48:20.014130 DATA sockfilt for passive data channel listens on port 46135 00:48:20.015343 > "229 Entering Passive Mode (|||46135|)[CR][LF]" 00:48:20.015560 Client has been notified that DATA conn will be accepted on port 46135 00:48:20.225896 Client connects to port 46135 00:48:20.226560 ====> Client established passive DATA connection on port 46135 00:48:20.358579 < "TYPE I" 00:48:20.359052 > "200 I modify TYPE as you wanted[CR][LF]" 00:48:20.425597 < "SIZE 126" 00:48:20.434687 > "213 22[CR][LF]" 00:48:20.524897 < "RETR 126" 00:48:20.526047 > "150 Binary data connection for 126 () (22 bytes).[CR][LF]" 00:48:20.526275 > "226 File transfer complete[CR][LF]" 00:48:20.526806 =====> Closing passive DATA connection... 00:48:20.526976 Server disconnects passive DATA connection 00:48:20.534125 Server disconnected passive DATA connection 00:48:20.534375 DATA sockfilt for passive data channel quits (pid 207110) 00:48:20.541606 DATA sockfilt for passive data channel quit (pid 207110) 00:48:20.541836 =====> Closed passive DATA connection 00:48:22.618003 < "QUIT" 00:48:22.618448 > "221 bye bye baby[CR][LF]" 00:48:22.749649 MAIN sockfilt said DISC 00:48:22.750189 ====> Client disconnected 00:48:22.750500 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:47:30.919558 ====> Client connect 00:47:30.922748 Received DATA (on stdin) 00:47:30.922859 > 160 bytes data, server => client 00:47:30.922981 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:47:30.923093 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:47:30.923185 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:47:30.928797 < 16 bytes data, client => server 00:47:30.928912 'USER anonymous\r\n' 00:47:30.929936 Received DATA (on stdin) 00:47:30.930018 > 33 bytes data, server => client 00:47:30.930115 '331 We are happy you popped in!\r\n' 00:47:30.930406 < 22 bytes data, client => server 00:47:30.930484 'PASS ftp@example.com\r\n' 00:47:30.931508 Received DATA (on stdin) 00:47:30.931575 > 30 bytes data, server => client 00:47:30.931654 '230 Welcome you silly person\r\n' 00:47:30.931972 < 5 bytes data, client => server 00:47:30.932037 'PWD\r\n' 00:47:30.932906 Received DATA (on stdin) 00:47:30.932972 > 30 bytes data, server => client 00:47:30.933050 '257 "/" is current directory\r\n' 00:47:30.934482 < 6 bytes data, client => server 00:47:30.934552 'EPSV\r\n' 00:47:30.979176 Received DATA (on stdin) 00:47:30.979322 > 39 bytes data, server => client 00:47:30.979435 '229 Entering Passive Mode (|||39213|)\r\n' 00:47:30.981841 < 8 bytes data, client => server 00:47:30.981929 'TYPE I\r\n' 00:47:30.983874 Received DATA (on stdin) 00:47:30.983944 > 33 bytes data, server => client 00:47:30.984047 '200 I modify TYPE as you wanted\r\n' 00:47:30.984778 < 21 bytes data, client => server 00:47:30.984857 'SIZE verifiedserver\r\n' 00:47:30.985766 Received DATA (on stdin) 00:47:30.985836 > 8 bytes data, server => client 00:47:30.985901 '213 18\r\n' 00:47:30.986318 < 21 bytes data, client => server 00:47:30.986393 'RETR verifiedserver\r\n' 00:47:30.989223 Received DATA (on stdin) 00:47:30.989295 > 29 bytes data, server => client 00:47:30.989375 '150 Binary junk (18 bytes).\r\n' 00:47:30.998982 Received DATA (on stdin) 00:47:30.999084 > 28 bytes data, server => client 00:47:30.999168 '226 File transfer complete\r\n' 00:47:31.040658 < 6 bytes data, client => server 00:47:31.040782 'QUIT\r\n' 00:47:31.040853 Received DATA (on stdin) 00:47:31.040915 > 18 bytes data, server => client 00:47:31.040988 '221 bye bye baby\r\n' 00:47:31.041602 ====> Client disconnect 00:47:31.042349 Received ACKD (on stdin) 00:48:18.481664 ====> Client connect 00:48:18.484709 Received DATA (on stdin) 00:48:18.484845 > 160 bytes data, server => client 00:48:18.488368 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:48:18.488497 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:48:18.488593 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:48:19.940437 < 16 bytes data, client => server 00:48:19.940647 'USER anonymous\r\n' 00:48:19.942582 Received DATA (on stdin) 00:48:19.942675 > 33 bytes data, server => client 00:48:19.942780 '331 We are happy you popped in!\r\n' 00:48:20.076591 < 22 bytes data, client => server 00:48:20.076822 'PASS ftp@example.com\r\n' 00:48:20.078058 Received DATA (on stdin) 00:48:20.078152 > 30 bytes data, server => client 00:48:20.078258 '230 Welcome you silly person\r\n' 00:48:20.175013 < 5 bytes data, client => server 00:48:20.175190 'PWD\r\n' 00:48:20.179904 Received DATA (on stdin) 00:48:20.180007 > 30 bytes data, server => client 00:48:20.180096 '257 "/" is current directory\r\n' 00:48:20.397342 < 13 bytes data, client => server 00:48:20.397551 'CWD blalbla\r\n' 00:48:20.398998 Received DATA (on stdin) 00:48:20.399086 > 29 bytes data, server => client 00:48:20.399879 '250 CWD command successful.\r\n' 00:48:20.469433 < 13 bytes data, client => server 00:48:20.469698 'CWD lululul\r\n' 00:48:20.474970 Received DATA (on stdin) 00:48:20.475082 > 29 bytes data, server => client 00:48:20.475184 '250 CWD command successful.\r\n' 00:48:20.568126 < 6 bytes data, client => server 00:48:20.568352 'EPSV\r\n' 00:48:20.631801 Received DATA (on stdin) 00:48:20.631963 > 39 bytes data, server => client 00:48:20.632103 '229 Entering Passive Mode (|||46135|)\r\n' 00:48:20.974826 < 8 bytes data, client => server 00:48:20.975078 'TYPE I\r\n' 00:48:20.976614 Received DATA (on stdin) 00:48:20.976696 > 33 bytes data, server => client 00:48:20.976786 '200 I modify TYPE as you wanted\r\n' 00:48:21.041684 < 10 bytes data, client => server 00:48:21.041866 'SIZE 126\r\n' 00:48:21.052372 Received DATA (on stdin) 00:48:21.052493 > 8 bytes data, server => client 00:48:21.052583 '213 22\r\n' 00:48:21.140939 < 10 bytes data, client => server 00:48:21.141132 'RETR 126\r\n' 00:48:21.144991 Received DATA (on stdin) 00:48:21.145090 > 51 bytes data, server => client 00:48:21.145197 '150 Binary data connection for 126 () (22 bytes).\r\n' 00:48:21.145307 Received DATA (on stdin) 00:48:21.145376 > 28 bytes data, server => client 00:48:21.145457 '226 File transfer complete\r\n' 00:48:23.234106 < 6 bytes data, client => server 00:48:23.234301 'QUIT\r\n' 00:48:23.235980 Received DATA (on stdin) 00:48:23.236062 > 18 bytes data, server => client 00:48:23.236143 '221 bye bye baby\r\n' 00:48:23.366610 ====> Client disconnect 00:48:23.367493 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:47:30.968457 Running IPv4 version 00:47:30.976034 Listening on port 39213 00:47:30.976490 Wrote pid 205983 to log/1/server/ftp_sockdata.pid 00:47:30.977227 Received PING (on stdin) 00:47:30.978159 Received PORT (on stdin) 00:47:30.982648 ====> Client connect 00:47:30.988008 Received DATA (on stdin) 00:47:30.988309 > 18 bytes data, server => client 00:47:30.988714 'WE ROOLZ: 202066\r\n' 00:47:30.988948 Received DISC (on stdin) 00:47:30.989061 ====> Client forcibly disconnected 00:47:30.995539 Received QUIT (on stdin) 00:47:30.995629 quits 00:47:30.996140 ============> sockfilt quits 00:48:19.617976 Running IPv4 version 00:48:19.628508 Listening on port 46135 00:48:19.629035 Wrote pid 207110 to log/1/server/ftp_sockdata.pid 00:48:19.629820 Received PING (on stdin) 00:48:19.630765 Received PORT (on stdin) 00:48:19.841747 ====> Client connect 00:48:20.143824 Received DATA (on stdin) 00:48:20.144217 > 22 bytes data, server => client 00:48:20.144606 'this is file contents\n' 00:48:20.144917 Received DISC (on stdin) 00:48:20.145075 ====> Client forcibly disconnected 00:48:20.151869 Received QUIT (on stdin) 00:48:20.151972 quits 00:48:20.152510 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd RETRWEIRDO Testnum 126 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD blalbla CWD lululul EPSV TYPE I SIZE 126 RETR 126 QUIT === End of file server.input === Start of file stderr126 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 22 100 22 0 0 3 0 0:00:07 0:00:06 0:00:01 4 === End of file stderr126 === Start of file trace126 00:48:17.509618 * Trying 127.0.0.1:37481... 00:48:18.523731 * Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 127.0.0.1 port 56920 00:48:18.799804 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:48:19.178335 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:48:19.210604 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:48:19.217581 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:48:19.223363 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:48:19.347224 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:48:19.437967 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:48:19.461277 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:48:19.53CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind127 ../src/curl -q --output log/2/curl127.out --include --trace-ascii log/2/trace127 --trace-time ftp://127.0.0.1:39881/path/to/file/127 --disable-epsv > log/2/stdout127 2> log/2/stderr127 5558 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:48:19.556325 => Send header, 5 bytes (0x5) 0000: PWD 00:48:19.574455 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:48:19.620485 * Entry path is '/' 00:48:19.782351 => Send header, 13 bytes (0xd) 0000: CWD blalbla 00:48:19.799341 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:48:19.854570 => Send header, 13 bytes (0xd) 0000: CWD lululul 00:48:19.900476 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:48:19.951329 => Send header, 6 bytes (0x6) 0000: EPSV 00:48:19.971843 * Connect data stream passively 00:48:20.018957 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||46135|) 00:48:20.142765 * Connecting to 127.0.0.1 (127.0.0.1) port 46135 00:48:20.213120 * Trying 127.0.0.1:46135... 00:48:20.322678 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 46135) from 127.0.0.1 port 40706 00:48:20.358043 => Send header, 8 bytes (0x8) 0000: TYPE I 00:48:20.385298 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:48:20.422744 => Send header, 10 bytes (0xa) 0000: SIZE 126 00:48:20.464935 <= Recv header, 8 bytes (0x8) 0000: 213 22 00:48:20.523744 => Send header, 10 bytes (0xa) 0000: RETR 126 00:48:20.541123 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 126 () (22 bytes). 00:48:20.587654 * Maxdownload = -1 00:48:20.601451 * Getting file with size: 22 00:48:20.762694 <= Recv data, 22 bytes (0x16) 0000: this is file contents. 00:48:21.083760 * abort upload 00:48:21.110729 <= Recv data, 0 bytes (0x0) 00:48:21.286935 * Remembering we are in dir "blalbla/lululul/" 00:48:21.490198 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:48:21.859491 * Connection #0 to host 127.0.0.1:37481 left intact === End of file trace126 === Start of file valgrind126 ==205989== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind126 test 0127...[FTP --disable-epsv] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind127 ../src/curl -q --output log/2/curl127.out --include --trace-ascii log/2/trace127 --trace-time ftp://127.0.0.1:39881/path/to/file/127 --disable-epsv > log/2/stdout127 2> log/2/stderr127 valgrind ERROR ==206160== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 127 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind127 ../src/curl -q --output log/2/curl127.out --include --trace-ascii log/2/trace127 --trace-time ftp://127.0.0.1:39881/path/to/file/127 --disable-epsv > log/2/stdout127 2> log/2/stderr127 === End of file commands.log === Start of file curl127.out moooooooo === End of file curl127.out === Start of file ftp_server.log 00:47:38.826955 ====> Client connect 00:47:38.828053 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:47:38.838125 < "USER anonymous" 00:47:38.838466 > "331 We are happy you popped in![CR][LF]" 00:47:38.840266 < "PASS ftp@example.com" 00:47:38.840521 > "230 Welcome you silly person[CR][LF]" 00:47:38.841998 < "PWD" 00:47:38.842280 > "257 "/" is current directory[CR][LF]" 00:47:38.845135 < "EPSV" 00:47:38.845347 ====> Passive DATA channel requested by client 00:47:38.845508 DATA sockfilt for passive data channel starting... 00:47:38.893572 DATA sockfilt for passive data channel started (pid 206154) 00:47:38.894823 DATA sockfilt for passive data channel listens on port 33713 00:47:38.895164 > "229 Entering Passive Mode (|||33713|)[CR][LF]" 00:47:38.895331 Client has been notified that DATA conn will be accepted on port 33713 00:47:38.898506 Client connects to port 33713 00:47:38.898722 ====> Client established passive DATA connection on port 33713 00:47:38.899335 < "TYPE I" 00:47:38.899869 > "200 I modify TYPE as you wanted[CR][LF]" 00:47:38.900886 < "SIZE verifiedserver" 00:47:38.901446 > "213 18[CR][LF]" 00:47:38.902606 < "RETR verifiedserver" 00:47:38.905178 > "150 Binary junk (18 bytes).[CR][LF]" 00:47:38.905700 =====> Closing passive DATA connection... 00:47:38.905861 Server disconnects passive DATA connection 00:47:38.907053 Server disconnected passive DATA connection 00:47:38.907221 DATA sockfilt for passive data channel quits (pid 206154) 00:47:38.914901 DATA sockfilt for passive data channel quit (pid 206154) 00:47:38.915081 =====> Closed passive DATA connection 00:47:38.915524 > "226 File transfer complete[CR][LF]" 00:47:38.952612 < "QUIT" 00:47:38.952928 > "221 bye bye baby[CR][LF]" 00:47:38.953942 MAIN sockfilt said DISC 00:47:38.957649 ====> Client disconnected 00:47:38.957924 Awaiting input 00:48:26.674146 ====> Client connect 00:48:26.674939 FTPD: Getting commands from log/2/server.cmd 00:48:26.675261 FTPD: run test case number: 127 00:48:26.676209 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:48:28.064715 < "USER anonymous" 00:48:28.066191 > "331 We are happy you popped in![CR][LF]" 00:48:28.166554 < "PASS ftp@example.com" 00:48:28.166965 > "230 Welcome you silly person[CR][LF]" 00:48:28.263981 < "PWD" 00:48:28.264475 > "257 "/" is current directory[CR][LF]" 00:48:28.475190 < "CWD path" 00:48:28.481065 > "250 CWD command successful.[CR][LF]" 00:48:28.532484 < "CWD to" 00:48:28.532887 > "250 CWD command successful.[CR][LF]" 00:48:28.592900 < "CWD file" 00:48:28.593291 > "250 CWD command successful.[CR][LF]" 00:48:28.655617 < "PASV" 00:48:28.655937 ====> Passive DATA channel requested by client 00:48:28.656089 DATA sockfilt for passive data channel starting... 00:48:28.716028 DATA sockfilt for passive data channel started (pid 207506) 00:48:28.717606 DATA sockfilt for passive data channel listens on port 42029 00:48:28.719649 > "227 Entering Passive Mode (127,0,0,1,164,45)[CR][LF]" 00:48:28.719857 Client has been notified that DATA conn will be accepted on port 42029 00:48:28.931064 Client connects to port 42029 00:48:28.931632 ====> Client established passive DATA connection on port 42029 00:48:29.059542 < "TYPE I" 00:48:29.060001 > "200 I modify TYPE as you wanted[CR][LF]" 00:48:29.118500 < "SIZE 127" 00:48:29.120532 > "213 10[CR][LF]" 00:48:29.195416 < "RETR 127" 00:48:29.196396 > "150 Binary data connection for 127 () (10 bytes).[CR][LF]" 00:48:29.196908 =====> Closing passive DATA connection... 00:48:29.197070 Server disconnects passive DATA connection 00:48:29.202646 Server disconnected passive DATA connection 00:48:29.202892 DATA sockfilt for passive data channel quits (pid 207506) 00:48:29.206196 DATA sockfilt for passive data channel quit (pid 207506) 00:48:29.206378 =====> Closed passive DATA connection 00:48:29.206958 > "226 File transfer complete[CR][LF]" 00:48:31.156927 < "QUIT" 00:48:31.161078 > "221 bye bye baby[CR][LF]" 00:48:31.288964 MAIN sockfilt said DISC 00:48:31.289467 ====> Client disconnected 00:48:31.289776 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:47:39.443999 ====> Client connect 00:47:39.445697 Received DATA (on stdin) 00:47:39.445775 > 160 bytes data, server => client 00:47:39.445881 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:47:39.445976 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:47:39.446064 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:47:39.456066 < 16 bytes data, client => server 00:47:39.456172 'USER anonymous\r\n' 00:47:39.456244 Received DATA (on stdin) 00:47:39.456304 > 33 bytes data, server => client 00:47:39.456386 '331 We are happy you popped in!\r\n' 00:47:39.457158 < 22 bytes data, client => server 00:47:39.457239 'PASS ftp@example.com\r\n' 00:47:39.458513 Received DATA (on stdin) 00:47:39.458588 > 30 bytes data, server => client 00:47:39.458669 '230 Welcome you silly person\r\n' 00:47:39.458904 < 5 bytes data, client => server 00:47:39.458969 'PWD\r\n' 00:47:39.459933 Received DATA (on stdin) 00:47:39.460000 > 30 bytes data, server => client 00:47:39.460080 '257 "/" is current directory\r\n' 00:47:39.462046 < 6 bytes data, client => server 00:47:39.462124 'EPSV\r\n' 00:47:39.512970 Received DATA (on stdin) 00:47:39.513103 > 39 bytes data, server => client 00:47:39.513197 '229 Entering Passive Mode (|||33713|)\r\n' 00:47:39.515497 < 8 bytes data, client => server 00:47:39.515574 'TYPE I\r\n' 00:47:39.516962 Received DATA (on stdin) 00:47:39.517032 > 33 bytes data, server => client 00:47:39.517134 '200 I modify TYPE as you wanted\r\n' 00:47:39.517785 < 21 bytes data, client => server 00:47:39.517865 'SIZE verifiedserver\r\n' 00:47:39.518560 Received DATA (on stdin) 00:47:39.518630 > 8 bytes data, server => client 00:47:39.518716 '213 18\r\n' 00:47:39.519510 < 21 bytes data, client => server 00:47:39.519588 'RETR verifiedserver\r\n' 00:47:39.520270 Received DATA (on stdin) 00:47:39.520338 > 29 bytes data, server => client 00:47:39.520535 '150 Binary junk (18 bytes).\r\n' 00:47:39.532698 Received DATA (on stdin) 00:47:39.532784 > 28 bytes data, server => client 00:47:39.533128 '226 File transfer complete\r\n' 00:47:39.569075 < 6 bytes data, client => server 00:47:39.569174 'QUIT\r\n' 00:47:39.570519 Received DATA (on stdin) 00:47:39.570587 > 18 bytes data, server => client 00:47:39.570662 '221 bye bye baby\r\n' 00:47:39.571231 ====> Client disconnect 00:47:39.571516 Received ACKD (on stdin) 00:48:27.291134 ====> Client connect 00:48:27.293737 Received DATA (on stdin) 00:48:27.293818 > 160 bytes data, server => client 00:48:27.293926 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:48:27.294026 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:48:27.294115 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:48:28.658326 < 16 bytes data, client => server 00:48:28.681403 'USER anonymous\r\n' 00:48:28.682446 Received DATA (on stdin) 00:48:28.682527 > 33 bytes data, server => client 00:48:28.683288 '331 We are happy you popped in!\r\n' 00:48:28.782758 < 22 bytes data, client => server 00:48:28.782920 'PASS ftp@example.com\r\n' 00:48:28.784957 Received DATA (on stdin) 00:48:28.785044 > 30 bytes data, server => client 00:48:28.785126 '230 Welcome you silly person\r\n' 00:48:28.880036 < 5 bytes data, client => server 00:48:28.880211 'PWD\r\n' 00:48:28.884958 Received DATA (on stdin) 00:48:28.885080 > 30 bytes data, server => client 00:48:28.885170 '257 "/" is current directory\r\n' 00:48:29.091349 < 10 bytes data, client => server 00:48:29.091520 'CWD path\r\n' 00:48:29.092852 Received DATA (on stdin) 00:48:29.092930 > 29 bytes data, server => client 00:48:29.098735 '250 CWD command successful.\r\n' 00:48:29.148769 < 8 bytes data, client => server 00:48:29.148901 'CWD to\r\n' 00:48:29.150470 Received DATA (on stdin) 00:48:29.150544 > 29 bytes data, server => client 00:48:29.150631 '250 CWD command successful.\r\n' 00:48:29.209176 < 10 bytes data, client => server 00:48:29.209325 'CWD file\r\n' 00:48:29.210874 Received DATA (on stdin) 00:48:29.210951 > 29 bytes data, server => client 00:48:29.211037 '250 CWD command successful.\r\n' 00:48:29.271893 < 6 bytes data, client => server 00:48:29.272051 'PASV\r\n' 00:48:29.336414 Received DATA (on stdin) 00:48:29.336573 > 46 bytes data, server => client 00:48:29.336713 '227 Entering Passive Mode (127,0,0,1,164,45)\r\n' 00:48:29.677548 < 8 bytes data, client => server 00:48:29.677706 'TYPE I\r\n' 00:48:29.677786 Received DATA (on stdin) 00:48:29.677845 > 33 bytes data, server => client 00:48:29.677920 '200 I modify TYPE as you wanted\r\n' 00:48:29.731273 < 10 bytes data, client => server 00:48:29.731435 'SIZE 127\r\n' 00:48:29.738075 Received DATA (on stdin) 00:48:29.738175 > 8 bytes data, server => client 00:48:29.738265 '213 10\r\n' 00:48:29.811655 < 10 bytes data, client => server 00:48:29.811816 'RETR 127\r\n' 00:48:29.818282 Received DATA (on stdin) 00:48:29.818382 > 51 bytes data, server => client 00:48:29.818485 '150 Binary data connection for 127 () (10 bytes).\r\n' 00:48:29.823908 Received DATA (on stdin) 00:48:29.823987 > 28 bytes data, server => client 00:48:29.824091 '226 File transfer complete\r\n' 00:48:31.773032 < 6 bytes data, client => server 00:48:31.773203 'QUIT\r\n' 00:48:31.774607 Received DATA (on stdin) 00:48:31.774685 > 18 bytes data, server => client 00:48:31.778673 '221 bye bye baby\r\n' 00:48:31.905978 ====> Client disconnect 00:48:31.907262 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:47:38.501659 Running IPv4 version 00:47:38.509428 Listening on port 33713 00:47:38.509881 Wrote pid 206154 to log/2/server/ftp_sockdata.pid 00:47:38.510652 Received PING (on stdin) 00:47:38.511549 Received PORT (on stdin) 00:47:38.515746 ====> Client connect 00:47:38.523432 Received DATA (on stdin) 00:47:38.523725 > 18 bytes data, server => client 00:47:38.524088 'WE ROOLZ: 202189\r\n' 00:47:38.524322 Received DISC (on stdin) 00:47:38.528392 ====> Client forcibly disconnected 00:47:38.528571 Received QUIT (on stdin) 00:47:38.528648 quits 00:47:38.529131 ============> sockfilt quits 00:48:28.321806 Running IPv4 version 00:48:28.331364 Listening on port 42029 00:48:28.331953 Wrote pid 207506 to log/2/server/ftp_sockdata.pid 00:48:28.332907 Received PING (on stdin) 00:48:28.334123 Received PORT (on stdin) 00:48:28.544871 ====> Client connect 00:48:28.818633 Received DATA (on stdin) 00:48:28.819000 > 10 bytes data, server => client 00:48:28.819346 'moooooooo\n' 00:48:28.819600 Received DISC (on stdin) 00:48:28.819719 ====> Client forcibly disconnected 00:48:28.820367 Received QUIT (on stdin) 00:48:28.820447 quits 00:48:28.820962 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 127 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD path CWD to CWD file PASV TYPE I SIZE 127 RETR 127 QUIT === End of file server.input === Start of file stderr127 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 10 100 10 0 0 1 0 0:00:10 0:00:05 0:00:05 2 100 10 100 10 0 0 1 0 0:00:10 0:00:05 0:00:05 2 === End of file stderr127 === Start of file trace127 00:48:26.358065 * Trying 127.0.0.1:39881... 00:48:27.268236 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 48742 00:48:27.529467 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:48:27.905236 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:48:27.934932 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:48:27.940546 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:48:27.945825 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:48:28.060114 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:48:28.142968 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:48:28.167090 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:48:28.241612 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:48:28.262877 => Send header, 5 bytes (0x5) 0000: PWD 00:48:28.282113 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:48:28.32CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind128 ../src/curl -q --output log/5/curl128.out --include --trace-ascii log/5/trace128 --trace-time ftp://127.0.0.1:33729/128 -T log/5/upload128 --crlf > log/5/stdout128 2> log/5/stderr128 3298 * Entry path is '/' 00:48:28.474135 => Send header, 10 bytes (0xa) 0000: CWD path 00:48:28.488246 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:48:28.531558 => Send header, 8 bytes (0x8) 0000: CWD to 00:48:28.583488 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:48:28.591947 => Send header, 10 bytes (0xa) 0000: CWD file 00:48:28.617680 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:48:28.654669 => Send header, 6 bytes (0x6) 0000: PASV 00:48:28.670391 * Connect data stream passively 00:48:28.721867 <= Recv header, 46 bytes (0x2e) 0000: 227 Entering Passive Mode (127,0,0,1,164,45) 00:48:28.775309 * Skip 127.0.0.1 for data connection, reuse 127.0.0.1 instead 00:48:28.855402 * Connecting to 127.0.0.1 (127.0.0.1) port 42029 00:48:28.921353 * Trying 127.0.0.1:42029... 00:48:29.023638 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 42029) from 127.0.0.1 port 60488 00:48:29.060926 => Send header, 8 bytes (0x8) 0000: TYPE I 00:48:29.082374 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:48:29.114350 => Send header, 10 bytes (0xa) 0000: SIZE 127 00:48:29.146176 <= Recv header, 8 bytes (0x8) 0000: 213 10 00:48:29.193361 => Send header, 10 bytes (0xa) 0000: RETR 127 00:48:29.218005 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 127 () (10 bytes). 00:48:29.260409 * Maxdownload = -1 00:48:29.270909 * Getting file with size: 10 00:48:29.419345 <= Recv data, 10 bytes (0xa) 0000: moooooooo. 00:48:29.727049 * abort upload 00:48:29.751615 <= Recv data, 0 bytes (0x0) 00:48:29.941961 * Remembering we are in dir "path/to/file/" 00:48:30.134789 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:48:30.438233 * Connection #0 to host 127.0.0.1:39881 left intact === End of file trace127 === Start of file valgrind127 ==206160== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind127 test 0128...[FTP upload with --crlf] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind128 ../src/curl -q --output log/5/curl128.out --include --trace-ascii log/5/trace128 --trace-time ftp://127.0.0.1:33729/128 -T log/5/upload128 --crlf > log/5/stdout128 2> log/5/stderr128 valgrind ERROR ==206313== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 128 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind128 ../src/curl -q --output log/5/curl128.out --include --trace-ascii log/5/trace128 --trace-time ftp://127.0.0.1:33729/128 -T log/5/upload128 --crlf > log/5/stdout128 2> log/5/stderr128 === End of file commands.log === Start of file ftp_server.log 00:47:41.921076 ====> Client connect 00:47:41.922141 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:47:41.926983 < "USER anonymous" 00:47:41.927290 > "331 We are happy you popped in![CR][LF]" 00:47:41.927957 < "PASS ftp@example.com" 00:47:41.928194 > "230 Welcome you silly person[CR][LF]" 00:47:41.931348 < "PWD" 00:47:41.931630 > "257 "/" is current directory[CR][LF]" 00:47:41.933782 < "EPSV" 00:47:41.933973 ====> Passive DATA channel requested by client 00:47:41.934112 DATA sockfilt for passive data channel starting... 00:47:41.972555 DATA sockfilt for passive data channel started (pid 206307) 00:47:41.973640 DATA sockfilt for passive data channel listens on port 46529 00:47:41.973939 > "229 Entering Passive Mode (|||46529|)[CR][LF]" 00:47:41.974098 Client has been notified that DATA conn will be accepted on port 46529 00:47:41.977031 Client connects to port 46529 00:47:41.977222 ====> Client established passive DATA connection on port 46529 00:47:41.977784 < "TYPE I" 00:47:41.978041 > "200 I modify TYPE as you wanted[CR][LF]" 00:47:41.979219 < "SIZE verifiedserver" 00:47:41.979503 > "213 18[CR][LF]" 00:47:41.980698 < "RETR verifiedserver" 00:47:41.980977 > "150 Binary junk (18 bytes).[CR][LF]" 00:47:41.981454 =====> Closing passive DATA connection... 00:47:41.981601 Server disconnects passive DATA connection 00:47:41.987892 Server disconnected passive DATA connection 00:47:41.988060 DATA sockfilt for passive data channel quits (pid 206307) 00:47:41.990895 DATA sockfilt for passive data channel quit (pid 206307) 00:47:41.991084 =====> Closed passive DATA connection 00:47:41.991319 > "226 File transfer complete[CR][LF]" 00:47:42.032152 < "QUIT" 00:47:42.032530 > "221 bye bye baby[CR][LF]" 00:47:42.033196 MAIN sockfilt said DISC 00:47:42.033386 ====> Client disconnected 00:47:42.033656 Awaiting input 00:48:30.005800 ====> Client connect 00:48:30.006544 FTPD: Getting commands from log/5/server.cmd 00:48:30.006873 FTPD: run test case number: 128 00:48:30.007963 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:48:31.283126 < "USER anonymous" 00:48:31.286770 > "331 We are happy you popped in![CR][LF]" 00:48:31.387831 < "PASS ftp@example.com" 00:48:31.388248 > "230 Welcome you silly person[CR][LF]" 00:48:31.488488 < "PWD" 00:48:31.488925 > "257 "/" is current directory[CR][LF]" 00:48:31.692151 < "EPSV" 00:48:31.692484 ====> Passive DATA channel requested by client 00:48:31.692636 DATA sockfilt for passive data channel starting... 00:48:31.770930 DATA sockfilt for passive data channel started (pid 207512) 00:48:31.772287 DATA sockfilt for passive data channel listens on port 45865 00:48:31.773071 > "229 Entering Passive Mode (|||45865|)[CR][LF]" 00:48:31.773244 Client has been notified that DATA conn will be accepted on port 45865 00:48:31.981066 Client connects to port 45865 00:48:31.981659 ====> Client established passive DATA connection on port 45865 00:48:32.085312 < "TYPE I" 00:48:32.085772 > "200 I modify TYPE as you wanted[CR][LF]" 00:48:32.143134 < "STOR 128" 00:48:32.143457 STOR test number 128 in log/5/upload.128 00:48:32.143719 > "125 Gimme gimme gimme![CR][LF]" 00:48:32.552492 > Appending 76 bytes to file 00:48:32.978395 =====> Closing passive DATA connection... 00:48:32.978687 Server knows passive DATA connection is already disconnected 00:48:32.978867 DATA sockfilt for passive data channel quits (pid 207512) 00:48:32.984229 DATA sockfilt for passive data channel quit (pid 207512) 00:48:32.984438 =====> Closed passive DATA connection 00:48:32.984636 received 76 bytes upload 00:48:32.984955 > "226 File transfer complete[CR][LF]" 00:48:34.166748 < "QUIT" 00:48:34.167155 > "221 bye bye baby[CR][LF]" 00:48:34.294052 MAIN sockfilt said DISC 00:48:34.294621 ====> Client disconnected 00:48:34.294917 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:47:42.534939 ====> Client connect 00:47:42.539755 Received DATA (on stdin) 00:47:42.539841 > 160 bytes data, server => client 00:47:42.539939 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:47:42.540030 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:47:42.540109 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:47:42.543697 < 16 bytes data, client => server 00:47:42.543788 'USER anonymous\r\n' 00:47:42.544632 Received DATA (on stdin) 00:47:42.544696 > 33 bytes data, server => client 00:47:42.544774 '331 We are happy you popped in!\r\n' 00:47:42.545021 < 22 bytes data, client => server 00:47:42.545100 'PASS ftp@example.com\r\n' 00:47:42.545545 Received DATA (on stdin) 00:47:42.545607 > 30 bytes data, server => client 00:47:42.545685 '230 Welcome you silly person\r\n' 00:47:42.545898 < 5 bytes data, client => server 00:47:42.545961 'PWD\r\n' 00:47:42.549198 Received DATA (on stdin) 00:47:42.549267 > 30 bytes data, server => client 00:47:42.549345 '257 "/" is current directory\r\n' 00:47:42.550722 < 6 bytes data, client => server 00:47:42.550787 'EPSV\r\n' 00:47:42.591735 Received DATA (on stdin) 00:47:42.591856 > 39 bytes data, server => client 00:47:42.591942 '229 Entering Passive Mode (|||46529|)\r\n' 00:47:42.593972 < 8 bytes data, client => server 00:47:42.594040 'TYPE I\r\n' 00:47:42.595612 Received DATA (on stdin) 00:47:42.595679 > 33 bytes data, server => client 00:47:42.595757 '200 I modify TYPE as you wanted\r\n' 00:47:42.596163 < 21 bytes data, client => server 00:47:42.596234 'SIZE verifiedserver\r\n' 00:47:42.597067 Received DATA (on stdin) 00:47:42.597128 > 8 bytes data, server => client 00:47:42.597190 '213 18\r\n' 00:47:42.597579 < 21 bytes data, client => server 00:47:42.597649 'RETR verifiedserver\r\n' 00:47:42.599966 Received DATA (on stdin) 00:47:42.600032 > 29 bytes data, server => client 00:47:42.600108 '150 Binary junk (18 bytes).\r\n' 00:47:42.608674 Received DATA (on stdin) 00:47:42.608744 > 28 bytes data, server => client 00:47:42.608821 '226 File transfer complete\r\n' 00:47:42.648765 < 6 bytes data, client => server 00:47:42.648916 'QUIT\r\n' 00:47:42.649864 Received DATA (on stdin) 00:47:42.649930 > 18 bytes data, server => client 00:47:42.649995 '221 bye bye baby\r\n' 00:47:42.650493 ====> Client disconnect 00:47:42.651213 Received ACKD (on stdin) 00:48:30.622793 ====> Client connect 00:48:30.628276 Received DATA (on stdin) 00:48:30.628391 > 160 bytes data, server => client 00:48:30.628503 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:48:30.628604 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:48:30.628697 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:48:31.899182 < 16 bytes data, client => server 00:48:31.899362 'USER anonymous\r\n' 00:48:31.900786 Received DATA (on stdin) 00:48:31.900863 > 33 bytes data, server => client 00:48:31.904338 '331 We are happy you popped in!\r\n' 00:48:32.003957 < 22 bytes data, client => server 00:48:32.004142 'PASS ftp@example.com\r\n' 00:48:32.005756 Received DATA (on stdin) 00:48:32.005838 > 30 bytes data, server => client 00:48:32.005928 '230 Welcome you silly person\r\n' 00:48:32.103424 < 5 bytes data, client => server 00:48:32.103581 'PWD\r\n' 00:48:32.106427 Received DATA (on stdin) 00:48:32.106510 > 30 bytes data, server => client 00:48:32.106599 '257 "/" is current directory\r\n' 00:48:32.308316 < 6 bytes data, client => server 00:48:32.308471 'EPSV\r\n' 00:48:32.389866 Received DATA (on stdin) 00:48:32.390001 > 39 bytes data, server => client 00:48:32.390133 '229 Entering Passive Mode (|||45865|)\r\n' 00:48:32.701428 < 8 bytes data, client => server 00:48:32.701611 'TYPE I\r\n' 00:48:32.703307 Received DATA (on stdin) 00:48:32.703393 > 33 bytes data, server => client 00:48:32.703494 '200 I modify TYPE as you wanted\r\n' 00:48:32.759227 < 10 bytes data, client => server 00:48:32.759405 'STOR 128\r\n' 00:48:32.764940 Received DATA (on stdin) 00:48:32.765031 > 24 bytes data, server => client 00:48:32.765121 '125 Gimme gimme gimme!\r\n' 00:48:33.602171 Received DATA (on stdin) 00:48:33.602336 > 28 bytes data, server => client 00:48:33.602424 '226 File transfer complete\r\n' 00:48:34.783134 < 6 bytes data, client => server 00:48:34.783314 'QUIT\r\n' 00:48:34.784386 Received DATA (on stdin) 00:48:34.784453 > 18 bytes data, server => client 00:48:34.784523 '221 bye bye baby\r\n' 00:48:34.911044 ====> Client disconnect 00:48:34.911905 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:47:41.581698 Running IPv4 version 00:47:41.588576 Listening on port 46529 00:47:41.588989 Wrote pid 206307 to log/5/server/ftp_sockdata.pid 00:47:41.589680 Received PING (on stdin) 00:47:41.590469 Received PORT (on stdin) 00:47:41.594314 ====> Client connect 00:47:41.599164 Received DATA (on stdin) 00:47:41.599421 > 18 bytes data, server => client 00:47:41.599746 'WE ROOLZ: 202313\r\n' 00:47:41.604941 Received DISC (on stdin) 00:47:41.605084 ====> Client forcibly disconnected 00:47:41.605641 Received QUIT (on stdin) 00:47:41.605711 quits 00:47:41.606153 ============> sockfilt quits 00:48:31.372904 Running IPv4 version 00:48:31.386669 Listening on port 45865 00:48:31.387139 Wrote pid 207512 to log/5/server/ftp_sockdata.pid 00:48:31.387852 Received PING (on stdin) 00:48:31.388921 Received PORT (on stdin) 00:48:31.594728 ====> Client connect 00:48:32.168448 < 76 bytes data, client => server 00:48:32.168925 'file\r\nwith Unix newlines\r\nmeant to be\r\nconverted\r\nwit' 00:48:32.169045 'h\r\nthe\r\n--crlf option\r\n' 00:48:32.593776 ====> Client disconnect 00:48:32.598286 Received ACKD (on stdin) 00:48:32.598576 Received QUIT (on stdin) 00:48:32.598663 quits 00:48:32.599162 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 128 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I STOR 128 QUIT === End of file server.input === Start of file stderr128 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 110 69 0 0 110 76 0 15 0:00:04 0:00:04 --:--:-- 20 110 69 0 0 110 76 0 14 0:00:04 0:00:05 --:--:-- 18 === End of file stderr128 === Start of file trace128 00:48:29.694593 * Trying 127.0.0.1:33729... 00:48:30.565949 * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 37940 00:48:30.807220 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:48:31.155280 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:48:31.183513 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:48:31.190311 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:48:31.195054 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:48:31.301938 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:48:31.366115 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:48:31.387897 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:48:31.467862 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:48:31.486183 => Send header, 5 bytes (0x5) 0000: PWD 00:48:31.501186 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:48:31.539985 * Entry path is '/' 00:48:31.639265 * Request has same path as previous transfer 00:48:31.688117 => Send header, 6 bytes (0x6) 0000: EPSV 00:48:31.701731 * Connect data stream passively 00:48:31.776835 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||45865|) 00:48:31.910558 * Connecting to 127.0.0.1 (127.0.0.1) port 45865 00:48:31.971648 * Trying 127.0.0.1:45865... 00:48:32.064690 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 45865) from 127.0.0.1 port 48834 00:48:32.084209 => Send header, 8 bytes (0x8) 0000: TYPE I 00:48:32.098476 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:48:32.142030 => Send header, 10 bytes (0xa) 0000: STOR 128 00:48:32.174962 <= Recv header, 24 bytes (0x18) 0000: 125 Gimme gimme gimme 00:48:32.566351 => Send data, 76 bytes (0x4c) 0000: file 0006: with Unix newlines 001a: meant to be 0027: converted 0032: with 0038: the 003d: --crlf option 00:48:32.743496 * upload completely sent off: 76 bytes 00:48:32.903754 * Remembering we are in dir "" 00:48:33.076840 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:48:33.383687 * Connection #0 to host 127.0.0.1:33729 left intact === End of file trace128 === SCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind129 ../src/curl -q --output log/3/curl129.out --include --trace-ascii log/3/trace129 --trace-time http://127.0.0.1:46853/129 > log/3/stdout129 2> log/3/stderr129 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind130 ../src/curl -q --output log/7/curl130.out --include --trace-ascii log/7/trace130 --trace-time --netrc-optional --netrc-file log/7/netrc130 ftp://127.0.0.1:45353/ > log/7/stdout130 2> log/7/stderr130 tart of file upload.128 file with Unix newlines meant to be converted with the --crlf option === End of file upload.128 === Start of file upload128 file with Unix newlines meant to be converted with the --crlf option === End of file upload128 === Start of file valgrind128 ==206313== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind128 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 134 in state 4 Runner 2 (id 185908) running test 135 in state 4 Runner 3 (id 185910) running test 129 in state 4 Runner 4 (id 185912) running test 132 in state 4 Runner 5 (id 185914) running test 136 in state 4 Runner 6 (id 185916) running test 133 in state 4 Runner 7 (id 185918) running test 130 in state 4 Runner 8 (id 185920) running test 131 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 134 in state 4 Runner 2 (id 185908) running test 135 in state 4 Runner 3 (id 185910) running test 129 in state 4 Runner 4 (id 185912) running test 132 in state 4 Runner 5 (id 185914) running test 136 in state 4 Runner 6 (id 185916) running test 133 in state 4 Runner 7 (id 185918) running test 130 in state 4 Runner 8 (id 185920) running test 131 in state 4 test 0129...[HTTP/1.2 is rejected] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind129 ../src/curl -q --output log/3/curl129.out --include --trace-ascii log/3/trace129 --trace-time http://127.0.0.1:46853/129 > log/3/stdout129 2> log/3/stderr129 valgrind ERROR ==206543== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 129 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind129 ../src/curl -q --output log/3/curl129.out --include --trace-ascii log/3/trace129 --trace-time http://127.0.0.1:46853/129 > log/3/stdout129 2> log/3/stderr129 === End of file commands.log === Start of file http_server.log 00:48:08.174042 ====> Client connect 00:48:08.174204 accept_connection 3 returned 4 00:48:08.174282 accept_connection 3 returned 0 00:48:08.181712 Read 93 bytes 00:48:08.181829 Process 93 bytes request 00:48:08.181918 Got request: GET /verifiedserver HTTP/1.1 00:48:08.181982 Are-we-friendly question received 00:48:08.182100 Wrote request (93 bytes) input to log/3/server.input 00:48:08.182196 Identifying ourselves as friends 00:48:08.182355 Response sent (57 bytes) and written to log/3/server.response 00:48:08.182419 special request received, no persistency 00:48:08.182481 ====> Client disconnect 0 00:48:55.521148 ====> Client connect 00:48:55.521286 accept_connection 3 returned 4 00:48:55.521357 accept_connection 3 returned 0 00:48:56.530768 Read 82 bytes 00:48:56.530972 Process 82 bytes request 00:48:56.531062 Got request: GET /129 HTTP/1.1 00:48:56.531129 Serve test number 129 part 0 00:48:56.531295 - request found to be complete (129) 00:48:56.531545 Wrote request (82 bytes) input to log/3/server.input 00:48:56.531658 Send response test129 section 00:48:56.532052 Response sent (256 bytes) and written to log/3/server.response 00:48:56.532118 => persistent connection request ended, awaits new request 00:48:57.376383 Connection closed by client 00:48:57.376576 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 33672 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 129 === End of file server.cmd === Start of file server.input GET /129 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.2 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr129 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 curl: (1) Unsupported HTTP/1 subversion in response === End of file stderr129 === Start of file trace129 00:48:55.591898 * Trying 127.0.0.1:46853... 00:48:56.475490 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 38830 00:48:56.609917 * using HTTP/1.x 00:48:56.952874 => Send header, 82 bytes (0x52) 0000: GET /129 HTTP/1.1 0013: Host: 127.0.0.1:46853 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 00:48:57.286100 * Unsupported HTTP/1 subversion in response 00:48:57.659575 * closing connection #0 === End of file trace129 === Start of file valgrind129 ==206543== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind129 test 0130...[FTP (optional .netrc; no user/pass) dir list PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind130 ../src/curl -q --output log/7/curl130.out --include --trace-ascii log/7/trace130 --trace-time --netrc-optional --netrc-file log/7/netrc130 ftp://127.0.0.1:45353/ > log/7/stdout130 2> log/7/stderr130 valgrind ERROR ==206753== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 130 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind130 ../src/curl -q --output log/7/curl130.out --include --trace-ascii log/7/trace130 --trace-time --netrc-optional --netrc-file log/7/netrc130 ftp://127.0.0.1:45353/ > log/7/stdout130 2> log/7/stderr130 === End of file commands.log === Start of file curl130.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl130.out === Start of file ftp_server.log 00:48:15.259594 ====> Client connect 00:48:15.260594 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:48:15.270467 < "USER anonymous" 00:48:15.270826 > "331 We are happy you popped in![CR][LF]" 00:48:15.273033 < "PASS ftp@example.com" 00:48:15.273979 > "230 Welcome you silly person[CR][LF]" 00:48:15.274511 < "PWD" 00:48:15.276862 > "257 "/" is current directory[CR][LF]" 00:48:15.277556 < "EPSV" 00:48:15.277766 ====> Passive DATA channel requested by client 00:48:15.277909 DATA sockfilt for passive data channel starting... 00:48:15.320140 DATA sockfilt for passive data channel started (pid 206717) 00:48:15.321519 DATA sockfilt for passive data channel listens on port 42085 00:48:15.321866 > "229 Entering Passive Mode (|||42085|)[CR][LF]" 00:48:15.322029 Client has been notified that DATA conn will be accepted on port 42085 00:48:15.324911 Client connects to port 42085 00:48:15.325129 ====> Client established passive DATA connection on port 42085 00:48:15.325885 < "TYPE I" 00:48:15.326141 > "200 I modify TYPE as you wanted[CR][LF]" 00:48:15.327262 < "SIZE verifiedserver" 00:48:15.328285 > "213 18[CR][LF]" 00:48:15.328974 < "RETR verifiedserver" 00:48:15.329518 > "150 Binary junk (18 bytes).[CR][LF]" 00:48:15.332378 =====> Closing passive DATA connection... 00:48:15.332550 Server disconnects passive DATA connection 00:48:15.333535 Server disconnected passive DATA connection 00:48:15.333701 DATA sockfilt for passive data channel quits (pid 206717) 00:48:15.336911 DATA sockfilt for passive data channel quit (pid 206717) 00:48:15.337122 =====> Closed passive DATA connection 00:48:15.337394 > "226 File transfer complete[CR][LF]" 00:48:15.382454 < "QUIT" 00:48:15.382866 > "221 bye bye baby[CR][LF]" 00:48:15.383682 MAIN sockfilt said DISC 00:48:15.383868 ====> Client disconnected 00:48:15.384142 Awaiting input 00:49:03.151065 ====> Client connect 00:49:03.151844 FTPD: Getting commands from log/7/server.cmd 00:49:03.152176 FTPD: run test case number: 130 00:49:03.153317 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:49:04.468546 < "USER user1" 00:49:04.468996 > "331 We are happy you popped in![CR][LF]" 00:49:04.587475 < "PASS passwd1" 00:49:04.587941 > "230 Welcome you silly person[CR][LF]" 00:49:04.681552 < "PWD" 00:49:04.682038 > "257 "/" is current directory[CR][LF]" 00:49:04.881827 < "EPSV" 00:49:04.882186 ====> Passive DATA channel requested by client 00:49:04.882342 DATA sockfilt for passive data channel starting... 00:49:04.947994 DATA sockfilt for passive data channel started (pid 208052) 00:49:04.949229 DATA sockfilt for passive data channel listens on port 41919 00:49:04.949676 > "229 Entering Passive Mode (|||41919|)[CR][LF]" 00:49:04.949865 Client has been notified that DATA conn will be accepted on port 41919 00:49:05.168112 Client connects to port 41919 00:49:05.168723 ====> Client established passive DATA connection on port 41919 00:49:05.285298 < "TYPE A" 00:49:05.285762 > "200 I modify TYPE as you wanted[CR][LF]" 00:49:05.341900 < "LIST" 00:49:05.342377 > "150 here comes a directory[CR][LF]" 00:49:05.342603 pass LIST data on data connection 00:49:05.348117 send total 20 as data 00:49:05.348483 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 00:49:05.348708 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 00:49:05.348919 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 00:49:05.349134 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 00:49:05.349344 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 00:49:05.349550 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 00:49:05.349755 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 00:49:05.349978 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 00:49:05.350230 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 00:49:05.350453 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 00:49:05.354362 =====> Closing passive DATA connection... 00:49:05.377789 Server disconnects passive DATA connection 00:49:05.378886 Server disconnected passive DATA connection 00:49:05.379100 DATA sockfilt for passive data channel quits (pid 208052) 00:49:05.382645 DATA sockfilt for passive data channel quit (pid 208052) 00:49:05.382870 =====> Closed passive DATA connection 00:49:05.383199 > "226 ASCII transfer complete[CR][LF]" 00:49:07.468230 < "QUIT" 00:49:07.468673 > "221 bye bye baby[CR][LF]" 00:49:07.601076 MAIN sockfilt said DISC 00:49:07.601613 ====> Client disconnected 00:49:07.601931 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:48:14.876541 ====> Client connect 00:48:14.878134 Received DATA (on stdin) 00:48:14.878215 > 160 bytes data, server => client 00:48:14.878336 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:48:14.878443 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:48:14.878532 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:48:14.889220 < 16 bytes data, client => server 00:48:14.889346 'USER anonymous\r\n' 00:48:14.889423 Received DATA (on stdin) 00:48:14.889485 > 33 bytes data, server => client 00:48:14.889566 '331 We are happy you popped in!\r\n' 00:48:14.889837 < 22 bytes data, client => server 00:48:14.889914 'PASS ftp@example.com\r\n' 00:48:14.890582 Received DATA (on stdin) 00:48:14.890649 > 30 bytes data, server => client 00:48:14.890819 '230 Welcome you silly person\r\n' 00:48:14.891113 < 5 bytes data, client => server 00:48:14.891181 'PWD\r\n' 00:48:14.892067 Received DATA (on stdin) 00:48:14.892137 > 30 bytes data, server => client 00:48:14.892238 '257 "/" is current directory\r\n' 00:48:14.894403 < 6 bytes data, client => server 00:48:14.894474 'EPSV\r\n' 00:48:14.939581 Received DATA (on stdin) 00:48:14.939719 > 39 bytes data, server => client 00:48:14.939811 '229 Entering Passive Mode (|||42085|)\r\n' 00:48:14.942677 < 8 bytes data, client => server 00:48:14.942752 'TYPE I\r\n' 00:48:14.943648 Received DATA (on stdin) 00:48:14.943709 > 33 bytes data, server => client 00:48:14.943784 '200 I modify TYPE as you wanted\r\n' 00:48:14.944157 < 21 bytes data, client => server 00:48:14.944226 'SIZE verifiedserver\r\n' 00:48:14.944828 Received DATA (on stdin) 00:48:14.944888 > 8 bytes data, server => client 00:48:14.945082 '213 18\r\n' 00:48:14.945816 < 21 bytes data, client => server 00:48:14.945893 'RETR verifiedserver\r\n' 00:48:14.946549 Received DATA (on stdin) 00:48:14.946615 > 29 bytes data, server => client 00:48:14.946715 '150 Binary junk (18 bytes).\r\n' 00:48:14.954922 Received DATA (on stdin) 00:48:14.955030 > 28 bytes data, server => client 00:48:14.955111 '226 File transfer complete\r\n' 00:48:14.998744 < 6 bytes data, client => server 00:48:14.998936 'QUIT\r\n' 00:48:15.000130 Received DATA (on stdin) 00:48:15.000202 > 18 bytes data, server => client 00:48:15.000276 '221 bye bye baby\r\n' 00:48:15.000908 ====> Client disconnect 00:48:15.001431 Received ACKD (on stdin) 00:49:02.764909 ====> Client connect 00:49:02.770466 Received DATA (on stdin) 00:49:02.770603 > 160 bytes data, server => client 00:49:02.770712 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:02.770812 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:02.770903 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:49:04.082349 < 12 bytes data, client => server 00:49:04.082548 'USER user1\r\n' 00:49:04.086169 Received DATA (on stdin) 00:49:04.086276 > 33 bytes data, server => client 00:49:04.086363 '331 We are happy you popped in!\r\n' 00:49:04.203703 < 14 bytes data, client => server 00:49:04.203925 'PASS passwd1\r\n' 00:49:04.208208 Received DATA (on stdin) 00:49:04.208308 > 30 bytes data, server => client 00:49:04.208392 '230 Welcome you silly person\r\n' 00:49:04.297881 < 5 bytes data, client => server 00:49:04.298075 'PWD\r\n' 00:49:04.299203 Received DATA (on stdin) 00:49:04.299285 > 30 bytes data, server => client 00:49:04.299367 '257 "/" is current directory\r\n' 00:49:04.497512 < 6 bytes data, client => server 00:49:04.497700 'EPSV\r\n' 00:49:04.566837 Received DATA (on stdin) 00:49:04.566992 > 39 bytes data, server => client 00:49:04.567089 '229 Entering Passive Mode (|||41919|)\r\n' 00:49:04.900525 < 8 bytes data, client => server 00:49:04.900738 'TYPE A\r\n' 00:49:04.902929 Received DATA (on stdin) 00:49:04.903024 > 33 bytes data, server => client 00:49:04.903130 '200 I modify TYPE as you wanted\r\n' 00:49:04.955230 < 6 bytes data, client => server 00:49:04.955429 'LIST\r\n' 00:49:04.959571 Received DATA (on stdin) 00:49:04.959685 > 28 bytes data, server => client 00:49:04.959789 '150 here comes a directory\r\n' 00:49:05.001555 Received DATA (on stdin) 00:49:05.001705 > 29 bytes data, server => client 00:49:05.001815 '226 ASCII transfer complete\r\n' 00:49:07.084529 < 6 bytes data, client => server 00:49:07.084706 'QUIT\r\n' 00:49:07.085831 Received DATA (on stdin) 00:49:07.085920 > 18 bytes data, server => client 00:49:07.085995 '221 bye bye baby\r\n' 00:49:07.216837 ====> Client disconnect 00:49:07.221525 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:48:15.928181 Running IPv4 version 00:48:15.935897 Listening on port 42085 00:48:15.936350 Wrote pid 206717 to log/7/server/ftp_sockdata.pid 00:48:15.937103 Received PING (on stdin) 00:48:15.938175 Received PORT (on stdin) 00:48:15.942105 ====> Client connect 00:48:15.947056 Received DATA (on stdin) 00:48:15.947365 > 18 bytes data, server => client 00:48:15.950301 'WE ROOLZ: 202639\r\n' 00:48:15.950549 Received DISC (on stdin) 00:48:15.950666 ====> Client forcibly disconnected 00:48:15.951226 Received QUIT (on stdin) 00:48:15.951299 quits 00:48:15.951808 ============> sockfilt quits 00:49:04.553617 Running IPv4 version 00:49:04.561224 Listening on port 41919 00:49:04.561778 Wrote pid 208052 to log/7/server/ftp_sockdata.pid 00:49:04.562534 Received PING (on stdin) 00:49:04.565782 Received PORT (on stdin) 00:49:04.785006 ====> Client connect 00:49:04.968218 Received DATA (on stdin) 00:49:04.991594 > 10 bytes data, server => client 00:49:04.992049 'total 20\r\n' 00:49:04.992371 Received DATA (on stdin) 00:49:04.992446 > 57 bytes data, server => client 00:49:04.992552 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 00:49:04.992658 Received DATA (on stdin) 00:49:04.992725 > 58 bytes data, server => client 00:49:04.992828 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 00:49:04.992943 Received DATA (on stdin) 00:49:04.993010 > 61 bytes data, server => client 00:49:04.993189 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 00:49:04.993268 '\n' 00:49:04.993356 Received DATA (on stdin) 00:49:04.993423 > 62 bytes data, server => client 00:49:04.993532 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 00:49:04.993596 '\n' 00:49:04.993682 Received DATA (on stdin) 00:49:04.993746 > 70 bytes data, server => client 00:49:04.993851 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 00:49:04.993919 'usr/bin\r\n' 00:49:04.993999 Received DATA (on stdin) 00:49:04.994064 > 59 bytes data, server => client 00:49:04.994165 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 00:49:04.994249 Received DATA (on stdin) 00:49:04.994313 > 69 bytes data, server => client 00:49:04.994415 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 00:49:04.994482 'd.html\r\n' 00:49:04.994577 Received DATA (on stdin) 00:49:04.994642 > 59 bytes data, server => client 00:49:04.994745 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 00:49:04.994839 Received DATA (on stdin) 00:49:04.995518 > 59 bytes data, server => client 00:49:04.995620 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 00:49:04.995708 Received DATA (on stdin) 00:49:04.995777 > 59 bytes data, server => client 00:49:04.995884 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 00:49:04.995971 Received DISC (on stdin) 00:49:04.996588 ====> Client forcibly disconnected 00:49:04.996754 Received QUIT (on stdin) 00:49:04.996832 quits 00:49:04.997350 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file netrc130 # the following two lines were created while testing curl # machine 127.0.0.1 login user1 password commented machine 127.0.0.1 login user1 password passwd1 machine 127.0.0.1 login user2 password passwd2 default login userdef password passwddef === End of file netrc130 === Start of file server.cmd Testnum 130 === End of file server.cmd === Start of file server.input USER user1 PASS passwd1 PWD EPSV TYPE A LIST QUIT === End of file server.input === Start of file stderr130 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 623 0 623 0 0 106 0 --:--:-- 0:00:05 --:--:-- 143 === End of file stderr130 === Start of file trace130 00:49:02.782756 * Trying 127.0.0.1:45353... 00:49:03.727093 * Established connection to 127.0.0.1 (127.0.0.1 port 45353) from 127.0.0.1 port 40916 00:49:03.977785 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:49:04.333192 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:49:04.363824 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:49:04.371876 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:49:04.377054 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:49:04.487768 => Send header, 12 bytes (0xc) 0000: USER user1 00:49:04.565118 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:49:04.589538 => Send header, 14 bytes (0xe) 0000: PASS passwd1 00:49:04.660966 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:49:04.682354 => Send header, 5 bytes (0x5) 0000: PWD 00:49:04.697665 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:49:04.734007 * Entry path is '/' 00:49:04.829420 * Request has same path as previous transfer 00:49:04.880377 => Send header, 6 bytes (0x6) 0000: EPSV 00:49:04.899583 * Connect data stream passively 00:49:04.963676 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||41919|) 00:49:05.087590 * Connecting to 127.0.0.1 (127.0.0.1) port 41919 00:49:05.158569 * Trying 127.0.0.1:41919... 00:49:05.250530 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 41919) from 127.0.0.1 port 43002 00:49:05.283392 => Send header, 8 bytes (0x8) 0000: TYPE A 00:49:05.303298 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:49:05.338094 => Send header, 6 bytes (0x6) 0000: LIST 00:49:05.370189 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 00:49:05.404059 * Maxdownload = -1 00:49:05.581864 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 00:49:06.013276 * abort upload 00:49:06.043509 <= Recv data, 0 bytes (0x0) 00:49:06.219387 * Remembering we aCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind131 ../src/curl -q --output log/8/curl131.out --include --trace-ascii log/8/trace131 --trace-time --netrc-optional --netrc-file log/8/netrc131 ftp://user2@127.0.0.1:43843/ > log/8/stdout131 2> log/8/stderr131 re in dir "" 00:49:06.403785 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 00:49:06.716540 * Connection #0 to host 127.0.0.1:45353 left intact === End of file trace130 === Start of file valgrind130 ==206753== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind130 test 0131...[FTP (optional .netrc; user/no pass) dir list PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind131 ../src/curl -q --output log/8/curl131.out --include --trace-ascii log/8/trace131 --trace-time --netrc-optional --netrc-file log/8/netrc131 ftp://user2@127.0.0.1:43843/ > log/8/stdout131 2> log/8/stderr131 valgrind ERROR ==206815== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 131 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind131 ../src/curl -q --output log/8/curl131.out --include --trace-ascii log/8/trace131 --trace-time --netrc-optional --netrc-file log/8/netrc131 ftp://user2@127.0.0.1:43843/ > log/8/stdout131 2> log/8/stderr131 === End of file commands.log === Start of file curl131.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl131.out === Start of file ftp_server.log 00:48:16.058061 ====> Client connect 00:48:16.064316 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:48:16.069147 < "USER anonymous" 00:48:16.069546 > "331 We are happy you popped in![CR][LF]" 00:48:16.071687 < "PASS ftp@example.com" 00:48:16.071968 > "230 Welcome you silly person[CR][LF]" 00:48:16.074763 < "PWD" 00:48:16.075093 > "257 "/" is current directory[CR][LF]" 00:48:16.077605 < "EPSV" 00:48:16.077846 ====> Passive DATA channel requested by client 00:48:16.077991 DATA sockfilt for passive data channel starting... 00:48:16.128690 DATA sockfilt for passive data channel started (pid 206761) 00:48:16.130142 DATA sockfilt for passive data channel listens on port 40675 00:48:16.130535 > "229 Entering Passive Mode (|||40675|)[CR][LF]" 00:48:16.130721 Client has been notified that DATA conn will be accepted on port 40675 00:48:16.133627 Client connects to port 40675 00:48:16.133930 ====> Client established passive DATA connection on port 40675 00:48:16.134968 < "TYPE I" 00:48:16.135634 > "200 I modify TYPE as you wanted[CR][LF]" 00:48:16.138706 < "SIZE verifiedserver" 00:48:16.139515 > "213 18[CR][LF]" 00:48:16.140455 < "RETR verifiedserver" 00:48:16.143231 > "150 Binary junk (18 bytes).[CR][LF]" 00:48:16.143984 =====> Closing passive DATA connection... 00:48:16.144157 Server disconnects passive DATA connection 00:48:16.148042 Server disconnected passive DATA connection 00:48:16.148259 DATA sockfilt for passive data channel quits (pid 206761) 00:48:16.151800 DATA sockfilt for passive data channel quit (pid 206761) 00:48:16.152204 =====> Closed passive DATA connection 00:48:16.152624 > "226 File transfer complete[CR][LF]" 00:48:16.196190 < "QUIT" 00:48:16.196606 > "221 bye bye baby[CR][LF]" 00:48:16.201131 MAIN sockfilt said DISC 00:48:16.201399 ====> Client disconnected 00:48:16.201681 Awaiting input 00:49:04.168739 ====> Client connect 00:49:04.169534 FTPD: Getting commands from log/8/server.cmd 00:49:04.169890 FTPD: run test case number: 131 00:49:04.174448 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:49:05.520199 < "USER user2" 00:49:05.520648 > "331 We are happy you popped in![CR][LF]" 00:49:05.638207 < "PASS passwd2" 00:49:05.638656 > "230 Welcome you silly person[CR][LF]" 00:49:05.731257 < "PWD" 00:49:05.734408 > "257 "/" is current directory[CR][LF]" 00:49:05.922830 < "EPSV" 00:49:05.923162 ====> Passive DATA channel requested by client 00:49:05.923308 DATA sockfilt for passive data channel starting... 00:49:06.002430 DATA sockfilt for passive data channel started (pid 208058) 00:49:06.008509 DATA sockfilt for passive data channel listens on port 43011 00:49:06.011098 > "229 Entering Passive Mode (|||43011|)[CR][LF]" 00:49:06.011370 Client has been notified that DATA conn will be accepted on port 43011 00:49:06.208247 Client connects to port 43011 00:49:06.208857 ====> Client established passive DATA connection on port 43011 00:49:06.321549 < "TYPE A" 00:49:06.321975 > "200 I modify TYPE as you wanted[CR][LF]" 00:49:06.375070 < "LIST" 00:49:06.375452 > "150 here comes a directory[CR][LF]" 00:49:06.375635 pass LIST data on data connection 00:49:06.381371 send total 20 as data 00:49:06.381685 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 00:49:06.381903 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 00:49:06.382112 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 00:49:06.382321 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 00:49:06.382531 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 00:49:06.382735 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 00:49:06.382940 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 00:49:06.383145 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 00:49:06.383368 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 00:49:06.383570 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 00:49:06.384051 =====> Closing passive DATA connection... 00:49:06.384205 Server disconnects passive DATA connection 00:49:06.387893 Server disconnected passive DATA connection 00:49:06.388067 DATA sockfilt for passive data channel quits (pid 208058) 00:49:06.394066 DATA sockfilt for passive data channel quit (pid 208058) 00:49:06.394265 =====> Closed passive DATA connection 00:49:06.394544 > "226 ASCII transfer complete[CR][LF]" 00:49:08.528456 < "QUIT" 00:49:08.528869 > "221 bye bye baby[CR][LF]" 00:49:08.661102 MAIN sockfilt said DISC 00:49:08.661774 ====> Client disconnected 00:49:08.662094 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:48:15.674998 ====> Client connect 00:48:15.676223 Received DATA (on stdin) 00:48:15.676312 > 160 bytes data, server => client 00:48:15.681514 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:48:15.681649 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:48:15.681742 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:48:15.685642 < 16 bytes data, client => server 00:48:15.685766 'USER anonymous\r\n' 00:48:15.686817 Received DATA (on stdin) 00:48:15.686887 > 33 bytes data, server => client 00:48:15.686973 '331 We are happy you popped in!\r\n' 00:48:15.687271 < 22 bytes data, client => server 00:48:15.687347 'PASS ftp@example.com\r\n' 00:48:15.689249 Received DATA (on stdin) 00:48:15.689324 > 30 bytes data, server => client 00:48:15.689401 '230 Welcome you silly person\r\n' 00:48:15.689654 < 5 bytes data, client => server 00:48:15.689719 'PWD\r\n' 00:48:15.692374 Received DATA (on stdin) 00:48:15.692453 > 30 bytes data, server => client 00:48:15.692528 '257 "/" is current directory\r\n' 00:48:15.693991 < 6 bytes data, client => server 00:48:15.694064 'EPSV\r\n' 00:48:15.747796 Received DATA (on stdin) 00:48:15.747957 > 39 bytes data, server => client 00:48:15.748053 '229 Entering Passive Mode (|||40675|)\r\n' 00:48:15.751557 < 8 bytes data, client => server 00:48:15.751700 'TYPE I\r\n' 00:48:15.752582 Received DATA (on stdin) 00:48:15.752667 > 33 bytes data, server => client 00:48:15.752777 '200 I modify TYPE as you wanted\r\n' 00:48:15.755315 < 21 bytes data, client => server 00:48:15.755419 'SIZE verifiedserver\r\n' 00:48:15.756507 Received DATA (on stdin) 00:48:15.756585 > 8 bytes data, server => client 00:48:15.756680 '213 18\r\n' 00:48:15.757181 < 21 bytes data, client => server 00:48:15.757259 'RETR verifiedserver\r\n' 00:48:15.758083 Received DATA (on stdin) 00:48:15.758163 > 29 bytes data, server => client 00:48:15.758308 '150 Binary junk (18 bytes).\r\n' 00:48:15.769883 Received DATA (on stdin) 00:48:15.770032 > 28 bytes data, server => client 00:48:15.770118 '226 File transfer complete\r\n' 00:48:15.812501 < 6 bytes data, client => server 00:48:15.812674 'QUIT\r\n' 00:48:15.814152 Received DATA (on stdin) 00:48:15.814230 > 18 bytes data, server => client 00:48:15.814310 '221 bye bye baby\r\n' 00:48:15.814914 ====> Client disconnect 00:48:15.819181 Received ACKD (on stdin) 00:49:03.785637 ====> Client connect 00:49:03.788193 Received DATA (on stdin) 00:49:03.788307 > 160 bytes data, server => client 00:49:03.791983 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:03.792115 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:03.792227 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:49:05.136154 < 12 bytes data, client => server 00:49:05.136352 'USER user2\r\n' 00:49:05.138107 Received DATA (on stdin) 00:49:05.138201 > 33 bytes data, server => client 00:49:05.138294 '331 We are happy you popped in!\r\n' 00:49:05.254672 < 14 bytes data, client => server 00:49:05.254879 'PASS passwd2\r\n' 00:49:05.258205 Received DATA (on stdin) 00:49:05.258295 > 30 bytes data, server => client 00:49:05.258385 '230 Welcome you silly person\r\n' 00:49:05.347255 < 5 bytes data, client => server 00:49:05.347461 'PWD\r\n' 00:49:05.348908 Received DATA (on stdin) 00:49:05.348995 > 30 bytes data, server => client 00:49:05.351943 '257 "/" is current directory\r\n' 00:49:05.538930 < 6 bytes data, client => server 00:49:05.539123 'EPSV\r\n' 00:49:05.626229 Received DATA (on stdin) 00:49:05.626374 > 39 bytes data, server => client 00:49:05.628324 '229 Entering Passive Mode (|||43011|)\r\n' 00:49:05.937828 < 8 bytes data, client => server 00:49:05.938031 'TYPE A\r\n' 00:49:05.939140 Received DATA (on stdin) 00:49:05.939223 > 33 bytes data, server => client 00:49:05.939314 '200 I modify TYPE as you wanted\r\n' 00:49:05.989558 < 6 bytes data, client => server 00:49:05.989704 'LIST\r\n' 00:49:05.992625 Received DATA (on stdin) 00:49:05.992717 > 28 bytes data, server => client 00:49:05.992819 '150 here comes a directory\r\n' 00:49:06.014876 Received DATA (on stdin) 00:49:06.015011 > 29 bytes data, server => client 00:49:06.015113 '226 ASCII transfer complete\r\n' 00:49:08.144792 < 6 bytes data, client => server 00:49:08.144982 'QUIT\r\n' 00:49:08.146033 Received DATA (on stdin) 00:49:08.146108 > 18 bytes data, server => client 00:49:08.146181 '221 bye bye baby\r\n' 00:49:08.278024 ====> Client disconnect 00:49:08.278825 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:48:16.736184 Running IPv4 version 00:48:16.744322 Listening on port 40675 00:48:16.744810 Wrote pid 206761 to log/8/server/ftp_sockdata.pid 00:48:16.745616 Received PING (on stdin) 00:48:16.746747 Received PORT (on stdin) 00:48:16.750750 ====> Client connect 00:48:16.761720 Received DATA (on stdin) 00:48:16.762118 > 18 bytes data, server => client 00:48:16.762513 'WE ROOLZ: 202642\r\n' 00:48:16.764995 Received DISC (on stdin) 00:48:16.765137 ====> Client forcibly disconnected 00:48:16.765753 Received QUIT (on stdin) 00:48:16.765832 quits 00:48:16.766376 ============> sockfilt quits 00:49:05.603610 Running IPv4 version 00:49:05.617962 Listening on port 43011 00:49:05.618511 Wrote pid 208058 to log/8/server/ftp_sockdata.pid 00:49:05.619274 Received PING (on stdin) 00:49:05.624878 Received PORT (on stdin) 00:49:05.825152 ====> Client connect 00:49:05.998901 Received DATA (on stdin) 00:49:05.999280 > 10 bytes data, server => client 00:49:05.999650 'total 20\r\n' 00:49:05.999942 Received DATA (on stdin) 00:49:06.000013 > 57 bytes data, server => client 00:49:06.000115 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 00:49:06.000217 Received DATA (on stdin) 00:49:06.000285 > 58 bytes data, server => client 00:49:06.000388 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 00:49:06.000472 Received DATA (on stdin) 00:49:06.000538 > 61 bytes data, server => client 00:49:06.000658 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 00:49:06.000738 '\n' 00:49:06.000828 Received DATA (on stdin) 00:49:06.000896 > 62 bytes data, server => client 00:49:06.001004 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 00:49:06.001069 '\n' 00:49:06.001149 Received DATA (on stdin) 00:49:06.001213 > 70 bytes data, server => client 00:49:06.001316 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 00:49:06.001381 'usr/bin\r\n' 00:49:06.001461 Received DATA (on stdin) 00:49:06.001540 > 59 bytes data, server => client 00:49:06.001641 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 00:49:06.001725 Received DATA (on stdin) 00:49:06.001789 > 69 bytes data, server => client 00:49:06.001893 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 00:49:06.001960 'd.html\r\n' 00:49:06.002054 Received DATA (on stdin) 00:49:06.002118 > 59 bytes data, server => client 00:49:06.002217 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 00:49:06.002299 Received DATA (on stdin) 00:49:06.002362 > 59 bytes data, server => client 00:49:06.002461 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 00:49:06.002542 Received DATA (on stdin) 00:49:06.002608 > 59 bytes data, server => client 00:49:06.002724 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 00:49:06.004984 Received DISC (on stdin) 00:49:06.005111 ====> Client forcibly disconnected 00:49:06.008203 Received QUIT (on stdin) 00:49:06.008285 quits 00:49:06.008823 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file netrc131 # the following two lines were created while testing curl machine 127.0.0.1 login user1 password passwd1 machine 127.0.0.1 login user2 password passwd2 === End of file netrc131 === Start of file server.cmd Testnum 131 === End of file server.cmd === Start of file server.input USER user2 PASS passwd2 PWD EPSV TYPE A LIST QUIT === End of file server.input === Start of file stderr131 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 623 0 623 0 0 105 0 --:--:-- 0:00:05 --:--:-- 145 === End of file stderr131 === Start of file trace131 00:49:03.849067 * Trying 127.0.0.1:43843... 00:49:04.747718 * Established connection to 127.0.0.1 (127.0.0.1 port 43843) from 127.0.0.1 port 53530 00:49:05.007411 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:49:05.391022 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:49:05.419718 <= Recv header, 32 bytes (0x20) CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind132 ../src/curl -q --output log/4/curl132.out --include --trace-ascii log/4/trace132 --trace-time --netrc-optional --netrc-file log/4/netrc132 ftp://mary:mark@127.0.0.1:38207/ > log/4/stdout132 2> log/4/stderr132 0000: 220- / __| | | | |_) | | 00:49:05.428187 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:49:05.433946 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:49:05.539655 => Send header, 12 bytes (0xc) 0000: USER user2 00:49:05.616653 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:49:05.638322 => Send header, 14 bytes (0xe) 0000: PASS passwd2 00:49:05.709542 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:49:05.730101 => Send header, 5 bytes (0x5) 0000: PWD 00:49:05.747934 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:49:05.784107 * Entry path is '/' 00:49:05.871965 * Request has same path as previous transfer 00:49:05.921769 => Send header, 6 bytes (0x6) 0000: EPSV 00:49:05.936726 * Connect data stream passively 00:49:06.014853 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||43011|) 00:49:06.138529 * Connecting to 127.0.0.1 (127.0.0.1) port 43011 00:49:06.201764 * Trying 127.0.0.1:43011... 00:49:06.289919 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 43011) from 127.0.0.1 port 58300 00:49:06.321066 => Send header, 8 bytes (0x8) 0000: TYPE A 00:49:06.340101 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:49:06.372682 => Send header, 6 bytes (0x6) 0000: LIST 00:49:06.414540 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 00:49:06.452125 * Maxdownload = -1 00:49:06.611100 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 00:49:07.032675 * abort upload 00:49:07.059931 <= Recv data, 0 bytes (0x0) 00:49:07.230409 * Remembering we are in dir "" 00:49:07.461163 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 00:49:07.776592 * Connection #0 to host 127.0.0.1:43843 left intact === End of file trace131 === Start of file valgrind131 ==206815== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind131 test 0132...[FTP (optional .netrc; user/passwd supplied) dir list PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind132 ../src/curl -q --output log/4/curl132.out --include --trace-ascii log/4/trace132 --trace-time --netrc-optional --netrc-file log/4/netrc132 ftp://mary:mark@127.0.0.1:38207/ > log/4/stdout132 2> log/4/stderr132 valgrind ERROR ==207072== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 132 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind132 ../src/curl -q --output log/4/curl132.out --include --trace-ascii log/4/trace132 --trace-time --netrc-optional --netrc-file log/4/netrc132 ftp://mary:mark@127.0.0.1:38207/ > log/4/stdout132 2> log/4/stderr132 === End of file commands.log === Start of file curl132.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl132.out === Start of file ftp_server.log 00:48:19.052857 ====> Client connect 00:48:19.053927 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:48:19.062909 < "USER anonymous" 00:48:19.063337 > "331 We are happy you popped in![CR][LF]" 00:48:19.068103 < "PASS ftp@example.com" 00:48:19.068411 > "230 Welcome you silly person[CR][LF]" 00:48:19.069143 < "PWD" 00:48:19.069425 > "257 "/" is current directory[CR][LF]" 00:48:19.072202 < "EPSV" 00:48:19.072437 ====> Passive DATA channel requested by client 00:48:19.072588 DATA sockfilt for passive data channel starting... 00:48:19.116397 DATA sockfilt for passive data channel started (pid 207044) 00:48:19.117819 DATA sockfilt for passive data channel listens on port 36119 00:48:19.118193 > "229 Entering Passive Mode (|||36119|)[CR][LF]" 00:48:19.118366 Client has been notified that DATA conn will be accepted on port 36119 00:48:19.121588 Client connects to port 36119 00:48:19.121811 ====> Client established passive DATA connection on port 36119 00:48:19.122655 < "TYPE I" 00:48:19.122948 > "200 I modify TYPE as you wanted[CR][LF]" 00:48:19.124313 < "SIZE verifiedserver" 00:48:19.125324 > "213 18[CR][LF]" 00:48:19.126043 < "RETR verifiedserver" 00:48:19.128544 > "150 Binary junk (18 bytes).[CR][LF]" 00:48:19.129103 =====> Closing passive DATA connection... 00:48:19.129279 Server disconnects passive DATA connection 00:48:19.134718 Server disconnected passive DATA connection 00:48:19.134921 DATA sockfilt for passive data channel quits (pid 207044) 00:48:19.138205 DATA sockfilt for passive data channel quit (pid 207044) 00:48:19.138388 =====> Closed passive DATA connection 00:48:19.138649 > "226 File transfer complete[CR][LF]" 00:48:19.176361 < "QUIT" 00:48:19.176797 > "221 bye bye baby[CR][LF]" 00:48:19.181019 MAIN sockfilt said DISC 00:48:19.181311 ====> Client disconnected 00:48:19.181617 Awaiting input 00:49:07.188026 ====> Client connect 00:49:07.188771 FTPD: Getting commands from log/4/server.cmd 00:49:07.189093 FTPD: run test case number: 132 00:49:07.194430 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:49:08.461650 < "USER mary" 00:49:08.462076 > "331 We are happy you popped in![CR][LF]" 00:49:08.570214 < "PASS mark" 00:49:08.570824 > "230 Welcome you silly person[CR][LF]" 00:49:08.660276 < "PWD" 00:49:08.661019 > "257 "/" is current directory[CR][LF]" 00:49:08.852096 < "EPSV" 00:49:08.852430 ====> Passive DATA channel requested by client 00:49:08.852587 DATA sockfilt for passive data channel starting... 00:49:08.937782 DATA sockfilt for passive data channel started (pid 208067) 00:49:08.941734 DATA sockfilt for passive data channel listens on port 36807 00:49:08.944460 > "229 Entering Passive Mode (|||36807|)[CR][LF]" 00:49:08.944743 Client has been notified that DATA conn will be accepted on port 36807 00:49:09.176262 Client connects to port 36807 00:49:09.176815 ====> Client established passive DATA connection on port 36807 00:49:09.298600 < "TYPE A" 00:49:09.299141 > "200 I modify TYPE as you wanted[CR][LF]" 00:49:09.350717 < "LIST" 00:49:09.351190 > "150 here comes a directory[CR][LF]" 00:49:09.351417 pass LIST data on data connection 00:49:09.352724 send total 20 as data 00:49:09.353000 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 00:49:09.353236 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 00:49:09.353468 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 00:49:09.353700 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 00:49:09.353928 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 00:49:09.354154 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 00:49:09.361146 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 00:49:09.361419 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 00:49:09.361689 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 00:49:09.361923 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 00:49:09.362464 =====> Closing passive DATA connection... 00:49:09.362629 Server disconnects passive DATA connection 00:49:09.364728 Server disconnected passive DATA connection 00:49:09.364935 DATA sockfilt for passive data channel quits (pid 208067) 00:49:09.368229 DATA sockfilt for passive data channel quit (pid 208067) 00:49:09.368420 =====> Closed passive DATA connection 00:49:09.368708 > "226 ASCII transfer complete[CR][LF]" 00:49:11.562204 < "QUIT" 00:49:11.562968 > "221 bye bye baby[CR][LF]" 00:49:11.704122 MAIN sockfilt said DISC 00:49:11.704832 ====> Client disconnected 00:49:11.705168 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:48:18.669808 ====> Client connect 00:48:18.671098 Received DATA (on stdin) 00:48:18.671198 > 160 bytes data, server => client 00:48:18.671318 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:48:18.671428 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:48:18.671521 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:48:18.679287 < 16 bytes data, client => server 00:48:18.679442 'USER anonymous\r\n' 00:48:18.680596 Received DATA (on stdin) 00:48:18.680670 > 33 bytes data, server => client 00:48:18.680753 '331 We are happy you popped in!\r\n' 00:48:18.681023 < 22 bytes data, client => server 00:48:18.681105 'PASS ftp@example.com\r\n' 00:48:18.685680 Received DATA (on stdin) 00:48:18.685761 > 30 bytes data, server => client 00:48:18.685847 '230 Welcome you silly person\r\n' 00:48:18.686093 < 5 bytes data, client => server 00:48:18.686159 'PWD\r\n' 00:48:18.686705 Received DATA (on stdin) 00:48:18.686774 > 30 bytes data, server => client 00:48:18.686856 '257 "/" is current directory\r\n' 00:48:18.689093 < 6 bytes data, client => server 00:48:18.689182 'EPSV\r\n' 00:48:18.735915 Received DATA (on stdin) 00:48:18.736056 > 39 bytes data, server => client 00:48:18.736146 '229 Entering Passive Mode (|||36119|)\r\n' 00:48:18.739372 < 8 bytes data, client => server 00:48:18.739452 'TYPE I\r\n' 00:48:18.740492 Received DATA (on stdin) 00:48:18.740566 > 33 bytes data, server => client 00:48:18.740653 '200 I modify TYPE as you wanted\r\n' 00:48:18.741027 < 21 bytes data, client => server 00:48:18.741102 'SIZE verifiedserver\r\n' 00:48:18.741974 Received DATA (on stdin) 00:48:18.742044 > 8 bytes data, server => client 00:48:18.742110 '213 18\r\n' 00:48:18.742855 < 21 bytes data, client => server 00:48:18.742933 'RETR verifiedserver\r\n' 00:48:18.743626 Received DATA (on stdin) 00:48:18.743690 > 29 bytes data, server => client 00:48:18.743789 '150 Binary junk (18 bytes).\r\n' 00:48:18.756185 Received DATA (on stdin) 00:48:18.756284 > 28 bytes data, server => client 00:48:18.756369 '226 File transfer complete\r\n' 00:48:18.792550 < 6 bytes data, client => server 00:48:18.792709 'QUIT\r\n' 00:48:18.794548 Received DATA (on stdin) 00:48:18.794634 > 18 bytes data, server => client 00:48:18.794718 '221 bye bye baby\r\n' 00:48:18.795436 ====> Client disconnect 00:48:18.799124 Received ACKD (on stdin) 00:49:06.804930 ====> Client connect 00:49:06.807246 Received DATA (on stdin) 00:49:06.807341 > 160 bytes data, server => client 00:49:06.811942 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:06.812055 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:06.812145 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:49:08.077623 < 11 bytes data, client => server 00:49:08.077814 'USER mary\r\n' 00:49:08.079539 Received DATA (on stdin) 00:49:08.079627 > 33 bytes data, server => client 00:49:08.079716 '331 We are happy you popped in!\r\n' 00:49:08.186304 < 11 bytes data, client => server 00:49:08.186475 'PASS mark\r\n' 00:49:08.187813 Received DATA (on stdin) 00:49:08.187895 > 30 bytes data, server => client 00:49:08.191550 '230 Welcome you silly person\r\n' 00:49:08.276398 < 5 bytes data, client => server 00:49:08.276552 'PWD\r\n' 00:49:08.277868 Received DATA (on stdin) 00:49:08.277948 > 30 bytes data, server => client 00:49:08.278056 '257 "/" is current directory\r\n' 00:49:08.468144 < 6 bytes data, client => server 00:49:08.468349 'EPSV\r\n' 00:49:08.559356 Received DATA (on stdin) 00:49:08.559497 > 39 bytes data, server => client 00:49:08.561591 '229 Entering Passive Mode (|||36807|)\r\n' 00:49:08.912637 < 8 bytes data, client => server 00:49:08.912826 'TYPE A\r\n' 00:49:08.916289 Received DATA (on stdin) 00:49:08.916415 > 33 bytes data, server => client 00:49:08.916526 '200 I modify TYPE as you wanted\r\n' 00:49:08.966944 < 6 bytes data, client => server 00:49:08.967119 'LIST\r\n' 00:49:08.968336 Received DATA (on stdin) 00:49:08.968431 > 28 bytes data, server => client 00:49:08.968532 '150 here comes a directory\r\n' 00:49:08.986173 Received DATA (on stdin) 00:49:08.986305 > 29 bytes data, server => client 00:49:08.986411 '226 ASCII transfer complete\r\n' 00:49:11.178247 < 6 bytes data, client => server 00:49:11.178430 'QUIT\r\n' 00:49:11.179784 Received DATA (on stdin) 00:49:11.179861 > 18 bytes data, server => client 00:49:11.179960 '221 bye bye baby\r\n' 00:49:11.321014 ====> Client disconnect 00:49:11.321859 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:48:19.724110 Running IPv4 version 00:48:19.732051 Listening on port 36119 00:48:19.732543 Wrote pid 207044 to log/4/server/ftp_sockdata.pid 00:48:19.733332 Received PING (on stdin) 00:48:19.734445 Received PORT (on stdin) 00:48:19.738727 ====> Client connect 00:48:19.746781 Received DATA (on stdin) 00:48:19.747114 > 18 bytes data, server => client 00:48:19.747485 'WE ROOLZ: 201673\r\n' 00:48:19.751647 Received DISC (on stdin) 00:48:19.751794 ====> Client forcibly disconnected 00:48:19.752406 Received QUIT (on stdin) 00:48:19.752484 quits 00:48:19.752976 ============> sockfilt quits 00:49:08.537712 Running IPv4 version 00:49:08.552164 Listening on port 36807 00:49:08.552721 Wrote pid 208067 to log/4/server/ftp_sockdata.pid 00:49:08.553505 Received PING (on stdin) 00:49:08.558205 Received PORT (on stdin) 00:49:08.793192 ====> Client connect 00:49:08.970211 Received DATA (on stdin) 00:49:08.970611 > 10 bytes data, server => client 00:49:08.971013 'total 20\r\n' 00:49:08.971277 Received DATA (on stdin) 00:49:08.971349 > 57 bytes data, server => client 00:49:08.971453 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 00:49:08.971566 Received DATA (on stdin) 00:49:08.971636 > 58 bytes data, server => client 00:49:08.971743 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 00:49:08.971831 Received DATA (on stdin) 00:49:08.971895 > 61 bytes data, server => client 00:49:08.972013 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 00:49:08.972090 '\n' 00:49:08.972175 Received DATA (on stdin) 00:49:08.972241 > 62 bytes data, server => client 00:49:08.972347 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 00:49:08.972411 '\n' 00:49:08.972492 Received DATA (on stdin) 00:49:08.972556 > 70 bytes data, server => client 00:49:08.972657 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 00:49:08.972726 'usr/bin\r\n' 00:49:08.980046 Received DATA (on stdin) 00:49:08.980151 > 59 bytes data, server => client 00:49:08.980256 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 00:49:08.980372 Received DATA (on stdin) 00:49:08.CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind133 ../src/curl -q --output log/6/curl133.out --include --trace-ascii log/6/trace133 --trace-time -n --netrc-file log/6/netrc133 ftp://mary:mark@127.0.0.1:39413/ > log/6/stdout133 2> log/6/stderr133 980447 > 69 bytes data, server => client 00:49:08.980569 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 00:49:08.980647 'd.html\r\n' 00:49:08.980763 Received DATA (on stdin) 00:49:08.980834 > 59 bytes data, server => client 00:49:08.980957 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 00:49:08.981049 Received DATA (on stdin) 00:49:08.981115 > 59 bytes data, server => client 00:49:08.981221 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 00:49:08.981307 Received DATA (on stdin) 00:49:08.981376 > 59 bytes data, server => client 00:49:08.981485 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 00:49:08.981581 Received DISC (on stdin) 00:49:08.981719 ====> Client forcibly disconnected 00:49:08.982324 Received QUIT (on stdin) 00:49:08.982405 quits 00:49:08.982950 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file netrc132 # the following two lines were created while testing curl machine 127.0.0.1 login user1 password passwd1 machine 127.0.0.1 login user2 password passwd2 === End of file netrc132 === Start of file server.cmd Testnum 132 === End of file server.cmd === Start of file server.input USER mary PASS mark PWD EPSV TYPE A LIST QUIT === End of file server.input === Start of file stderr132 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 623 0 623 0 0 112 0 --:--:-- 0:00:05 --:--:-- 147 === End of file stderr132 === Start of file trace132 00:49:06.879524 * Trying 127.0.0.1:38207... 00:49:07.740053 * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 45646 00:49:07.988466 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:49:08.335633 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:49:08.363947 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:49:08.370701 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:49:08.375364 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:49:08.479612 => Send header, 11 bytes (0xb) 0000: USER mary 00:49:08.548208 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:49:08.570280 => Send header, 11 bytes (0xb) 0000: PASS mark 00:49:08.638103 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:49:08.659236 => Send header, 5 bytes (0x5) 0000: PWD 00:49:08.673879 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:49:08.708215 * Entry path is '/' 00:49:08.799084 * Request has same path as previous transfer 00:49:08.851023 => Send header, 6 bytes (0x6) 0000: EPSV 00:49:08.868164 * Connect data stream passively 00:49:08.965286 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||36807|) 00:49:09.100260 * Connecting to 127.0.0.1 (127.0.0.1) port 36807 00:49:09.169909 * Trying 127.0.0.1:36807... 00:49:09.263906 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 36807) from 127.0.0.1 port 49318 00:49:09.295501 => Send header, 8 bytes (0x8) 0000: TYPE A 00:49:09.316334 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:49:09.349805 => Send header, 6 bytes (0x6) 0000: LIST 00:49:09.383052 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 00:49:09.419251 * Maxdownload = -1 00:49:09.605911 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 00:49:10.034874 * abort upload 00:49:10.063971 <= Recv data, 0 bytes (0x0) 00:49:10.239475 * Remembering we are in dir "" 00:49:10.450009 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 00:49:10.782663 * Connection #0 to host 127.0.0.1:38207 left intact === End of file trace132 === Start of file valgrind132 ==207072== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind132 test 0133...[FTP compulsory .netrc; ignore passwd in URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind133 ../src/curl -q --output log/6/curl133.out --include --trace-ascii log/6/trace133 --trace-time -n --netrc-file log/6/netrc133 ftp://mary:mark@127.0.0.1:39413/ > log/6/stdout133 2> log/6/stderr133 valgrind ERROR ==207158== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 133 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind133 ../src/curl -q --output log/6/curl133.out --include --trace-ascii log/6/trace133 --trace-time -n --netrc-file log/6/netrc133 ftp://mary:mark@127.0.0.1:39413/ > log/6/stdout133 2> log/6/stderr133 === End of file commands.log === Start of file curl133.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl133.out === Start of file ftp_server.log 00:48:19.894061 ====> Client connect 00:48:19.895085 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:48:19.904339 < "USER anonymous" 00:48:19.905642 > "331 We are happy you popped in![CR][LF]" 00:48:19.906359 < "PASS ftp@example.com" 00:48:19.907258 > "230 Welcome you silly person[CR][LF]" 00:48:19.907799 < "PWD" 00:48:19.909448 > "257 "/" is current directory[CR][LF]" 00:48:19.910029 < "EPSV" 00:48:19.910235 ====> Passive DATA channel requested by client 00:48:19.910382 DATA sockfilt for passive data channel starting... 00:48:19.959489 DATA sockfilt for passive data channel started (pid 207100) 00:48:19.961119 DATA sockfilt for passive data channel listens on port 42197 00:48:19.961562 > "229 Entering Passive Mode (|||42197|)[CR][LF]" 00:48:19.961739 Client has been notified that DATA conn will be accepted on port 42197 00:48:19.968294 Client connects to port 42197 00:48:19.968771 ====> Client established passive DATA connection on port 42197 00:48:19.969511 < "TYPE I" 00:48:19.971099 > "200 I modify TYPE as you wanted[CR][LF]" 00:48:19.975507 < "SIZE verifiedserver" 00:48:19.981068 > "213 18[CR][LF]" 00:48:19.982574 < "RETR verifiedserver" 00:48:19.982940 > "150 Binary junk (18 bytes).[CR][LF]" 00:48:19.983524 =====> Closing passive DATA connection... 00:48:19.983698 Server disconnects passive DATA connection 00:48:19.988309 Server disconnected passive DATA connection 00:48:19.988651 DATA sockfilt for passive data channel quits (pid 207100) 00:48:19.993202 DATA sockfilt for passive data channel quit (pid 207100) 00:48:19.993477 =====> Closed passive DATA connection 00:48:19.993801 > "226 File transfer complete[CR][LF]" 00:48:20.039380 < "QUIT" 00:48:20.039840 > "221 bye bye baby[CR][LF]" 00:48:20.044806 MAIN sockfilt said DISC 00:48:20.045195 ====> Client disconnected 00:48:20.045492 Awaiting input 00:49:07.384415 ====> Client connect 00:49:07.385189 FTPD: Getting commands from log/6/server.cmd 00:49:07.385521 FTPD: run test case number: 133 00:49:07.386619 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:49:08.648690 < "USER mary" 00:49:08.649138 > "331 We are happy you popped in![CR][LF]" 00:49:08.771863 < "PASS drfrank" 00:49:08.772308 > "230 Welcome you silly person[CR][LF]" 00:49:08.858785 < "PWD" 00:49:08.859372 > "257 "/" is current directory[CR][LF]" 00:49:09.061830 < "EPSV" 00:49:09.062184 ====> Passive DATA channel requested by client 00:49:09.062355 DATA sockfilt for passive data channel starting... 00:49:09.146597 DATA sockfilt for passive data channel started (pid 208070) 00:49:09.151761 DATA sockfilt for passive data channel listens on port 39051 00:49:09.152277 > "229 Entering Passive Mode (|||39051|)[CR][LF]" 00:49:09.152481 Client has been notified that DATA conn will be accepted on port 39051 00:49:09.351064 Client connects to port 39051 00:49:09.351666 ====> Client established passive DATA connection on port 39051 00:49:09.467788 < "TYPE A" 00:49:09.468248 > "200 I modify TYPE as you wanted[CR][LF]" 00:49:09.521852 < "LIST" 00:49:09.522271 > "150 here comes a directory[CR][LF]" 00:49:09.522462 pass LIST data on data connection 00:49:09.523851 send total 20 as data 00:49:09.524113 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 00:49:09.531100 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 00:49:09.531459 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 00:49:09.531689 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 00:49:09.531912 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 00:49:09.532128 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 00:49:09.532345 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 00:49:09.532567 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 00:49:09.532801 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 00:49:09.533005 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 00:49:09.533523 =====> Closing passive DATA connection... 00:49:09.533680 Server disconnects passive DATA connection 00:49:09.537069 Server disconnected passive DATA connection 00:49:09.537256 DATA sockfilt for passive data channel quits (pid 208070) 00:49:09.540853 DATA sockfilt for passive data channel quit (pid 208070) 00:49:09.541096 =====> Closed passive DATA connection 00:49:09.541402 > "226 ASCII transfer complete[CR][LF]" 00:49:11.668542 < "QUIT" 00:49:11.668975 > "221 bye bye baby[CR][LF]" 00:49:11.805451 MAIN sockfilt said DISC 00:49:11.805996 ====> Client disconnected 00:49:11.806325 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:48:19.510985 ====> Client connect 00:48:19.514962 Received DATA (on stdin) 00:48:19.515074 > 160 bytes data, server => client 00:48:19.515195 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:48:19.515306 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:48:19.515407 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:48:19.519663 < 16 bytes data, client => server 00:48:19.519784 'USER anonymous\r\n' 00:48:19.522089 Received DATA (on stdin) 00:48:19.522170 > 33 bytes data, server => client 00:48:19.522290 '331 We are happy you popped in!\r\n' 00:48:19.522637 < 22 bytes data, client => server 00:48:19.522719 'PASS ftp@example.com\r\n' 00:48:19.523899 Received DATA (on stdin) 00:48:19.523967 > 30 bytes data, server => client 00:48:19.524067 '230 Welcome you silly person\r\n' 00:48:19.524386 < 5 bytes data, client => server 00:48:19.524451 'PWD\r\n' 00:48:19.525339 Received DATA (on stdin) 00:48:19.525407 > 30 bytes data, server => client 00:48:19.525506 '257 "/" is current directory\r\n' 00:48:19.526980 < 6 bytes data, client => server 00:48:19.527050 'EPSV\r\n' 00:48:19.579300 Received DATA (on stdin) 00:48:19.579455 > 39 bytes data, server => client 00:48:19.579553 '229 Entering Passive Mode (|||42197|)\r\n' 00:48:19.585335 < 8 bytes data, client => server 00:48:19.585457 'TYPE I\r\n' 00:48:19.587075 Received DATA (on stdin) 00:48:19.587149 > 33 bytes data, server => client 00:48:19.588720 '200 I modify TYPE as you wanted\r\n' 00:48:19.592078 < 21 bytes data, client => server 00:48:19.592184 'SIZE verifiedserver\r\n' 00:48:19.593173 Received DATA (on stdin) 00:48:19.593247 > 8 bytes data, server => client 00:48:19.598672 '213 18\r\n' 00:48:19.599258 < 21 bytes data, client => server 00:48:19.599346 'RETR verifiedserver\r\n' 00:48:19.601009 Received DATA (on stdin) 00:48:19.601092 > 29 bytes data, server => client 00:48:19.601175 '150 Binary junk (18 bytes).\r\n' 00:48:19.611371 Received DATA (on stdin) 00:48:19.611502 > 28 bytes data, server => client 00:48:19.611590 '226 File transfer complete\r\n' 00:48:19.655923 < 6 bytes data, client => server 00:48:19.656108 'QUIT\r\n' 00:48:19.661174 Received DATA (on stdin) 00:48:19.661284 > 18 bytes data, server => client 00:48:19.661366 '221 bye bye baby\r\n' 00:48:19.661997 ====> Client disconnect 00:48:19.662372 Received ACKD (on stdin) 00:49:06.997965 ====> Client connect 00:49:07.004077 Received DATA (on stdin) 00:49:07.004209 > 160 bytes data, server => client 00:49:07.004324 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:07.004425 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:07.004513 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:49:08.264909 < 11 bytes data, client => server 00:49:08.265125 'USER mary\r\n' 00:49:08.266288 Received DATA (on stdin) 00:49:08.266380 > 33 bytes data, server => client 00:49:08.266485 '331 We are happy you popped in!\r\n' 00:49:08.384917 < 14 bytes data, client => server 00:49:08.385111 'PASS drfrank\r\n' 00:49:08.389467 Received DATA (on stdin) 00:49:08.389586 > 30 bytes data, server => client 00:49:08.389695 '230 Welcome you silly person\r\n' 00:49:08.474887 < 5 bytes data, client => server 00:49:08.475087 'PWD\r\n' 00:49:08.476521 Received DATA (on stdin) 00:49:08.476622 > 30 bytes data, server => client 00:49:08.476725 '257 "/" is current directory\r\n' 00:49:08.676573 < 6 bytes data, client => server 00:49:08.676769 'EPSV\r\n' 00:49:08.769420 Received DATA (on stdin) 00:49:08.769580 > 39 bytes data, server => client 00:49:08.769691 '229 Entering Passive Mode (|||39051|)\r\n' 00:49:09.085693 < 8 bytes data, client => server 00:49:09.085833 'TYPE A\r\n' 00:49:09.085915 Received DATA (on stdin) 00:49:09.085985 > 33 bytes data, server => client 00:49:09.086072 '200 I modify TYPE as you wanted\r\n' 00:49:09.135205 < 6 bytes data, client => server 00:49:09.135387 'LIST\r\n' 00:49:09.141537 Received DATA (on stdin) 00:49:09.141653 > 28 bytes data, server => client 00:49:09.141753 '150 here comes a directory\r\n' 00:49:09.158565 Received DATA (on stdin) 00:49:09.158713 > 29 bytes data, server => client 00:49:09.158835 '226 ASCII transfer complete\r\n' 00:49:11.278243 < 6 bytes data, client => server 00:49:11.278410 'QUIT\r\n' 00:49:11.286138 Received DATA (on stdin) 00:49:11.286265 > 18 bytes data, server => client 00:49:11.286357 'CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind134 ../src/curl -q --output log/1/curl134.out --include --trace-ascii log/1/trace134 --trace-time --netrc-optional --netrc-file log/1/netrc134 -u romulus:rhemus ftp://mary:mark@127.0.0.1:37481/ > log/1/stdout134 2> log/1/stderr134 221 bye bye baby\r\n' 00:49:11.422365 ====> Client disconnect 00:49:11.423206 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:48:19.563693 Running IPv4 version 00:48:19.575110 Listening on port 42197 00:48:19.575613 Wrote pid 207100 to log/6/server/ftp_sockdata.pid 00:48:19.576427 Received PING (on stdin) 00:48:19.577716 Received PORT (on stdin) 00:48:19.585075 ====> Client connect 00:48:19.600511 Received DATA (on stdin) 00:48:19.600925 > 18 bytes data, server => client 00:48:19.601347 'WE ROOLZ: 201819\r\n' 00:48:19.605221 Received DISC (on stdin) 00:48:19.605374 ====> Client forcibly disconnected 00:48:19.606237 Received QUIT (on stdin) 00:48:19.606321 quits 00:48:19.606858 ============> sockfilt quits 00:49:09.744123 Running IPv4 version 00:49:09.762061 Listening on port 39051 00:49:09.762627 Wrote pid 208070 to log/6/server/ftp_sockdata.pid 00:49:09.763436 Received PING (on stdin) 00:49:09.768197 Received PORT (on stdin) 00:49:09.965248 ====> Client connect 00:49:10.141324 Received DATA (on stdin) 00:49:10.141780 > 10 bytes data, server => client 00:49:10.142172 'total 20\r\n' 00:49:10.151089 Received DATA (on stdin) 00:49:10.151192 > 57 bytes data, server => client 00:49:10.151300 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 00:49:10.151427 Received DATA (on stdin) 00:49:10.151494 > 58 bytes data, server => client 00:49:10.151621 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 00:49:10.151705 Received DATA (on stdin) 00:49:10.151769 > 61 bytes data, server => client 00:49:10.151893 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 00:49:10.151981 '\n' 00:49:10.152076 Received DATA (on stdin) 00:49:10.152149 > 62 bytes data, server => client 00:49:10.152256 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 00:49:10.152321 '\n' 00:49:10.152409 Received DATA (on stdin) 00:49:10.152478 > 70 bytes data, server => client 00:49:10.152583 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 00:49:10.152653 'usr/bin\r\n' 00:49:10.152736 Received DATA (on stdin) 00:49:10.152811 > 59 bytes data, server => client 00:49:10.152923 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 00:49:10.153013 Received DATA (on stdin) 00:49:10.153081 > 69 bytes data, server => client 00:49:10.153189 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 00:49:10.153259 'd.html\r\n' 00:49:10.153360 Received DATA (on stdin) 00:49:10.153427 > 59 bytes data, server => client 00:49:10.153533 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 00:49:10.153619 Received DATA (on stdin) 00:49:10.153688 > 59 bytes data, server => client 00:49:10.153794 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 00:49:10.153880 Received DATA (on stdin) 00:49:10.153947 > 59 bytes data, server => client 00:49:10.154049 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 00:49:10.154146 Received DISC (on stdin) 00:49:10.154705 ====> Client forcibly disconnected 00:49:10.154891 Received QUIT (on stdin) 00:49:10.154975 quits 00:49:10.155497 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file netrc133 # the following two lines were created while testing curl machine 127.0.0.1 login user1 password passwd1 machine 127.0.0.1 login mary password drfrank === End of file netrc133 === Start of file server.cmd Testnum 133 === End of file server.cmd === Start of file server.input USER mary PASS drfrank PWD EPSV TYPE A LIST QUIT === End of file server.input === Start of file stderr133 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 623 0 623 0 0 109 0 --:--:-- 0:00:05 --:--:-- 150 === End of file stderr133 === Start of file trace133 00:49:07.070848 * Trying 127.0.0.1:39413... 00:49:07.933292 * Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 49888 00:49:08.161496 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:49:08.522869 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:49:08.550430 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:49:08.558382 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:49:08.563835 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:49:08.669953 => Send header, 11 bytes (0xb) 0000: USER mary 00:49:08.745078 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:49:08.766267 => Send header, 14 bytes (0xe) 0000: PASS drfrank 00:49:08.834279 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:49:08.858555 => Send header, 5 bytes (0x5) 0000: PWD 00:49:08.876824 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:49:08.913533 * Entry path is '/' 00:49:09.003887 * Request has same path as previous transfer 00:49:09.059425 => Send header, 6 bytes (0x6) 0000: EPSV 00:49:09.080116 * Connect data stream passively 00:49:09.155833 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||39051|) 00:49:09.277896 * Connecting to 127.0.0.1 (127.0.0.1) port 39051 00:49:09.342141 * Trying 127.0.0.1:39051... 00:49:09.435260 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 39051) from 127.0.0.1 port 52490 00:49:09.466835 => Send header, 8 bytes (0x8) 0000: TYPE A 00:49:09.485925 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:49:09.518041 => Send header, 6 bytes (0x6) 0000: LIST 00:49:09.556940 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 00:49:09.592804 * Maxdownload = -1 00:49:09.748883 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 00:49:10.170288 * abort upload 00:49:10.197815 <= Recv data, 0 bytes (0x0) 00:49:10.371683 * Remembering we are in dir "" 00:49:10.578859 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 00:49:10.886876 * Connection #0 to host 127.0.0.1:39413 left intact === End of file trace133 === Start of file valgrind133 ==207158== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind133 test 0134...[FTP (optional .netrc; programmatic user/passwd) dir list PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind134 ../src/curl -q --output log/1/curl134.out --include --trace-ascii log/1/trace134 --trace-time --netrc-optional --netrc-file log/1/netrc134 -u romulus:rhemus ftp://mary:mark@127.0.0.1:37481/ > log/1/stdout134 2> log/1/stderr134 valgrind ERROR ==207385== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 134 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind134 ../src/curl -q --output log/1/curl134.out --include --trace-ascii log/1/trace134 --trace-time --netrc-optional --netrc-file log/1/netrc134 -u romulus:rhemus ftp://mary:mark@127.0.0.1:37481/ > log/1/stdout134 2> log/1/stderr134 === End of file commands.log === Start of file curl134.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl134.out === Start of file ftp_server.log 00:48:26.013839 ====> Client connect 00:48:26.014832 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:48:26.024825 < "USER anonymous" 00:48:26.026340 > "331 We are happy you popped in![CR][LF]" 00:48:26.027225 < "PASS ftp@example.com" 00:48:26.027754 > "230 Welcome you silly person[CR][LF]" 00:48:26.028648 < "PWD" 00:48:26.028921 > "257 "/" is current directory[CR][LF]" 00:48:26.031693 < "EPSV" 00:48:26.031901 ====> Passive DATA channel requested by client 00:48:26.032048 DATA sockfilt for passive data channel starting... 00:48:26.079801 DATA sockfilt for passive data channel started (pid 207379) 00:48:26.081105 DATA sockfilt for passive data channel listens on port 41787 00:48:26.081440 > "229 Entering Passive Mode (|||41787|)[CR][LF]" 00:48:26.081601 Client has been notified that DATA conn will be accepted on port 41787 00:48:26.084726 Client connects to port 41787 00:48:26.084957 ====> Client established passive DATA connection on port 41787 00:48:26.085581 < "TYPE I" 00:48:26.086112 > "200 I modify TYPE as you wanted[CR][LF]" 00:48:26.087129 < "SIZE verifiedserver" 00:48:26.088325 > "213 18[CR][LF]" 00:48:26.088832 < "RETR verifiedserver" 00:48:26.089121 > "150 Binary junk (18 bytes).[CR][LF]" 00:48:26.089624 =====> Closing passive DATA connection... 00:48:26.089781 Server disconnects passive DATA connection 00:48:26.094328 Server disconnected passive DATA connection 00:48:26.094516 DATA sockfilt for passive data channel quits (pid 207379) 00:48:26.097638 DATA sockfilt for passive data channel quit (pid 207379) 00:48:26.097833 =====> Closed passive DATA connection 00:48:26.098104 > "226 File transfer complete[CR][LF]" 00:48:26.145312 < "QUIT" 00:48:26.145651 > "221 bye bye baby[CR][LF]" 00:48:26.146359 MAIN sockfilt said DISC 00:48:26.146567 ====> Client disconnected 00:48:26.146825 Awaiting input 00:49:13.340926 ====> Client connect 00:49:13.341699 FTPD: Getting commands from log/1/server.cmd 00:49:13.342043 FTPD: run test case number: 134 00:49:13.343711 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:49:14.692798 < "USER romulus" 00:49:14.693249 > "331 We are happy you popped in![CR][LF]" 00:49:14.826093 < "PASS rhemus" 00:49:14.826893 > "230 Welcome you silly person[CR][LF]" 00:49:14.919437 < "PWD" 00:49:14.920210 > "257 "/" is current directory[CR][LF]" 00:49:15.128979 < "EPSV" 00:49:15.129343 ====> Passive DATA channel requested by client 00:49:15.129501 DATA sockfilt for passive data channel starting... 00:49:15.176413 DATA sockfilt for passive data channel started (pid 208460) 00:49:15.178070 DATA sockfilt for passive data channel listens on port 41099 00:49:15.178995 > "229 Entering Passive Mode (|||41099|)[CR][LF]" 00:49:15.179217 Client has been notified that DATA conn will be accepted on port 41099 00:49:15.391070 Client connects to port 41099 00:49:15.391651 ====> Client established passive DATA connection on port 41099 00:49:15.518159 < "TYPE A" 00:49:15.518577 > "200 I modify TYPE as you wanted[CR][LF]" 00:49:15.566847 < "LIST" 00:49:15.567288 > "150 here comes a directory[CR][LF]" 00:49:15.567482 pass LIST data on data connection 00:49:15.568764 send total 20 as data 00:49:15.577735 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 00:49:15.578081 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 00:49:15.578300 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 00:49:15.578522 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 00:49:15.578754 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 00:49:15.578980 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 00:49:15.579209 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 00:49:15.579433 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 00:49:15.579675 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 00:49:15.579878 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 00:49:15.580361 =====> Closing passive DATA connection... 00:49:15.580518 Server disconnects passive DATA connection 00:49:15.587948 Server disconnected passive DATA connection 00:49:15.588213 DATA sockfilt for passive data channel quits (pid 208460) 00:49:15.594726 DATA sockfilt for passive data channel quit (pid 208460) 00:49:15.594965 =====> Closed passive DATA connection 00:49:15.595525 > "226 ASCII transfer complete[CR][LF]" 00:49:17.652150 < "QUIT" 00:49:17.657775 > "221 bye bye baby[CR][LF]" 00:49:17.774401 MAIN sockfilt said DISC 00:49:17.774928 ====> Client disconnected 00:49:17.775234 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:48:26.630799 ====> Client connect 00:48:26.634948 Received DATA (on stdin) 00:48:26.635047 > 160 bytes data, server => client 00:48:26.635152 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:48:26.635247 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:48:26.635333 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:48:26.641154 < 16 bytes data, client => server 00:48:26.641258 'USER anonymous\r\n' 00:48:26.642438 Received DATA (on stdin) 00:48:26.642512 > 33 bytes data, server => client 00:48:26.643484 '331 We are happy you popped in!\r\n' 00:48:26.644031 < 22 bytes data, client => server 00:48:26.644107 'PASS ftp@example.com\r\n' 00:48:26.644746 Received DATA (on stdin) 00:48:26.644808 > 30 bytes data, server => client 00:48:26.644903 '230 Welcome you silly person\r\n' 00:48:26.645479 < 5 bytes data, client => server 00:48:26.645542 'PWD\r\n' 00:48:26.646479 Received DATA (on stdin) 00:48:26.646545 > 30 bytes data, server => client 00:48:26.646626 '257 "/" is current directory\r\n' 00:48:26.648511 < 6 bytes data, client => server 00:48:26.648581 'EPSV\r\n' 00:48:26.699130 Received DATA (on stdin) 00:48:26.699267 > 39 bytes data, server => client 00:48:26.699357 '229 Entering Passive Mode (|||41787|)\r\n' 00:48:26.701619 < 8 bytes data, client => server 00:48:26.701701 'TYPE I\r\n' 00:48:26.703118 Received DATA (on stdin) 00:48:26.703186 > 33 bytes data, server => client 00:48:26.703290 '200 I modify TYPE as you wanted\r\n' 00:48:26.703940 < 21 bytes data, client => server 00:48:26.704018 'SIZE verifiedserver\r\n' 00:48:26.704704 Received DATA (on stdin) 00:48:26.704770 > 8 bytes data, server => client 00:48:26.705004 '213 18\r\n' 00:48:26.705442 < 21 bytes data, client => server 00:48:26.705518 'RETR verifiedserver\r\n' 00:48:26.708527 Received DATA (on stdin) 00:48:26.708605 > 29 bytes data, server => client 00:48:26.708688 '150 Binary junk (18 bytes).\r\n' 00:48:26.715360 Received DATA (on stdin) 00:48:26.715442 > 28 bytes data, server => client 00:48:26.715521 '226 File transfer complete\r\n' 00:48:26.761986 < 6 bytes data, client => server 00:48:26.762112 'QUIT\r\n' 00:48:26.762906 Received DATA (on stdin) 00:48:26.762971 > 18 bytes data, server => client 00:48:26.763042 '221 bye bye baby\r\n' 00:48:26.763561 ====> Client disconnect 00:48:26.764295 Received ACKD (on stdin) 00:49:13.957790 ====> Client connect 00:49:13.960230 Received DATA (on stdin) 00:49:13.960334 > 160 bytes data, server => client 00:49:13.960465 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:13.960571 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:13.960677 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:49:15.308726 < 14 bytes data, client => server 00:49:15.308917 'USER romulus\r\n' 00:49:15.314858 Received DATA (on stdin) 00:49:15.314972 > 33 bytes data, server => client 00:49:15.315073 '331 We are happy you popped in!\r\n' 00:49:15.442077 < 13 bytes data, client => server 00:49:15.442267 'PASS rhemus\r\n' 00:49:15.443696 Received DATA (on stdin) 00:49:15.443779 > 30 bytes data, server => client 00:49:15.443901 '230 Welcome you silly person\r\n' 00:49:15.535082 < 5 bytes data, client => server 00:49:15.535296 'PWD\r\n' 00:49:15.537735 Received DATA (on stdin) 00:49:15.537831 > 30 bytes data, server => client 00:49:15.537933 '257 "/" is current directory\r\n' 00:49:15.744990 < 6 bytes data, client => server 00:49:15.745168 'EPSV\r\n' 00:49:15.795685 Received DATA (on stdin) 00:49:15.795837 > 39 bytes data, server => client 00:49:15.795960 '229 Entering Passive Mode (|||41099|)\r\n' 00:49:16.134164 < 8 bytes data, client => server 00:49:16.134360 'TYPE A\r\n' 00:49:16.136009 Received DATA (on stdin) 00:49:16.136087 > 33 bytes data, server => client 00:49:16.136176 '200 I modify TYPE as you wanted\r\n' 00:49:16.182876 < 6 bytes data, client => server 00:49:16.183083 'LIST\r\n' 00:49:16.188185 Received DATA (on stdin) 00:49:16.188286 > 28 bytes data, server => client 00:49:16.188377 '150 here comes a directory\r\n' 00:49:16.212423 Received DATA (on stdin) 00:49:16.212564 > 29 bytes data, server => client 00:49:16.212969 '226 ASCII transfer complete\r\n' 00:49:18.268198 < 6 bytes data, client => server 00:49:18.268378 'QUIT\r\n' 00:49:18.269759 Received DATA (on stdin) 00:49:18.269837 > 18 bytes data, server => client 00:49:18.275366 '221 bye bye baby\r\n' 00:49:18.391304 ====> Client disconnect 00:49:18.392130 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:48:26.687996 Running IPv4 version 00:48:26.695605 Listening on port 41787 00:48:26.696046 Wrote pid 207379 to log/1/server/ftp_sockdata.pid 00:48:26.696775 Received PING (on stdin) 00:48:26.697760 Received PORT (on stdin) 00:48:26.701867 ====> Client connect 00:48:26.707357 Received DATA (on stdin) 00:48:26.707635 > 18 bytes data, server => client 00:48:26.707992 'WE ROOLZ: 202066\r\n' 00:48:26.708225 Received DISC (on stdin) 00:48:26.708347 ====> Client forcibly disconnected 00:48:26.712031 Received QUIT (on stdin) 00:48:26.712115 quits 00:48:26.712604 ============> sockfilt quits 00:49:15.784067 Running IPv4 version 00:49:15.791907 Listening on port 41099 00:49:15.792457 Wrote pid 208460 to log/1/server/ftp_sockdata.pid 00:49:15.793242 Received PING (on stdin) 00:49:15.794424 Received PORT (on stdin) 00:49:16.004840 ====> Client connect 00:49:16.188523 Received DATA (on stdin) 00:49:16.188916 > 10 bytes data, server => client 00:49:16.198159 'total 20\r\n' 00:49:16.198462 Received DATA (on stdin) 00:49:16.198532 > 57 bytes data, server => client 00:49:16.198634 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 00:49:16.198730 Received DATA (on stdin) 00:49:16.198797 > 58 bytes data, server => client 00:49:16.198912 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 00:49:16.199011 Received DATA (on stdin) 00:49:16.199084 > 61 bytes data, server => client 00:49:16.199206 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 00:49:16.199287 '\n' 00:49:16.199377 Received DATA (on stdin) 00:49:16.199445 > 62 bytes data, server => client 00:49:16.199554 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 00:49:16.199621 '\n' 00:49:16.199706 Received DATA (on stdin) 00:49:16.199773 > 70 bytes data, server => client 00:49:16.199886 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 00:49:16.199963 'usr/bin\r\n' 00:49:16.200048 Received DATA (on stdin) 00:49:16.200116 > 59 bytes data, server => client 00:49:16.200222 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 00:49:16.200308 Received DATA (on stdin) 00:49:16.200378 > 69 bytes data, server => client 00:49:16.200485 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 00:49:16.200554 'd.html\r\n' 00:49:16.200652 Received DATA (on stdin) 00:49:16.200718 > 59 bytes data, server => client 00:49:16.200820 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 00:49:16.200915 Received DATA (on stdin) 00:49:16.200988 > 59 bytes data, server => client 00:49:16.201092 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 00:49:16.201174 Received DATA (on stdin) 00:49:16.201239 > 59 bytes data, server => client 00:49:16.201343 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 00:49:16.201432 Received DISC (on stdin) 00:49:16.204905 ====> Client forcibly disconnected 00:49:16.205659 Received QUIT (on stdin) 00:49:16.205744 quits 00:49:16.206299 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file netrc134 # the following two lines were created while testing curl machine 127.0.0.1 login user1 password passwd1 machine 127.0.0.1 login user2 password passwd2 === End of file netrc134 === Start of file server.cmd Testnum 134 === End of file server.cmd === Start of file server.input USER romulus PASS rhemus PWD EPSV TYPE A LIST QUIT === End of file server.input === Start of file stderr134 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 623 0 623 0 0 107 0 --:--:-- 0:00:05 --:--:-- 141 === End of file stderr134 === Start of file trace134 00:49:12.963905 * Trying 127.0.0.1:37481... 00:49:13.951674 * Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 127.0.0.1 port 56100 00:49:14.201729 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:49:14.560324 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:49:14.589101 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:49:14.597537 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:49:14.603435 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:49:14.712717 => Send header, 14 bytes (0xe) 0000: USER romulus 00:49:14.802460 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:49:14.826457 => Send header, 13 bytes (0xd) 0000: PASS rhemus 00:49:14.892118 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:49:14.917997 => Send header, 5 bytes (0x5) 0000: PWD 00:49:14.936140 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:49:14.974126 * Entry path is '/' 00:49:15.074658 * Request has same path as previous transfer 00:49:15.127863 => Send header, 6 bytes (0x6) 0000: EPSV 00:49:15.142397 * Connect data stream passively 00:49:15.194347 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||41099|) 00:49:15.310106 * Connecting to 127.0.0.1 (127.0.0.1) port 41099 00:49:15.381469 * Trying 127.0.0.1:41099... 00:49:15.482105 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 41099) from 127.0.0.1 port 44032 0CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind135 ../src/curl -q --output log/2/curl135.out --include --trace-ascii log/2/trace135 --trace-time -r 4-16 ftp://127.0.0.1:39881/135 > log/2/stdout135 2> log/2/stderr135 0:49:15.517039 => Send header, 8 bytes (0x8) 0000: TYPE A 00:49:15.534610 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:49:15.565728 => Send header, 6 bytes (0x6) 0000: LIST 00:49:15.592742 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 00:49:15.623778 * Maxdownload = -1 00:49:15.783556 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 00:49:16.209428 * abort upload 00:49:16.238506 <= Recv data, 0 bytes (0x0) 00:49:16.439822 * Remembering we are in dir "" 00:49:16.644583 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 00:49:16.941293 * Connection #0 to host 127.0.0.1:37481 left intact === End of file trace134 === Start of file valgrind134 ==207385== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind134 test 0135...[FTP retrieve a byte-range] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind135 ../src/curl -q --output log/2/curl135.out --include --trace-ascii log/2/trace135 --trace-time -r 4-16 ftp://127.0.0.1:39881/135 > log/2/stdout135 2> log/2/stderr135 valgrind ERROR ==207567== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 135 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind135 ../src/curl -q --output log/2/curl135.out --include --trace-ascii log/2/trace135 --trace-time -r 4-16 ftp://127.0.0.1:39881/135 > log/2/stdout135 2> log/2/stderr135 === End of file commands.log === Start of file curl135.out 0123456789abc === End of file curl135.out === Start of file ftp_server.log 00:48:34.415279 ====> Client connect 00:48:34.424460 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:48:34.425661 < "USER anonymous" 00:48:34.425946 > "331 We are happy you popped in![CR][LF]" 00:48:34.427434 < "PASS ftp@example.com" 00:48:34.427698 > "230 Welcome you silly person[CR][LF]" 00:48:34.428780 < "PWD" 00:48:34.431029 > "257 "/" is current directory[CR][LF]" 00:48:34.431707 < "EPSV" 00:48:34.431906 ====> Passive DATA channel requested by client 00:48:34.432048 DATA sockfilt for passive data channel starting... 00:48:34.478994 DATA sockfilt for passive data channel started (pid 207561) 00:48:34.480214 DATA sockfilt for passive data channel listens on port 43873 00:48:34.480538 > "229 Entering Passive Mode (|||43873|)[CR][LF]" 00:48:34.480700 Client has been notified that DATA conn will be accepted on port 43873 00:48:34.483685 Client connects to port 43873 00:48:34.483898 ====> Client established passive DATA connection on port 43873 00:48:34.484742 < "TYPE I" 00:48:34.485013 > "200 I modify TYPE as you wanted[CR][LF]" 00:48:34.486165 < "SIZE verifiedserver" 00:48:34.486694 > "213 18[CR][LF]" 00:48:34.487815 < "RETR verifiedserver" 00:48:34.490229 > "150 Binary junk (18 bytes).[CR][LF]" 00:48:34.490746 =====> Closing passive DATA connection... 00:48:34.490905 Server disconnects passive DATA connection 00:48:34.492261 Server disconnected passive DATA connection 00:48:34.492421 DATA sockfilt for passive data channel quits (pid 207561) 00:48:34.497382 DATA sockfilt for passive data channel quit (pid 207561) 00:48:34.497578 =====> Closed passive DATA connection 00:48:34.497844 > "226 File transfer complete[CR][LF]" 00:48:34.538624 < "QUIT" 00:48:34.539838 > "221 bye bye baby[CR][LF]" 00:48:34.540052 MAIN sockfilt said DISC 00:48:34.540233 ====> Client disconnected 00:48:34.540487 Awaiting input 00:49:22.804415 ====> Client connect 00:49:22.805199 FTPD: Getting commands from log/2/server.cmd 00:49:22.805535 FTPD: run test case number: 135 00:49:22.806580 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:49:24.145282 < "USER anonymous" 00:49:24.145701 > "331 We are happy you popped in![CR][LF]" 00:49:24.252164 < "PASS ftp@example.com" 00:49:24.252580 > "230 Welcome you silly person[CR][LF]" 00:49:24.343657 < "PWD" 00:49:24.347724 > "257 "/" is current directory[CR][LF]" 00:49:24.554026 < "EPSV" 00:49:24.554385 ====> Passive DATA channel requested by client 00:49:24.554552 DATA sockfilt for passive data channel starting... 00:49:24.639176 DATA sockfilt for passive data channel started (pid 208856) 00:49:24.640325 DATA sockfilt for passive data channel listens on port 37475 00:49:24.640690 > "229 Entering Passive Mode (|||37475|)[CR][LF]" 00:49:24.640873 Client has been notified that DATA conn will be accepted on port 37475 00:49:24.824400 Client connects to port 37475 00:49:24.824968 ====> Client established passive DATA connection on port 37475 00:49:24.947878 < "TYPE I" 00:49:24.948308 > "200 I modify TYPE as you wanted[CR][LF]" 00:49:24.998746 < "SIZE 135" 00:49:25.004445 > "213 64[CR][LF]" 00:49:25.088737 < "REST 4" 00:49:25.094385 > "350 Yeah yeah we set it there for you[CR][LF]" 00:49:25.094633 Set REST position to 4 00:49:25.114307 < "RETR 135" 00:49:25.116926 REST 4 was removed from size, makes 64 left 00:49:25.117390 > "150 Binary data connection for 135 () (64 bytes).[CR][LF]" 00:49:25.117971 =====> Closing passive DATA connection... 00:49:25.118131 Server disconnects passive DATA connection 00:49:25.119489 Server disconnected passive DATA connection 00:49:25.119659 DATA sockfilt for passive data channel quits (pid 208856) 00:49:25.128334 DATA sockfilt for passive data channel quit (pid 208856) 00:49:25.128543 =====> Closed passive DATA connection 00:49:25.131133 > "226 File transfer complete[CR][LF]" 00:49:25.631429 < "ABOR" 00:49:25.631764 ABOR wasn't handled 00:49:25.632052 > "500 ABOR is not dealt with![CR][LF]" 00:49:26.204338 < "QUIT" 00:49:26.207787 > "221 bye bye baby[CR][LF]" 00:49:26.348797 MAIN sockfilt said DISC 00:49:26.349248 ====> Client disconnected 00:49:26.349541 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:48:35.032183 ====> Client connect 00:48:35.033503 Received DATA (on stdin) 00:48:35.033590 > 160 bytes data, server => client 00:48:35.037697 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:48:35.037813 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:48:35.037900 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:48:35.042153 < 16 bytes data, client => server 00:48:35.042244 'USER anonymous\r\n' 00:48:35.043430 Received DATA (on stdin) 00:48:35.043497 > 33 bytes data, server => client 00:48:35.043578 '331 We are happy you popped in!\r\n' 00:48:35.044250 < 22 bytes data, client => server 00:48:35.044324 'PASS ftp@example.com\r\n' 00:48:35.045177 Received DATA (on stdin) 00:48:35.045243 > 30 bytes data, server => client 00:48:35.045323 '230 Welcome you silly person\r\n' 00:48:35.045585 < 5 bytes data, client => server 00:48:35.045650 'PWD\r\n' 00:48:35.046302 Received DATA (on stdin) 00:48:35.046368 > 30 bytes data, server => client 00:48:35.046542 '257 "/" is current directory\r\n' 00:48:35.048532 < 6 bytes data, client => server 00:48:35.048603 'EPSV\r\n' 00:48:35.098211 Received DATA (on stdin) 00:48:35.098367 > 39 bytes data, server => client 00:48:35.098457 '229 Entering Passive Mode (|||43873|)\r\n' 00:48:35.101460 < 8 bytes data, client => server 00:48:35.101530 'TYPE I\r\n' 00:48:35.102494 Received DATA (on stdin) 00:48:35.102559 > 33 bytes data, server => client 00:48:35.102639 '200 I modify TYPE as you wanted\r\n' 00:48:35.102986 < 21 bytes data, client => server 00:48:35.103061 'SIZE verifiedserver\r\n' 00:48:35.103714 Received DATA (on stdin) 00:48:35.103779 > 8 bytes data, server => client 00:48:35.103862 '213 18\r\n' 00:48:35.104594 < 21 bytes data, client => server 00:48:35.104669 'RETR verifiedserver\r\n' 00:48:35.105358 Received DATA (on stdin) 00:48:35.105426 > 29 bytes data, server => client 00:48:35.105592 '150 Binary junk (18 bytes).\r\n' 00:48:35.115091 Received DATA (on stdin) 00:48:35.115165 > 28 bytes data, server => client 00:48:35.115239 '226 File transfer complete\r\n' 00:48:35.155241 < 6 bytes data, client => server 00:48:35.155328 'QUIT\r\n' 00:48:35.156160 Received DATA (on stdin) 00:48:35.156226 > 18 bytes data, server => client 00:48:35.156481 '221 bye bye baby\r\n' 00:48:35.156998 ====> Client disconnect 00:48:35.158258 Received ACKD (on stdin) 00:49:23.419647 ====> Client connect 00:49:23.423846 Received DATA (on stdin) 00:49:23.423967 > 160 bytes data, server => client 00:49:23.424080 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:23.424187 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:23.424279 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:49:24.758232 < 16 bytes data, client => server 00:49:24.758444 'USER anonymous\r\n' 00:49:24.762852 Received DATA (on stdin) 00:49:24.762939 > 33 bytes data, server => client 00:49:24.763031 '331 We are happy you popped in!\r\n' 00:49:24.868428 < 22 bytes data, client => server 00:49:24.868627 'PASS ftp@example.com\r\n' 00:49:24.869721 Received DATA (on stdin) 00:49:24.869808 > 30 bytes data, server => client 00:49:24.869906 '230 Welcome you silly person\r\n' 00:49:24.959685 < 5 bytes data, client => server 00:49:24.959865 'PWD\r\n' 00:49:24.961253 Received DATA (on stdin) 00:49:24.961337 > 30 bytes data, server => client 00:49:24.965210 '257 "/" is current directory\r\n' 00:49:25.170045 < 6 bytes data, client => server 00:49:25.170227 'EPSV\r\n' 00:49:25.258317 Received DATA (on stdin) 00:49:25.258454 > 39 bytes data, server => client 00:49:25.258552 '229 Entering Passive Mode (|||37475|)\r\n' 00:49:25.563869 < 8 bytes data, client => server 00:49:25.564069 'TYPE I\r\n' 00:49:25.568170 Received DATA (on stdin) 00:49:25.568261 > 33 bytes data, server => client 00:49:25.568353 '200 I modify TYPE as you wanted\r\n' 00:49:25.614900 < 10 bytes data, client => server 00:49:25.615061 'SIZE 135\r\n' 00:49:25.618239 Received DATA (on stdin) 00:49:25.618340 > 8 bytes data, server => client 00:49:25.621989 '213 64\r\n' 00:49:25.704746 < 8 bytes data, client => server 00:49:25.704955 'REST 4\r\n' 00:49:25.706308 Received DATA (on stdin) 00:49:25.706384 > 39 bytes data, server => client 00:49:25.712066 '350 Yeah yeah we set it there for you\r\n' 00:49:25.730700 < 10 bytes data, client => server 00:49:25.730798 'RETR 135\r\n' 00:49:25.734372 Received DATA (on stdin) 00:49:25.734449 > 51 bytes data, server => client 00:49:25.735529 '150 Binary data connection for 135 () (64 bytes).\r\n' 00:49:25.745967 Received DATA (on stdin) 00:49:25.746063 > 28 bytes data, server => client 00:49:25.748578 '226 File transfer complete\r\n' 00:49:26.247430 < 6 bytes data, client => server 00:49:26.247600 'ABOR\r\n' 00:49:26.251502 Received DATA (on stdin) 00:49:26.251592 > 29 bytes data, server => client 00:49:26.251678 '500 ABOR is not dealt with!\r\n' 00:49:26.798304 < 6 bytes data, client => server 00:49:26.798482 'QUIT\r\n' 00:49:26.821969 Received DATA (on stdin) 00:49:26.822064 > 18 bytes data, server => client 00:49:26.825275 '221 bye bye baby\r\n' 00:49:26.965715 ====> Client disconnect 00:49:26.966912 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:48:34.087335 Running IPv4 version 00:48:34.094791 Listening on port 43873 00:48:34.095237 Wrote pid 207561 to log/2/server/ftp_sockdata.pid 00:48:34.095983 Received PING (on stdin) 00:48:34.096877 Received PORT (on stdin) 00:48:34.100856 ====> Client connect 00:48:34.108401 Received DATA (on stdin) 00:48:34.108680 > 18 bytes data, server => client 00:48:34.109031 'WE ROOLZ: 202189\r\n' 00:48:34.109258 Received DISC (on stdin) 00:48:34.109368 ====> Client forcibly disconnected 00:48:34.111592 Received QUIT (on stdin) 00:48:34.111674 quits 00:48:34.112147 ============> sockfilt quits 00:49:24.236552 Running IPv4 version 00:49:24.251309 Listening on port 37475 00:49:24.255207 Wrote pid 208856 to log/2/server/ftp_sockdata.pid 00:49:24.255991 Received PING (on stdin) 00:49:24.256884 Received PORT (on stdin) 00:49:24.439999 ====> Client connect 00:49:24.734825 Received DATA (on stdin) 00:49:24.735206 > 17 bytes data, server => client 00:49:24.735581 '0123456789abcdef\n' 00:49:24.735862 Received DATA (on stdin) 00:49:24.735933 > 17 bytes data, server => client 00:49:24.736010 '0123456789abcdef\n' 00:49:24.736095 Received DATA (on stdin) 00:49:24.736160 > 17 bytes data, server => client 00:49:24.736236 '0123456789abcdef\n' 00:49:24.736323 Received DATA (on stdin) 00:49:24.736392 > 17 bytes data, server => client 00:49:24.736471 '0123456789abcdef\n' 00:49:24.736557 Received DISC (on stdin) 00:49:24.736676 ====> Client forcibly disconnected 00:49:24.739089 Received QUIT (on stdin) 00:49:24.739173 quits 00:49:24.739702 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 135 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE 135 REST 4 RETR 135 ABOR QUIT === End of file server.input === Start of file stderr135 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 13 100 13 0 0 2 0 0:00:06 0:00:04 0:00:02 3 100 13 100 13 0 0 2 0 0:00:06 0:00:05 0:00:01 3 === End of file stderr135 === Start of file trace135 00:49:22.449490 * Trying 127.0.0.1:39881... 00:49:23.433289 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 41314 00:49:23.680139 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:49:24.015605 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:49:24.047844 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:49:24.053222 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:49:24.057837 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:49:24.157534 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:49:24.230829 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:49:24.252589 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:49:24.322408 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:49:24.342531 => Send header, 5 bytes (0x5) 0000: PWD 00:49:24.358308 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:49:24.392288 * Entry path is '/' 00:49:24.505715 * Request has same path as previous transfer 00:49:24.552924 => Send header, 6 bytes (0x6) 0000: EPSV 00:49:24.569323 * Connect data stream passively 00:49:24.646053 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||37475|) 00:49:24.757076 * Connecting to 127.0.0.1 (127.0.0CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind136 ../src/curl -q --output log/5/curl136.out --include --trace-ascii log/5/trace136 --trace-time -u user: ftp://127.0.0.1:33729/136 > log/5/stdout136 2> log/5/stderr136 .1) port 37475 00:49:24.817398 * Trying 127.0.0.1:37475... 00:49:24.903422 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 37475) from 127.0.0.1 port 58976 00:49:24.946748 => Send header, 8 bytes (0x8) 0000: TYPE I 00:49:24.964439 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:49:24.997779 => Send header, 10 bytes (0xa) 0000: SIZE 135 00:49:25.027996 <= Recv header, 8 bytes (0x8) 0000: 213 64 00:49:25.080983 * Instructs server to resume from offset 4 00:49:25.087608 => Send header, 8 bytes (0x8) 0000: REST 4 00:49:25.101385 <= Recv header, 39 bytes (0x27) 0000: 350 Yeah yeah we set it there for you 00:49:25.113568 => Send header, 10 bytes (0xa) 0000: RETR 135 00:49:25.122931 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 135 () (64 bytes). 00:49:25.144621 * Maxdownload = 13 00:49:25.153446 * Getting file with size: 13 00:49:25.292280 <= Recv data, 13 bytes (0xd) 0000: 0123456789abc 00:49:25.619747 * Remembering we are in dir "" 00:49:25.630300 => Send header, 6 bytes (0x6) 0000: ABOR 00:49:25.797825 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:49:25.835708 * partial download completed, closing connection 00:49:26.129455 * shutting down connection #0 === End of file trace135 === Start of file valgrind135 ==207567== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind135 test 0136...[FTP with user and no password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind136 ../src/curl -q --output log/5/curl136.out --include --trace-ascii log/5/trace136 --trace-time -u user: ftp://127.0.0.1:33729/136 > log/5/stdout136 2> log/5/stderr136 valgrind ERROR ==207723== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 136 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind136 ../src/curl -q --output log/5/curl136.out --include --trace-ascii log/5/trace136 --trace-time -u user: ftp://127.0.0.1:33729/136 > log/5/stdout136 2> log/5/stderr136 === End of file commands.log === Start of file curl136.out 0123456789abcdef === End of file curl136.out === Start of file ftp_server.log 00:48:37.527746 ====> Client connect 00:48:37.528796 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:48:37.538383 < "USER anonymous" 00:48:37.539462 > "331 We are happy you popped in![CR][LF]" 00:48:37.540000 < "PASS ftp@example.com" 00:48:37.540808 > "230 Welcome you silly person[CR][LF]" 00:48:37.541330 < "PWD" 00:48:37.541601 > "257 "/" is current directory[CR][LF]" 00:48:37.544491 < "EPSV" 00:48:37.544697 ====> Passive DATA channel requested by client 00:48:37.544840 DATA sockfilt for passive data channel starting... 00:48:37.587649 DATA sockfilt for passive data channel started (pid 207717) 00:48:37.588990 DATA sockfilt for passive data channel listens on port 40285 00:48:37.589347 > "229 Entering Passive Mode (|||40285|)[CR][LF]" 00:48:37.589518 Client has been notified that DATA conn will be accepted on port 40285 00:48:37.591766 Client connects to port 40285 00:48:37.592000 ====> Client established passive DATA connection on port 40285 00:48:37.593643 < "TYPE I" 00:48:37.594156 > "200 I modify TYPE as you wanted[CR][LF]" 00:48:37.595314 < "SIZE verifiedserver" 00:48:37.595623 > "213 18[CR][LF]" 00:48:37.597007 < "RETR verifiedserver" 00:48:37.597308 > "150 Binary junk (18 bytes).[CR][LF]" 00:48:37.597841 =====> Closing passive DATA connection... 00:48:37.598004 Server disconnects passive DATA connection 00:48:37.604328 Server disconnected passive DATA connection 00:48:37.604510 DATA sockfilt for passive data channel quits (pid 207717) 00:48:37.607656 DATA sockfilt for passive data channel quit (pid 207717) 00:48:37.607849 =====> Closed passive DATA connection 00:48:37.608102 > "226 File transfer complete[CR][LF]" 00:48:37.649340 < "QUIT" 00:48:37.649665 > "221 bye bye baby[CR][LF]" 00:48:37.650393 MAIN sockfilt said DISC 00:48:37.650584 ====> Client disconnected 00:48:37.650837 Awaiting input 00:49:25.343777 ====> Client connect 00:49:25.344532 FTPD: Getting commands from log/5/server.cmd 00:49:25.344867 FTPD: run test case number: 136 00:49:25.345828 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:49:26.596115 < "USER user" 00:49:26.596549 > "331 We are happy you popped in![CR][LF]" 00:49:26.702614 < "PASS " 00:49:26.703334 > "230 Welcome you silly person[CR][LF]" 00:49:26.786368 < "PWD" 00:49:26.787062 > "257 "/" is current directory[CR][LF]" 00:49:26.976502 < "EPSV" 00:49:26.976832 ====> Passive DATA channel requested by client 00:49:26.976986 DATA sockfilt for passive data channel starting... 00:49:27.053474 DATA sockfilt for passive data channel started (pid 208865) 00:49:27.058274 DATA sockfilt for passive data channel listens on port 44957 00:49:27.059035 > "229 Entering Passive Mode (|||44957|)[CR][LF]" 00:49:27.059211 Client has been notified that DATA conn will be accepted on port 44957 00:49:27.254406 Client connects to port 44957 00:49:27.254974 ====> Client established passive DATA connection on port 44957 00:49:27.360867 < "TYPE I" 00:49:27.361301 > "200 I modify TYPE as you wanted[CR][LF]" 00:49:27.411777 < "SIZE 136" 00:49:27.413549 > "213 17[CR][LF]" 00:49:27.495156 < "RETR 136" 00:49:27.496119 > "150 Binary data connection for 136 () (17 bytes).[CR][LF]" 00:49:27.496634 =====> Closing passive DATA connection... 00:49:27.496787 Server disconnects passive DATA connection 00:49:27.497459 Server disconnected passive DATA connection 00:49:27.497632 DATA sockfilt for passive data channel quits (pid 208865) 00:49:27.500655 DATA sockfilt for passive data channel quit (pid 208865) 00:49:27.500816 =====> Closed passive DATA connection 00:49:27.501081 > "226 File transfer complete[CR][LF]" 00:49:29.418532 < "QUIT" 00:49:29.424400 > "221 bye bye baby[CR][LF]" 00:49:29.546445 MAIN sockfilt said DISC 00:49:29.547036 ====> Client disconnected 00:49:29.547350 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:48:38.143681 ====> Client connect 00:48:38.145933 Received DATA (on stdin) 00:48:38.146027 > 160 bytes data, server => client 00:48:38.146133 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:48:38.146229 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:48:38.146312 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:48:38.152575 < 16 bytes data, client => server 00:48:38.152662 'USER anonymous\r\n' 00:48:38.155969 Received DATA (on stdin) 00:48:38.156054 > 33 bytes data, server => client 00:48:38.156175 '331 We are happy you popped in!\r\n' 00:48:38.156462 < 22 bytes data, client => server 00:48:38.156541 'PASS ftp@example.com\r\n' 00:48:38.157496 Received DATA (on stdin) 00:48:38.157564 > 30 bytes data, server => client 00:48:38.157666 '230 Welcome you silly person\r\n' 00:48:38.157905 < 5 bytes data, client => server 00:48:38.157972 'PWD\r\n' 00:48:38.159146 Received DATA (on stdin) 00:48:38.159223 > 30 bytes data, server => client 00:48:38.159315 '257 "/" is current directory\r\n' 00:48:38.161261 < 6 bytes data, client => server 00:48:38.161337 'EPSV\r\n' 00:48:38.207047 Received DATA (on stdin) 00:48:38.207195 > 39 bytes data, server => client 00:48:38.207287 '229 Entering Passive Mode (|||40285|)\r\n' 00:48:38.210330 < 8 bytes data, client => server 00:48:38.210412 'TYPE I\r\n' 00:48:38.211176 Received DATA (on stdin) 00:48:38.211249 > 33 bytes data, server => client 00:48:38.211688 '200 I modify TYPE as you wanted\r\n' 00:48:38.212113 < 21 bytes data, client => server 00:48:38.212191 'SIZE verifiedserver\r\n' 00:48:38.213216 Received DATA (on stdin) 00:48:38.213282 > 8 bytes data, server => client 00:48:38.213347 '213 18\r\n' 00:48:38.213816 < 21 bytes data, client => server 00:48:38.213893 'RETR verifiedserver\r\n' 00:48:38.216737 Received DATA (on stdin) 00:48:38.216818 > 29 bytes data, server => client 00:48:38.216910 '150 Binary junk (18 bytes).\r\n' 00:48:38.225340 Received DATA (on stdin) 00:48:38.225415 > 28 bytes data, server => client 00:48:38.225495 '226 File transfer complete\r\n' 00:48:38.265998 < 6 bytes data, client => server 00:48:38.266124 'QUIT\r\n' 00:48:38.266899 Received DATA (on stdin) 00:48:38.266965 > 18 bytes data, server => client 00:48:38.267037 '221 bye bye baby\r\n' 00:48:38.267574 ====> Client disconnect 00:48:38.268309 Received ACKD (on stdin) 00:49:25.960664 ====> Client connect 00:49:25.964843 Received DATA (on stdin) 00:49:25.964951 > 160 bytes data, server => client 00:49:25.965069 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:25.965186 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:25.965285 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:49:27.212073 < 11 bytes data, client => server 00:49:27.212255 'USER user\r\n' 00:49:27.218159 Received DATA (on stdin) 00:49:27.218242 > 33 bytes data, server => client 00:49:27.218332 '331 We are happy you popped in!\r\n' 00:49:27.318666 < 7 bytes data, client => server 00:49:27.318822 'PASS \r\n' 00:49:27.320148 Received DATA (on stdin) 00:49:27.320230 > 30 bytes data, server => client 00:49:27.320339 '230 Welcome you silly person\r\n' 00:49:27.402636 < 5 bytes data, client => server 00:49:27.402772 'PWD\r\n' 00:49:27.403898 Received DATA (on stdin) 00:49:27.403974 > 30 bytes data, server => client 00:49:27.404082 '257 "/" is current directory\r\n' 00:49:27.592526 < 6 bytes data, client => server 00:49:27.592713 'EPSV\r\n' 00:49:27.675761 Received DATA (on stdin) 00:49:27.675894 > 39 bytes data, server => client 00:49:27.676010 '229 Entering Passive Mode (|||44957|)\r\n' 00:49:27.977066 < 8 bytes data, client => server 00:49:27.977324 'TYPE I\r\n' 00:49:27.978417 Received DATA (on stdin) 00:49:27.978503 > 33 bytes data, server => client 00:49:27.978607 '200 I modify TYPE as you wanted\r\n' 00:49:28.027285 < 10 bytes data, client => server 00:49:28.027437 'SIZE 136\r\n' 00:49:28.030687 Received DATA (on stdin) 00:49:28.030784 > 8 bytes data, server => client 00:49:28.030870 '213 17\r\n' 00:49:28.108173 < 10 bytes data, client => server 00:49:28.108340 'RETR 136\r\n' 00:49:28.114825 Received DATA (on stdin) 00:49:28.114922 > 51 bytes data, server => client 00:49:28.115036 '150 Binary data connection for 136 () (17 bytes).\r\n' 00:49:28.118218 Received DATA (on stdin) 00:49:28.118309 > 28 bytes data, server => client 00:49:28.118404 '226 File transfer complete\r\n' 00:49:30.033894 < 6 bytes data, client => server 00:49:30.034095 'QUIT\r\n' 00:49:30.036073 Received DATA (on stdin) 00:49:30.036152 > 18 bytes data, server => client 00:49:30.041874 '221 bye bye baby\r\n' 00:49:30.163259 ====> Client disconnect 00:49:30.164725 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:48:37.195595 Running IPv4 version 00:48:37.203425 Listening on port 40285 00:48:37.203869 Wrote pid 207717 to log/5/server/ftp_sockdata.pid 00:48:37.204617 Received PING (on stdin) 00:48:37.205611 Received PORT (on stdin) 00:48:37.208922 ====> Client connect 00:48:37.215566 Received DATA (on stdin) 00:48:37.215855 > 18 bytes data, server => client 00:48:37.216213 'WE ROOLZ: 202313\r\n' 00:48:37.216439 Received DISC (on stdin) 00:48:37.216552 ====> Client forcibly disconnected 00:48:37.221995 Received QUIT (on stdin) 00:48:37.222077 quits 00:48:37.222572 ============> sockfilt quits 00:49:27.658578 Running IPv4 version 00:49:27.669104 Listening on port 44957 00:49:27.669576 Wrote pid 208865 to log/5/server/ftp_sockdata.pid 00:49:27.670290 Received PING (on stdin) 00:49:27.674825 Received PORT (on stdin) 00:49:27.869658 ====> Client connect 00:49:28.113548 Received DATA (on stdin) 00:49:28.113922 > 17 bytes data, server => client 00:49:28.114259 '0123456789abcdef\n' 00:49:28.114522 Received DISC (on stdin) 00:49:28.114634 ====> Client forcibly disconnected 00:49:28.115005 Received QUIT (on stdin) 00:49:28.115081 quits 00:49:28.115559 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 136 === End of file server.cmd === Start of file server.input USER user PASS PWD EPSV TYPE I SIZE 136 RETR 136 QUIT === End of file server.input === Start of file stderr136 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 17 100 17 0 0 3 0 0:00:05 0:00:05 --:--:-- 4 === End of file stderr136 === Start of file trace136 00:49:25.010175 * Trying 127.0.0.1:33729... 00:49:25.897074 * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 34710 00:49:26.121222 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:49:26.482193 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:49:26.505604 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:49:26.511689 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:49:26.516160 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:49:26.614228 => Send header, 11 bytes (0xb) 0000: USER user 00:49:26.682734 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:49:26.703345 => Send header, 7 bytes (0x7) 0000: PASS 00:49:26.767542 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:49:26.785497 => Send header, 5 bytes (0x5) 0000: PWD 00:49:26.799448 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:49:26.831902 * Entry path is '/' 00:49:26.926789 * Request has same path as previous transfer 00:49:26.975402 => Send header, 6 bytes (0x6) 0000: EPSV 00:49:26.989556 * Connect data stream passively 00:49:27.066583 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||44957|) 00:49:27.182897 * Connecting to 127.0.0.1 (127.0.0.1) port 44957 00:49:27.244428 * Trying 127.0.0.1:44957... 00:49:27.331265 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 44957) from 127.0.0.1 port 47626 00:49:27.359932 => Send header, 8 bytes (0x8) 0000: TYPE I 00:49:27.377116 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:49:27.410159 => Send header, 10 bytes (0xa) 0000: SIZE 136 00:49:27.446359 <= Recv header, 8 bytes (0x8) 0000: 213 17 00:49:27.491033 => Send header, 10 bytes (0xa) 0000: RETR 136 00:49:27.504928 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 136 () (17 bytes). 00:49:27.546422 * Maxdownload = -1 00:49:27.556702 * Getting file with size: 17 00:49:27.696824 <= Recv data, 17 bytes (0x11) 0000: 0123456789abcdef. 00:49:27.992503 * abort upload 00:49:28.021907 <= Recv data, 0 bytes (0x0) 00:49:28.181100 * Remembering we are in dir "" 00:49:28.367263 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:49:28.676993 * Connection #0 to host 127.0.0.1:33729 left intact === End of file trace136 === Start of file valgrind136 ==207723== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind136 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 142 in state 4 Runner 2 (id 185908) running test 143 in statCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind137 ../src/curl -q --output log/3/curl137.out --include --trace-ascii log/3/trace137 --trace-time ftp://127.0.0.1:37331/blalbla/lululul/137 > log/3/stdout137 2> log/3/stderr137 e 4 Runner 3 (id 185910) running test 137 in state 4 Runner 4 (id 185912) running test 140 in state 4 Runner 5 (id 185914) running test 144 in state 4 Runner 6 (id 185916) running test 141 in state 4 Runner 7 (id 185918) running test 138 in state 4 Runner 8 (id 185920) running test 139 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 142 in state 4 Runner 2 (id 185908) running test 143 in state 4 Runner 3 (id 185910) running test 137 in state 4 Runner 4 (id 185912) running test 140 in state 4 Runner 5 (id 185914) running test 144 in state 4 Runner 6 (id 185916) running test 141 in state 4 Runner 7 (id 185918) running test 138 in state 4 Runner 8 (id 185920) running test 139 in state 4 test 0137...[FTP download without size in RETR string] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind137 ../src/curl -q --output log/3/curl137.out --include --trace-ascii log/3/trace137 --trace-time ftp://127.0.0.1:37331/blalbla/lululul/137 > log/3/stdout137 2> log/3/stderr137 valgrind ERROR ==207945== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 137 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind137 ../src/curl -q --output log/3/curl137.out --include --trace-ascii log/3/trace137 --trace-time ftp://127.0.0.1:37331/blalbla/lululul/137 > log/3/stdout137 2> log/3/stderr137 === End of file commands.log === Start of file curl137.out this is file contents === End of file curl137.out === Start of file ftp_server.log 00:49:01.611653 ====> Client connect 00:49:01.612668 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:49:01.621744 < "USER anonymous" 00:49:01.622342 > "331 We are happy you popped in![CR][LF]" 00:49:01.623542 < "PASS ftp@example.com" 00:49:01.623825 > "230 Welcome you silly person[CR][LF]" 00:49:01.625022 < "PWD" 00:49:01.627452 > "257 "/" is current directory[CR][LF]" 00:49:01.628187 < "EPSV" 00:49:01.628393 ====> Passive DATA channel requested by client 00:49:01.628536 DATA sockfilt for passive data channel starting... 00:49:01.670816 DATA sockfilt for passive data channel started (pid 207939) 00:49:01.672323 DATA sockfilt for passive data channel listens on port 35535 00:49:01.672699 > "229 Entering Passive Mode (|||35535|)[CR][LF]" 00:49:01.672875 Client has been notified that DATA conn will be accepted on port 35535 00:49:01.676327 Client connects to port 35535 00:49:01.676588 ====> Client established passive DATA connection on port 35535 00:49:01.677284 < "TYPE I" 00:49:01.677594 > "200 I modify TYPE as you wanted[CR][LF]" 00:49:01.679044 < "SIZE verifiedserver" 00:49:01.680240 > "213 18[CR][LF]" 00:49:01.680797 < "RETR verifiedserver" 00:49:01.683331 > "150 Binary junk (18 bytes).[CR][LF]" 00:49:01.683935 =====> Closing passive DATA connection... 00:49:01.684095 Server disconnects passive DATA connection 00:49:01.685645 Server disconnected passive DATA connection 00:49:01.685823 DATA sockfilt for passive data channel quits (pid 207939) 00:49:01.691073 DATA sockfilt for passive data channel quit (pid 207939) 00:49:01.691302 =====> Closed passive DATA connection 00:49:01.691632 > "226 File transfer complete[CR][LF]" 00:49:01.732739 < "QUIT" 00:49:01.733467 > "221 bye bye baby[CR][LF]" 00:49:01.734439 MAIN sockfilt said DISC 00:49:01.734642 ====> Client disconnected 00:49:01.734923 Awaiting input 00:49:49.474419 ====> Client connect 00:49:49.475285 FTPD: Getting commands from log/3/server.cmd 00:49:49.475576 FTPD: instructed to use RETRNOSIZE 00:49:49.475855 FTPD: run test case number: 137 00:49:49.476883 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:49:50.788438 < "USER anonymous" 00:49:50.788868 > "331 We are happy you popped in![CR][LF]" 00:49:50.901559 < "PASS ftp@example.com" 00:49:50.901976 > "230 Welcome you silly person[CR][LF]" 00:49:50.992873 < "PWD" 00:49:50.993326 > "257 "/" is current directory[CR][LF]" 00:49:51.191835 < "CWD blalbla" 00:49:51.192251 > "250 CWD command successful.[CR][LF]" 00:49:51.245624 < "CWD lululul" 00:49:51.246045 > "250 CWD command successful.[CR][LF]" 00:49:51.328436 < "EPSV" 00:49:51.328782 ====> Passive DATA channel requested by client 00:49:51.328937 DATA sockfilt for passive data channel starting... 00:49:51.408080 DATA sockfilt for passive data channel started (pid 209228) 00:49:51.409586 DATA sockfilt for passive data channel listens on port 44359 00:49:51.409976 > "229 Entering Passive Mode (|||44359|)[CR][LF]" 00:49:51.410165 Client has been notified that DATA conn will be accepted on port 44359 00:49:51.603603 Client connects to port 44359 00:49:51.604152 ====> Client established passive DATA connection on port 44359 00:49:51.721293 < "TYPE I" 00:49:51.721788 > "200 I modify TYPE as you wanted[CR][LF]" 00:49:51.775826 < "SIZE 137" 00:49:51.781420 > "213 22[CR][LF]" 00:49:51.857067 < "RETR 137" 00:49:51.858462 > "150 Binary data connection for 137 () size?.[CR][LF]" 00:49:51.861352 =====> Closing passive DATA connection... 00:49:51.861564 Server disconnects passive DATA connection 00:49:51.862652 Server disconnected passive DATA connection 00:49:51.862836 DATA sockfilt for passive data channel quits (pid 209228) 00:49:51.866208 DATA sockfilt for passive data channel quit (pid 209228) 00:49:51.866419 =====> Closed passive DATA connection 00:49:51.871091 > "226 File transfer complete[CR][LF]" 00:49:53.899553 < "QUIT" 00:49:53.899968 > "221 bye bye baby[CR][LF]" 00:49:54.041738 MAIN sockfilt said DISC 00:49:54.042217 ====> Client disconnected 00:49:54.042508 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:49:01.228506 ====> Client connect 00:49:01.229778 Received DATA (on stdin) 00:49:01.229872 > 160 bytes data, server => client 00:49:01.229994 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:01.230096 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:01.230184 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:49:01.238044 < 16 bytes data, client => server 00:49:01.238205 'USER anonymous\r\n' 00:49:01.239349 Received DATA (on stdin) 00:49:01.239425 > 33 bytes data, server => client 00:49:01.239824 '331 We are happy you popped in!\r\n' 00:49:01.240210 < 22 bytes data, client => server 00:49:01.240289 'PASS ftp@example.com\r\n' 00:49:01.241258 Received DATA (on stdin) 00:49:01.241329 > 30 bytes data, server => client 00:49:01.241420 '230 Welcome you silly person\r\n' 00:49:01.241678 < 5 bytes data, client => server 00:49:01.241754 'PWD\r\n' 00:49:01.242504 Received DATA (on stdin) 00:49:01.242571 > 30 bytes data, server => client 00:49:01.242673 '257 "/" is current directory\r\n' 00:49:01.244916 < 6 bytes data, client => server 00:49:01.244992 'EPSV\r\n' 00:49:01.290356 Received DATA (on stdin) 00:49:01.290505 > 39 bytes data, server => client 00:49:01.290614 '229 Entering Passive Mode (|||35535|)\r\n' 00:49:01.293118 < 8 bytes data, client => server 00:49:01.293204 'TYPE I\r\n' 00:49:01.295054 Received DATA (on stdin) 00:49:01.295132 > 33 bytes data, server => client 00:49:01.295230 '200 I modify TYPE as you wanted\r\n' 00:49:01.295626 < 21 bytes data, client => server 00:49:01.295706 'SIZE verifiedserver\r\n' 00:49:01.296592 Received DATA (on stdin) 00:49:01.296662 > 8 bytes data, server => client 00:49:01.296751 '213 18\r\n' 00:49:01.297208 < 21 bytes data, client => server 00:49:01.297285 'RETR verifiedserver\r\n' 00:49:01.298313 Received DATA (on stdin) 00:49:01.298386 > 29 bytes data, server => client 00:49:01.298483 '150 Binary junk (18 bytes).\r\n' 00:49:01.309112 Received DATA (on stdin) 00:49:01.309246 > 28 bytes data, server => client 00:49:01.309340 '226 File transfer complete\r\n' 00:49:01.349319 < 6 bytes data, client => server 00:49:01.349481 'QUIT\r\n' 00:49:01.350305 Received DATA (on stdin) 00:49:01.350376 > 18 bytes data, server => client 00:49:01.350933 '221 bye bye baby\r\n' 00:49:01.351552 ====> Client disconnect 00:49:01.354867 Received ACKD (on stdin) 00:49:49.089341 ====> Client connect 00:49:49.093929 Received DATA (on stdin) 00:49:49.094071 > 160 bytes data, server => client 00:49:49.094184 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:49.094291 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:49.094384 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:49:50.401109 < 16 bytes data, client => server 00:49:50.401320 'USER anonymous\r\n' 00:49:50.405965 Received DATA (on stdin) 00:49:50.406069 > 33 bytes data, server => client 00:49:50.406157 '331 We are happy you popped in!\r\n' 00:49:50.517772 < 22 bytes data, client => server 00:49:50.517968 'PASS ftp@example.com\r\n' 00:49:50.519071 Received DATA (on stdin) 00:49:50.519150 > 30 bytes data, server => client 00:49:50.519239 '230 Welcome you silly person\r\n' 00:49:50.609135 < 5 bytes data, client => server 00:49:50.609320 'PWD\r\n' 00:49:50.610407 Received DATA (on stdin) 00:49:50.610482 > 30 bytes data, server => client 00:49:50.610566 '257 "/" is current directory\r\n' 00:49:50.804823 < 13 bytes data, client => server 00:49:50.805009 'CWD blalbla\r\n' 00:49:50.809348 Received DATA (on stdin) 00:49:50.809445 > 29 bytes data, server => client 00:49:50.809533 '250 CWD command successful.\r\n' 00:49:50.864788 < 13 bytes data, client => server 00:49:50.864953 'CWD lululul\r\n' 00:49:50.865033 Received DATA (on stdin) 00:49:50.865100 > 29 bytes data, server => client 00:49:50.865187 '250 CWD command successful.\r\n' 00:49:50.944624 < 6 bytes data, client => server 00:49:50.944838 'EPSV\r\n' 00:49:51.027560 Received DATA (on stdin) 00:49:51.027708 > 39 bytes data, server => client 00:49:51.027817 '229 Entering Passive Mode (|||44359|)\r\n' 00:49:51.341450 < 8 bytes data, client => server 00:49:51.341664 'TYPE I\r\n' 00:49:51.341747 Received DATA (on stdin) 00:49:51.341810 > 33 bytes data, server => client 00:49:51.341891 '200 I modify TYPE as you wanted\r\n' 00:49:51.391836 < 10 bytes data, client => server 00:49:51.392012 'SIZE 137\r\n' 00:49:51.398122 Received DATA (on stdin) 00:49:51.398250 > 8 bytes data, server => client 00:49:51.398361 '213 22\r\n' 00:49:51.473121 < 10 bytes data, client => server 00:49:51.473298 'RETR 137\r\n' 00:49:51.475226 Received DATA (on stdin) 00:49:51.475307 > 46 bytes data, server => client 00:49:51.475435 '150 Binary data connection for 137 () size?.\r\n' 00:49:51.483806 Received DATA (on stdin) 00:49:51.483922 > 28 bytes data, server => client 00:49:51.488610 '226 File transfer complete\r\n' 00:49:53.515529 < 6 bytes data, client => server 00:49:53.515720 'QUIT\r\n' 00:49:53.517325 Received DATA (on stdin) 00:49:53.517397 > 18 bytes data, server => client 00:49:53.517474 '221 bye bye baby\r\n' 00:49:53.658582 ====> Client disconnect 00:49:53.659833 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:49:01.278659 Running IPv4 version 00:49:01.286458 Listening on port 35535 00:49:01.286915 Wrote pid 207939 to log/3/server/ftp_sockdata.pid 00:49:01.287676 Received PING (on stdin) 00:49:01.288824 Received PORT (on stdin) 00:49:01.293367 ====> Client connect 00:49:01.301542 Received DATA (on stdin) 00:49:01.301911 > 18 bytes data, server => client 00:49:01.302289 'WE ROOLZ: 202504\r\n' 00:49:01.302549 Received DISC (on stdin) 00:49:01.302672 ====> Client forcibly disconnected 00:49:01.303222 Received QUIT (on stdin) 00:49:01.303296 quits 00:49:01.303806 ============> sockfilt quits 00:49:51.010714 Running IPv4 version 00:49:51.023358 Listening on port 44359 00:49:51.023899 Wrote pid 209228 to log/3/server/ftp_sockdata.pid 00:49:51.024801 Received PING (on stdin) 00:49:51.025995 Received PORT (on stdin) 00:49:51.220390 ====> Client connect 00:49:51.475876 Received DATA (on stdin) 00:49:51.476271 > 22 bytes data, server => client 00:49:51.479171 'this is file contents\n' 00:49:51.479460 Received DISC (on stdin) 00:49:51.479582 ====> Client forcibly disconnected 00:49:51.480149 Received QUIT (on stdin) 00:49:51.480235 quits 00:49:51.480787 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd RETRNOSIZE Testnum 137 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD blalbla CWD lululul EPSV TYPE I SIZE 137 RETR 137 QUIT === End of file server.input === Start of file stderr137 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 22 100 22 0 0 4 0 0:00:05 0:00:05 --:--:-- 5 100 22 100 22 0 0 3 0 0:00:07 0:00:05 0:00:02 5 === End of file stderr137 === Start of file trace137 00:49:49.140725 * Trying 127.0.0.1:37331... 00:49:50.057537 * Established connection to 127.0.0.1 (127.0.0.1 port 37331) from 127.0.0.1 port 38582 00:49:50.312538 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:49:50.662499 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:49:50.689432 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:49:50.695849 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:49:50.701239 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:49:50.804983 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:49:50.880679 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:49:50.902633 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:49:50.972511 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:49:50.992390 => Send header, 5 bytes (0x5) 0000: PWD 00:49:51.011127 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:49:51.052922 * Entry path is '/' 00:49:51.187072 => Send header, 13 bytes (0xd) 0000: CWD blalbla 00:49:51.201350 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:49:51.248790 => Send header, 13 bytes (0xd) 0000: CWD lululul 00:49:51.289380 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:49:51.327963 => Send header, 6 bytes (0x6) 0000: EPSV 00:49:51.344035 * Connect data stream passively 00:49:51.413606 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||44359|) 00:49:51.521812 * Connecting to 127.0.0.1 (127.0.0.1) port 44359 00:49:51.597690 * Trying 127.0.0.1:44359... 00:49:51.689601 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 44359) from 127.0.0.1 port 41040 00:49:51.722205 => Send header, 8 bytes (0x8) 0000: TYPE I 00:49:51.742303 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:49:51.777972 => Send header, 10 bytes (0xa) 0000: SIZE 137 00:49:51.808060 <= Recv header, 8 bytes (0x8) 0000: 213 22 00:49:51.859451 => Send header, 10 bytes (0xa) 0000: RETR 137 00:49:51.882145 <= Recv header, 46 bytes (0x2e) 0000: 150 Binary data connection for 137 () size?. 00:49:51.926227 * Maxdownload = -1 00:49:51.936856 * Getting file with size: 22 00:49:52.091413 <= Recv data, 22 bytes (0x16) 0000: this is file contents. 00:49:52.408810 * abort upload 00:49:52.435731 <= Recv data, 0 bytes (0x0) CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind138 ../src/curl -q --output log/7/curl138.out --include --trace-ascii log/7/trace138 --trace-time ftp://127.0.0.1:45353/blalbla/lululul/138 > log/7/stdout138 2> log/7/stderr138 00:49:52.633911 * Remembering we are in dir "blalbla/lululul/" 00:49:52.833518 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:49:53.153493 * Connection #0 to host 127.0.0.1:37331 left intact === End of file trace137 === Start of file valgrind137 ==207945== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind137 test 0138...[FTP download without size in RETR string and no SIZE command] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind138 ../src/curl -q --output log/7/curl138.out --include --trace-ascii log/7/trace138 --trace-time ftp://127.0.0.1:45353/blalbla/lululul/138 > log/7/stdout138 2> log/7/stderr138 valgrind ERROR ==208128== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 138 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind138 ../src/curl -q --output log/7/curl138.out --include --trace-ascii log/7/trace138 --trace-time ftp://127.0.0.1:45353/blalbla/lululul/138 > log/7/stdout138 2> log/7/stderr138 === End of file commands.log === Start of file curl138.out this is file contents === End of file curl138.out === Start of file ftp_server.log 00:49:10.977738 ====> Client connect 00:49:10.978802 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:49:10.984219 < "USER anonymous" 00:49:10.985347 > "331 We are happy you popped in![CR][LF]" 00:49:10.985951 < "PASS ftp@example.com" 00:49:10.986879 > "230 Welcome you silly person[CR][LF]" 00:49:10.987401 < "PWD" 00:49:10.989859 > "257 "/" is current directory[CR][LF]" 00:49:10.990591 < "EPSV" 00:49:10.990797 ====> Passive DATA channel requested by client 00:49:10.990944 DATA sockfilt for passive data channel starting... 00:49:11.034835 DATA sockfilt for passive data channel started (pid 208116) 00:49:11.036418 DATA sockfilt for passive data channel listens on port 45927 00:49:11.039445 > "229 Entering Passive Mode (|||45927|)[CR][LF]" 00:49:11.039659 Client has been notified that DATA conn will be accepted on port 45927 00:49:11.040291 Client connects to port 45927 00:49:11.040495 ====> Client established passive DATA connection on port 45927 00:49:11.041162 < "TYPE I" 00:49:11.041732 > "200 I modify TYPE as you wanted[CR][LF]" 00:49:11.042661 < "SIZE verifiedserver" 00:49:11.042952 > "213 18[CR][LF]" 00:49:11.044277 < "RETR verifiedserver" 00:49:11.044565 > "150 Binary junk (18 bytes).[CR][LF]" 00:49:11.045050 =====> Closing passive DATA connection... 00:49:11.045200 Server disconnects passive DATA connection 00:49:11.050992 Server disconnected passive DATA connection 00:49:11.051185 DATA sockfilt for passive data channel quits (pid 208116) 00:49:11.054245 DATA sockfilt for passive data channel quit (pid 208116) 00:49:11.054413 =====> Closed passive DATA connection 00:49:11.054660 > "226 File transfer complete[CR][LF]" 00:49:11.095411 < "QUIT" 00:49:11.096049 > "221 bye bye baby[CR][LF]" 00:49:11.101135 MAIN sockfilt said DISC 00:49:11.101478 ====> Client disconnected 00:49:11.101738 Awaiting input 00:49:58.839299 ====> Client connect 00:49:58.840100 FTPD: Getting commands from log/7/server.cmd 00:49:58.840373 FTPD: instructed to use RETRNOSIZE 00:49:58.841163 FTPD: set custom reply for SIZE command 00:49:58.841440 FTPD: run test case number: 138 00:49:58.844444 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:50:00.170056 < "USER anonymous" 00:50:00.174461 > "331 We are happy you popped in![CR][LF]" 00:50:00.282389 < "PASS ftp@example.com" 00:50:00.282836 > "230 Welcome you silly person[CR][LF]" 00:50:00.378192 < "PWD" 00:50:00.378707 > "257 "/" is current directory[CR][LF]" 00:50:00.582492 < "CWD blalbla" 00:50:00.587768 > "250 CWD command successful.[CR][LF]" 00:50:00.641799 < "CWD lululul" 00:50:00.642228 > "250 CWD command successful.[CR][LF]" 00:50:00.721150 < "EPSV" 00:50:00.721496 ====> Passive DATA channel requested by client 00:50:00.721659 DATA sockfilt for passive data channel starting... 00:50:00.783701 DATA sockfilt for passive data channel started (pid 209402) 00:50:00.784909 DATA sockfilt for passive data channel listens on port 45689 00:50:00.791115 > "229 Entering Passive Mode (|||45689|)[CR][LF]" 00:50:00.791441 Client has been notified that DATA conn will be accepted on port 45689 00:50:00.964752 Client connects to port 45689 00:50:00.965350 ====> Client established passive DATA connection on port 45689 00:50:01.084655 < "TYPE I" 00:50:01.085090 > "200 I modify TYPE as you wanted[CR][LF]" 00:50:01.142121 < "SIZE 138" 00:50:01.142525 > "500 command not understood[CR][LF]" 00:50:01.200170 < "RETR 138" 00:50:01.201859 > "150 Binary data connection for 138 () size?.[CR][LF]" 00:50:01.202388 =====> Closing passive DATA connection... 00:50:01.202551 Server disconnects passive DATA connection 00:50:01.207695 Server disconnected passive DATA connection 00:50:01.208011 DATA sockfilt for passive data channel quits (pid 209402) 00:50:01.211365 DATA sockfilt for passive data channel quit (pid 209402) 00:50:01.211602 =====> Closed passive DATA connection 00:50:01.211933 > "226 File transfer complete[CR][LF]" 00:50:03.258358 < "QUIT" 00:50:03.264443 > "221 bye bye baby[CR][LF]" 00:50:03.390446 MAIN sockfilt said DISC 00:50:03.390988 ====> Client disconnected 00:50:03.391289 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:49:10.591591 ====> Client connect 00:49:10.596277 Received DATA (on stdin) 00:49:10.596395 > 160 bytes data, server => client 00:49:10.596515 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:10.596625 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:10.596724 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:49:10.600640 < 16 bytes data, client => server 00:49:10.600759 'USER anonymous\r\n' 00:49:10.601792 Received DATA (on stdin) 00:49:10.601873 > 33 bytes data, server => client 00:49:10.601988 '331 We are happy you popped in!\r\n' 00:49:10.602287 < 22 bytes data, client => server 00:49:10.602365 'PASS ftp@example.com\r\n' 00:49:10.603395 Received DATA (on stdin) 00:49:10.603463 > 30 bytes data, server => client 00:49:10.603564 '230 Welcome you silly person\r\n' 00:49:10.603886 < 5 bytes data, client => server 00:49:10.603965 'PWD\r\n' 00:49:10.604862 Received DATA (on stdin) 00:49:10.604933 > 30 bytes data, server => client 00:49:10.605031 '257 "/" is current directory\r\n' 00:49:10.607304 < 6 bytes data, client => server 00:49:10.607385 'EPSV\r\n' 00:49:10.653991 Received DATA (on stdin) 00:49:10.654125 > 39 bytes data, server => client 00:49:10.654234 '229 Entering Passive Mode (|||45927|)\r\n' 00:49:10.657342 < 8 bytes data, client => server 00:49:10.657420 'TYPE I\r\n' 00:49:10.658644 Received DATA (on stdin) 00:49:10.658717 > 33 bytes data, server => client 00:49:10.658816 '200 I modify TYPE as you wanted\r\n' 00:49:10.659422 < 21 bytes data, client => server 00:49:10.659495 'SIZE verifiedserver\r\n' 00:49:10.660450 Received DATA (on stdin) 00:49:10.660514 > 8 bytes data, server => client 00:49:10.660575 '213 18\r\n' 00:49:10.660985 < 21 bytes data, client => server 00:49:10.661057 'RETR verifiedserver\r\n' 00:49:10.663714 Received DATA (on stdin) 00:49:10.663786 > 29 bytes data, server => client 00:49:10.663863 '150 Binary junk (18 bytes).\r\n' 00:49:10.672084 Received DATA (on stdin) 00:49:10.672171 > 28 bytes data, server => client 00:49:10.672249 '226 File transfer complete\r\n' 00:49:10.711673 < 6 bytes data, client => server 00:49:10.711830 'QUIT\r\n' 00:49:10.712958 Received DATA (on stdin) 00:49:10.713026 > 18 bytes data, server => client 00:49:10.713116 '221 bye bye baby\r\n' 00:49:10.718226 ====> Client disconnect 00:49:10.718565 Received ACKD (on stdin) 00:49:58.456073 ====> Client connect 00:49:58.459509 Received DATA (on stdin) 00:49:58.459611 > 160 bytes data, server => client 00:49:58.461892 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:58.462029 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:58.462134 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:49:59.785840 < 16 bytes data, client => server 00:49:59.786046 'USER anonymous\r\n' 00:49:59.787584 Received DATA (on stdin) 00:49:59.787661 > 33 bytes data, server => client 00:49:59.792025 '331 We are happy you popped in!\r\n' 00:49:59.898248 < 22 bytes data, client => server 00:49:59.898477 'PASS ftp@example.com\r\n' 00:49:59.900189 Received DATA (on stdin) 00:49:59.900267 > 30 bytes data, server => client 00:49:59.900357 '230 Welcome you silly person\r\n' 00:49:59.994053 < 5 bytes data, client => server 00:49:59.994231 'PWD\r\n' 00:49:59.998110 Received DATA (on stdin) 00:49:59.998239 > 30 bytes data, server => client 00:49:59.998333 '257 "/" is current directory\r\n' 00:50:00.198412 < 13 bytes data, client => server 00:50:00.198627 'CWD blalbla\r\n' 00:50:00.199985 Received DATA (on stdin) 00:50:00.200071 > 29 bytes data, server => client 00:50:00.205356 '250 CWD command successful.\r\n' 00:50:00.257692 < 13 bytes data, client => server 00:50:00.257905 'CWD lululul\r\n' 00:50:00.259660 Received DATA (on stdin) 00:50:00.259747 > 29 bytes data, server => client 00:50:00.259835 '250 CWD command successful.\r\n' 00:50:00.337074 < 6 bytes data, client => server 00:50:00.337271 'EPSV\r\n' 00:50:00.402342 Received DATA (on stdin) 00:50:00.402485 > 39 bytes data, server => client 00:50:00.402605 '229 Entering Passive Mode (|||45689|)\r\n' 00:50:00.702430 < 8 bytes data, client => server 00:50:00.702586 'TYPE I\r\n' 00:50:00.702666 Received DATA (on stdin) 00:50:00.702729 > 33 bytes data, server => client 00:50:00.702812 '200 I modify TYPE as you wanted\r\n' 00:50:00.758145 < 10 bytes data, client => server 00:50:00.758314 'SIZE 138\r\n' 00:50:00.759846 Received DATA (on stdin) 00:50:00.759915 > 28 bytes data, server => client 00:50:00.759993 '500 command not understood\r\n' 00:50:00.816190 < 10 bytes data, client => server 00:50:00.816358 'RETR 138\r\n' 00:50:00.821436 Received DATA (on stdin) 00:50:00.821551 > 46 bytes data, server => client 00:50:00.821649 '150 Binary data connection for 138 () size?.\r\n' 00:50:00.828993 Received DATA (on stdin) 00:50:00.829119 > 28 bytes data, server => client 00:50:00.829206 '226 File transfer complete\r\n' 00:50:02.874506 < 6 bytes data, client => server 00:50:02.874717 'QUIT\r\n' 00:50:02.875861 Received DATA (on stdin) 00:50:02.875942 > 18 bytes data, server => client 00:50:02.881897 '221 bye bye baby\r\n' 00:50:03.007245 ====> Client disconnect 00:50:03.008600 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:49:11.642391 Running IPv4 version 00:49:11.650290 Listening on port 45927 00:49:11.650760 Wrote pid 208116 to log/7/server/ftp_sockdata.pid 00:49:11.651652 Received PING (on stdin) 00:49:11.652847 Received PORT (on stdin) 00:49:11.657182 ====> Client connect 00:49:11.662587 Received DATA (on stdin) 00:49:11.662872 > 18 bytes data, server => client 00:49:11.663223 'WE ROOLZ: 202639\r\n' 00:49:11.663448 Received DISC (on stdin) 00:49:11.663557 ====> Client forcibly disconnected 00:49:11.668611 Received QUIT (on stdin) 00:49:11.668695 quits 00:49:11.669179 ============> sockfilt quits 00:50:00.391460 Running IPv4 version 00:50:00.399195 Listening on port 45689 00:50:00.399687 Wrote pid 209402 to log/7/server/ftp_sockdata.pid 00:50:00.400456 Received PING (on stdin) 00:50:00.401327 Received PORT (on stdin) 00:50:00.581544 ====> Client connect 00:50:00.821797 Received DATA (on stdin) 00:50:00.822173 > 22 bytes data, server => client 00:50:00.822559 'this is file contents\n' 00:50:00.822809 Received DISC (on stdin) 00:50:00.822936 ====> Client forcibly disconnected 00:50:00.825336 Received QUIT (on stdin) 00:50:00.825433 quits 00:50:00.825970 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd RETRNOSIZE REPLY SIZE 500 command not understood Testnum 138 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD blalbla CWD lululul EPSV TYPE I SIZE 138 RETR 138 QUIT === End of file server.input === Start of file stderr138 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 22 0 22 0 0 4 0 --:--:-- 0:00:05 --:--:-- 5 100 22 0 22 0 0 3 0 --:--:-- 0:00:05 --:--:-- 4 === End of file stderr138 === Start of file trace138 00:49:58.466761 * Trying 127.0.0.1:45353... 00:49:59.422039 * Established connection to 127.0.0.1 (127.0.0.1 port 45353) from 127.0.0.1 port 55798 00:49:59.681017 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:50:00.046254 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:50:00.074239 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:50:00.080242 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:50:00.084978 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:50:00.190396 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:50:00.259389 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:50:00.282336 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:50:00.356733 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:50:00.377027 => Send header, 5 bytes (0x5) 0000: PWD 00:50:00.405900 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:50:00.444364 * Entry path is '/' 00:50:00.581423 => Send header, 13 bytes (0xd) 0000: CWD blalbla 00:50:00.596823 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:00.640684 => Send header, 13 bytes (0xd) 0000: CWD lululul 00:50:00.681695 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:00.720054 => Send header, 6 bytes (0x6) 0000: EPSV 00:50:00.736570 * Connect data stream passively 00:50:00.788363 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||45689|) 00:50:00.893253 * Connecting to 127.0.0.1 (127.0.0.1) port 45689 00:50:00.957521 * Trying 127.0.0.1:45689... 00:50:01.051363 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 45689) from 127.0.0.1 port 37432 00:50:01.085933 => Send header, 8 bytes (0x8) 0000: TYPE I 00:50:01.105227 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:50:01.138688 => Send header, 10 bytes (0xa) 0000: SIZE 138 00:50:01.169555 <= Recv header, 28 bytes (0x1c) 0000: 500 command not understood 00:50:01.202901 => Send header, 10 bytes (0xa) 0000: RETR 138 00:50:01.225263 <= Recv header, 46 bytes (0x2e) 0000: 150 Binary data connection for 138 () size?. 00:50:01.284482 * Maxdownload = -1 00:50:01.295677 * Getting file with size: -1 00:50:01.458763 <= Recv data, 22 bytes (0x16) 0000: this is file contents. 00:50:01.779750 * abort upload 00:50:01.805034 <= Recv data, 0 bytes (0x0) 00:50:01.992330 * Remembering we are in dir "blalbla/lululul/" 00:50:02.186042 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:50:02.492947 * Connection #0 to host 127.0.0.1:45353 left intact === End of file trace138 === Start of file valgrind138 ==208128== error caCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind139 ../src/curl -q --output log/8/curl139.out --include --trace-ascii log/8/trace139 --trace-time ftp://127.0.0.1:43843/blalbla/139 -z "1 jan 1989" > log/8/stdout139 2> log/8/stderr139 lling PR_SET_PTRACER, vgdb might block === End of file valgrind138 test 0139...[FTP download a newer file with -z] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind139 ../src/curl -q --output log/8/curl139.out --include --trace-ascii log/8/trace139 --trace-time ftp://127.0.0.1:43843/blalbla/139 -z "1 jan 1989" > log/8/stdout139 2> log/8/stderr139 valgrind ERROR ==208261== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 139 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind139 ../src/curl -q --output log/8/curl139.out --include --trace-ascii log/8/trace139 --trace-time ftp://127.0.0.1:43843/blalbla/139 -z "1 jan 1989" > log/8/stdout139 2> log/8/stderr139 === End of file commands.log === Start of file curl139.out this is file contents === End of file curl139.out === Start of file ftp_server.log 00:49:12.181073 ====> Client connect 00:49:12.182110 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:49:12.187953 < "USER anonymous" 00:49:12.188685 > "331 We are happy you popped in![CR][LF]" 00:49:12.192032 < "PASS ftp@example.com" 00:49:12.192505 > "230 Welcome you silly person[CR][LF]" 00:49:12.193856 < "PWD" 00:49:12.194487 > "257 "/" is current directory[CR][LF]" 00:49:12.196456 < "EPSV" 00:49:12.196673 ====> Passive DATA channel requested by client 00:49:12.196823 DATA sockfilt for passive data channel starting... 00:49:12.242081 DATA sockfilt for passive data channel started (pid 208212) 00:49:12.243342 DATA sockfilt for passive data channel listens on port 36493 00:49:12.243725 > "229 Entering Passive Mode (|||36493|)[CR][LF]" 00:49:12.243900 Client has been notified that DATA conn will be accepted on port 36493 00:49:12.247179 Client connects to port 36493 00:49:12.247454 ====> Client established passive DATA connection on port 36493 00:49:12.248448 < "TYPE I" 00:49:12.248761 > "200 I modify TYPE as you wanted[CR][LF]" 00:49:12.250115 < "SIZE verifiedserver" 00:49:12.250454 > "213 18[CR][LF]" 00:49:12.251975 < "RETR verifiedserver" 00:49:12.252564 > "150 Binary junk (18 bytes).[CR][LF]" 00:49:12.255549 =====> Closing passive DATA connection... 00:49:12.255722 Server disconnects passive DATA connection 00:49:12.256760 Server disconnected passive DATA connection 00:49:12.256932 DATA sockfilt for passive data channel quits (pid 208212) 00:49:12.263278 DATA sockfilt for passive data channel quit (pid 208212) 00:49:12.263541 =====> Closed passive DATA connection 00:49:12.263847 > "226 File transfer complete[CR][LF]" 00:49:12.311287 < "QUIT" 00:49:12.311720 > "221 bye bye baby[CR][LF]" 00:49:12.317707 MAIN sockfilt said DISC 00:49:12.318020 ====> Client disconnected 00:49:12.318318 Awaiting input 00:49:59.921047 ====> Client connect 00:49:59.921798 FTPD: Getting commands from log/8/server.cmd 00:49:59.922123 FTPD: run test case number: 139 00:49:59.923113 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:50:01.221966 < "USER anonymous" 00:50:01.222402 > "331 We are happy you popped in![CR][LF]" 00:50:01.326744 < "PASS ftp@example.com" 00:50:01.327179 > "230 Welcome you silly person[CR][LF]" 00:50:01.419472 < "PWD" 00:50:01.424469 > "257 "/" is current directory[CR][LF]" 00:50:01.619060 < "CWD blalbla" 00:50:01.619487 > "250 CWD command successful.[CR][LF]" 00:50:01.673279 < "MDTM 139" 00:50:01.681062 > "213 20030409102659[CR][LF]" 00:50:01.831145 < "EPSV" 00:50:01.831486 ====> Passive DATA channel requested by client 00:50:01.831643 DATA sockfilt for passive data channel starting... 00:50:01.892376 DATA sockfilt for passive data channel started (pid 209405) 00:50:01.893725 DATA sockfilt for passive data channel listens on port 41905 00:50:01.894059 > "229 Entering Passive Mode (|||41905|)[CR][LF]" 00:50:01.894228 Client has been notified that DATA conn will be accepted on port 41905 00:50:02.066935 Client connects to port 41905 00:50:02.067481 ====> Client established passive DATA connection on port 41905 00:50:02.178499 < "TYPE I" 00:50:02.178905 > "200 I modify TYPE as you wanted[CR][LF]" 00:50:02.226556 < "SIZE 139" 00:50:02.232451 > "213 22[CR][LF]" 00:50:02.308503 < "RETR 139" 00:50:02.310184 > "150 Binary data connection for 139 () (22 bytes).[CR][LF]" 00:50:02.310710 =====> Closing passive DATA connection... 00:50:02.310867 Server disconnects passive DATA connection 00:50:02.317942 Server disconnected passive DATA connection 00:50:02.318158 DATA sockfilt for passive data channel quits (pid 209405) 00:50:02.321488 DATA sockfilt for passive data channel quit (pid 209405) 00:50:02.321695 =====> Closed passive DATA connection 00:50:02.321986 > "226 File transfer complete[CR][LF]" 00:50:04.347648 < "QUIT" 00:50:04.348090 > "221 bye bye baby[CR][LF]" 00:50:04.487948 MAIN sockfilt said DISC 00:50:04.488431 ====> Client disconnected 00:50:04.488727 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:49:11.795492 ====> Client connect 00:49:11.799189 Received DATA (on stdin) 00:49:11.799320 > 160 bytes data, server => client 00:49:11.799441 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:11.799550 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:11.799642 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:49:11.804271 < 16 bytes data, client => server 00:49:11.804403 'USER anonymous\r\n' 00:49:11.805527 Received DATA (on stdin) 00:49:11.805611 > 33 bytes data, server => client 00:49:11.805719 '331 We are happy you popped in!\r\n' 00:49:11.808471 < 22 bytes data, client => server 00:49:11.808576 'PASS ftp@example.com\r\n' 00:49:11.809963 Received DATA (on stdin) 00:49:11.810041 > 30 bytes data, server => client 00:49:11.810130 '230 Welcome you silly person\r\n' 00:49:11.810449 < 5 bytes data, client => server 00:49:11.810518 'PWD\r\n' 00:49:11.811340 Received DATA (on stdin) 00:49:11.811412 > 30 bytes data, server => client 00:49:11.811531 '257 "/" is current directory\r\n' 00:49:11.813094 < 6 bytes data, client => server 00:49:11.813164 'EPSV\r\n' 00:49:11.861357 Received DATA (on stdin) 00:49:11.861527 > 39 bytes data, server => client 00:49:11.861631 '229 Entering Passive Mode (|||36493|)\r\n' 00:49:11.864963 < 8 bytes data, client => server 00:49:11.865051 'TYPE I\r\n' 00:49:11.866189 Received DATA (on stdin) 00:49:11.866262 > 33 bytes data, server => client 00:49:11.866348 '200 I modify TYPE as you wanted\r\n' 00:49:11.866785 < 21 bytes data, client => server 00:49:11.866862 'SIZE verifiedserver\r\n' 00:49:11.867974 Received DATA (on stdin) 00:49:11.868042 > 8 bytes data, server => client 00:49:11.868108 '213 18\r\n' 00:49:11.868657 < 21 bytes data, client => server 00:49:11.868738 'RETR verifiedserver\r\n' 00:49:11.869472 Received DATA (on stdin) 00:49:11.869539 > 29 bytes data, server => client 00:49:11.869638 '150 Binary junk (18 bytes).\r\n' 00:49:11.881293 Received DATA (on stdin) 00:49:11.881404 > 28 bytes data, server => client 00:49:11.881489 '226 File transfer complete\r\n' 00:49:11.927750 < 6 bytes data, client => server 00:49:11.927928 'QUIT\r\n' 00:49:11.931572 Received DATA (on stdin) 00:49:11.931663 > 18 bytes data, server => client 00:49:11.931743 '221 bye bye baby\r\n' 00:49:11.932357 ====> Client disconnect 00:49:11.938181 Received ACKD (on stdin) 00:49:59.537861 ====> Client connect 00:49:59.540136 Received DATA (on stdin) 00:49:59.540224 > 160 bytes data, server => client 00:49:59.540330 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:59.540432 ' \r\n220- CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind141 ../src/curl -q --include --trace-ascii log/6/trace141 --trace-time ftp://127.0.0.1:39413/blalbla/141 -I > log/6/stdout141 2> log/6/stderr141 / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:59.540520 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:50:00.835817 < 16 bytes data, client => server 00:50:00.835977 'USER anonymous\r\n' 00:50:00.839481 Received DATA (on stdin) 00:50:00.839591 > 33 bytes data, server => client 00:50:00.839686 '331 We are happy you popped in!\r\n' 00:50:00.942931 < 22 bytes data, client => server 00:50:00.943142 'PASS ftp@example.com\r\n' 00:50:00.944245 Received DATA (on stdin) 00:50:00.944323 > 30 bytes data, server => client 00:50:00.944411 '230 Welcome you silly person\r\n' 00:50:01.035402 < 5 bytes data, client => server 00:50:01.035600 'PWD\r\n' 00:50:01.036997 Received DATA (on stdin) 00:50:01.037072 > 30 bytes data, server => client 00:50:01.042076 '257 "/" is current directory\r\n' 00:50:01.235022 < 13 bytes data, client => server 00:50:01.235209 'CWD blalbla\r\n' 00:50:01.237189 Received DATA (on stdin) 00:50:01.237267 > 29 bytes data, server => client 00:50:01.237358 '250 CWD command successful.\r\n' 00:50:01.289144 < 10 bytes data, client => server 00:50:01.289371 'MDTM 139\r\n' 00:50:01.294763 Received DATA (on stdin) 00:50:01.294881 > 20 bytes data, server => client 00:50:01.298524 '213 20030409102659\r\n' 00:50:01.447104 < 6 bytes data, client => server 00:50:01.447293 'EPSV\r\n' 00:50:01.511125 Received DATA (on stdin) 00:50:01.511276 > 39 bytes data, server => client 00:50:01.511379 '229 Entering Passive Mode (|||41905|)\r\n' 00:50:01.793138 < 8 bytes data, client => server 00:50:01.793348 'TYPE I\r\n' 00:50:01.795972 Received DATA (on stdin) 00:50:01.796049 > 33 bytes data, server => client 00:50:01.796137 '200 I modify TYPE as you wanted\r\n' 00:50:01.842856 < 10 bytes data, client => server 00:50:01.843030 'SIZE 139\r\n' 00:50:01.849534 Received DATA (on stdin) 00:50:01.849642 > 8 bytes data, server => client 00:50:01.849716 '213 22\r\n' 00:50:01.921465 < 10 bytes data, client => server 00:50:01.921633 'RETR 139\r\n' 00:50:01.927267 Received DATA (on stdin) 00:50:01.927383 > 51 bytes data, server => client 00:50:01.927488 '150 Binary data connection for 139 () (22 bytes).\r\n' 00:50:01.939052 Received DATA (on stdin) 00:50:01.939164 > 28 bytes data, server => client 00:50:01.939252 '226 File transfer complete\r\n' 00:50:03.963792 < 6 bytes data, client => server 00:50:03.963956 'QUIT\r\n' 00:50:03.965146 Received DATA (on stdin) 00:50:03.965230 > 18 bytes data, server => client 00:50:03.965316 '221 bye bye baby\r\n' 00:50:04.104770 ====> Client disconnect 00:50:04.106042 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:49:12.849394 Running IPv4 version 00:49:12.857480 Listening on port 36493 00:49:12.857953 Wrote pid 208212 to log/8/server/ftp_sockdata.pid 00:49:12.858741 Received PING (on stdin) 00:49:12.859825 Received PORT (on stdin) 00:49:12.863261 ====> Client connect 00:49:12.871963 Received DATA (on stdin) 00:49:12.872293 > 18 bytes data, server => client 00:49:12.873379 'WE ROOLZ: 202642\r\n' 00:49:12.873651 Received DISC (on stdin) 00:49:12.873772 ====> Client forcibly disconnected 00:49:12.874372 Received QUIT (on stdin) 00:49:12.874448 quits 00:49:12.874987 ============> sockfilt quits 00:50:01.500776 Running IPv4 version 00:50:01.507950 Listening on port 41905 00:50:01.508426 Wrote pid 209405 to log/8/server/ftp_sockdata.pid 00:50:01.509138 Received PING (on stdin) 00:50:01.510195 Received PORT (on stdin) 00:50:01.683726 ====> Client connect 00:50:01.928110 Received DATA (on stdin) 00:50:01.928470 > 22 bytes data, server => client 00:50:01.928809 'this is file contents\n' 00:50:01.934906 Received DISC (on stdin) 00:50:01.935505 ====> Client forcibly disconnected 00:50:01.935685 Received QUIT (on stdin) 00:50:01.935759 quits 00:50:01.936264 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 139 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD blalbla MDTM 139 EPSV TYPE I SIZE 139 RETR 139 QUIT === End of file server.input === Start of file stderr139 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 22 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 22 100 22 0 0 3 0 0:00:07 0:00:05 0:00:02 5 === End of file stderr139 === Start of file trace139 00:49:59.590074 * Trying 127.0.0.1:43843... 00:50:00.502209 * Established connection to 127.0.0.1 (127.0.0.1 port 43843) from 127.0.0.1 port 44564 00:50:00.751758 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:50:01.094930 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:50:01.123693 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:50:01.130634 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:50:01.135683 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:50:01.238937 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:50:01.305310 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:50:01.327040 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:50:01.398117 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:50:01.418351 => Send header, 5 bytes (0x5) 0000: PWD 00:50:01.447255 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:50:01.483848 * Entry path is '/' 00:50:01.617977 => Send header, 13 bytes (0xd) 0000: CWD blalbla 00:50:01.631691 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:01.672099 => Send header, 10 bytes (0xa) 0000: MDTM 139 00:50:01.716744 <= Recv header, 20 bytes (0x14) 0000: 213 20030409102659 00:50:01.830053 => Send header, 6 bytes (0x6) 0000: EPSV 00:50:01.845005 * Connect data stream passively 00:50:01.900070 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||41905|) 00:50:01.999832 * Connecting to 127.0.0.1 (127.0.0.1) port 41905 00:50:02.059196 * Trying 127.0.0.1:41905... 00:50:02.144765 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 41905) from 127.0.0.1 port 35686 00:50:02.176100 => Send header, 8 bytes (0x8) 0000: TYPE I 00:50:02.195832 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:50:02.227800 => Send header, 10 bytes (0xa) 0000: SIZE 139 00:50:02.257767 <= Recv header, 8 bytes (0x8) 0000: 213 22 00:50:02.302996 => Send header, 10 bytes (0xa) 0000: RETR 139 00:50:02.325668 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 139 () (22 bytes). 00:50:02.368441 * Maxdownload = -1 00:50:02.378814 * Getting file with size: 22 00:50:02.583498 <= Recv data, 22 bytes (0x16) 0000: this is file contents. 00:50:02.879818 * abort upload 00:50:02.903749 <= Recv data, 0 bytes (0x0) 00:50:03.070075 * Remembering we are in dir "blalbla/" 00:50:03.283036 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:50:03.593929 * Connection #0 to host 127.0.0.1:43843 left intact === End of file trace139 === Start of file valgrind139 ==208261== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind139 test 0141...[FTP download info with -I] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind141 ../src/curl -q --include --trace-ascii log/6/trace141 --trace-time ftp://127.0.0.1:39413/blalbla/141 -I > log/6/stdout141 2> log/6/stderr141 valgrind ERROR ==208479== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 141 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind141 ../src/curl -q --include --trace-ascii log/6/trace141 --trace-time ftp://127.0.0.1:39413/blalbla/141 -I > log/6/stdout141 2> log/6/stderr141 === End of file commands.log === Start of file ftp_server.log 00:49:15.335996 ====> Client connect 00:49:15.337022 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:49:15.346831 < "USER anonymous" 00:49:15.347951 > "331 We are happy you popped in![CR][LF]" 00:49:15.348528 < "PASS ftp@example.com" 00:49:15.349354 > "230 Welcome you silly person[CR][LF]" 00:49:15.349859 < "PWD" 00:49:15.352317 > "257 "/" is current directory[CR][LF]" 00:49:15.353127 < "EPSV" 00:49:15.353366 ====> Passive DATA channel requested by client 00:49:15.353514 DATA sockfilt for passive data channel starting... 00:49:15.399717 DATA sockfilt for passive data channel started (pid 208467) 00:49:15.401084 DATA sockfilt for passive data channel listens on port 34081 00:49:15.401447 > "229 Entering Passive Mode (|||34081|)[CR][LF]" 00:49:15.401623 Client has been notified that DATA conn will be accepted on port 34081 00:49:15.404933 Client connects to port 34081 00:49:15.405219 ====> Client established passive DATA connection on port 34081 00:49:15.405890 < "TYPE I" 00:49:15.407085 > "200 I modify TYPE as you wanted[CR][LF]" 00:49:15.407636 < "SIZE verifiedserver" 00:49:15.408670 > "213 18[CR][LF]" 00:49:15.409169 < "RETR verifiedserver" 00:49:15.411067 > "150 Binary junk (18 bytes).[CR][LF]" 00:49:15.411721 =====> Closing passive DATA connection... 00:49:15.411897 Server disconnects passive DATA connection 00:49:15.412573 Server disconnected passive DATA connection 00:49:15.412760 DATA sockfilt for passive data channel quits (pid 208467) 00:49:15.417620 DATA sockfilt for passive data channel quit (pid 208467) 00:49:15.417830 =====> Closed passive DATA connection 00:49:15.418121 > "226 File transfer complete[CR][LF]" 00:49:15.461888 < "QUIT" 00:49:15.462284 > "221 bye bye baby[CR][LF]" 00:49:15.467175 MAIN sockfilt said DISC 00:49:15.467418 ====> Client disconnected 00:49:15.467725 Awaiting input 00:50:02.507979 ====> Client connect 00:50:02.508709 FTPD: Getting commands from log/6/server.cmd 00:50:02.509023 FTPD: run test case number: 141 00:50:02.509924 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:50:03.771315 < "USER anonymous" 00:50:03.771734 > "331 We are happy you popped in![CR][LF]" 00:50:03.885304 < "PASS ftp@example.com" 00:50:03.891098 > "230 Welcome you silly person[CR][LF]" 00:50:03.974104 < "PWD" 00:50:03.974560 > "257 "/" is current directory[CR][LF]" 00:50:04.167260 < "CWD blalbla" 00:50:04.167686 > "250 CWD command successful.[CR][LF]" 00:50:04.224814 < "MDTM 141" 00:50:04.231534 > "213 20030409102659[CR][LF]" 00:50:04.585984 < "TYPE I" 00:50:04.591103 > "200 I modify TYPE as you wanted[CR][LF]" 00:50:04.654333 < "SIZE 141" 00:50:04.656125 > "213 42[CR][LF]" 00:50:04.731790 < "REST 0" 00:50:04.737753 > "350 Yeah yeah we set it there for you[CR][LF]" 00:50:04.738067 Set REST position to 0 00:50:05.906378 < "QUIT" 00:50:05.906788 > "221 bye bye baby[CR][LF]" 00:50:06.146012 MAIN sockfilt said DISC 00:50:06.146551 ====> Client disconnected 00:50:06.146872 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:49:14.952896 ====> Client connect 00:49:14.958217 Received DATA (on stdin) 00:49:14.958362 > 160 bytes data, server => client 00:49:14.958470 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:14.958564 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:14.958648 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:49:14.962453 < 16 bytes data, client => server 00:49:14.962568 'USER anonymous\r\n' 00:49:14.964403 Received DATA (on stdin) 00:49:14.964477 > 33 bytes data, server => client 00:49:14.964584 '331 We are happy you popped in!\r\n' 00:49:14.964878 < 22 bytes data, client => server 00:49:14.964957 'PASS ftp@example.com\r\n' 00:49:14.965971 Received DATA (on stdin) 00:49:14.966040 > 30 bytes data, server => client 00:49:14.966139 '230 Welcome you silly person\r\n' 00:49:14.966377 < 5 bytes data, client => server 00:49:14.966442 'PWD\r\n' 00:49:14.967384 Received DATA (on stdin) 00:49:14.967456 > 30 bytes data, server => client 00:49:14.967558 '257 "/" is current directory\r\n' 00:49:14.969777 < 6 bytes data, client => server 00:49:14.969856 'EPSV\r\n' 00:49:15.019062 Received DATA (on stdin) 00:49:15.019206 > 39 bytes data, server => client 00:49:15.019299 '229 Entering Passive Mode (|||34081|)\r\n' 00:49:15.021951 < 8 bytes data, client => server 00:49:15.022034 'TYPE I\r\n' 00:49:15.023341 Received DATA (on stdin) 00:49:15.023413 > 33 bytes data, server => client 00:49:15.023625 '200 I modify TYPE as you wanted\r\n' 00:49:15.023995 < 21 bytes data, client => server 00:49:15.024069 'SIZE verifiedserver\r\n' 00:49:15.025123 Received DATA (on stdin) 00:49:15.025195 > 8 bytes data, server => client 00:49:15.025280 '213 18\r\n' 00:49:15.025700 < 21 bytes data, client => server 00:49:15.025774 'RETR verifiedserver\r\n' 00:49:15.026708 Received DATA (on stdin) 00:49:15.026774 > 29 bytes data, server => client 00:49:15.026871 '150 Binary junk (18 bytes).\r\n' 00:49:15.035290 Received DATA (on stdin) 00:49:15.035417 > 28 bytes data, server => client 00:49:15.035512 '226 File transfer complete\r\n' 00:49:15.078196 < 6 bytes data, client => server 00:49:15.078368 'QUIT\r\n' 00:49:15.079701 Received DATA (on stdin) 00:49:15.079773 > 18 bytes data, server => client 00:49:15.079844 '221 bye bye baby\r\n' 00:49:15.080366 ====> Client disconnect 00:49:15.084637 Received ACKD (on stdin) 00:50:02.124795 ====> Client connect 00:50:02.127260 Received DATA (on stdin) 00:50:02.127342 > 160 bytes data, server => client 00:50:02.127442 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:50:02.127533 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:50:02.127613 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:50:03.387111 < 16 bytes data, client => server 00:50:03.387318 'USER anonymous\r\n' 00:50:03.391425 Received DATA (on stdin) 00:50:03.391523 > 33 bytes data, server => client 00:50:03.391611 '331 We are happy you popped in!\r\n' 00:50:03.501285 < 22 bytes data, client => server 00:50:03.501480 'PASS ftp@example.com\r\n' 00:50:03.502774 Received DATA (on stdin) 00:50:03.502849 > 30 bytes data, server => client 00:50:03.508589 '230 Welcome you silly person\r\n' 00:50:03.590111 < 5 bytes data, client => server 00:50:03.590280 'PWD\r\n' 00:50:03.591882 Received DATA (on stdin) 00:50:03.591961 > 30 bytes data, server => client 00:50:03.592045 '257 "/" is current directory\r\n' 00:50:03.783203 < 13 bytes data, client => server 00:50:03.783407 'CWD blalbla\r\n' 00:50:03.785381 Received DATA (on stdin) 00:50:03.785463 > 29 bytes data, server => client 00:50:03.785552 '250 CWD command successful.\r\n' 00:50:03.840752 < 10 bytes data, client => server 00:50:03.840932 'MDTM 141\r\n' 00:50:03.848104 Received DATA (on stdin) 00:50:03.848242 > 20 bytes data, server => client 00:50:03.849067 '213 20030409102659\r\n' 00:50:04.201921 < 8 bytes data, client => server 00:50:04.202103 'TYPE I\r\n' 00:50:04.203464 Received DATA (on stdin) 00:50:04.203542 > 33 bytes data, server => client 00:50:04.208615 '200 I modify TYPE as you wanted\r\n' 00:50:04.270310 < 10 bytes data, client => server 00:50:04.270513 'SIZE 141\r\n' 00:50:04.273470 Received DATA (on stdin) 00:50:04.273563 > 8 bytes data, server => client 00:50:04.273632 '213 42\r\n' 00:50:04.347762 < 8 bytes data, client CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind140 ../src/curl -q --output log/4/curl140.out --include --trace-ascii log/4/trace140 --trace-time ftp://127.0.0.1:38207/blalbla/140 -z "1 jan 2004" > log/4/stdout140 2> log/4/stderr140 => server 00:50:04.347945 'REST 0\r\n' 00:50:04.349294 Received DATA (on stdin) 00:50:04.349365 > 39 bytes data, server => client 00:50:04.355405 '350 Yeah yeah we set it there for you\r\n' 00:50:05.522372 < 6 bytes data, client => server 00:50:05.522545 'QUIT\r\n' 00:50:05.524123 Received DATA (on stdin) 00:50:05.524196 > 18 bytes data, server => client 00:50:05.524273 '221 bye bye baby\r\n' 00:50:05.762807 ====> Client disconnect 00:50:05.764193 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:49:15.007905 Running IPv4 version 00:49:15.015364 Listening on port 34081 00:49:15.015817 Wrote pid 208467 to log/6/server/ftp_sockdata.pid 00:49:15.016562 Received PING (on stdin) 00:49:15.017635 Received PORT (on stdin) 00:49:15.021763 ====> Client connect 00:49:15.028607 Received DATA (on stdin) 00:49:15.029004 > 18 bytes data, server => client 00:49:15.029419 'WE ROOLZ: 201819\r\n' 00:49:15.029654 Received DISC (on stdin) 00:49:15.029772 ====> Client forcibly disconnected 00:49:15.031510 Received QUIT (on stdin) 00:49:15.031591 quits 00:49:15.032098 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 141 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD blalbla MDTM 141 TYPE I SIZE 141 REST 0 QUIT === End of file server.input === Start of file stderr141 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 42 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr141 === Start of file stdout141 Last-Modified: Wed, 09 Apr 2003 10:26:59 GMT Content-Length: 42 Accept-ranges: bytes === End of file stdout141 === Start of file trace141 00:50:02.184494 * Trying 127.0.0.1:39413... 00:50:03.059368 * Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 52154 00:50:03.318915 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:50:03.652191 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:50:03.676342 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:50:03.682652 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:50:03.687637 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:50:03.790317 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:50:03.865087 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:50:03.885265 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:50:03.953597 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:50:03.973053 => Send header, 5 bytes (0x5) 0000: PWD 00:50:03.989082 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:50:04.027191 * Entry path is '/' 00:50:04.166179 => Send header, 13 bytes (0xd) 0000: CWD blalbla 00:50:04.180228 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:04.223719 => Send header, 10 bytes (0xa) 0000: MDTM 141 00:50:04.271658 <= Recv header, 20 bytes (0x14) 0000: 213 20030409102659 00:50:04.584893 => Send header, 8 bytes (0x8) 0000: TYPE I 00:50:04.626028 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:50:04.653283 => Send header, 10 bytes (0xa) 0000: SIZE 141 00:50:04.664313 <= Recv header, 8 bytes (0x8) 0000: 213 42 00:50:04.730725 => Send header, 8 bytes (0x8) 0000: REST 0 00:50:04.740475 <= Recv header, 39 bytes (0x27) 0000: 350 Yeah yeah we set it there for you 00:50:04.895813 * Remembering we are in dir "blalbla/" 00:50:05.185313 * Connection #0 to host 127.0.0.1:39413 left intact === End of file trace141 === Start of file valgrind141 ==208479== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind141 test 0140...[FTP download file with -z, expected to not transfer] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind140 ../src/curl -q --output log/4/curl140.out --include --trace-ascii log/4/trace140 --trace-time ftp://127.0.0.1:38207/blalbla/140 -z "1 jan 2004" > log/4/stdout140 2> log/4/stderr140 valgrind ERROR ==208477== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 140 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind140 ../src/curl -q --output log/4/curl140.out --include --trace-ascii log/4/trace140 --trace-time ftp://127.0.0.1:38207/blalbla/140 -z "1 jan 2004" > log/4/stdout140 2> log/4/stderr140 === End of file commands.log === Start of file ftp_server.log 00:49:15.332159 ====> Client connect 00:49:15.333619 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:49:15.341389 < "USER anonymous" 00:49:15.342106 > "331 We are happy you popped in![CR][LF]" 00:49:15.345638 < "PASS ftp@example.com" 00:49:15.345976 > "230 Welcome you silly person[CR][LF]" 00:49:15.347297 < "PWD" 00:49:15.349747 > "257 "/" is current directory[CR][LF]" 00:49:15.350500 < "EPSV" 00:49:15.350699 ====> Passive DATA channel requested by client 00:49:15.350839 DATA sockfilt for passive data channel starting... 00:49:15.393683 DATA sockfilt for passive data channel started (pid 208465) 00:49:15.394946 DATA sockfilt for passive data channel listens on port 43317 00:49:15.395729 > "229 Entering Passive Mode (|||43317|)[CR][LF]" 00:49:15.395904 Client has been notified that DATA conn will be accepted on port 43317 00:49:15.398924 Client connects to port 43317 00:49:15.399189 ====> Client established passive DATA connection on port 43317 00:49:15.400123 < "TYPE I" 00:49:15.400413 > "200 I modify TYPE as you wanted[CR][LF]" 00:49:15.401702 < "SIZE verifiedserver" 00:49:15.402051 > "213 18[CR][LF]" 00:49:15.403585 < "RETR verifiedserver" 00:49:15.404396 > "150 Binary junk (18 bytes).[CR][LF]" 00:49:15.405028 =====> Closing passive DATA connection... 00:49:15.405204 Server disconnects passive DATA connection 00:49:15.420675 Server disconnected passive DATA connection 00:49:15.421162 DATA sockfilt for passive data channel quits (pid 208465) 00:49:15.424516 DATA sockfilt for passive data channel quit (pid 208465) 00:49:15.424725 =====> Closed passive DATA connection 00:49:15.425298 > "226 File transfer complete[CR][LF]" 00:49:15.452519 < "QUIT" 00:49:15.453114 > "221 bye bye baby[CR][LF]" 00:49:15.453669 MAIN sockfilt said DISC 00:49:15.453959 ====> Client disconnected 00:49:15.454217 Awaiting input 00:50:03.051062 ====> Client connect 00:50:03.051799 FTPD: Getting commands from log/4/server.cmd 00:50:03.052130 FTPD: run test case number: 140 00:50:03.053081 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:50:04.344574 < "USER anonymous" 00:50:04.345028 > "331 We are happy you popped in![CR][LF]" 00:50:04.468619 < "PASS ftp@example.com" 00:50:04.469038 > "230 Welcome you silly person[CR][LF]" 00:50:04.561493 < "PWD" 00:50:04.561962 > "257 "/" is current directory[CR][LF]" 00:50:04.758114 < "CWD blalbla" 00:50:04.758530 > "250 CWD command successful.[CR][LF]" 00:50:04.816778 < "MDTM 140" 00:50:04.824437 > "213 20030409102659[CR][LF]" 00:50:06.118503 < "QUIT" 00:50:06.119309 > "221 bye bye baby[CR][LF]" 00CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind142 ../src/curl -q --output log/1/curl142.out --include --trace-ascii log/1/trace142 --trace-time ftp://127.0.0.1:37481/part1/part2/part3/part4/part5/part6/part7/part8/part9/part10/part11/part12/part13/part14/part15/part16/part17/part18/part19/part20/part21/part22/part23/part24/part25/part26/part27/part28/part29/part30/part31/part32/part33/part34/part35/part36/part37/part38/part39/part40/part41/part42/part43/part44/part45/part46/part47/part48/part49/part50/part51/part52/part53/part54/part55/part56/part57/part58/part59/part60/part61/part62/part63/part64/part65/part66/part67/part68/part69/part70/part71/part72/part73/part74/part75/part76/part77/part78/part79/part80/part81/part82/part83/part84/part85/part86/part87/part88/part89/part90/part91/part92/part93/part94/part95/part96/part97/part98/part99/part100/part101/part102/part103/part104/part105/part106/part107/part108/part109/part110/part111/part112/part113/part114/part115/part116/part117/part118/part119/part120/part121/part122/part123/part124/part125/part126/part127/part128/part129/part130/part131/part132/part133/part134/part135/part136/part137/part138/part139/part140/part141/part142/part143/part144/part145/part146/part147/part148/part149/part150/142 > log/1/stdout142 2> log/1/stderr142 :50:06.442604 MAIN sockfilt said DISC 00:50:06.443303 ====> Client disconnected 00:50:06.443603 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:49:14.948995 ====> Client connect 00:49:14.950212 Received DATA (on stdin) 00:49:14.950291 > 160 bytes data, server => client 00:49:14.950412 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:14.950509 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:14.950592 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:49:14.957670 < 16 bytes data, client => server 00:49:14.957822 'USER anonymous\r\n' 00:49:14.958952 Received DATA (on stdin) 00:49:14.959039 > 33 bytes data, server => client 00:49:14.959154 '331 We are happy you popped in!\r\n' 00:49:14.962108 < 22 bytes data, client => server 00:49:14.962220 'PASS ftp@example.com\r\n' 00:49:14.963490 Received DATA (on stdin) 00:49:14.963559 > 30 bytes data, server => client 00:49:14.963638 '230 Welcome you silly person\r\n' 00:49:14.963971 < 5 bytes data, client => server 00:49:14.964045 'PWD\r\n' 00:49:14.964753 Received DATA (on stdin) 00:49:14.964818 > 30 bytes data, server => client 00:49:14.964934 '257 "/" is current directory\r\n' 00:49:14.967196 < 6 bytes data, client => server 00:49:14.967265 'EPSV\r\n' 00:49:15.012481 Received DATA (on stdin) 00:49:15.012622 > 39 bytes data, server => client 00:49:15.012733 '229 Entering Passive Mode (|||43317|)\r\n' 00:49:15.016651 < 8 bytes data, client => server 00:49:15.016749 'TYPE I\r\n' 00:49:15.017828 Received DATA (on stdin) 00:49:15.017899 > 33 bytes data, server => client 00:49:15.017982 '200 I modify TYPE as you wanted\r\n' 00:49:15.018384 < 21 bytes data, client => server 00:49:15.018462 'SIZE verifiedserver\r\n' 00:49:15.019580 Received DATA (on stdin) 00:49:15.019651 > 8 bytes data, server => client 00:49:15.019718 '213 18\r\n' 00:49:15.020235 < 21 bytes data, client => server 00:49:15.020316 'RETR verifiedserver\r\n' 00:49:15.021088 Received DATA (on stdin) 00:49:15.021161 > 29 bytes data, server => client 00:49:15.021265 '150 Binary junk (18 bytes).\r\n' 00:49:15.042189 Received DATA (on stdin) 00:49:15.042328 > 28 bytes data, server => client 00:49:15.042740 '226 File transfer complete\r\n' 00:49:15.068845 < 6 bytes data, client => server 00:49:15.068962 'QUIT\r\n' 00:49:15.070023 Received DATA (on stdin) 00:49:15.070089 > 18 bytes data, server => client 00:49:15.070179 '221 bye bye baby\r\n' 00:49:15.070788 ====> Client disconnect 00:49:15.071046 Received ACKD (on stdin) 00:50:02.662432 ====> Client connect 00:50:02.670427 Received DATA (on stdin) 00:50:02.670535 > 160 bytes data, server => client 00:50:02.670648 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:50:02.670750 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:50:02.670841 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:50:03.961438 < 16 bytes data, client => server 00:50:03.961628 'USER anonymous\r\n' 00:50:03.962077 Received DATA (on stdin) 00:50:03.962161 > 33 bytes data, server => client 00:50:03.962266 '331 We are happy you popped in!\r\n' 00:50:04.084804 < 22 bytes data, client => server 00:50:04.085032 'PASS ftp@example.com\r\n' 00:50:04.086091 Received DATA (on stdin) 00:50:04.086177 > 30 bytes data, server => client 00:50:04.086278 '230 Welcome you silly person\r\n' 00:50:04.177391 < 5 bytes data, client => server 00:50:04.177575 'PWD\r\n' 00:50:04.179010 Received DATA (on stdin) 00:50:04.179103 > 30 bytes data, server => client 00:50:04.179205 '257 "/" is current directory\r\n' 00:50:04.374088 < 13 bytes data, client => server 00:50:04.374265 'CWD blalbla\r\n' 00:50:04.378090 Received DATA (on stdin) 00:50:04.378193 > 29 bytes data, server => client 00:50:04.378287 '250 CWD command successful.\r\n' 00:50:04.432766 < 10 bytes data, client => server 00:50:04.432947 'MDTM 140\r\n' 00:50:04.438088 Received DATA (on stdin) 00:50:04.438209 > 20 bytes data, server => client 00:50:04.441974 '213 20030409102659\r\n' 00:50:05.734246 < 6 bytes data, client => server 00:50:05.734474 'QUIT\r\n' 00:50:05.736015 Received DATA (on stdin) 00:50:05.736099 > 18 bytes data, server => client 00:50:05.736238 '221 bye bye baby\r\n' 00:50:06.059400 ====> Client disconnect 00:50:06.060232 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:49:15.001436 Running IPv4 version 00:49:15.009304 Listening on port 43317 00:49:15.009755 Wrote pid 208465 to log/4/server/ftp_sockdata.pid 00:49:15.010512 Received PING (on stdin) 00:49:15.011430 Received PORT (on stdin) 00:49:15.015135 ====> Client connect 00:49:15.023604 Received DATA (on stdin) 00:49:15.023988 > 18 bytes data, server => client 00:49:15.024413 'WE ROOLZ: 201673\r\n' 00:49:15.024692 Received DISC (on stdin) 00:49:15.024818 ====> Client forcibly disconnected 00:49:15.038565 Received QUIT (on stdin) 00:49:15.038714 quits 00:49:15.039235 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 140 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD blalbla MDTM 140 QUIT === End of file server.input === Start of file stderr140 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr140 === Start of file trace140 00:50:02.725834 * Trying 127.0.0.1:38207... 00:50:03.605765 * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 54192 00:50:03.855519 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:50:04.213821 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:50:04.244982 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:50:04.252460 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:50:04.258144 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:50:04.366015 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:50:04.444194 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:50:04.466113 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:50:04.540249 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:50:04.561135 => Send header, 5 bytes (0x5) 0000: PWD 00:50:04.579934 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:50:04.617940 * Entry path is '/' 00:50:04.759007 => Send header, 13 bytes (0xd) 0000: CWD blalbla 00:50:04.773775 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:04.819185 => Send header, 10 bytes (0xa) 0000: MDTM 140 00:50:04.866934 <= Recv header, 20 bytes (0x14) 0000: 213 20030409102659 00:50:04.967454 * The requested document is not new enough 00:50:05.104974 * Remembering we are in dir "blalbla/" 00:50:05.384150 * Connection #0 to host 127.0.0.1:38207 left intact === End of file trace140 === Start of file valgrind140 ==208477== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind140 test 0142...[FTP URL with 150 dir levels] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind142 ../src/curl -q --output log/1/curl142.out --include --trace-ascii log/1/trace142 --trace-time ftp://127.0.0.1:37481/part1/part2/part3/part4/part5/part6/part7/part8/part9/part10/part11/part12/part13/part14/part15/part16/part17/part18/part19/part20/part21/part22/part23/part24/part25/part26/part27/part28/part29/part30/part31/part32/part33/part34/part35/part36/part37/part38/part39/part40/part41/part42/part43/part44/part45/part46/part47/part48/part49/part50/part51/part52/part53/part54/part55/part56/part57/part58/part59/part60/part61/part62/part63/part64/part65/part66/part67/part68/part69/part70/part71/part72/part73/part74/part75/part76/part77/part78/part79/part80/part81/part82/part83/part84/part85/part86/part87/part88/part89/part90/part91/part92/part93/part94/part95/part96/part97/part98/part99/part100/part101/part102/part103/part104/part105/part106/part107/part108/part109/part110/part111/part112/part113/part114/part115/part116/part117/part118/part119/part120/part121/part122/part123/part124/part125/part126/part127/part128/part129/part130/part131/part132/part133/part134/part135/part136/part137/part138/part139/part140/part141/part142/part143/part144/part145/part146/part147/part148/part149/part150/142 > log/1/stdout142 2> log/1/stderr142 valgrind ERROR ==208749== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 142 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind142 ../src/curl -q --output log/1/curl142.out --include --trace-ascii log/1/trace142 --trace-time ftp://127.0.0.1:37481/part1/part2/part3/part4/part5/part6/part7/part8/part9/part10/part11/part12/part13/part14/part15/part16/part17/part18/part19/part20/part21/part22/part23/part24/part25/part26/part27/part28/part29/part30/part31/part32/part33/part34/part35/part36/part37/part38/part39/part40/part41/part42/part43/part44/part45/part46/part47/part48/part49/part50/part51/part52/part53/part54/part55/part56/part57/part58/part59/part60/part61/part62/part63/part64/part65/part66/part67/part68/part69/part70/part71/part72/part73/part74/part75/part76/part77/part78/part79/part80/part81/part82/part83/part84/part85/part86/part87/part88/part89/part90/part91/part92/part93/part94/part95/part96/part97/part98/part99/part100/part101/part102/part103/part104/part105/part106/part107/part108/part109/part110/part111/part112/part113/part114/part115/part116/part117/part118/part119/part120/part121/part122/part123/part124/part125/part126/part127/part128/part129/part130/part131/part132/part133/part134/part135/part136/part137/part138/part139/part140/part141/part142/part143/part144/part145/part146/part147/part148/part149/part150/142 > log/1/stdout142 2> log/1/stderr142 === End of file commands.log === Start of file curl142.out many parts there are === End of file curl142.out === Start of file ftp_server.log 00:49:20.955340 ====> Client connect 00:49:20.978564 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:49:20.983126 < "USER anonymous" 00:49:20.983425 > "331 We are happy you popped in![CR][LF]" 00:49:20.984799 < "PASS ftp@example.com" 00:49:20.985062 > "230 Welcome you silly person[CR][LF]" 00:49:20.986104 < "PWD" 00:49:20.986359 > "257 "/" is current directory[CR][LF]" 00:49:20.988903 < "EPSV" 00:49:20.989096 ====> Passive DATA channel requested by client 00:49:20.989234 DATA sockfilt for passive data channel starting... 00:49:21.033018 DATA sockfilt for passive data channel started (pid 208737) 00:49:21.034399 DATA sockfilt for passive data channel listens on port 42059 00:49:21.037175 > "229 Entering Passive Mode (|||42059|)[CR][LF]" 00:49:21.037345 Client has been notified that DATA conn will be accepted on port 42059 00:49:21.037934 Client connects to port 42059 00:49:21.038131 ====> Client established passive DATA connection on port 42059 00:49:21.038702 < "TYPE I" 00:49:21.039670 > "200 I modify TYPE as you wanted[CR][LF]" 00:49:21.040159 < "SIZE verifiedserver" 00:49:21.041039 > "213 18[CR][LF]" 00:49:21.041694 < "RETR verifiedserver" 00:49:21.043908 > "150 Binary junk (18 bytes).[CR][LF]" 00:49:21.044806 =====> Closing passive DATA connection... 00:49:21.044961 Server disconnects passive DATA connection 00:49:21.045838 Server disconnected passive DATA connection 00:49:21.045992 DATA sockfilt for passive data channel quits (pid 208737) 00:49:21.052182 DATA sockfilt for passive data channel quit (pid 208737) 00:49:21.052391 =====> Closed passive DATA connection 00:49:21.052650 > "226 File transfer complete[CR][LF]" 00:49:21.094695 < "QUIT" 00:49:21.095007 > "221 bye bye baby[CR][LF]" 00:49:21.101352 MAIN sockfilt said DISC 00:49:21.101558 ====> Client disconnected 00:49:21.101820 Awaiting input 00:50:08.667736 ====> Client connect 00:50:08.668511 FTPD: Getting commands from log/1/server.cmd 00:50:08.668847 FTPD: run test case number: 142 00:50:08.670906 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:50:10.085139 < "USER anonymous" 00:50:10.091093 > "331 We are happy you popped in![CR][LF]" 00:50:10.207329 < "PASS ftp@example.com" 00:50:10.207835 > "230 Welcome you silly person[CR][LF]" 00:50:10.303680 < "PWD" 00:50:10.304629 > "257 "/" is current directory[CR][LF]" 00:50:10.521498 < "CWD part1" 00:50:10.522433 > "250 CWD command successful.[CR][LF]" 00:50:10.582579 < "CWD part2" 00:50:10.583146 > "250 CWD command successful.[CR][LF]" 00:50:10.650402 < "CWD part3" 00:50:10.650880 > "250 CWD command successful.[CR][LF]" 00:50:10.684346 < "CWD part4" 00:50:10.687714 > "250 CWD command successful.[CR][LF]" 00:50:10.695400 < "CWD part5" 00:50:10.695835 > "250 CWD command successful.[CR][LF]" 00:50:10.708661 < "CWD part6" 00:50:10.709411 > "250 CWD command successful.[CR][LF]" 00:50:10.717595 < "CWD part7" 00:50:10.718374 > "250 CWD command successful.[CR][LF]" 00:50:10.728362 < "CWD part8" 00:50:10.729213 > "250 CWD command successful.[CR][LF]" 00:50:10.741851 < "CWD part9" 00:50:10.742306 > "250 CWD command successful.[CR][LF]" 00:50:10.754466 < "CWD part10" 00:50:10.761047 > "250 CWD command successful.[CR][LF]" 00:50:10.762836 < "CWD part11" 00:50:10.763159 > "250 CWD command successful.[CR][LF]" 00:50:10.775077 < "CWD part12" 00:50:10.775558 > "250 CWD command successful.[CR][LF]" 00:50:10.787605 < "CWD part13" 00:50:10.788016 > "250 CWD command successful.[CR][LF]" 00:50:10.799490 < "CWD part14" 00:50:10.799865 > "250 CWD command successful.[CR][LF]" 00:50:10.814851 < "CWD part15" 00:50:10.815282 > "250 CWD command successful.[CR][LF]" 00:50:10.825021 < "CWD part16" 00:50:10.825457 > "250 CWD command successful.[CR][LF]" 00:50:10.833473 < "CWD part17" 00:50:10.833819 > "250 CWD command successful.[CR][LF]" 00:50:10.842010 < "CWD part18" 00:50:10.842713 > "250 CWD command successful.[CR][LF]" 00:50:10.850167 < "CWD part19" 00:50:10.850532 > "250 CWD command successful.[CR][LF]" 00:50:10.861704 < "CWD part20" 00:50:10.862099 > "250 CWD command successful.[CR][LF]" 00:50:10.873474 < "CWD part21" 00:50:10.873850 > "250 CWD command successful.[CR][LF]" 00:50:10.892266 < "CWD part22" 00:50:10.892700 > "250 CWD command successful.[CR][LF]" 00:50:10.901603 < "CWD part23" 00:50:10.901983 > "250 CWD command successful.[CR][LF]" 00:50:10.914951 < "CWD part24" 00:50:10.915335 > "250 CWD command successful.[CR][LF]" 00:50:10.924939 < "CWD part25" 00:50:10.925279 > "250 CWD command successful.[CR][LF]" 00:50:10.936234 < "CWD part26" 00:50:10.936658 > "250 CWD command successful.[CR][LF]" 00:50:10.945367 < "CWD part27" 00:50:10.945743 > "250 CWD command successful.[CR][LF]" 00:50:10.961769 < "CWD part28" 00:50:10.962188 > "250 CWD command successful.[CR][LF]" 00:50:10.978064 < "CWD part29" 00:50:10.978772 > "250 CWD command successful.[CR][LF]" 00:50:10.985124 < "CWD part30" 00:50:10.985720 > "250 CWD command successful.[CR][LF]" 00:50:10.995474 < "CWD part31" 00:50:10.995825 > "250 CWD command successful.[CR][LF]" 00:50:11.012399 < "CWD part32" 00:50:11.012976 > "250 CWD command successful.[CR][LF]" 00:50:11.026947 < "CWD part33" 00:50:11.027894 > "250 CWD command successful.[CR][LF]" 00:50:11.039204 < "CWD part34" 00:50:11.041121 > "250 CWD command successful.[CR][LF]" 00:50:11.050145 < "CWD part35" 00:50:11.050517 > "250 CWD command successful.[CR][LF]" 00:50:11.063954 < "CWD part36" 00:50:11.067833 > "250 CWD command successful.[CR][LF]" 00:50:11.072175 < "CWD part37" 00:50:11.072501 > "250 CWD command successful.[CR][LF]" 00:50:11.084541 < "CWD part38" 00:50:11.084978 > "250 CWD command successful.[CR][LF]" 00:50:11.096572 < "CWD part39" 00:50:11.096993 > "250 CWD command successful.[CR][LF]" 00:50:11.109975 < "CWD part40" 00:50:11.110425 > "250 CWD command successful.[CR][LF]" 00:50:11.119067 < "CWD part41" 00:50:11.119741 > "250 CWD command successful.[CR][LF]" 00:50:11.129792 < "CWD part42" 00:50:11.130204 > "250 CWD command successful.[CR][LF]" 00:50:11.140545 < "CWD part43" 00:50:11.141298 > "250 CWD command successful.[CR][LF]" 00:50:11.149357 < "CWD part44" 00:50:11.152083 > "250 CWD command successful.[CR][LF]" 00:50:11.161531 < "CWD part45" 00:50:11.161883 > "250 CWD command successful.[CR][LF]" 00:50:11.170659 < "CWD part46" 00:50:11.171049 > "250 CWD command successful.[CR][LF]" 00:50:11.185685 < "CWD part47" 00:50:11.186492 > "250 CWD command successful.[CR][LF]" 00:50:11.195060 < "CWD part48" 00:50:11.200204 > "250 CWD command successful.[CR][LF]" 00:50:11.209197 < "CWD part49" 00:50:11.209645 > "250 CWD command successful.[CR][LF]" 00:50:11.225483 < "CWD part50" 00:50:11.226258 > "250 CWD command successful.[CR][LF]" 00:50:11.242299 < "CWD part51" 00:50:11.243124 > "250 CWD command successful.[CR][LF]" 00:50:11.253062 < "CWD part52" 00:50:11.253467 > "250 CWD command successful.[CR][LF]" 00:50:11.268067 < "CWD part53" 00:50:11.268806 > "250 CWD command successful.[CR][LF]" 00:50:11.281189 < "CWD part54" 00:50:11.281922 > "250 CWD command successful.[CR][LF]" 00:50:11.293635 < "CWD part55" 00:50:11.294885 > "250 CWD command successful.[CR][LF]" 00:50:11.308645 < "CWD part56" 00:50:11.309084 > "250 CWD command successful.[CR][LF]" 00:50:11.321902 < "CWD part57" 00:50:11.322317 > "250 CWD command successful.[CR][LF]" 00:50:11.328946 < "CWD part58" 00:50:11.329320 > "250 CWD command successful.[CR][LF]" 00:50:11.336219 < "CWD part59" 00:50:11.336560 > "250 CWD command successful.[CR][LF]" 00:50:11.345401 < "CWD part60" 00:50:11.345769 > "250 CWD command successful.[CR][LF]" 00:50:11.359078 < "CWD part61" 00:50:11.359546 > "250 CWD command successful.[CR][LF]" 00:50:11.368326 < "CWD part62" 00:50:11.368732 > "250 CWD command successful.[CR][LF]" 00:50:11.380865 < "CWD part63" 00:50:11.381245 > "250 CWD command successful.[CR][LF]" 00:50:11.401132 < "CWD part64" 00:50:11.401532 > "250 CWD command successful.[CR][LF]" 00:50:11.416802 < "CWD part65" 00:50:11.417283 > "250 CWD command successful.[CR][LF]" 00:50:11.428360 < "CWD part66" 00:50:11.428760 > "250 CWD command successful.[CR][LF]" 00:50:11.442006 < "CWD part67" 00:50:11.445718 > "250 CWD command successful.[CR][LF]" 00:50:11.454249 < "CWD part68" 00:50:11.454748 > "250 CWD command successful.[CR][LF]" 00:50:11.466141 < "CWD part69" 00:50:11.466512 > "250 CWD command successful.[CR][LF]" 00:50:11.478022 < "CWD part70" 00:50:11.478800 > "250 CWD command successful.[CR][LF]" 00:50:11.490348 < "CWD part71" 00:50:11.491163 > "250 CWD command successful.[CR][LF]" 00:50:11.502239 < "CWD part72" 00:50:11.506077 > "250 CWD command successful.[CR][LF]" 00:50:11.513765 < "CWD part73" 00:50:11.514151 > "250 CWD command successful.[CR][LF]" 00:50:11.525368 < "CWD part74" 00:50:11.526609 > "250 CWD command successful.[CR][LF]" 00:50:11.536926 < "CWD part75" 00:50:11.537308 > "250 CWD command successful.[CR][LF]" 00:50:11.547931 < "CWD part76" 00:50:11.548614 > "250 CWD command successful.[CR][LF]" 00:50:11.556558 < "CWD part77" 00:50:11.559162 > "250 CWD command successful.[CR][LF]" 00:50:11.568306 < "CWD part78" 00:50:11.568680 > "250 CWD command successful.[CR][LF]" 00:50:11.578151 < "CWD part79" 00:50:11.578475 > "250 CWD command successful.[CR][LF]" 00:50:11.588145 < "CWD part80" 00:50:11.588462 > "250 CWD command successful.[CR][LF]" 00:50:11.596388 < "CWD part81" 00:50:11.596892 > "250 CWD command successful.[CR][LF]" 00:50:11.611822 < "CWD part82" 00:50:11.612226 > "250 CWD command successful.[CR][LF]" 00:50:11.621568 < "CWD part83" 00:50:11.621907 > "250 CWD command successful.[CR][LF]" 00:50:11.630490 < "CWD part84" 00:50:11.630874 > "250 CWD command successful.[CR][LF]" 00:50:11.641752 < "CWD part85" 00:50:11.642322 > "250 CWD command successful.[CR][LF]" 00:50:11.655104 < "CWD part86" 00:50:11.655517 > "250 CWD command successful.[CR][LF]" 00:50:11.665033 < "CWD part87" 00:50:11.665424 > "250 CWD command successful.[CR][LF]" 00:50:11.675174 < "CWD part88" 00:50:11.675607 > "250 CWD command successful.[CR][LF]" 00:50:11.687183 < "CWD part89" 00:50:11.691030 > "250 CWD command successful.[CR][LF]" 00:50:11.694742 < "CWD part90" 00:50:11.695020 > "250 CWD command successful.[CR][LF]" 00:50:11.705190 < "CWD part91" 00:50:11.705487 > "250 CWD command successful.[CR][LF]" 00:50:11.717484 < "CWD part92" 00:50:11.721050 > "250 CWD command successful.[CR][LF]" 00:50:11.730410 < "CWD part93" 00:50:11.730755 > "250 CWD command successful.[CR][LF]" 00:50:11.739164 < "CWD part94" 00:50:11.739569 > "250 CWD command successful.[CR][LF]" 00:50:11.748717 < "CWD part95" 00:50:11.749040 > "250 CWD command successful.[CR][LF]" 00:50:11.758819 < "CWD part96" 00:50:11.759171 > "250 CWD command successful.[CR][LF]" 00:50:11.771670 < "CWD part97" 00:50:11.772051 > "250 CWD command successful.[CR][LF]" 00:50:11.781802 < "CWD part98" 00:50:11.782232 > "250 CWD command successful.[CR][LF]" 00:50:11.790489 < "CWD part99" 00:50:11.790903 > "250 CWD command successful.[CR][LF]" 00:50:11.801458 < "CWD part100" 00:50:11.801767 > "250 CWD command successful.[CR][LF]" 00:50:11.809765 < "CWD part101" 00:50:11.810075 > "250 CWD command successful.[CR][LF]" 00:50:11.821428 < "CWD part102" 00:50:11.821725 > "250 CWD command successful.[CR][LF]" 00:50:11.831460 < "CWD part103" 00:50:11.831766 > "250 CWD command successful.[CR][LF]" 00:50:11.841569 < "CWD part104" 00:50:11.841951 > "250 CWD command successful.[CR][LF]" 00:50:11.854540 < "CWD part105" 00:50:11.854965 > "250 CWD command successful.[CR][LF]" 00:50:11.869816 < "CWD part106" 00:50:11.870249 > "250 CWD command successful.[CR][LF]" 00:50:11.891718 < "CWD part107" 00:50:11.892113 > "250 CWD command successful.[CR][LF]" 00:50:11.908303 < "CWD part108" 00:50:11.908659 > "250 CWD command successful.[CR][LF]" 00:50:11.916685 < "CWD part109" 00:50:11.917025 > "250 CWD command successful.[CR][LF]" 00:50:11.930355 < "CWD part110" 00:50:11.934479 > "250 CWD command successful.[CR][LF]" 00:50:11.939389 < "CWD part111" 00:50:11.939746 > "250 CWD command successful.[CR][LF]" 00:50:11.950820 < "CWD part112" 00:50:11.951204 > "250 CWD command successful.[CR][LF]" 00:50:11.963581 < "CWD part113" 00:50:11.967827 > "250 CWD command successful.[CR][LF]" 00:50:11.976587 < "CWD part114" 00:50:11.977019 > "250 CWD command successful.[CR][LF]" 00:50:11.987798 < "CWD part115" 00:50:11.988234 > "250 CWD command successful.[CR][LF]" 00:50:11.997841 < "CWD part116" 00:50:11.998170 > "250 CWD command successful.[CR][LF]" 00:50:12.012415 < "CWD part117" 00:50:12.012812 > "250 CWD command successful.[CR][LF]" 00:50:12.021101 < "CWD part118" 00:50:12.021462 > "250 CWD command successful.[CR][LF]" 00:50:12.031948 < "CWD part119" 00:50:12.032381 > "250 CWD command successful.[CR][LF]" 00:50:12.045233 < "CWD part120" 00:50:12.045678 > "250 CWD command successful.[CR][LF]" 00:50:12.053953 < "CWD part121" 00:50:12.054365 > "250 CWD command successful.[CR][LF]" 00:50:12.065078 < "CWD part122" 00:50:12.065521 > "250 CWD command successful.[CR][LF]" 00:50:12.078363 < "CWD part123" 00:50:12.078736 > "250 CWD command successful.[CR][LF]" 00:50:12.088329 < "CWD part124" 00:50:12.088731 > "250 CWD command successful.[CR][LF]" 00:50:12.095909 < "CWD part125" 00:50:12.096275 > "250 CWD command successful.[CR][LF]" 00:50:12.108316 < "CWD part126" 00:50:12.108702 > "250 CWD command successful.[CR][LF]" 00:50:12.115875 < "CWD part127" 00:50:12.116223 > "250 CWD command successful.[CR][LF]" 00:50:12.128488 < "CWD part128" 00:50:12.128953 > "250 CWD command successful.[CR][LF]" 00:50:12.137428 < "CWD part129" 00:50:12.141426 > "250 CWD command successful.[CR][LF]" 00:50:12.151730 < "CWD part130" 00:50:12.152131 > "250 CWD command successful.[CR][LF]" 00:50:12.161674 < "CWD part131" 00:50:12.162054 > "250 CWD command successful.[CR][LF]" 00:50:12.171672 < "CWD part132" 00:50:12.172082 > "250 CWD command successful.[CR][LF]" 00:50:12.179580 < "CWD part133" 00:50:12.179939 > "250 CWD command successful.[CR][LF]" 00:50:12.198987 < "CWD part134" 00:50:12.199523 > "250 CWD command successful.[CR][LF]" 00:50:12.210814 < "CWD part135" 00:50:12.211189 > "250 CWD command successful.[CR][LF]" 00:50:12.235184 < "CWD part136" 00:50:12.235705 > "250 CWD command successful.[CR][LF]" 00:50:12.251736 < "CWD part137" 00:50:12.252145 > "250 CWD command successful.[CR][LF]" 00:50:12.259977 < "CWD part138" 00:50:12.260343 > "250 CWD command successful.[CR][LF]" 00:50:12.273355 < "CWD part139" 00:50:12.273782 > "250 CWD command successful.[CR][LF]" 00:50:12.284936 < "CWD part140" 00:50:12.285314 > "250 CWD command successful.[CR][LF]" 00:50:12.298271 < "CWD part141" 00:50:12.298647 > "250 CWD command successful.[CR][LF]" 00:50:12.308200 < "CWD part142" 00:50:12.308541 > "250 CWD command successful.[CR][LF]" 00:50:12.316358 < "CWD part143" 00:50:12.316749 > "250 CWD command successful.[CR][LF]" 00:50:12.328254 < "CWD part144" 00:50:12.328665 > "250 CWD command successful.[CR][LF]" 00:50:12.341507 < "CWD part145" 00:50:12.341839 > "250 CWD command successful.[CR][LF]" 00:50:12.351471 < "CWD part146" 00:50:12.351769 > "250 CWD command successful.[CR][LF]" 00:50:12.359077 < "CWD part147" 00:50:12.359376 > "250 CWD command successful.[CR][LF]" 00:50:12.371465 < "CWD part148" 00:50:12.371781 > "250 CWD command successful.[CR][LF]" 00:50:12.379558 < "CWD part149" 00:50:12.379865 > "250 CWD command successful.[CR][LF]" 00:50:12.411490 < "CWD part150" 00:50:12.411930 > "250 CWD command successful.[CR][LF]" 00:50:12.461824 < "EPSV" 00:50:12.462141 ====> Passive DATA channel requested by client 00:50:12.462289 DATA sockfilt for passive data channel starting... 00:50:12.516135 DATA sockfilt for passive data channel started (pid 210043) 00:50:12.517666 DATA sockfilt for passive data channel listens on port 41549 00:50:12.518325 > "229 Entering Passive Mode (|||41549|)[CR][LF]" 00:50:12.518515 Client has been notified that DATA conn will be accepted on port 41549 00:50:12.713104 Client connects to port 41549 00:50:12.713700 ====> Client established passive DATA connection on port 41549 00:50:12.867153 < "TYPE I" 00:50:12.868023 > "200 I modify TYPE as you wanted[CR][LF]" 00:50:12.925244 < "SIZE 142" 00:50:12.932358 > "213 21[CR][LF]" 00:50:13.013591 < "RETR 142" 00:50:13.014660 > "150 Binary data connection for 142 () (21 bytes).[CR][LF]" 00:50:13.018009 =====> Closing passive DATA connection... 00:50:13.018210 Server disconnects passive DATA connection 00:50:13.019642 Server disconnected passive DATA connection 00:50:13.019840 DATA sockfilt for passive data channel quits (pid 210043) 00:50:13.028076 DATA sockfilt for passive data channel quit (pid 210043) 00:50:13.028465 =====> Closed passive DATA connection 00:50:13.028818 > "226 File transfer complete[CR][LF]" 00:50:14.984105 < "QUIT" 00:50:14.984535 > "221 bye bye baby[CR][LF]" 00:50:15.117738 MAIN sockfilt said DISC 00:50:15.118276 ====> Client disconnected 00:50:15.118587 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:49:21.571953 ====> Client connect 00:49:21.595607 Received DATA (on stdin) 00:49:21.595743 > 160 bytes data, server => client 00:49:21.595840 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:21.595926 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:21.596002 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:49:21.599662 < 16 bytes data, client => server 00:49:21.599747 'USER anonymous\r\n' 00:49:21.600584 Received DATA (on stdin) 00:49:21.600646 > 33 bytes data, server => client 00:49:21.600723 '331 We are happy you popped in!\r\n' 00:49:21.600958 < 22 bytes data, client => server 00:49:21.601029 'PASS ftp@example.com\r\n' 00:49:21.602443 Received DATA (on stdin) 00:49:21.602514 > 30 bytes data, server => client 00:49:21.602589 '230 Welcome you silly person\r\n' 00:49:21.602870 < 5 bytes data, client => server 00:49:21.602931 'PWD\r\n' 00:49:21.603754 Received DATA (on stdin) 00:49:21.603817 > 30 bytes data, server => client 00:49:21.603892 '257 "/" is current directory\r\n' 00:49:21.605652 < 6 bytes data, client => server 00:49:21.605722 'EPSV\r\n' 00:49:21.651861 Received DATA (on stdin) 00:49:21.651994 > 39 bytes data, server => client 00:49:21.652101 '229 Entering Passive Mode (|||42059|)\r\n' 00:49:21.654767 < 8 bytes data, client => server 00:49:21.654847 'TYPE I\r\n' 00:49:21.656115 Received DATA (on stdin) 00:49:21.656178 > 33 bytes data, server => client 00:49:21.656276 '200 I modify TYPE as you wanted\r\n' 00:49:21.656602 < 21 bytes data, client => server 00:49:21.656673 'SIZE verifiedserver\r\n' 00:49:21.657611 Received DATA (on stdin) 00:49:21.657674 > 8 bytes data, server => client 00:49:21.657754 '213 18\r\n' 00:49:21.658440 < 21 bytes data, client => server 00:49:21.658515 'RETR verifiedserver\r\n' 00:49:21.659133 Received DATA (on stdin) 00:49:21.659195 > 29 bytes data, server => client 00:49:21.659287 '150 Binary junk (18 bytes).\r\n' 00:49:21.669941 Received DATA (on stdin) 00:49:21.670021 > 28 bytes data, server => client 00:49:21.670099 '226 File transfer complete\r\n' 00:49:21.711326 < 6 bytes data, client => server 00:49:21.711417 'QUIT\r\n' 00:49:21.712158 Received DATA (on stdin) 00:49:21.712225 > 18 bytes data, server => client 00:49:21.712294 '221 bye bye baby\r\n' 00:49:21.718169 ====> Client disconnect 00:49:21.718757 Received ACKD (on stdin) 00:50:09.282981 ====> Client connect 00:50:09.287918 Received DATA (on stdin) 00:50:09.288040 > 160 bytes data, server => client 00:50:09.288160 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:50:09.288262 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:50:09.288350 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:50:10.701124 < 16 bytes data, client => server 00:50:10.701340 'USER anonymous\r\n' 00:50:10.702662 Received DATA (on stdin) 00:50:10.702755 > 33 bytes data, server => client 00:50:10.708593 '331 We are happy you popped in!\r\n' 00:50:10.823159 < 22 bytes data, client => server 00:50:10.823346 'PASS ftp@example.com\r\n' 00:50:10.825186 Received DATA (on stdin) 00:50:10.825277 > 30 bytes data, server => client 00:50:10.825381 '230 Welcome you silly person\r\n' 00:50:10.919696 < 5 bytes data, client => server 00:50:10.919878 'PWD\r\n' 00:50:10.921242 Received DATA (on stdin) 00:50:10.921334 > 30 bytes data, server => client 00:50:10.921475 '257 "/" is current directory\r\n' 00:50:11.137204 < 11 bytes data, client => server 00:50:11.137413 'CWD part1\r\n' 00:50:11.139067 Received DATA (on stdin) 00:50:11.139163 > 29 bytes data, server => client 00:50:11.139299 '250 CWD command successful.\r\n' 00:50:11.198237 < 11 bytes data, client => server 00:50:11.198492 'CWD part2\r\n' 00:50:11.203363 Received DATA (on stdin) 00:50:11.203488 > 29 bytes data, server => client 00:50:11.203594 '250 CWD command successful.\r\n' 00:50:11.266229 < 11 bytes data, client => server 00:50:11.266415 'CWD part3\r\n' 00:50:11.271419 Received DATA (on stdin) 00:50:11.271530 > 29 bytes data, server => client 00:50:11.271633 '250 CWD command successful.\r\n' 00:50:11.300213 < 11 bytes data, client => server 00:50:11.300418 'CWD part4\r\n' 00:50:11.301837 Received DATA (on stdin) 00:50:11.301924 > 29 bytes data, server => client 00:50:11.302047 '250 CWD command successful.\r\n' 00:50:11.313250 < 11 bytes data, client => server 00:50:11.313391 'CWD part5\r\n' 00:50:11.313482 Received DATA (on stdin) 00:50:11.313558 > 29 bytes data, server => client 00:50:11.313657 '250 CWD command successful.\r\n' 00:50:11.324781 < 11 bytes data, client => server 00:50:11.324915 'CWD part6\r\n' 00:50:11.326122 Received DATA (on stdin) 00:50:11.326201 > 29 bytes data, server => client 00:50:11.326326 '250 CWD command successful.\r\n' 00:50:11.333677 < 11 bytes data, client => server 00:50:11.333829 'CWD part7\r\n' 00:50:11.335093 Received DATA (on stdin) 00:50:11.335179 > 29 bytes data, server => client 00:50:11.335298 '250 CWD command successful.\r\n' 00:50:11.343609 < 11 bytes data, client => server 00:50:11.343755 'CWD part8\r\n' 00:50:11.345835 Received DATA (on stdin) 00:50:11.345932 > 29 bytes data, server => client 00:50:11.346073 '250 CWD command successful.\r\n' 00:50:11.356709 < 11 bytes data, client => server 00:50:11.356872 'CWD part9\r\n' 00:50:11.360244 Received DATA (on stdin) 00:50:11.360356 > 29 bytes data, server => client 00:50:11.360451 '250 CWD command successful.\r\n' 00:50:11.368092 < 12 bytes data, client => server 00:50:11.368203 'CWD part10\r\n' 00:50:11.371911 Received DATA (on stdin) 00:50:11.372003 > 29 bytes data, server => client 00:50:11.372120 '250 CWD command successful.\r\n' 00:50:11.380522 < 12 bytes data, client => server 00:50:11.380641 'CWD part11\r\n' 00:50:11.380724 Received DATA (on stdin) 00:50:11.380795 > 29 bytes data, server => client 00:50:11.380888 '250 CWD command successful.\r\n' 00:50:11.391736 < 12 bytes data, client => server 00:50:11.391876 'CWD part12\r\n' 00:50:11.394751 Received DATA (on stdin) 00:50:11.394844 > 29 bytes data, server => client 00:50:11.394941 '250 CWD command successful.\r\n' 00:50:11.403500 < 12 bytes data, client => server 00:50:11.403633 'CWD part13\r\n' 00:50:11.405419 Received DATA (on stdin) 00:50:11.405502 > 29 bytes data, server => client 00:50:11.405596 '250 CWD command successful.\r\n' 00:50:11.415719 < 12 bytes data, client => server 00:50:11.415841 'CWD part14\r\n' 00:50:11.418354 Received DATA (on stdin) 00:50:11.418452 > 29 bytes data, server => client 00:50:11.418553 '250 CWD command successful.\r\n' 00:50:11.430817 < 12 bytes data, client => server 00:50:11.430975 'CWD part15\r\n' 00:50:11.432703 Received DATA (on stdin) 00:50:11.432788 > 29 bytes data, server => client 00:50:11.432883 '250 CWD command successful.\r\n' 00:50:11.439785 < 12 bytes data, client => server 00:50:11.439917 'CWD part16\r\n' 00:50:11.442968 Received DATA (on stdin) 00:50:11.443099 > 29 bytes data, server => client 00:50:11.443214 '250 CWD command successful.\r\n' 00:50:11.449946 < 12 bytes data, client => server 00:50:11.450066 'CWD part17\r\n' 00:50:11.450873 Received DATA (on stdin) 00:50:11.450953 > 29 bytes data, server => client 00:50:11.451056 '250 CWD command successful.\r\n' 00:50:11.458246 < 12 bytes data, client => server 00:50:11.458376 'CWD part18\r\n' 00:50:11.459466 Received DATA (on stdin) 00:50:11.459541 > 29 bytes data, server => client 00:50:11.459651 '250 CWD command successful.\r\n' 00:50:11.466443 < 12 bytes data, client => server 00:50:11.466564 'CWD part19\r\n' 00:50:11.467917 Received DATA (on stdin) 00:50:11.467988 > 29 bytes data, server => client 00:50:11.468081 '250 CWD command successful.\r\n' 00:50:11.475806 < 12 bytes data, client => server 00:50:11.475929 'CWD part20\r\n' 00:50:11.479506 Received DATA (on stdin) 00:50:11.479591 > 29 bytes data, server => client 00:50:11.479685 '250 CWD command successful.\r\n' 00:50:11.490007 < 12 bytes data, client => server 00:50:11.490132 'CWD part21\r\n' 00:50:11.493273 Received DATA (on stdin) 00:50:11.493386 > 29 bytes data, server => client 00:50:11.493482 '250 CWD command successful.\r\n' 00:50:11.508101 < 12 bytes data, client => server 00:50:11.508242 'CWD part22\r\n' 00:50:11.509751 Received DATA (on stdin) 00:50:11.509849 > 29 bytes data, server => client 00:50:11.509953 '250 CWD command successful.\r\n' 00:50:11.517054 < 12 bytes data, client => server 00:50:11.517182 'CWD part23\r\n' 00:50:11.519033 Received DATA (on stdin) 00:50:11.519120 > 29 bytes data, server => client 00:50:11.519220 '250 CWD command successful.\r\n' 00:50:11.528396 < 12 bytes data, client => server 00:50:11.528529 'CWD part24\r\n' 00:50:11.532390 Received DATA (on stdin) 00:50:11.532481 > 29 bytes data, server => client 00:50:11.532594 '250 CWD command successful.\r\n' 00:50:11.541419 < 12 bytes data, client => server 00:50:11.541547 'CWD part25\r\n' 00:50:11.542328 Received DATA (on stdin) 00:50:11.542408 > 29 bytes data, server => client 00:50:11.542501 '250 CWD command successful.\r\n' 00:50:11.551451 < 12 bytes data, client => server 00:50:11.551597 'CWD part26\r\n' 00:50:11.553704 Received DATA (on stdin) 00:50:11.553786 > 29 bytes data, server => client 00:50:11.553883 '250 CWD command successful.\r\n' 00:50:11.561394 < 12 bytes data, client => server 00:50:11.561506 'CWD part27\r\n' 00:50:11.563147 Received DATA (on stdin) 00:50:11.563222 > 29 bytes data, server => client 00:50:11.563315 '250 CWD command successful.\r\n' 00:50:11.576734 < 12 bytes data, client => server 00:50:11.576884 'CWD part28\r\n' 00:50:11.584749 Received DATA (on stdin) 00:50:11.584875 > 29 bytes data, server => client 00:50:11.584976 '250 CWD command successful.\r\n' 00:50:11.594135 < 12 bytes data, client => server 00:50:11.594272 'CWD part29\r\n' 00:50:11.595511 Received DATA (on stdin) 00:50:11.595587 > 29 bytes data, server => client 00:50:11.595696 '250 CWD command successful.\r\n' 00:50:11.601545 < 12 bytes data, client => server 00:50:11.601645 'CWD part30\r\n' 00:50:11.602502 Received DATA (on stdin) 00:50:11.602573 > 29 bytes data, server => client 00:50:11.602679 '250 CWD command successful.\r\n' 00:50:11.611776 < 12 bytes data, client => server 00:50:11.611895 'CWD part31\r\n' 00:50:11.615590 Received DATA (on stdin) 00:50:11.615702 > 29 bytes data, server => client 00:50:11.615799 '250 CWD command successful.\r\n' 00:50:11.628147 < 12 bytes data, client => server 00:50:11.628340 'CWD part32\r\n' 00:50:11.633790 Received DATA (on stdin) 00:50:11.633929 > 29 bytes data, server => client 00:50:11.634031 '250 CWD command successful.\r\n' 00:50:11.642725 < 12 bytes data, client => server 00:50:11.642901 'CWD part33\r\n' 00:50:11.644508 Received DATA (on stdin) 00:50:11.644593 > 29 bytes data, server => client 00:50:11.644707 '250 CWD command successful.\r\n' 00:50:11.654679 < 12 bytes data, client => server 00:50:11.654842 'CWD part34\r\n' 00:50:11.656663 Received DATA (on stdin) 00:50:11.656743 > 29 bytes data, server => client 00:50:11.658776 '250 CWD command successful.\r\n' 00:50:11.666374 < 12 bytes data, client => server 00:50:11.666479 'CWD part35\r\n' 00:50:11.670022 Received DATA (on stdin) 00:50:11.670109 > 29 bytes data, server => client 00:50:11.670202 '250 CWD command successful.\r\n' 00:50:11.678092 < 12 bytes data, client => server 00:50:11.678198 'CWD part36\r\n' 00:50:11.681388 Received DATA (on stdin) 00:50:11.681476 > 29 bytes data, server => client 00:50:11.681595 '250 CWD command successful.\r\n' 00:50:11.689866 < 12 bytes data, client => server 00:50:11.689990 'CWD part37\r\n' 00:50:11.690074 Received DATA (on stdin) 00:50:11.690147 > 29 bytes data, server => client 00:50:11.690239 '250 CWD command successful.\r\n' 00:50:11.704560 < 12 bytes data, client => server 00:50:11.704738 'CWD part38\r\n' 00:50:11.704854 Received DATA (on stdin) 00:50:11.704927 > 29 bytes data, server => client 00:50:11.705013 '250 CWD command successful.\r\n' 00:50:11.712409 < 12 bytes data, client => server 00:50:11.712560 'CWD part39\r\n' 00:50:11.714423 Received DATA (on stdin) 00:50:11.714498 > 29 bytes data, server => client 00:50:11.714582 '250 CWD command successful.\r\n' 00:50:11.725840 < 12 bytes data, client => server 00:50:11.726026 'CWD part40\r\n' 00:50:11.728377 Received DATA (on stdin) 00:50:11.728460 > 29 bytes data, server => client 00:50:11.728557 '250 CWD command successful.\r\n' 00:50:11.735149 < 12 bytes data, client => server 00:50:11.735275 'CWD part41\r\n' 00:50:11.736518 Received DATA (on stdin) 00:50:11.736587 > 29 bytes data, server => client 00:50:11.736691 '250 CWD command successful.\r\n' 00:50:11.745778 < 12 bytes data, client => server 00:50:11.745937 'CWD part42\r\n' 00:50:11.749772 Received DATA (on stdin) 00:50:11.749878 > 29 bytes data, server => client 00:50:11.749980 '250 CWD command successful.\r\n' 00:50:11.756557 < 12 bytes data, client => server 00:50:11.756706 'CWD part43\r\n' 00:50:11.758007 Received DATA (on stdin) 00:50:11.758091 > 29 bytes data, server => client 00:50:11.758212 '250 CWD command successful.\r\n' 00:50:11.765646 < 12 bytes data, client => server 00:50:11.765767 'CWD part44\r\n' 00:50:11.766767 Received DATA (on stdin) 00:50:11.766835 > 29 bytes data, server => client 00:50:11.769139 '250 CWD command successful.\r\n' 00:50:11.775861 < 12 bytes data, client => server 00:50:11.776353 'CWD part45\r\n' 00:50:11.778932 Received DATA (on stdin) 00:50:11.779020 > 29 bytes data, server => client 00:50:11.779116 '250 CWD command successful.\r\n' 00:50:11.787029 < 12 bytes data, client => server 00:50:11.787170 'CWD part46\r\n' 00:50:11.788443 Received DATA (on stdin) 00:50:11.788520 > 29 bytes data, server => client 00:50:11.788604 '250 CWD command successful.\r\n' 00:50:11.801468 < 12 bytes data, client => server 00:50:11.801653 'CWD part47\r\n' 00:50:11.803168 Received DATA (on stdin) 00:50:11.803251 > 29 bytes data, server => client 00:50:11.803385 '250 CWD command successful.\r\n' 00:50:11.811134 < 12 bytes data, client => server 00:50:11.811285 'CWD part48\r\n' 00:50:11.812507 Received DATA (on stdin) 00:50:11.812589 > 29 bytes data, server => client 00:50:11.817789 '250 CWD command successful.\r\n' 00:50:11.825100 < 12 bytes data, client => server 00:50:11.825266 'CWD part49\r\n' 00:50:11.827070 Received DATA (on stdin) 00:50:11.827152 > 29 bytes data, server => client 00:50:11.827246 '250 CWD command successful.\r\n' 00:50:11.841171 < 12 bytes data, client => server 00:50:11.841410 'CWD part50\r\n' 00:50:11.842988 Received DATA (on stdin) 00:50:11.843067 > 29 bytes data, server => client 00:50:11.843178 '250 CWD command successful.\r\n' 00:50:11.858141 < 12 bytes data, client => server 00:50:11.858336 'CWD part51\r\n' 00:50:11.859822 Received DATA (on stdin) 00:50:11.859904 > 29 bytes data, server => client 00:50:11.860027 '250 CWD command successful.\r\n' 00:50:11.869173 < 12 bytes data, client => server 00:50:11.869319 'CWD part52\r\n' 00:50:11.874653 Received DATA (on stdin) 00:50:11.874776 > 29 bytes data, server => client 00:50:11.874874 '250 CWD command successful.\r\n' 00:50:11.883930 < 12 bytes data, client => server 00:50:11.884097 'CWD part53\r\n' 00:50:11.885546 Received DATA (on stdin) 00:50:11.885629 > 29 bytes data, server => client 00:50:11.885746 '250 CWD command successful.\r\n' 00:50:11.897084 < 12 bytes data, client => server 00:50:11.897243 'CWD part54\r\n' 00:50:11.898660 Received DATA (on stdin) 00:50:11.898742 > 29 bytes data, server => client 00:50:11.898860 '250 CWD command successful.\r\n' 00:50:11.909711 < 12 bytes data, client => server 00:50:11.909868 'CWD part55\r\n' 00:50:11.911093 Received DATA (on stdin) 00:50:11.911175 > 29 bytes data, server => client 00:50:11.911955 '250 CWD command successful.\r\n' 00:50:11.923252 < 12 bytes data, client => server 00:50:11.923450 'CWD part56\r\n' 00:50:11.926137 Received DATA (on stdin) 00:50:11.926241 > 29 bytes data, server => client 00:50:11.926339 '250 CWD command successful.\r\n' 00:50:11.935205 < 12 bytes data, client => server 00:50:11.935355 'CWD part57\r\n' 00:50:11.939379 Received DATA (on stdin) 00:50:11.939471 > 29 bytes data, server => client 00:50:11.939567 '250 CWD command successful.\r\n' 00:50:11.945333 < 12 bytes data, client => server 00:50:11.945474 'CWD part58\r\n' 00:50:11.946371 Received DATA (on stdin) 00:50:11.946441 > 29 bytes data, server => client 00:50:11.946526 '250 CWD command successful.\r\n' 00:50:11.952566 < 12 bytes data, client => server 00:50:11.952686 'CWD part59\r\n' 00:50:11.953921 Received DATA (on stdin) 00:50:11.953991 > 29 bytes data, server => client 00:50:11.954074 '250 CWD command successful.\r\n' 00:50:11.960684 < 12 bytes data, client => server 00:50:11.960800 'CWD part60\r\n' 00:50:11.963150 Received DATA (on stdin) 00:50:11.963228 > 29 bytes data, server => client 00:50:11.963312 '250 CWD command successful.\r\n' 00:50:11.972318 < 12 bytes data, client => server 00:50:11.972454 'CWD part61\r\n' 00:50:11.976989 Received DATA (on stdin) 00:50:11.977090 > 29 bytes data, server => client 00:50:11.977184 '250 CWD command successful.\r\n' 00:50:11.984676 < 12 bytes data, client => server 00:50:11.984803 'CWD part62\r\n' 00:50:11.988069 Received DATA (on stdin) 00:50:11.988147 > 29 bytes data, server => client 00:50:11.988225 '250 CWD command successful.\r\n' 00:50:11.997249 < 12 bytes data, client => server 00:50:11.997364 'CWD part63\r\n' 00:50:11.998296 Received DATA (on stdin) 00:50:11.998367 > 29 bytes data, server => client 00:50:11.998445 '250 CWD command successful.\r\n' 00:50:12.017385 < 12 bytes data, client => server 00:50:12.017524 'CWD part64\r\n' 00:50:12.018579 Received DATA (on stdin) 00:50:12.018652 > 29 bytes data, server => client 00:50:12.018730 '250 CWD command successful.\r\n' 00:50:12.032787 < 12 bytes data, client => server 00:50:12.032947 'CWD part65\r\n' 00:50:12.034711 Received DATA (on stdin) 00:50:12.034809 > 29 bytes data, server => client 00:50:12.034907 '250 CWD command successful.\r\n' 00:50:12.043345 < 12 bytes data, client => server 00:50:12.043458 'CWD part66\r\n' 00:50:12.046167 Received DATA (on stdin) 00:50:12.046249 > 29 bytes data, server => client 00:50:12.046344 '250 CWD command successful.\r\n' 00:50:12.058107 < 12 bytes data, client => server 00:50:12.058240 'CWD part67\r\n' 00:50:12.059462 Received DATA (on stdin) 00:50:12.059539 > 29 bytes data, server => client 00:50:12.063278 '250 CWD command successful.\r\n' 00:50:12.070346 < 12 bytes data, client => server 00:50:12.070467 'CWD part68\r\n' 00:50:12.072166 Received DATA (on stdin) 00:50:12.072245 > 29 bytes data, server => client 00:50:12.072329 '250 CWD command successful.\r\n' 00:50:12.082391 < 12 bytes data, client => server 00:50:12.082498 'CWD part69\r\n' 00:50:12.087499 Received DATA (on stdin) 00:50:12.087618 > 29 bytes data, server => client 00:50:12.087704 '250 CWD command successful.\r\n' 00:50:12.094172 < 12 bytes data, client => server 00:50:12.094276 'CWD part70\r\n' 00:50:12.095478 Received DATA (on stdin) 00:50:12.095564 > 29 bytes data, server => client 00:50:12.095692 '250 CWD command successful.\r\n' 00:50:12.106501 < 12 bytes data, client => server 00:50:12.106634 'CWD part71\r\n' 00:50:12.107873 Received DATA (on stdin) 00:50:12.107958 > 29 bytes data, server => client 00:50:12.108075 '250 CWD command successful.\r\n' 00:50:12.118463 < 12 bytes data, client => server 00:50:12.118594 'CWD part72\r\n' 00:50:12.119662 Received DATA (on stdin) 00:50:12.119731 > 29 bytes data, server => client 00:50:12.123569 '250 CWD command successful.\r\n' 00:50:12.130066 < 12 bytes data, client => server 00:50:12.130171 'CWD part73\r\n' 00:50:12.131553 Received DATA (on stdin) 00:50:12.131631 > 29 bytes data, server => client 00:50:12.131715 '250 CWD command successful.\r\n' 00:50:12.141500 < 12 bytes data, client => server 00:50:12.141624 'CWD part74\r\n' 00:50:12.142912 Received DATA (on stdin) 00:50:12.142995 > 29 bytes data, server => client 00:50:12.143618 '250 CWD command successful.\r\n' 00:50:12.153361 < 12 bytes data, client => server 00:50:12.153472 'CWD part75\r\n' 00:50:12.154356 Received DATA (on stdin) 00:50:12.154432 > 29 bytes data, server => client 00:50:12.154522 '250 CWD command successful.\r\n' 00:50:12.164165 < 12 bytes data, client => server 00:50:12.164275 'CWD part76\r\n' 00:50:12.165373 Received DATA (on stdin) 00:50:12.165450 > 29 bytes data, server => client 00:50:12.165553 '250 CWD command successful.\r\n' 00:50:12.172804 < 12 bytes data, client => server 00:50:12.172934 'CWD part77\r\n' 00:50:12.176189 Received DATA (on stdin) 00:50:12.176276 > 29 bytes data, server => client 00:50:12.176358 '250 CWD command successful.\r\n' 00:50:12.184766 < 12 bytes data, client => server 00:50:12.184885 'CWD part78\r\n' 00:50:12.185726 Received DATA (on stdin) 00:50:12.185794 > 29 bytes data, server => client 00:50:12.185875 '250 CWD command successful.\r\n' 00:50:12.192765 < 12 bytes data, client => server 00:50:12.192864 'CWD part79\r\n' 00:50:12.195534 Received DATA (on stdin) 00:50:12.195611 > 29 bytes data, server => client 00:50:12.195695 '250 CWD command successful.\r\n' 00:50:12.202515 < 12 bytes data, client => server 00:50:12.202606 'CWD part80\r\n' 00:50:12.205521 Received DATA (on stdin) 00:50:12.205601 > 29 bytes data, server => client 00:50:12.205682 '250 CWD command successful.\r\n' 00:50:12.212143 < 12 bytes data, client => server 00:50:12.212279 'CWD part81\r\n' 00:50:12.213943 Received DATA (on stdin) 00:50:12.214020 > 29 bytes data, server => client 00:50:12.214104 '250 CWD command successful.\r\n' 00:50:12.224785 < 12 bytes data, client => server 00:50:12.224935 'CWD part82\r\n' 00:50:12.229284 Received DATA (on stdin) 00:50:12.229380 > 29 bytes data, server => client 00:50:12.229467 '250 CWD command successful.\r\n' 00:50:12.238097 < 12 bytes data, client => server 00:50:12.238206 'CWD part83\r\n' 00:50:12.238962 Received DATA (on stdin) 00:50:12.239035 > 29 bytes data, server => client 00:50:12.239116 '250 CWD command successful.\r\n' 00:50:12.246880 < 12 bytes data, client => server 00:50:12.247014 'CWD part84\r\n' 00:50:12.247928 Received DATA (on stdin) 00:50:12.248004 > 29 bytes data, server => client 00:50:12.248110 '250 CWD command successful.\r\n' 00:50:12.257869 < 12 bytes data, client => server 00:50:12.258014 'CWD part85\r\n' 00:50:12.259361 Received DATA (on stdin) 00:50:12.259448 > 29 bytes data, server => client 00:50:12.259532 '250 CWD command successful.\r\n' 00:50:12.268520 < 12 bytes data, client => server 00:50:12.268641 'CWD part86\r\n' 00:50:12.272572 Received DATA (on stdin) 00:50:12.272660 > 29 bytes data, server => client 00:50:12.272746 '250 CWD command successful.\r\n' 00:50:12.281434 < 12 bytes data, client => server 00:50:12.281568 'CWD part87\r\n' 00:50:12.282467 Received DATA (on stdin) 00:50:12.282546 > 29 bytes data, server => client 00:50:12.282637 '250 CWD command successful.\r\n' 00:50:12.290153 < 12 bytes data, client => server 00:50:12.290300 'CWD part88\r\n' 00:50:12.292653 Received DATA (on stdin) 00:50:12.292741 > 29 bytes data, server => client 00:50:12.292836 '250 CWD command successful.\r\n' 00:50:12.300373 < 12 bytes data, client => server 00:50:12.300464 'CWD part89\r\n' 00:50:12.304581 Received DATA (on stdin) 00:50:12.304662 > 29 bytes data, server => client 00:50:12.304771 '250 CWD command successful.\r\n' 00:50:12.312378 < 12 bytes data, client => server 00:50:12.312481 'CWD part90\r\n' 00:50:12.312557 Received DATA (on stdin) 00:50:12.312620 > 29 bytes data, server => client 00:50:12.312698 '250 CWD command successful.\r\n' 00:50:12.322828 < 12 bytes data, client => server 00:50:12.322919 'CWD part91\r\n' 00:50:12.322987 Received DATA (on stdin) 00:50:12.323047 > 29 bytes data, server => client 00:50:12.323124 '250 CWD command successful.\r\n' 00:50:12.333868 < 12 bytes data, client => server 00:50:12.333964 'CWD part92\r\n' 00:50:12.338473 Received DATA (on stdin) 00:50:12.338560 > 29 bytes data, server => client 00:50:12.338642 '250 CWD command successful.\r\n' 00:50:12.346686 < 12 bytes data, client => server 00:50:12.346809 'CWD part93\r\n' 00:50:12.348144 Received DATA (on stdin) 00:50:12.348218 > 29 bytes data, server => client 00:50:12.348297 '250 CWD command successful.\r\n' 00:50:12.355525 < 12 bytes data, client => server 00:50:12.355656 'CWD part94\r\n' 00:50:12.356612 Received DATA (on stdin) 00:50:12.356681 > 29 bytes data, server => client 00:50:12.356762 '250 CWD command successful.\r\n' 00:50:12.365283 < 12 bytes data, client => server 00:50:12.365383 'CWD part95\r\n' 00:50:12.366093 Received DATA (on stdin) 00:50:12.366228 > 29 bytes data, server => client 00:50:12.366330 '250 CWD command successful.\r\n' 00:50:12.375005 < 12 bytes data, client => server 00:50:12.375122 'CWD part96\r\n' 00:50:12.376226 Received DATA (on stdin) 00:50:12.376304 > 29 bytes data, server => client 00:50:12.376397 '250 CWD command successful.\r\n' 00:50:12.385144 < 12 bytes data, client => server 00:50:12.385264 'CWD part97\r\n' 00:50:12.389101 Received DATA (on stdin) 00:50:12.389186 > 29 bytes data, server => client 00:50:12.389269 '250 CWD command successful.\r\n' 00:50:12.398104 < 12 bytes data, client => server 00:50:12.398246 'CWD part98\r\n' 00:50:12.399287 Received DATA (on stdin) 00:50:12.399377 > 29 bytes data, server => client 00:50:12.399469 '250 CWD command successful.\r\n' 00:50:12.406764 < 12 bytes data, client => server 00:50:12.406914 'CWD part99\r\n' 00:50:12.407954 Received DATA (on stdin) 00:50:12.408027 > 29 bytes data, server => client 00:50:12.408123 '250 CWD command successful.\r\n' 00:50:12.416807 < 13 bytes data, client => server 00:50:12.416904 'CWD part100\r\n' 00:50:12.418825 Received DATA (on stdin) 00:50:12.418899 > 29 bytes data, server => client 00:50:12.418979 '250 CWD command successful.\r\n' 00:50:12.426394 < 13 bytes data, client => server 00:50:12.426487 'CWD part101\r\n' 00:50:12.427133 Received DATA (on stdin) 00:50:12.427204 > 29 bytes data, server => client 00:50:12.427289 '250 CWD command successful.\r\n' 00:50:12.435786 < 13 bytes data, client => server 00:50:12.435882 'CWD part102\r\n' 00:50:12.438788 Received DATA (on stdin) 00:50:12.438860 > 29 bytes data, server => client 00:50:12.438940 '250 CWD command successful.\r\n' 00:50:12.448081 < 13 bytes data, client => server 00:50:12.448178 'CWD part103\r\n' 00:50:12.448830 Received DATA (on stdin) 00:50:12.448898 > 29 bytes data, server => client 00:50:12.448976 '250 CWD command successful.\r\n' 00:50:12.458089 < 13 bytes data, client => server 00:50:12.458207 'CWD part104\r\n' 00:50:12.458998 Received DATA (on stdin) 00:50:12.459074 > 29 bytes data, server => client 00:50:12.459158 '250 CWD command successful.\r\n' 00:50:12.465730 < 13 bytes data, client => server 00:50:12.465857 'CWD part105\r\n' 00:50:12.472024 Received DATA (on stdin) 00:50:12.472131 > 29 bytes data, server => client 00:50:12.472215 '250 CWD command successful.\r\n' 00:50:12.485872 < 13 bytes data, client => server 00:50:12.486100 'CWD part106\r\n' 00:50:12.487297 Received DATA (on stdin) 00:50:12.487374 > 29 bytes data, server => client 00:50:12.487460 '250 CWD command successful.\r\n' 00:50:12.506640 < 13 bytes data, client => server 00:50:12.506781 'CWD part107\r\n' 00:50:12.509161 Received DATA (on stdin) 00:50:12.509241 > 29 bytes data, server => client 00:50:12.509326 '250 CWD command successful.\r\n' 00:50:12.523147 < 13 bytes data, client => server 00:50:12.523264 'CWD part108\r\n' 00:50:12.525714 Received DATA (on stdin) 00:50:12.525800 > 29 bytes data, server => client 00:50:12.525896 '250 CWD command successful.\r\n' 00:50:12.533250 < 13 bytes data, client => server 00:50:12.533352 'CWD part109\r\n' 00:50:12.534074 Received DATA (on stdin) 00:50:12.534145 > 29 bytes data, server => client 00:50:12.534228 '250 CWD command successful.\r\n' 00:50:12.544753 < 13 bytes data, client => server 00:50:12.544860 'CWD part110\r\n' 00:50:12.547814 Received DATA (on stdin) 00:50:12.547911 > 29 bytes data, server => client 00:50:12.548030 '250 CWD command successful.\r\n' 00:50:12.555695 < 13 bytes data, client => server 00:50:12.555826 'CWD part111\r\n' 00:50:12.557118 Received DATA (on stdin) 00:50:12.557191 > 29 bytes data, server => client 00:50:12.557274 '250 CWD command successful.\r\n' 00:50:12.567102 < 13 bytes data, client => server 00:50:12.567226 'CWD part112\r\n' 00:50:12.571412 Received DATA (on stdin) 00:50:12.571524 > 29 bytes data, server => client 00:50:12.571617 '250 CWD command successful.\r\n' 00:50:12.579392 < 13 bytes data, client => server 00:50:12.579584 'CWD part113\r\n' 00:50:12.581222 Received DATA (on stdin) 00:50:12.581317 > 29 bytes data, server => client 00:50:12.584826 '250 CWD command successful.\r\n' 00:50:12.592883 < 13 bytes data, client => server 00:50:12.593020 'CWD part114\r\n' 00:50:12.594060 Received DATA (on stdin) 00:50:12.594143 > 29 bytes data, server => client 00:50:12.594237 '250 CWD command successful.\r\n' 00:50:12.603992 < 13 bytes data, client => server 00:50:12.604150 'CWD part115\r\n' 00:50:12.605269 Received DATA (on stdin) 00:50:12.605355 > 29 bytes data, server => client 00:50:12.605451 '250 CWD command successful.\r\n' 00:50:12.614396 < 13 bytes data, client => server 00:50:12.614496 'CWD part116\r\n' 00:50:12.615230 Received DATA (on stdin) 00:50:12.615314 > 29 bytes data, server => client 00:50:12.615410 '250 CWD command successful.\r\n' 00:50:12.628539 < 13 bytes data, client => server 00:50:12.628686 'CWD part117\r\n' 00:50:12.629870 Received DATA (on stdin) 00:50:12.629952 > 29 bytes data, server => client 00:50:12.630033 '250 CWD command successful.\r\n' 00:50:12.637309 < 13 bytes data, client => server 00:50:12.637429 'CWD part118\r\n' 00:50:12.638834 Received DATA (on stdin) 00:50:12.638906 > 29 bytes data, server => client 00:50:12.638984 '250 CWD command successful.\r\n' 00:50:12.647072 < 13 bytes data, client => server 00:50:12.647246 'CWD part119\r\n' 00:50:12.651248 Received DATA (on stdin) 00:50:12.651377 > 29 bytes data, server => client 00:50:12.651487 '250 CWD command successful.\r\n' 00:50:12.659087 < 13 bytes data, client => server 00:50:12.659315 'CWD part120\r\n' 00:50:12.662733 Received DATA (on stdin) 00:50:12.662832 > 29 bytes data, server => client 00:50:12.662915 '250 CWD command successful.\r\n' 00:50:12.670210 < 13 bytes data, client => server 00:50:12.670367 'CWD part121\r\n' 00:50:12.671412 Received DATA (on stdin) 00:50:12.671496 > 29 bytes data, server => client 00:50:12.671583 '250 CWD command successful.\r\n' 00:50:12.681175 < 13 bytes data, client => server 00:50:12.681358 'CWD part122\r\n' 00:50:12.682564 Received DATA (on stdin) 00:50:12.682635 > 29 bytes data, server => client 00:50:12.682718 '250 CWD command successful.\r\n' 00:50:12.691681 < 13 bytes data, client => server 00:50:12.691805 'CWD part123\r\n' 00:50:12.695790 Received DATA (on stdin) 00:50:12.695883 > 29 bytes data, server => client 00:50:12.695966 '250 CWD command successful.\r\n' 00:50:12.704756 < 13 bytes data, client => server 00:50:12.704867 'CWD part124\r\n' 00:50:12.705773 Received DATA (on stdin) 00:50:12.705842 > 29 bytes data, server => client 00:50:12.705919 '250 CWD command successful.\r\n' 00:50:12.712310 < 13 bytes data, client => server 00:50:12.712437 'CWD part125\r\n' 00:50:12.713327 Received DATA (on stdin) 00:50:12.713397 > 29 bytes data, server => client 00:50:12.713476 '250 CWD command successful.\r\n' 00:50:12.722491 < 13 bytes data, client => server 00:50:12.722604 'CWD part126\r\n' 00:50:12.725754 Received DATA (on stdin) 00:50:12.725841 > 29 bytes data, server => client 00:50:12.725924 '250 CWD command successful.\r\n' 00:50:12.732396 < 13 bytes data, client => server 00:50:12.732506 'CWD part127\r\n' 00:50:12.733276 Received DATA (on stdin) 00:50:12.733344 > 29 bytes data, server => client 00:50:12.733421 '250 CWD command successful.\r\n' 00:50:12.743093 < 13 bytes data, client => server 00:50:12.743248 'CWD part128\r\n' 00:50:12.745994 Received DATA (on stdin) 00:50:12.746081 > 29 bytes data, server => client 00:50:12.746167 '250 CWD command successful.\r\n' 00:50:12.753737 < 13 bytes data, client => server 00:50:12.753872 'CWD part129\r\n' 00:50:12.758450 Received DATA (on stdin) 00:50:12.758600 > 29 bytes data, server => client 00:50:12.758689 '250 CWD command successful.\r\n' 00:50:12.768104 < 13 bytes data, client => server 00:50:12.768229 'CWD part130\r\n' 00:50:12.769179 Received DATA (on stdin) 00:50:12.769247 > 29 bytes data, server => client 00:50:12.769334 '250 CWD command successful.\r\n' 00:50:12.778094 < 13 bytes data, client => server 00:50:12.778204 'CWD part131\r\n' 00:50:12.779104 Received DATA (on stdin) 00:50:12.779175 > 29 bytes data, server => client 00:50:12.779253 '250 CWD command successful.\r\n' 00:50:12.785823 < 13 bytes data, client => server 00:50:12.785951 'CWD part132\r\n' 00:50:12.789150 Received DATA (on stdin) 00:50:12.789241 > 29 bytes data, server => client 00:50:12.789322 '250 CWD command successful.\r\n' 00:50:12.796068 < 13 bytes data, client => server 00:50:12.796189 'CWD part133\r\n' 00:50:12.796992 Received DATA (on stdin) 00:50:12.797067 > 29 bytes data, server => client 00:50:12.797148 '250 CWD command successful.\r\n' 00:50:12.811474 < 13 bytes data, client => server 00:50:12.811647 'CWD part134\r\n' 00:50:12.816577 Received DATA (on stdin) 00:50:12.816722 > 29 bytes data, server => client 00:50:12.816825 '250 CWD command successful.\r\n' 00:50:12.827247 < 13 bytes data, client => server 00:50:12.827359 'CWD part135\r\n' 00:50:12.831401 Received DATA (on stdin) 00:50:12.831483 > 29 bytes data, server => client 00:50:12.831567 '250 CWD command successful.\r\n' 00:50:12.849834 < 13 bytes data, client => server 00:50:12.849984 'CWD part136\r\n' 00:50:12.852753 Received DATA (on stdin) 00:50:12.852851 > 29 bytes data, server => client 00:50:12.852950 '250 CWD command successful.\r\n' 00:50:12.864890 < 13 bytes data, client => server 00:50:12.865014 'CWD part137\r\n' 00:50:12.869198 Received DATA (on stdin) 00:50:12.869306 > 29 bytes data, server => client 00:50:12.869415 '250 CWD command successful.\r\n' 00:50:12.876366 < 13 bytes data, client => server 00:50:12.876497 'CWD part138\r\n' 00:50:12.877394 Received DATA (on stdin) 00:50:12.877473 > 29 bytes data, server => client 00:50:12.877568 '250 CWD command successful.\r\n' 00:50:12.889529 < 13 bytes data, client => server 00:50:12.889709 'CWD part139\r\n' 00:50:12.890829 Received DATA (on stdin) 00:50:12.890907 > 29 bytes data, server => client 00:50:12.891000 '250 CWD command successful.\r\n' 00:50:12.900717 < 13 bytes data, client => server 00:50:12.900838 'CWD part140\r\n' 00:50:12.902444 Received DATA (on stdin) 00:50:12.902534 > 29 bytes data, server => client 00:50:12.902631 '250 CWD command successful.\r\n' 00:50:12.911649 < 13 bytes data, client => server 00:50:12.911764 'CWD part141\r\n' 00:50:12.915696 Received DATA (on stdin) 00:50:12.915793 > 29 bytes data, server => client 00:50:12.915889 '250 CWD command successful.\r\n' 00:50:12.924753 < 13 bytes data, client => server 00:50:12.924867 'CWD part142\r\n' 00:50:12.925589 Received DATA (on stdin) 00:50:12.925668 > 29 bytes data, server => client 00:50:12.925759 '250 CWD command successful.\r\n' 00:50:12.932829 < 13 bytes data, client => server 00:50:12.932935 'CWD part143\r\n' 00:50:12.933813 Received DATA (on stdin) 00:50:12.933895 > 29 bytes data, server => client 00:50:12.933981 '250 CWD command successful.\r\n' 00:50:12.944525 < 13 bytes data, client => server 00:50:12.944687 'CWD part144\r\n' 00:50:12.945713 Received DATA (on stdin) 00:50:12.945790 > 29 bytes data, server => client 00:50:12.945884 '250 CWD command successful.\r\n' 00:50:12.955105 < 13 bytes data, client => server 00:50:12.955207 'CWD part145\r\n' 00:50:12.958895 Received DATA (on stdin) 00:50:12.958987 > 29 bytes data, server => client 00:50:12.959081 '250 CWD command successful.\r\n' 00:50:12.968109 < 13 bytes data, client => server 00:50:12.968210 'CWD part146\r\n' 00:50:12.968829 Received DATA (on stdin) 00:50:12.968905 > 29 bytes data, server => client 00:50:12.968999 '250 CWD command successful.\r\n' 00:50:12.975711 < 13 bytes data, client => server 00:50:12.975808 'CWD part147\r\n' 00:50:12.976440 Received DATA (on stdin) 00:50:12.976513 > 29 bytes data, server => client 00:50:12.976603 '250 CWD command successful.\r\n' 00:50:12.985662 < 13 bytes data, client => server 00:50:12.985769 'CWD part148\r\n' 00:50:12.988846 Received DATA (on stdin) 00:50:12.988932 > 29 bytes data, server => client 00:50:12.989025 '250 CWD command successful.\r\n' 00:50:12.996147 < 13 bytes data, client => server 00:50:12.996265 'CWD part149\r\n' 00:50:12.996931 Received DATA (on stdin) 00:50:12.997006 > 29 bytes data, server => client 00:50:12.997105 '250 CWD command successful.\r\n' 00:50:13.027591 < 13 bytes data, client => server 00:50:13.027802 'CWD part150\r\n' 00:50:13.028978 Received DATA (on stdin) 00:50:13.029063 > 29 bytes data, server => client 00:50:13.029160 '250 CWD command successful.\r\n' 00:50:13.074788 < 6 bytes data, client => server 00:50:13.074954 'EPSV\r\n' 00:50:13.135094 Received DATA (on stdin) 00:50:13.135240 > 39 bytes data, server => client 00:50:13.135880 '229 Entering Passive Mode (|||41549|)\r\n' 00:50:13.461587 < 8 bytes data, client => server 00:50:13.462144 'TYPE I\r\n' 00:50:13.484676 Received DATA (on stdin) 00:50:13.484779 > 33 bytes data, server => client 00:50:13.484894 '200 I modify TYPE as you wanted\r\n' 00:50:13.541175 < 10 bytes data, client => server 00:50:13.541341 'SIZE 142\r\n' 00:50:13.549791 Received DATA (on stdin) 00:50:13.549902 > 8 bytes data, server => client 00:50:13.549982 '213 21\r\n' 00:50:13.629409 < 10 bytes data, client => server 00:50:13.629612 'RETR 142\r\n' 00:50:13.636384 Received DATA (on stdin) 00:50:13.636503 > 51 bytes data, server => client 00:50:13.636607 '150 Binary data connection for 142 () (21 bytes).\r\n' 00:50:13.646189 Received DATA (on stdin) 00:50:13.646323 > 28 bytes data, server => client 00:50:13.646419 '226 File transfer complete\r\n' 00:50:15.600297 < 6 bytes data, client => server 00:50:15.600482 'QUIT\r\n' 00:50:15.601580 Received DATA (on stdin) 00:50:15.601659 > 18 bytes data, server => client 00:50:15.601737 '221 bye bye baby\r\n' 00:50:15.732848 ====> Client disconnect 00:50:15.735373 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:49:21.641226 Running IPv4 version 00:49:21.648763 Listening on port 42059 00:49:21.649181 Wrote pid 208737 to log/1/server/ftp_sockdata.pid 00:49:21.649872 Received PING (on stdin) 00:49:21.650904 Received PORT (on stdin) 00:49:21.654990 ====> Client connect 00:49:21.661318 Received DATA (on stdin) 00:49:21.661585 > 18 bytes data, server => client 00:49:21.662539 'WE ROOLZ: 202066\r\n' 00:49:21.662757 Received DISC (on stdin) 00:49:21.662867 ====> Client forcibly disconnected 00:49:21.663381 Received QUIT (on stdin) 00:49:21.663450 quits 00:49:21.663902 ============> sockfilt quits 00:50:12.122538 Running IPv4 version 00:50:12.131388 Listening on port 41549 00:50:12.131937 Wrote pid 210043 to log/1/server/ftp_sockdata.pid 00:50:12.132822 Received PING (on stdin) 00:50:12.134031 Received PORT (on stdin) 00:50:12.329832 ====> Client connect 00:50:12.632036 Received DATA (on stdin) 00:50:12.632425 > 21 bytes data, server => client 00:50:12.635749 'many parts there are\n' 00:50:12.636056 Received DISC (on stdin) 00:50:12.636185 ====> Client forcibly disconnected 00:50:12.637111 Received QUIT (on stdin) 00:50:12.637192 quits 00:50:12.637703 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 142 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD part1 CWD part2 CWD part3 CWD part4 CWD part5 CWD part6 CWD part7 CWD part8 CWD part9 CWD part10 CWD part11 CWD part12 CWD part13 CWD part14 CWD part15 CWD part16 CWD part17 CWD part18 CWD part19 CWD part20 CWD part21 CWD part22 CWD part23 CWD part24 CWD part25 CWD part26 CWD part27 CWD part28 CWD part29 CWD part30 CWD part31 CWD part32 CWD part33 CWD part34 CWD part35 CWD part36 CWD part37 CWD part38 CWD part39 CWD part40 CWD part41 CWD part42 CWD part43 CWD part44 CWD part45 CWD part46 CWD part47 CWD part48 CWD part49 CWD part50 CWD part51 CWD part52 CWD part53 CWD part54 CWD part55 CWD part56 CWD part57 CWD part58 CWD part59 CWD part60 CWD part61 CWD part62 CWD part63 CWD part64 CWD part65 CWD part66 CWD part67 CWD part68 CWD part69 CWD part70 CWD part71 CWD part72 CWD part73 CWD part74 CWD part75 CWD part76 CWD part77 CWD part78 CWD part79 CWD part80 CWD part81 CWD part82 CWD part83 CWD part84 CWD part85 CWD part86 CWD part87 CWD part88 CWD part89 CWD part90 CWD part91 CWD part92 CWD part93 CWD part94 CWD part95 CWD part96 CWD part97 CWD part98 CWD part99 CWD part100 CWD part101 CWD part102 CWD part103 CWD part104 CWD part105 CWD part106 CWD part107 CWD part108 CWD part109 CWD part110 CWD part111 CWD part112 CWD part113 CWD part114 CWD part115 CWD part116 CWD part117 CWD part118 CWD part119 CWD part120 CWD part121 CWD part122 CWD part123 CWD part124 CWD part125 CWD part126 CWD part127 CWD part128 CWD part129 CWD part130 CWD part131 CWD part132 CWD part133 CWD part134 CWD part135 CWD part136 CWD part137 CWD part138 CWD part139 CWD part140 CWD part141 CWD part142 CWD part143 CWD part144 CWD part145 CWD part146 CWD part147 CWD part148 CWD part149 CWD part150 EPSV TYPE I SIZE 142 RETR 142 QUIT === End of file server.input === Start of file stderr142 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 100 21 100 21 0 0 2 0 0:00:10 0:00:07 0:00:03 4 100 21 100 21 0 0 2 0 0:00:10 0:00:07 0:00:03 5 === End of file stderr142 === Start of file trace142 00:50:08.328667 * Trying 127.0.0.1:37481... 00:50:09.289493 * Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 127.0.0.1 port 59034 00:50:09.552355 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:50:09.958789 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:50:09.984567 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:50:09.990922 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:50:09.996238 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:50:10.104904 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:50:10.186063 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:50:10.207463 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:50:10.282297 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:50:10.302664 => Send header, 5 bytes (0x5) 0000: PWD 00:50:10.319223 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:50:10.358102 * Entry path is '/' 00:50:10.520190 => Send header, 11 bytes (0xb) 0000: CWD part1 00:50:10.536557 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.581204 => Send header, 11 bytes (0xb) 0000: CWD part2 00:50:10.639505 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.648999 => Send header, 11 bytes (0xb) 0000: CWD part3 00:50:10.677329 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.683145 => Send header, 11 bytes (0xb) 0000: CWD part4 00:50:10.689028 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.694636 => Send header, 11 bytes (0xb) 0000: CWD part5 00:50:10.699160 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.704840 => Send header, 11 bytes (0xb) 0000: CWD part6 00:50:10.710489 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.716622 => Send header, 11 bytes (0xb) 0000: CWD part7 00:50:10.721053 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.726549 => Send header, 11 bytes (0xb) 0000: CWD part8 00:50:10.731862 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.739666 => Send header, 11 bytes (0xb) 0000: CWD part9 00:50:10.744675 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.750166 => Send header, 12 bytes (0xc) 0000: CWD part10 00:50:10.756372 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.763992 => Send header, 12 bytes (0xc) 0000: CWD part11 00:50:10.768500 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.774478 => Send header, 12 bytes (0xc) 0000: CWD part12 00:50:10.780890 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.788717 => Send header, 12 bytes (0xc) 0000: CWD part13 00:50:10.793199 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.800267 => Send header, 12 bytes (0xc) 0000: CWD part14 00:50:10.804604 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.810221 => Send header, 12 bytes (0xc) 0000: CWD part15 00:50:10.817146 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.823278 => Send header, 12 bytes (0xc) 0000: CWD part16 00:50:10.828815 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.832900 => Send header, 12 bytes (0xc) 0000: CWD part17 00:50:10.836717 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.840660 => Send header, 12 bytes (0xc) 0000: CWD part18 00:50:10.845066 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.849393 => Send header, 12 bytes (0xc) 0000: CWD part19 00:50:10.853470 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.858771 => Send header, 12 bytes (0xc) 0000: CWD part20 00:50:10.867103 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.872633 => Send header, 12 bytes (0xc) 0000: CWD part21 00:50:10.882186 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.887934 => Send header, 12 bytes (0xc) 0000: CWD part22 00:50:10.894210 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.900010 => Send header, 12 bytes (0xc) 0000: CWD part23 00:50:10.905855 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.911357 => Send header, 12 bytes (0xc) 0000: CWD part24 00:50:10.917616 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.921736 => Send header, 12 bytes (0xc) 0000: CWD part25 00:50:10.926467 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.931377 => Send header, 12 bytes (0xc) 0000: CWD part26 00:50:10.938243 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.944584 => Send header, 12 bytes (0xc) 0000: CWD part27 00:50:10.950213 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.959718 => Send header, 12 bytes (0xc) 0000: CWD part28 00:50:10.969375 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.975670 => Send header, 12 bytes (0xc) 0000: CWD part29 00:50:10.980402 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.984504 => Send header, 12 bytes (0xc) 0000: CWD part30 00:50:10.989349 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:10.994742 => Send header, 12 bytes (0xc) 0000: CWD part31 00:50:11.000331 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.010049 => Send header, 12 bytes (0xc) 0000: CWD part32 00:50:11.018426 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.026422 => Send header, 12 bytes (0xc) 0000: CWD part33 00:50:11.031610 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.037651 => Send header, 12 bytes (0xc) 0000: CWD part34 00:50:11.043515 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.049341 => Send header, 12 bytes (0xc) 0000: CWD part35 00:50:11.054415 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.059888 => Send header, 12 bytes (0xc) 0000: CWD part36 00:50:11.065714 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.073334 => Send header, 12 bytes (0xc) 0000: CWD part37 00:50:11.077982 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.085523 => Send header, 12 bytes (0xc) 0000: CWD part38 00:50:11.090861 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.095362 => Send header, 12 bytes (0xc) 0000: CWD part39 00:50:11.101650 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.108825 => Send header, 12 bytes (0xc) 0000: CWD part40 00:50:11.113933 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.118102 => Send header, 12 bytes (0xc) 0000: CWD part41 00:50:11.122277 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.128746 => Send header, 12 bytes (0xc) 0000: CWD part42 00:50:11.134513 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.139515 => Send header, 12 bytes (0xc) 0000: CWD part43 00:50:11.143867 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.148608 => Send header, 12 bytes (0xc) 0000: CWD part44 00:50:11.153512 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.158822 => Send header, 12 bytes (0xc) 0000: CWD part45 00:50:11.164317 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.170245 => Send header, 12 bytes (0xc) 0000: CWD part46 00:50:11.175469 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.181567 => Send header, 12 bytes (0xc) 0000: CWD part47 00:50:11.188222 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.196487 => Send header, 12 bytes (0xc) 0000: CWD part48 00:50:11.202095 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.210436 => Send header, 12 bytes (0xc) 0000: CWD part49 00:50:11.215888 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.224672 => Send header, 12 bytes (0xc) 0000: CWD part50 00:50:11.230757 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.237554 => Send header, 12 bytes (0xc) 0000: CWD part51 00:50:11.244822 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.253880 => Send header, 12 bytes (0xc) 0000: CWD part52 00:50:11.259266 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.269247 => Send header, 12 bytes (0xc) 0000: CWD part53 00:50:11.274324 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.282388 => Send header, 12 bytes (0xc) 0000: CWD part54 00:50:11.287098 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.294267 => Send header, 12 bytes (0xc) 0000: CWD part55 00:50:11.300095 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.306598 => Send header, 12 bytes (0xc) 0000: CWD part56 00:50:11.312278 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.318473 => Send header, 12 bytes (0xc) 0000: CWD part57 00:50:11.324119 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.328290 => Send header, 12 bytes (0xc) 0000: CWD part58 00:50:11.331739 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.335520 => Send header, 12 bytes (0xc) 0000: CWD part59 00:50:11.339326 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.343648 => Send header, 12 bytes (0xc) 0000: CWD part60 00:50:11.348901 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.355279 => Send header, 12 bytes (0xc) 0000: CWD part61 00:50:11.361665 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.369145 => Send header, 12 bytes (0xc) 0000: CWD part62 00:50:11.374173 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.380220 => Send header, 12 bytes (0xc) 0000: CWD part63 00:50:11.393860 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.400360 => Send header, 12 bytes (0xc) 0000: CWD part64 00:50:11.405937 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.412109 => Send header, 12 bytes (0xc) 0000: CWD part65 00:50:11.419229 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.426583 => Send header, 12 bytes (0xc) 0000: CWD part66 00:50:11.433760 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.439716 => Send header, 12 bytes (0xc) 0000: CWD part67 00:50:11.447691 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.455480 => Send header, 12 bytes (0xc) 0000: CWD part68 00:50:11.460138 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.466907 => Send header, 12 bytes (0xc) 0000: CWD part69 00:50:11.471903 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.479323 => Send header, 12 bytes (0xc) 0000: CWD part70 00:50:11.484048 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.491637 => Send header, 12 bytes (0xc) 0000: CWD part71 00:50:11.496185 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.502807 => Send header, 12 bytes (0xc) 0000: CWD part72 00:50:11.507765 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.514823 => Send header, 12 bytes (0xc) 0000: CWD part73 00:50:11.519051 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.526098 => Send header, 12 bytes (0xc) 0000: CWD part74 00:50:11.531185 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.536539 => Send header, 12 bytes (0xc) 0000: CWD part75 00:50:11.541147 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.546179 => Send header, 12 bytes (0xc) 0000: CWD part76 00:50:11.550526 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.555748 => Send header, 12 bytes (0xc) 0000: CWD part77 00:50:11.560515 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.565922 => Send header, 12 bytes (0xc) 0000: CWD part78 00:50:11.570560 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.575937 => Send header, 12 bytes (0xc) 0000: CWD part79 00:50:11.580439 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.585657 => Send header, 12 bytes (0xc) 0000: CWD part80 00:50:11.589993 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.595872 => Send header, 12 bytes (0xc) 0000: CWD part81 00:50:11.600871 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.606262 => Send header, 12 bytes (0xc) 0000: CWD part82 00:50:11.613654 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.619229 => Send header, 12 bytes (0xc) 0000: CWD part83 00:50:11.624202 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.630107 => Send header, 12 bytes (0xc) 0000: CWD part84 00:50:11.635362 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.641124 => Send header, 12 bytes (0xc) 0000: CWD part85 00:50:11.646113 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.651717 => Send header, 12 bytes (0xc) 0000: CWD part86 00:50:11.656851 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.662058 => Send header, 12 bytes (0xc) 0000: CWD part87 00:50:11.667478 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.673387 => Send header, 12 bytes (0xc) 0000: CWD part88 00:50:11.678175 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.683521 => Send header, 12 bytes (0xc) 0000: CWD part89 00:50:11.688856 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.695775 => Send header, 12 bytes (0xc) 0000: CWD part90 00:50:11.699828 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.706194 => Send header, 12 bytes (0xc) 0000: CWD part91 00:50:11.710118 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.714979 => Send header, 12 bytes (0xc) 0000: CWD part92 00:50:11.722816 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.728190 => Send header, 12 bytes (0xc) 0000: CWD part93 00:50:11.733190 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.738737 => Send header, 12 bytes (0xc) 0000: CWD part94 00:50:11.743118 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.748439 => Send header, 12 bytes (0xc) 0000: CWD part95 00:50:11.752885 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.758182 => Send header, 12 bytes (0xc) 0000: CWD part96 00:50:11.762896 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.768327 => Send header, 12 bytes (0xc) 0000: CWD part97 00:50:11.773339 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.778717 => Send header, 12 bytes (0xc) 0000: CWD part98 00:50:11.784250 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.790008 => Send header, 12 bytes (0xc) 0000: CWD part99 00:50:11.794717 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.799968 => Send header, 13 bytes (0xd) 0000: CWD part100 00:50:11.804230 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.809558 => Send header, 13 bytes (0xd) 0000: CWD part101 00:50:11.813825 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.818938 => Send header, 13 bytes (0xd) 0000: CWD part102 00:50:11.823159 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.828110 => Send header, 13 bytes (0xd) 0000: CWD part103 00:50:11.832936 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.837921 => Send header, 13 bytes (0xd) 0000: CWD part104 00:50:11.843227 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.848928 => Send header, 13 bytes (0xd) 0000: CWD part105 00:50:11.856449 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.868910 => Send header, 13 bytes (0xd) 0000: CWD part106 00:50:11.877396 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.889612 => Send header, 13 bytes (0xd) 0000: CWD part107 00:50:11.897534 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.906335 => Send header, 13 bytes (0xd) 0000: CWD part108 00:50:11.911015 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.916424 => Send header, 13 bytes (0xd) 0000: CWD part109 00:50:11.920993 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.926044 => Send header, 13 bytes (0xd) 0000: CWD part110 00:50:11.932375 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.940394 => Send header, 13 bytes (0xd) 0000: CWD part111 00:50:11.944906 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.951600 => Send header, 13 bytes (0xd) 0000: CWD part112 00:50:11.956577 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.964528 => Send header, 13 bytes (0xd) 0000: CWD part113 00:50:11.970217 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.976134 => Send header, 13 bytes (0xd) 0000: CWD part114 00:50:11.981288 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.987275 => CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind143 ../src/curl -q --output log/2/curl143.out --include --trace-ascii log/2/trace143 --trace-time "ftp://127.0.0.1:39881/%2ftmp/moo/143;type=a" > log/2/stdout143 2> log/2/stderr143 Send header, 13 bytes (0xd) 0000: CWD part115 00:50:11.992299 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:11.997584 => Send header, 13 bytes (0xd) 0000: CWD part116 00:50:12.002305 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.008650 => Send header, 13 bytes (0xd) 0000: CWD part117 00:50:12.014170 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.020049 => Send header, 13 bytes (0xd) 0000: CWD part118 00:50:12.024510 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.030364 => Send header, 13 bytes (0xd) 0000: CWD part119 00:50:12.035858 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.042416 => Send header, 13 bytes (0xd) 0000: CWD part120 00:50:12.047530 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.053471 => Send header, 13 bytes (0xd) 0000: CWD part121 00:50:12.058614 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.064469 => Send header, 13 bytes (0xd) 0000: CWD part122 00:50:12.069352 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.074885 => Send header, 13 bytes (0xd) 0000: CWD part123 00:50:12.080067 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.085281 => Send header, 13 bytes (0xd) 0000: CWD part124 00:50:12.090079 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.095523 => Send header, 13 bytes (0xd) 0000: CWD part125 00:50:12.100199 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.105670 => Send header, 13 bytes (0xd) 0000: CWD part126 00:50:12.110264 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.115577 => Send header, 13 bytes (0xd) 0000: CWD part127 00:50:12.120479 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.126341 => Send header, 13 bytes (0xd) 0000: CWD part128 00:50:12.131230 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.136983 => Send header, 13 bytes (0xd) 0000: CWD part129 00:50:12.143055 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.148326 => Send header, 13 bytes (0xd) 0000: CWD part130 00:50:12.153473 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.158731 => Send header, 13 bytes (0xd) 0000: CWD part131 00:50:12.163525 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.169019 => Send header, 13 bytes (0xd) 0000: CWD part132 00:50:12.173704 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.179264 => Send header, 13 bytes (0xd) 0000: CWD part133 00:50:12.188794 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.194740 => Send header, 13 bytes (0xd) 0000: CWD part134 00:50:12.201385 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.214694 => Send header, 13 bytes (0xd) 0000: CWD part135 00:50:12.222768 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.232814 => Send header, 13 bytes (0xd) 0000: CWD part136 00:50:12.242128 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.248094 => Send header, 13 bytes (0xd) 0000: CWD part137 00:50:12.253880 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.259638 => Send header, 13 bytes (0xd) 0000: CWD part138 00:50:12.266723 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.272813 => Send header, 13 bytes (0xd) 0000: CWD part139 00:50:12.278030 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.283918 => Send header, 13 bytes (0xd) 0000: CWD part140 00:50:12.289026 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.294843 => Send header, 13 bytes (0xd) 0000: CWD part141 00:50:12.300036 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.305433 => Send header, 13 bytes (0xd) 0000: CWD part142 00:50:12.310362 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.316010 => Send header, 13 bytes (0xd) 0000: CWD part143 00:50:12.319896 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.327818 => Send header, 13 bytes (0xd) 0000: CWD part144 00:50:12.332729 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.338280 => Send header, 13 bytes (0xd) 0000: CWD part145 00:50:12.343204 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.348512 => Send header, 13 bytes (0xd) 0000: CWD part146 00:50:12.353395 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.358877 => Send header, 13 bytes (0xd) 0000: CWD part147 00:50:12.363425 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.368839 => Send header, 13 bytes (0xd) 0000: CWD part148 00:50:12.373432 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.379345 => Send header, 13 bytes (0xd) 0000: CWD part149 00:50:12.404669 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.410912 => Send header, 13 bytes (0xd) 0000: CWD part150 00:50:12.415922 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:12.454897 => Send header, 6 bytes (0x6) 0000: EPSV 00:50:12.471029 * Connect data stream passively 00:50:12.520593 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||41549|) 00:50:12.636650 * Connecting to 127.0.0.1 (127.0.0.1) port 41549 00:50:12.705997 * Trying 127.0.0.1:41549... 00:50:12.806935 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 41549) from 127.0.0.1 port 57578 00:50:12.846134 => Send header, 8 bytes (0x8) 0000: TYPE I 00:50:12.881834 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:50:12.924174 => Send header, 10 bytes (0xa) 0000: SIZE 142 00:50:12.955797 <= Recv header, 8 bytes (0x8) 0000: 213 21 00:50:13.012425 => Send header, 10 bytes (0xa) 0000: RETR 142 00:50:13.033227 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 142 () (21 bytes). 00:50:13.079769 * Maxdownload = -1 00:50:13.091735 * Getting file with size: 21 00:50:13.235839 <= Recv data, 21 bytes (0x15) 0000: many parts there are. 00:50:13.529669 * abort upload 00:50:13.554920 <= Recv data, 0 bytes (0x0) 00:50:13.750207 * Remembering we are in dir "part1/part2/part3/part4/part5/part6/part7/part8/part9/part10/part11/part12/part13/part14/part15/part16/part17/part18/part19/part20/part21/part22/part23/part24/part25/part26/part27/part28/part29/part30/part31/part32/part33/part34/part35/part36/part37/part38/part39/part40/part41/part42/part43/part44/part45/part46/part47/part48/part49/part50/part51/part52/part53/part54/part55/part56/part57/part58/part59/part60/part61/part62/part63/part64/part65/part66/part67/part68/part69/part70/part71/part72/part73/part74/part75/part76/part77/part78/part79/part80/part81/part82/part83/part84/part85/part86/part87/part88/part89/part90/part91/part92/part93/part94/part95/part96/part97/part98/part99/part100/part101/part102/part103/part104/part105/part106/part107/part108/part109/part110/part111/part112/part113/part114/part115/part116/part117/part118/part119/part120/part121/part122/part123/part124/part125/part126/part127/part128/part129/part130/part131/part132/part133/part134/part135/part136/part137/part138/part139/part140/part141/part142/part143/part144/part145/part146/part147/part148/part149/part150/" 00:50:13.949258 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:50:14.254379 * Connection #0 to host 127.0.0.1:37481 left intact === End of file trace142 === Start of file valgrind142 ==208749== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind142 test 0143...[FTP URL with type=a] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind143 ../src/curl -q --output log/2/curl143.out --include --trace-ascii log/2/trace143 --trace-time "ftp://127.0.0.1:39881/%2ftmp/moo/143;type=a" > log/2/stdout143 2> log/2/stderr143 valgrind ERROR ==208917== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 143 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind143 ../src/curl -q --output log/2/curl143.out --include --trace-ascii log/2/trace143 --trace-time "ftp://127.0.0.1:39881/%2ftmp/moo/143;type=a" > log/2/stdout143 2> log/2/stderr143 === End of file commands.log === Start of file curl143.out bla bla bla === End of file curl143.out === Start of file ftp_server.log 00:49:29.977549 ====> Client connect 00:49:29.984447 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:49:29.989128 < "USER anonymous" 00:49:29.989403 > "331 We are happy you popped in![CR][LF]" 00:49:29.990400 < "PASS ftp@example.com" 00:49:29.990638 > "230 Welcome you silly person[CR][LF]" 00:49:29.991602 < "PWD" 00:49:29.991858 > "257 "/" is current directory[CR][LF]" 00:49:29.993876 < "EPSV" 00:49:29.994064 ====> Passive DATA channel requested by client 00:49:29.994199 DATA sockfilt for passive data channel starting... 00:49:30.041398 DATA sockfilt for passive data channel started (pid 208911) 00:49:30.042604 DATA sockfilt for passive data channel listens on port 45723 00:49:30.042941 > "229 Entering Passive Mode (|||45723|)[CR][LF]" 00:49:30.043111 Client has been notified that DATA conn will be accepted on port 45723 00:49:30.046139 Client connects to port 45723 00:49:30.046346 ====> Client established passive DATA connection on port 45723 00:49:30.047130 < "TYPE I" 00:49:30.047396 > "200 I modify TYPE as you wanted[CR][LF]" 00:49:30.048582 < "SIZE verifiedserver" 00:49:30.048892 > "213 18[CR][LF]" 00:49:30.050216 < "RETR verifiedserver" 00:49:30.052522 > "150 Binary junk (18 bytes).[CR][LF]" 00:49:30.053051 =====> Closing passive DATA connection... 00:49:30.053210 Server disconnects passive DATA connection 00:49:30.057949 Server disconnected passive DATA connection 00:49:30.058119 DATA sockfilt for passive data channel quits (pid 208911) 00:49:30.061096 DATA sockfilt for passive data channel quit (pid 208911) 00:49:30.061260 =====> Closed passive DATA connection 00:49:30.061502 > "226 File transfer complete[CR][LF]" 00:49:30.101661 < "QUIT" 00:49:30.101929 > "221 bye bye baby[CR][LF]" 00:49:30.103011 MAIN sockfilt said DISC 00:49:30.103188 ====> Client disconnected 00:49:30.103426 Awaiting input 00:50:17.563726 ====> Client connect 00:50:17.564443 FTPD: Getting commands from log/2/server.cmd 00:50:17.564773 FTPD: run test case number: 143 00:50:17.567319 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:50:18.857360 < "USER anonymous" 00:50:18.858132 > "331 We are happy you popped in![CR][LF]" 00:50:18.970758 < "PASS ftp@example.com" 00:50:18.974372 > "230 Welcome you silly person[CR][LF]" 00:50:19.063996 < "PWD" 00:50:19.064437 > "257 "/" is current directory[CR][LF]" 00:50:19.259713 < "CWD /" 00:50:19.260127 > "250 CWD command successful.[CR][LF]" 00:50:19.318596 < "CWD tmp" 00:50:19.319302 > "250 CWD command successful.[CR][LF]" 00:50:19.366621 < "CWD moo" 00:50:19.367324 > "250 CWD command successful.[CR][LF]" 00:50:19.446620 < "EPSV" 00:50:19.446998 ====> Passive DATA channel requested by client 00:50:19.447181 DATA sockfilt for passive data channel starting... 00:50:19.505114 DATA sockfilt for passive data channel started (pid 210132) 00:50:19.506244 DATA sockfilt for passive data channel listens on port 36125 00:50:19.511071 > "229 Entering Passive Mode (|||36125|)[CR][LF]" 00:50:19.511291 Client has been notified that DATA conn will be accepted on port 36125 00:50:19.681444 Client connects to port 36125 00:50:19.682049 ====> Client established passive DATA connection on port 36125 00:50:19.795303 < "TYPE A" 00:50:19.801074 > "200 I modify TYPE as you wanted[CR][LF]" 00:50:19.847373 < "RETR 143" 00:50:19.848926 > "150 Binary data connection for 143 () (12 bytes).[CR][LF]" 00:50:19.850116 =====> Closing passive DATA connection... 00:50:19.850302 Server disconnects passive DATA connection 00:50:19.851800 Server disconnected passive DATA connection 00:50:19.852046 DATA sockfilt for passive data channel quits (pid 210132) 00:50:19.857995 DATA sockfilt for passive data channel quit (pid 210132) 00:50:19.858234 =====> Closed passive DATA connection 00:50:19.858552 > "226 File transfer complete[CR][LF]" 00:50:21.918673 < "QUIT" 00:50:21.924397 > "221 bye bye baby[CR][LF]" 00:50:22.048043 MAIN sockfilt said DISC 00:50:22.048532 ====> Client disconnected 00:50:22.048819 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:49:30.594351 ====> Client connect 00:49:30.595602 Received DATA (on stdin) 00:49:30.595677 > 160 bytes data, server => client 00:49:30.601894 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:30.601997 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:30.602079 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:49:30.605580 < 16 bytes data, client => server 00:49:30.605655 'USER anonymous\r\n' 00:49:30.606777 Received DATA (on stdin) 00:49:30.606841 > 33 bytes data, server => client 00:49:30.606918 '331 We are happy you popped in!\r\n' 00:49:30.607142 < 22 bytes data, client => server 00:49:30.607212 'PASS ftp@example.com\r\n' 00:49:30.607997 Received DATA (on stdin) 00:49:30.608058 > 30 bytes data, server => client 00:49:30.608139 '230 Welcome you silly person\r\n' 00:49:30.608356 < 5 bytes data, client => server 00:49:30.608417 'PWD\r\n' 00:49:30.609218 Received DATA (on stdin) 00:49:30.609279 > 30 bytes data, server => client 00:49:30.609353 '257 "/" is current directory\r\n' 00:49:30.610754 < 6 bytes data, client => server 00:49:30.610817 'EPSV\r\n' 00:49:30.660529 Received DATA (on stdin) 00:49:30.660668 > 39 bytes data, server => client 00:49:30.660758 '229 Entering Passive Mode (|||45723|)\r\n' 00:49:30.663759 < 8 bytes data, client => server 00:49:30.663833 'TYPE I\r\n' 00:49:30.664771 Received DATA (on stdin) 00:49:30.664847 > 33 bytes data, server => client 00:49:30.664928 '200 I modify TYPE as you wanted\r\n' 00:49:30.665265 < 21 bytes data, client => server 00:49:30.665338 'SIZE verifiedserver\r\n' 00:49:30.666353 Received DATA (on stdin) 00:49:30.666418 > 8 bytes data, server => client 00:49:30.666482 '213 18\r\n' 00:49:30.666943 < 21 bytes data, client => server 00:49:30.667016 'RETR verifiedserver\r\n' 00:49:30.667646 Received DATA (on stdin) 00:49:30.667710 > 29 bytes data, server => client 00:49:30.667806 '150 Binary junk (18 bytes).\r\n' 00:49:30.679514 Received DATA (on stdin) 00:49:30.679588 > 28 bytes data, server => client 00:49:30.679667 '226 File transfer complete\r\n' 00:49:30.718278 < 6 bytes data, client => server 00:49:30.718355 'QUIT\r\n' 00:49:30.719461 Received DATA (on stdin) 00:49:30.719527 > 18 bytes data, server => client 00:49:30.719599 '221 bye bye baby\r\n' 00:49:30.720104 ====> Client disconnect 00:49:30.724812 Received ACKD (on stdin) 00:50:18.180538 ====> Client connect 00:50:18.182687 Received DATA (on stdin) 00:50:18.182778 > 160 bytes data, server => client 00:50:18.183991 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:50:18.184096 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:50:18.184186 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:50:19.473186 < 16 bytes data, client => server 00:50:19.473381 'USER anonymous\r\n' 00:50:19.474820 Received DATA (on stdin) 00:50:19.474911 > 33 bytes data, server => client 00:50:19.475036 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind144 ../src/curl -q --output log/5/curl144.out --include --trace-ascii log/5/trace144 --trace-time ftp://127.0.0.1:33729/ -P - -l > log/5/stdout144 2> log/5/stderr144 '331 We are happy you popped in!\r\n' 00:50:19.586729 < 22 bytes data, client => server 00:50:19.586889 'PASS ftp@example.com\r\n' 00:50:19.588221 Received DATA (on stdin) 00:50:19.588300 > 30 bytes data, server => client 00:50:19.591730 '230 Welcome you silly person\r\n' 00:50:19.679990 < 5 bytes data, client => server 00:50:19.680151 'PWD\r\n' 00:50:19.681734 Received DATA (on stdin) 00:50:19.681812 > 30 bytes data, server => client 00:50:19.681894 '257 "/" is current directory\r\n' 00:50:19.875647 < 7 bytes data, client => server 00:50:19.875826 'CWD /\r\n' 00:50:19.881394 Received DATA (on stdin) 00:50:19.881482 > 29 bytes data, server => client 00:50:19.881569 '250 CWD command successful.\r\n' 00:50:19.934597 < 9 bytes data, client => server 00:50:19.934770 'CWD tmp\r\n' 00:50:19.936038 Received DATA (on stdin) 00:50:19.936116 > 29 bytes data, server => client 00:50:19.936217 '250 CWD command successful.\r\n' 00:50:19.982642 < 9 bytes data, client => server 00:50:19.982798 'CWD moo\r\n' 00:50:19.984056 Received DATA (on stdin) 00:50:19.984133 > 29 bytes data, server => client 00:50:19.984238 '250 CWD command successful.\r\n' 00:50:20.062521 < 6 bytes data, client => server 00:50:20.062722 'EPSV\r\n' 00:50:20.123614 Received DATA (on stdin) 00:50:20.123754 > 39 bytes data, server => client 00:50:20.124906 '229 Entering Passive Mode (|||36125|)\r\n' 00:50:20.411223 < 8 bytes data, client => server 00:50:20.411411 'TYPE A\r\n' 00:50:20.412754 Received DATA (on stdin) 00:50:20.412826 > 33 bytes data, server => client 00:50:20.418484 '200 I modify TYPE as you wanted\r\n' 00:50:20.463342 < 10 bytes data, client => server 00:50:20.463500 'RETR 143\r\n' 00:50:20.468485 Received DATA (on stdin) 00:50:20.468610 > 51 bytes data, server => client 00:50:20.468714 '150 Binary data connection for 143 () (12 bytes).\r\n' 00:50:20.475880 Received DATA (on stdin) 00:50:20.475983 > 28 bytes data, server => client 00:50:20.476068 '226 File transfer complete\r\n' 00:50:22.534672 < 6 bytes data, client => server 00:50:22.534837 'QUIT\r\n' 00:50:22.536123 Received DATA (on stdin) 00:50:22.536192 > 18 bytes data, server => client 00:50:22.541749 '221 bye bye baby\r\n' 00:50:22.664839 ====> Client disconnect 00:50:22.666087 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:49:30.649551 Running IPv4 version 00:49:30.656880 Listening on port 45723 00:49:30.657313 Wrote pid 208911 to log/2/server/ftp_sockdata.pid 00:49:30.658042 Received PING (on stdin) 00:49:30.659125 Received PORT (on stdin) 00:49:30.662314 ====> Client connect 00:49:30.670567 Received DATA (on stdin) 00:49:30.670839 > 18 bytes data, server => client 00:49:30.671183 'WE ROOLZ: 202189\r\n' 00:49:30.674828 Received DISC (on stdin) 00:49:30.674949 ====> Client forcibly disconnected 00:49:30.675506 Received QUIT (on stdin) 00:49:30.675579 quits 00:49:30.676036 ============> sockfilt quits 00:50:19.113093 Running IPv4 version 00:50:19.120582 Listening on port 36125 00:50:19.121083 Wrote pid 210132 to log/2/server/ftp_sockdata.pid 00:50:19.121851 Received PING (on stdin) 00:50:19.122710 Received PORT (on stdin) 00:50:19.298179 ====> Client connect 00:50:19.466321 Received DATA (on stdin) 00:50:19.466706 > 12 bytes data, server => client 00:50:19.467809 'bla bla bla\n' 00:50:19.468153 Received DISC (on stdin) 00:50:19.468282 ====> Client forcibly disconnected 00:50:19.469317 Received QUIT (on stdin) 00:50:19.469405 quits 00:50:19.469956 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 143 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD / CWD tmp CWD moo EPSV TYPE A RETR 143 QUIT === End of file server.input === Start of file stderr143 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 12 0 12 0 0 2 0 --:--:-- 0:00:05 --:--:-- 3 100 12 0 12 0 0 2 0 --:--:-- 0:00:05 --:--:-- 2 === End of file stderr143 === Start of file trace143 00:50:17.223155 * Trying 127.0.0.1:39881... 00:50:18.159362 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 58596 00:50:18.398395 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:50:18.738170 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:50:18.764163 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:50:18.770715 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:50:18.775933 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:50:18.875800 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:50:18.950316 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:50:18.970871 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:50:19.041396 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:50:19.062957 => Send header, 5 bytes (0x5) 0000: PWD 00:50:19.078397 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:50:19.114344 * Entry path is '/' 00:50:19.258636 => Send header, 7 bytes (0x7) 0000: CWD / 00:50:19.271085 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:19.317580 => Send header, 9 bytes (0x9) 0000: CWD tmp 00:50:19.357415 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:19.365597 => Send header, 9 bytes (0x9) 0000: CWD moo 00:50:19.410368 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:19.445525 => Send header, 6 bytes (0x6) 0000: EPSV 00:50:19.467897 * Connect data stream passively 00:50:19.509319 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||36125|) 00:50:19.610916 * Connecting to 127.0.0.1 (127.0.0.1) port 36125 00:50:19.675019 * Trying 127.0.0.1:36125... 00:50:19.763989 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 36125) from 127.0.0.1 port 57410 00:50:19.795960 => Send header, 8 bytes (0x8) 0000: TYPE A 00:50:19.815011 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:50:19.855318 => Send header, 10 bytes (0xa) 0000: RETR 143 00:50:19.886496 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 143 () (12 bytes). 00:50:19.925859 * Maxdownload = -1 00:50:19.936671 * Getting file with size: -1 00:50:20.111281 <= Recv data, 12 bytes (0xc) 0000: bla bla bla. 00:50:20.480609 * abort upload 00:50:20.506613 <= Recv data, 0 bytes (0x0) 00:50:20.700227 * Remembering we are in dir "/tmp/moo/" 00:50:20.887790 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:50:21.202098 * Connection #0 to host 127.0.0.1:39881 left intact === End of file trace143 === Start of file valgrind143 ==208917== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind143 test 0144...[FTP NLST dir list without contents, using PORT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind144 ../src/curl -q --output log/5/curl144.out --include --trace-ascii log/5/trace144 --trace-time ftp://127.0.0.1:33729/ -P - -l > log/5/stdout144 2> log/5/stderr144 valgrind ERROR ==209073== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 144 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind144 ../src/curl -q --output log/5/curl144.out --include --trace-ascii log/5/trace144 --trace-time ftp://127.0.0.1:33729/ -P - -l > log/5/stdout144 2> log/5/stderr144 === End of file commands.log === Start of file ftp_server.log 00:49:32.841812 ====> Client connect 00:49:32.842781 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:49:32.852449 < "USER anonymous" 00:49:32.852936 > "331 We are happy you popped in![CR][LF]" 00:49:32.854717 < "PASS ftp@example.com" 00:49:32.855547 > "230 Welcome you silly person[CR][LF]" 00:49:32.856029 < "PWD" 00:49:32.856286 > "257 "/" is current directory[CR][LF]" 00:49:32.858983 < "EPSV" 00:49:32.859183 ====> Passive DATA channel requested by client 00:49:32.859323 DATA sockfilt for passive data channel starting... 00:49:32.899382 DATA sockfilt for passive data channel started (pid 209064) 00:49:32.900578 DATA sockfilt for passive data channel listens on port 37081 00:49:32.900896 > "229 Entering Passive Mode (|||37081|)[CR][LF]" 00:49:32.901120 Client has been notified that DATA conn will be accepted on port 37081 00:49:32.904230 Client connects to port 37081 00:49:32.904439 ====> Client established passive DATA connection on port 37081 00:49:32.905028 < "TYPE I" 00:49:32.905549 > "200 I modify TYPE as you wanted[CR][LF]" 00:49:32.906473 < "SIZE verifiedserver" 00:49:32.906768 > "213 18[CR][LF]" 00:49:32.908065 < "RETR verifiedserver" 00:49:32.910469 > "150 Binary junk (18 bytes).[CR][LF]" 00:49:32.910980 =====> Closing passive DATA connection... 00:49:32.911140 Server disconnects passive DATA connection 00:49:32.914320 Server disconnected passive DATA connection 00:49:32.914503 DATA sockfilt for passive data channel quits (pid 209064) 00:49:32.917513 DATA sockfilt for passive data channel quit (pid 209064) 00:49:32.917680 =====> Closed passive DATA connection 00:49:32.917919 > "226 File transfer complete[CR][LF]" 00:49:32.962110 < "QUIT" 00:49:32.962858 > "221 bye bye baby[CR][LF]" 00:49:32.967738 MAIN sockfilt said DISC 00:49:32.968056 ====> Client disconnected 00:49:32.968318 Awaiting input 00:50:20.426818 ====> Client connect 00:50:20.427620 FTPD: Getting commands from log/5/server.cmd 00:50:20.428496 FTPD: set custom reply for NLST command 00:50:20.428789 FTPD: run test case number: 144 00:50:20.431500 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:50:21.695206 < "USER anonymous" 00:50:21.695902 > "331 We are happy you popped in![CR][LF]" 00:50:21.801835 < "PASS ftp@example.com" 00:50:21.807718 > "230 Welcome you silly person[CR][LF]" 00:50:21.887149 < "PWD" 00:50:21.887583 > "257 "/" is current directory[CR][LF]" 00:50:22.179721 < "EPRT |1|127.0.0.1|54363|" 00:50:22.180055 ====> Active DATA channel requested by client 00:50:22.180615 > "200 Thanks for dropping by. We contact you later[CR][LF]" 00:50:22.180823 DATA sockfilt for active data channel starting... 00:50:22.261076 DATA sockfilt for active data channel started (pid 210231) 00:50:22.261569 ====> Active DATA channel connected to client port 54363 00:50:22.585071 < "TYPE A" 00:50:22.585822 > "200 I modify TYPE as you wanted[CR][LF]" 00:50:22.631240 < "NLST" 00:50:22.634381 > "450 No files found[CR][LF]" 00:50:23.930269 < "QUIT" 00:50:23.934372 > "221 bye bye baby[CR][LF]" 00:50:24.130010 MAIN sockfilt said DISC 00:50:24.130516 ====> Client disconnected 00:50:24.132183 DATA sockfilt for active data channel killed now 00:50:24.132406 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:49:33.458624 ====> Client connect 00:49:33.460177 Received DATA (on stdin) 00:49:33.460252 > 160 bytes data, server => client 00:49:33.460355 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:33.460451 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:33.460536 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:49:33.469032 < 16 bytes data, client => server 00:49:33.469150 'USER anonymous\r\n' 00:49:33.469914 Received DATA (on stdin) 00:49:33.469981 > 33 bytes data, server => client 00:49:33.470330 '331 We are happy you popped in!\r\n' 00:49:33.471390 < 22 bytes data, client => server 00:49:33.471475 'PASS ftp@example.com\r\n' 00:49:33.472105 Received DATA (on stdin) 00:49:33.472170 > 30 bytes data, server => client 00:49:33.472319 '230 Welcome you silly person\r\n' 00:49:33.472547 < 5 bytes data, client => server 00:49:33.472610 'PWD\r\n' 00:49:33.473711 Received DATA (on stdin) 00:49:33.473775 > 30 bytes data, server => client 00:49:33.473854 '257 "/" is current directory\r\n' 00:49:33.475706 < 6 bytes data, client => server 00:49:33.475776 'EPSV\r\n' 00:49:33.518522 Received DATA (on stdin) 00:49:33.518658 > 39 bytes data, server => client 00:49:33.518749 '229 Entering Passive Mode (|||37081|)\r\n' 00:49:33.521248 < 8 bytes data, client => server 00:49:33.521319 'TYPE I\r\n' 00:49:33.522427 Received DATA (on stdin) 00:49:33.522496 > 33 bytes data, server => client 00:49:33.522597 '200 I modify TYPE as you wanted\r\n' 00:49:33.523186 < 21 bytes data, client => server 00:49:33.523262 'SIZE verifiedserver\r\n' 00:49:33.524226 Received DATA (on stdin) 00:49:33.524290 > 8 bytes data, server => client 00:49:33.524355 '213 18\r\n' 00:49:33.524760 < 21 bytes data, client => server 00:49:33.524845 'RETR verifiedserver\r\n' 00:49:33.525586 Received DATA (on stdin) 00:49:33.525650 > 29 bytes data, server => client 00:49:33.525746 '150 Binary junk (18 bytes).\r\n' 00:49:33.535285 Received DATA (on stdin) 00:49:33.535365 > 28 bytes data, server => client 00:49:33.535445 '226 File transfer complete\r\n' 00:49:33.578744 < 6 bytes data, client => server 00:49:33.578868 'QUIT\r\n' 00:49:33.579568 Received DATA (on stdin) 00:49:33.579633 > 18 bytes data, server => client 00:49:33.579897 '221 bye bye baby\r\n' 00:49:33.584809 ====> Client disconnect 00:49:33.585114 Received ACKD (on stdin) 00:50:21.043583 ====> Client connect 00:50:21.046782 Received DATA (on stdin) 00:50:21.046895 > 160 bytes data, server => client 00:50:21.048114 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:50:21.048236 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:50:21.048341 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:50:22.311059 < 16 bytes data, client => server 00:50:22.311241 'USER anonymous\r\n' 00:50:22.312647 Received DATA (on stdin) 00:50:22.312719 > 33 bytes data, server => client 00:50:22.312820 '331 We are happy you popped in!\r\n' 00:50:22.417839 < 22 bytes data, client => server 00:50:22.418007 'PASS ftp@example.com\r\n' 00:50:22.419269 Received DATA (on stdin) 00:50:22.419342 > 30 bytes data, server => client 00:50:22.425075 '230 Welcome you silly person\r\n' 00:50:22.503156 < 5 bytes data, client => server 00:50:22.503323 'PWD\r\n' 00:50:22.504882 Received DATA (on stdin) 00:50:22.504959 > 30 bytes data, server => client 00:50:22.505044 '257 "/" is current directory\r\n' 00:50:22.795607 < 26 bytes data, client => server 00:50:22.795804 'EPRT |1|127.0.0.1|54363|\r\n' 00:50:22.800061 Received DATA (on stdin) 00:50:22.800159 > 50 bytes data, server => client 00:50:22.800257 '200 Thanks for dropping by. We contact you later\r\n' 00:50:23.200950 < 8 bytes data, client => server 00:50:23.201142 'TYPE A\r\n' 00:50:23.202532 Received DATA (on stdin) 00:50:23.202612 > 33 bytes data, server => client 00:50:23.202718 '200 I modify TYPE as you wanted\r\n' 00:50:23.247410 < 6 bytes data, client => server 00:50:23.247538 'NLST\r\n' 00:50:23.251717 Received DATA (on stdin) 00:50:23.251802 > 20 bytes data, server => client 00:50:23.251883 '450 No files found\r\n' 00:50:24.546204 < 6 bytes data, client => server 00:50:24.546402 'QUIT\r\n' 00:50:24.547709 Received DATA (on stdin) 00:50:24.547781 > 18 bytes data, server => client 00:50:24.551706 '221 bye bye baby\r\n' 00:50:24.7CMD (4864): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind145 ../src/curl -q --output log/3/curl145.out --include --trace-ascii log/3/trace145 --trace-time ftp://127.0.0.1:37331/ -P - -l > log/3/stdout145 2> log/3/stderr145 46773 ====> Client disconnect 00:50:24.748724 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:49:32.507811 Running IPv4 version 00:49:32.515109 Listening on port 37081 00:49:32.515547 Wrote pid 209064 to log/5/server/ftp_sockdata.pid 00:49:32.516273 Received PING (on stdin) 00:49:32.517145 Received PORT (on stdin) 00:49:32.521095 ====> Client connect 00:49:32.528488 Received DATA (on stdin) 00:49:32.528761 > 18 bytes data, server => client 00:49:32.529108 'WE ROOLZ: 202313\r\n' 00:49:32.529335 Received DISC (on stdin) 00:49:32.529446 ====> Client forcibly disconnected 00:49:32.531882 Received QUIT (on stdin) 00:49:32.531960 quits 00:49:32.532426 ============> sockfilt quits 00:50:22.860591 ====> Client connect 00:50:22.876518 Running IPv4 version 00:50:22.876666 Connected to port 54363 00:50:22.877098 Wrote pid 210231 to log/5/server/ftp_sockdata.pid 00:50:22.877821 Received PING (on stdin) 00:50:23.538398 ====> Client disconnect === End of file ftp_sockdata.log === Start of file server.cmd REPLY NLST 450 No files found Testnum 144 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPRT |1|127.0.0.1|54363| TYPE A NLST QUIT === End of file server.input === Start of file stderr144 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr144 === Start of file trace144 00:50:20.100586 * Trying 127.0.0.1:33729... 00:50:20.985631 * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 37982 00:50:21.221239 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:50:21.581204 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:50:21.605059 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:50:21.611582 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:50:21.616333 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:50:21.712684 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:50:21.782842 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:50:21.801949 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:50:21.866496 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:50:21.886151 => Send header, 5 bytes (0x5) 0000: PWD 00:50:21.903948 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:50:21.939861 * Entry path is '/' 00:50:22.028298 * Request has same path as previous transfer 00:50:22.178600 => Send header, 26 bytes (0x1a) 0000: EPRT |1|127.0.0.1|54363| 00:50:22.330896 <= Recv header, 50 bytes (0x32) 0000: 200 Thanks for dropping by. We contact you later 00:50:22.362181 * Connect data stream actively 00:50:22.466904 * Ready to accept data connection from server 00:50:22.481377 * Connection accepted from server 00:50:22.555087 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 45736) from 127.0.0.1 port 54363 00:50:22.583928 => Send header, 8 bytes (0x8) 0000: TYPE A 00:50:22.601155 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:50:22.630392 => Send header, 6 bytes (0x6) 0000: NLST 00:50:22.723315 <= Recv header, 20 bytes (0x14) 0000: 450 No files found 00:50:22.894782 * Remembering we are in dir "" 00:50:23.197349 * Connection #0 to host 127.0.0.1:33729 left intact === End of file trace144 === Start of file valgrind144 ==209073== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind144 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 150 in state 4 Runner 2 (id 185908) running test 151 in state 4 Runner 3 (id 185910) running test 145 in state 4 Runner 4 (id 185912) running test 149 in state 4 Runner 5 (id 185914) running test 152 in state 4 Runner 6 (id 185916) running test 148 in state 4 Runner 7 (id 185918) running test 146 in state 4 Runner 8 (id 185920) running test 147 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 150 in state 4 Runner 2 (id 185908) running test 151 in state 4 Runner 3 (id 185910) running test 145 in state 4 Runner 4 (id 185912) running test 149 in state 4 Runner 5 (id 185914) running test 152 in state 4 Runner 6 (id 185916) running test 148 in state 4 Runner 7 (id 185918) running test 146 in state 4 Runner 8 (id 185920) running test 147 in state 4 test 0145...[FTP NLST dir list with weird reply code, using PORT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind145 ../src/curl -q --output log/3/curl145.out --include --trace-ascii log/3/trace145 --trace-time ftp://127.0.0.1:37331/ -P - -l > log/3/stdout145 2> log/3/stderr145 valgrind ERROR ==209292== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 145 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind145 ../src/curl -q --output log/3/curl145.out --include --trace-ascii log/3/trace145 --trace-time ftp://127.0.0.1:37331/ -P - -l > log/3/stdout145 2> log/3/stderr145 === End of file commands.log === Start of file ftp_server.log 00:49:57.374397 ====> Client connect 00:49:57.375399 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:49:57.382229 < "USER anonymous" 00:49:57.382590 > "331 We are happy you popped in![CR][LF]" 00:49:57.388142 < "PASS ftp@example.com" 00:49:57.388456 > "230 Welcome you silly person[CR][LF]" 00:49:57.389220 < "PWD" 00:49:57.389492 > "257 "/" is current directory[CR][LF]" 00:49:57.391426 < "EPSV" 00:49:57.391651 ====> Passive DATA channel requested by client 00:49:57.391796 DATA sockfilt for passive data channel starting... 00:49:57.455874 DATA sockfilt for passive data channel started (pid 209286) 00:49:57.457300 DATA sockfilt for passive data channel listens on port 40125 00:49:57.457644 > "229 Entering Passive Mode (|||40125|)[CR][LF]" 00:49:57.457823 Client has been notified that DATA conn will be accepted on port 40125 00:49:57.460917 Client connects to port 40125 00:49:57.461176 ====> Client established passive DATA connection on port 40125 00:49:57.461999 < "TYPE I" 00:49:57.462268 > "200 I modify TYPE as you wanted[CR][LF]" 00:49:57.463424 < "SIZE verifiedserver" 00:49:57.464675 > "213 18[CR][LF]" 00:49:57.465212 < "RETR verifiedserver" 00:49:57.465515 > "150 Binary junk (18 bytes).[CR][LF]" 00:49:57.466057 =====> Closing passive DATA connection... 00:49:57.466220 Server disconnects passive DATA connection 00:49:57.471003 Server disconnected passive DATA connection 00:49:57.471277 DATA sockfilt for passive data channel quits (pid 209286) 00:49:57.477944 DATA sockfilt for passive data channel quit (pid 209286) 00:49:57.478212 =====> Closed passive DATA connection 00:49:57.478501 > "226 File transfer complete[CR][LF]" 00:49:57.519479 < "QUIT" 00:49:57.519905 > "221 bye bye baby[CR][LF]" 00:49:57.521136 MAIN sockfilt said DISC 00:49:57.524358 ====> Client disconnected 00:49:57.524691 Awaiting input 00:50:44.734399 ====> Client connect 00:50:44.735151 FTPD: Getting commands from log/3/server.cmd 00:50:44.735944 FTPD: set custom reply for NLST command 00:50:44.736222 FTPD: run test case number: 145 00:50:44.737219 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:50:45.975617 < "USER anonymous" 00:50:45.981050 > "331 We are happy you popped in![CR][LF]" 00:50:46.093695 < "PASS ftp@example.com" 00:50:46.094123 > "230 Welcome you silly person[CR][LF]" 00:50:46.182907 < "PWD" 00:50:46.183540 > "257 "/" is current directory[CR][LF]" 00:50:46.479212 < "EPRT |1|127.0.0.1|46027|" 00:50:46.479573 ====> Active DATA channel requested by client 00:50:46.484421 > "200 Thanks for dropping by. We contact you later[CR][LF]" 00:50:46.484754 DATA sockfilt for active data channel starting... 00:50:46.564044 DATA sockfilt for active data channel started (pid 210588) 00:50:46.564555 ====> Active DATA channel connected to client port 46027 00:50:46.903211 < "TYPE A" 00:50:46.903985 > "200 I modify TYPE as you wanted[CR][LF]" 00:50:46.954066 < "NLST" 00:50:46.954493 > "550 Have a taste on this![CR][LF]" 00:50:48.285686 < "QUIT" 00:50:48.286397 > "221 bye bye baby[CR][LF]" 00:50:48.487380 MAIN sockfilt said DISC 00:50:48.487920 ====> Client disconnected 00:50:48.494476 DATA sockfilt for active data channel killed now 00:50:48.494759 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:49:56.989166 ====> Client connect 00:49:56.992402 Received DATA (on stdin) 00:49:56.992498 > 160 bytes data, server => client 00:49:56.992603 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:49:56.992699 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:49:56.992785 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:49:56.998543 < 16 bytes data, client => server 00:49:56.998685 'USER anonymous\r\n' 00:49:56.999679 Received DATA (on stdin) 00:49:56.999755 > 33 bytes data, server => client 00:49:56.999840 '331 We are happy you popped in!\r\n' 00:49:57.000286 < 22 bytes data, client => server 00:49:57.000360 'PASS ftp@example.com\r\n' 00:49:57.005554 Received DATA (on stdin) 00:49:57.005650 > 30 bytes data, server => client 00:49:57.005735 '230 Welcome you silly person\r\n' 00:49:57.006022 < 5 bytes data, client => server 00:49:57.006088 'PWD\r\n' 00:49:57.006589 Received DATA (on stdin) 00:49:57.006655 > 30 bytes data, server => client 00:49:57.006737 '257 "/" is current directory\r\n' 00:49:57.008158 < 6 bytes data, client => server 00:49:57.008237 'EPSV\r\n' 00:49:57.075182 Received DATA (on stdin) 00:49:57.075316 > 39 bytes data, server => client 00:49:57.075403 '229 Entering Passive Mode (|||40125|)\r\n' 00:49:57.078544 < 8 bytes data, client => server 00:49:57.078627 'TYPE I\r\n' 00:49:57.079599 Received DATA (on stdin) 00:49:57.079663 > 33 bytes data, server => client 00:49:57.079743 '200 I modify TYPE as you wanted\r\n' 00:49:57.080092 < 21 bytes data, client => server 00:49:57.080164 'SIZE verifiedserver\r\n' 00:49:57.080828 Received DATA (on stdin) 00:49:57.080896 > 8 bytes data, server => client 00:49:57.081105 '213 18\r\n' 00:49:57.081595 < 21 bytes data, client => server 00:49:57.081684 'RETR verifiedserver\r\n' 00:49:57.084931 Received DATA (on stdin) 00:49:57.085023 > 29 bytes data, server => client 00:49:57.085105 '150 Binary junk (18 bytes).\r\n' 00:49:57.095850 Received DATA (on stdin) 00:49:57.095963 > 28 bytes data, server => client 00:49:57.096043 '226 File transfer complete\r\n' 00:49:57.135471 < 6 bytes data, client => server 00:49:57.135657 'QUIT\r\n' 00:49:57.137432 Received DATA (on stdin) 00:49:57.137508 > 18 bytes data, server => client 00:49:57.137580 '221 bye bye baby\r\n' 00:49:57.138164 ====> Client disconnect 00:49:57.138450 Received ACKD (on stdin) 00:50:44.351106 ====> Client connect 00:50:44.354511 Received DATA (on stdin) 00:50:44.354613 > 160 bytes data, server => client 00:50:44.354740 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:50:44.354842 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:50:44.354942 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:50:45.591422 < 16 bytes data, client => server 00:50:45.591604 'USER anonymous\r\n' 00:50:45.593009 Received DATA (on stdin) 00:50:45.593085 > 33 bytes data, server => client 00:50:45.598376 '331 We are happy you popped in!\r\n' 00:50:45.709548 < 22 bytes data, client => server 00:50:45.709734 'PASS ftp@example.com\r\n' 00:50:45.711387 Received DATA (on stdin) 00:50:45.711467 > 30 bytes data, server => client 00:50:45.711553 '230 Welcome you silly person\r\n' 00:50:45.798799 < 5 bytes data, client => server 00:50:45.798985 'PWD\r\n' 00:50:45.800354 Received DATA (on stdin) 00:50:45.800431 > 30 bytes data, server => client 00:50:45.800795 '257 "/" is current directory\r\n' 00:50:46.094945 < 26 bytes data, client => server 00:50:46.095176 'EPRT |1|127.0.0.1|46027|\r\n' 00:50:46.097189 Received DATA (on stdin) 00:50:46.097269 > 50 bytes data, server => client 00:50:46.104101 '200 Thanks for dropping by. We contact you later\r\n' 00:50:46.519057 < 8 bytes data, client => server 00:50:46.519239 'TYPE A\r\n' 00:50:46.520633 Received DATA (on stdin) 00:50:46.520712 > 33 bytes data, server => client 00:50:46.520831 '200 I modify TYPE as you wanted\r\n' 00:50:46.569965 < 6 bytes data, client => server 00:50:46.570141 'NLST\r\n' 00:50:46.574684 Received DATA (on stdin) 00:50:46.574814 > 27 bytes data, server => client 00:50:46.574907 '550 Have a taste on this!\r\n' 00:50:47.901561 < 6 bytes data, client => server 00:50:47.901736 'QUIT\r\n' 00:50:47.903093 Received DATA (on stdin) 00:50:47.903163 > 18 bytes data, server => client 00:50:47.903258 '221 bye bye baby\r\n' 00:50:48.104086 ====> Client disconnect 00:50:48.104951 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:49:57.042300 Running IPv4 version 00:49:57.071309 Listening on port 40125 00:49:57.071859 Wrote pid 209286 to log/3/server/ftp_sockdata.pid 00:49:57.072628 Received PING (on stdin) 00:49:57.073747 Received PORT (on stdin) 00:49:57.077863 ====> Client connect 00:49:57.083623 Received DATA (on stdin) 00:49:57.083954 > 18 bytes data, server => client 00:49:57.084352 'WE ROOLZ: 202504\r\n' 00:49:57.084609 Received DISC (on stdin) 00:49:57.084724 ====> Client forcibly disconnected 00:49:57.088632 Received QUIT (on stdin) 00:49:57.088735 quits 00:49:57.089267 ============> sockfilt quits 00:50:46.165727 ====> Client connect 00:50:46.179421 Running IPv4 version 00:50:46.179572 Connected to port 46027 00:50:46.179996 Wrote pid 210588 to log/3/server/ftp_sockdata.pid 00:50:46.180714 Received PING (on stdin) 00:50:46.833415 ====> Client disconnect === End of file ftp_sockdata.log === Start of file server.cmd REPLY NLST 550 Have a taste on this Testnum 145 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPRT |1|127.0.0.1|46027| TYPE A NLST QUIT === End of file server.input === Start of file stderr145 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (19) RETR response: 550 === End of file stderr145 === Start of file trace145 00:50:44.423047 * Trying 127.0.0.1:37331... 00:50:45.293216 * Established connection to 127.0.0.1 (127.0.0.1 port 37331) from 127.0.0.1 port 53536 00:50:45.533025 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:50:45.862271 <= Recv header, 32 bytes (0x20) 0000: 220- CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind146 ../src/curl -q --output log/7/curl146.out --include --trace-ascii log/7/trace146 --trace-time ftp://127.0.0.1:45353/first/dir/here/146 ftp://127.0.0.1:45353/146 > log/7/stdout146 2> log/7/stderr146 ___| | | | _ \| | 00:50:45.886695 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:50:45.893131 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:50:45.897964 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:50:45.995167 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:50:46.070727 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:50:46.093670 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:50:46.162703 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:50:46.181830 => Send header, 5 bytes (0x5) 0000: PWD 00:50:46.197676 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:50:46.233233 * Entry path is '/' 00:50:46.322376 * Request has same path as previous transfer 00:50:46.477994 => Send header, 26 bytes (0x1a) 0000: EPRT |1|127.0.0.1|46027| 00:50:46.635060 <= Recv header, 50 bytes (0x32) 0000: 200 Thanks for dropping by. We contact you later 00:50:46.668541 * Connect data stream actively 00:50:46.778157 * Ready to accept data connection from server 00:50:46.794081 * Connection accepted from server 00:50:46.871489 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 37254) from 127.0.0.1 port 46027 00:50:46.902095 => Send header, 8 bytes (0x8) 0000: TYPE A 00:50:46.920644 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:50:46.953020 => Send header, 6 bytes (0x6) 0000: NLST 00:50:47.061472 <= Recv header, 27 bytes (0x1b) 0000: 550 Have a taste on this 00:50:47.105427 * RETR response: 550 00:50:47.187123 * Remembering we are in dir "" 00:50:47.522365 * Connection #0 to host 127.0.0.1:37331 left intact === End of file trace145 === Start of file valgrind145 ==209292== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind145 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 150 in state 4 Runner 2 (id 185908) running test 151 in state 4 Runner 3 (id 185910) running test 153 in state 4 Runner 4 (id 185912) running test 149 in state 4 Runner 5 (id 185914) running test 152 in state 4 Runner 6 (id 185916) running test 148 in state 4 Runner 7 (id 185918) running test 146 in state 4 Runner 8 (id 185920) running test 147 in state 4 test 0146...[persistent FTP with different paths] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind146 ../src/curl -q --output log/7/curl146.out --include --trace-ascii log/7/trace146 --trace-time ftp://127.0.0.1:45353/first/dir/here/146 ftp://127.0.0.1:45353/146 > log/7/stdout146 2> log/7/stderr146 valgrind ERROR ==209469== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 146 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind146 ../src/curl -q --output log/7/curl146.out --include --trace-ascii log/7/trace146 --trace-time ftp://127.0.0.1:45353/first/dir/here/146 ftp://127.0.0.1:45353/146 > log/7/stdout146 2> log/7/stderr146 === End of file commands.log === Start of file curl146.out this is file contents === End of file curl146.out === Start of file ftp_server.log 00:50:06.728059 ====> Client connect 00:50:06.729028 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:50:06.737761 < "USER anonymous" 00:50:06.738150 > "331 We are happy you popped in![CR][LF]" 00:50:06.741481 < "PASS ftp@example.com" 00:50:06.741795 > "230 Welcome you silly person[CR][LF]" 00:50:06.742717 < "PWD" 00:50:06.743005 > "257 "/" is current directory[CR][LF]" 00:50:06.745521 < "EPSV" 00:50:06.745765 ====> Passive DATA channel requested by client 00:50:06.745910 DATA sockfilt for passive data channel starting... 00:50:06.789324 DATA sockfilt for passive data channel started (pid 209457) 00:50:06.790582 DATA sockfilt for passive data channel listens on port 32975 00:50:06.791396 > "229 Entering Passive Mode (|||32975|)[CR][LF]" 00:50:06.791582 Client has been notified that DATA conn will be accepted on port 32975 00:50:06.792986 Client connects to port 32975 00:50:06.793208 ====> Client established passive DATA connection on port 32975 00:50:06.794153 < "TYPE I" 00:50:06.794614 > "200 I modify TYPE as you wanted[CR][LF]" 00:50:06.795760 < "SIZE verifiedserver" 00:50:06.796352 > "213 18[CR][LF]" 00:50:06.797153 < "RETR verifiedserver" 00:50:06.797738 > "150 Binary junk (18 bytes).[CR][LF]" 00:50:06.798299 =====> Closing passive DATA connection... 00:50:06.798460 Server disconnects passive DATA connection 00:50:06.799745 Server disconnected passive DATA connection 00:50:06.799929 DATA sockfilt for passive data channel quits (pid 209457) 00:50:06.803446 DATA sockfilt for passive data channel quit (pid 209457) 00:50:06.803703 =====> Closed passive DATA connection 00:50:06.804332 > "226 File transfer complete[CR][LF]" 00:50:06.859644 < "QUIT" 00:50:06.860340 > "221 bye bye baby[CR][LF]" 00:50:06.860867 MAIN sockfilt said DISC 00:50:06.861198 ====> Client disconnected 00:50:06.861451 Awaiting input 00:50:54.258178 ====> Client connect 00:50:54.258887 FTPD: Getting commands from log/7/server.cmd 00:50:54.259201 FTPD: run test case number: 146 00:50:54.260173 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:50:55.566509 < "USER anonymous" 00:50:55.571067 > "331 We are happy you popped in![CR][LF]" 00:50:55.677971 < "PASS ftp@example.com" 00:50:55.678407 > "230 Welcome you silly person[CR][LF]" 00:50:55.769959 < "PWD" 00:50:55.774408 > "257 "/" is current directory[CR][LF]" 00:50:55.954755 < "CWD first" 00:50:55.955178 > "250 CWD command successful.[CR][LF]" 00:50:56.012737 < "CWD dir" 00:50:56.016128 > "250 CWD command successful.[CR][LF]" 00:50:56.060737 < "CWD here" 00:50:56.061437 > "250 CWD command successful.[CR][LF]" 00:50:56.120463 < "EPSV" 00:50:56.120788 ====> Passive DATA channel requested by client 00:50:56.120953 DATA sockfilt for passive data channel starting... 00:50:56.173923 DATA sockfilt for passive data channel started (pid 210762) 00:50:56.175331 DATA sockfilt for passive data channel listens on port 38525 00:50:56.175680 > "229 Entering Passive Mode (|||38525|)[CR][LF]" 00:50:56.175855 Client has been notified that DATA conn will be accepted on port 38525 00:50:56.347724 Client connects to port 38525 00:50:56.348330 ====> Client established passive DATA connection on port 38525 00:50:56.465278 < "TYPE I" 00:50:56.465708 > "200 I modify TYPE as you wanted[CR][LF]" 00:50:56.518506 < "SIZE 146" 00:50:56.520510 > "213 22[CR][LF]" 00:50:56.608500 < "RETR 146" 00:50:56.609612 > "150 Binary data connection for 146 () (22 bytes).[CR][LF]" 00:50:56.610143 =====> Closing passive DATA connection... 00:50:56.610309 Server disconnects passive DATA connection 00:50:56.617679 Server disconnected passive DATA connection 00:50:56.618002 DATA sockfilt for passive data channel quits (pid 210762) 00:50:56.621354 DATA sockfilt for passive data channel quit (pid 210762) 00:50:56.621566 =====> Closed passive DATA connection 00:50:56.621858 > "226 File transfer complete[CR][LF]" 00:50:59.112035 < "CWD /" 00:50:59.112437 > "250 CWD command successful.[CR][LF]" 00:50:59.131227 < "EPSV" 00:50:59.131538 ====> Passive DATA channel requested by client 00:50:59.131696 DATA sockfilt for passive data channel starting... 00:50:59.204199 DATA sockfilt for passive data channel started (pid 210774) 00:50:59.205453 DATA sockfilt for passive data channel listens on port 36915 00:50:59.205788 > "229 Entering Passive Mode (|||36915|)[CR][LF]" 00:50:59.205952 Client has been notified that DATA conn will be accepted on port 36915 00:50:59.231383 Client connects to port 36915 00:50:59.231900 ====> Client established passive DATA connection on port 36915 00:50:59.261174 < "SIZE 146" 00:50:59.261809 > "213 22[CR][LF]" 00:50:59.274933 < "RETR 146" 00:50:59.275531 > "150 Binary data connection for 146 () (22 bytes).[CR][LF]" 00:50:59.276070 =====> Closing passive DATA connection... 00:50:59.276234 Server disconnects passive DATA connection 00:50:59.277567 Server disconnected passive DATA connection 00:50:59.277758 DATA sockfilt for passive data channel quits (pid 210774) 00:50:59.283944 DATA sockfilt for passive data channel quit (pid 210774) 00:50:59.284234 =====> Closed passive DATA connection 00:50:59.287982 > "226 File transfer complete[CR][LF]" 00:50:59.595877 < "QUIT" 00:50:59.596315 > "221 bye bye baby[CR][LF]" 00:50:59.723178 MAIN sockfilt said DISC 00:50:59.723681 ====> Client disconnected 00:50:59.723980 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:50:06.344788 ====> Client connect 00:50:06.346367 Received DATA (on stdin) 00:50:06.346446 > 160 bytes data, server => client 00:50:06.346547 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:50:06.346643 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:50:06.346727 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:50:06.353984 < 16 bytes data, client => server 00:50:06.354164 'USER anonymous\r\n' 00:50:06.355226 Received DATA (on stdin) 00:50:06.355308 > 33 bytes data, server => client 00:50:06.355399 '331 We are happy you popped in!\r\n' 00:50:06.355716 < 22 bytes data, client => server 00:50:06.355795 'PASS ftp@example.com\r\n' 00:50:06.358870 Received DATA (on stdin) 00:50:06.358968 > 30 bytes data, server => client 00:50:06.359053 '230 Welcome you silly person\r\n' 00:50:06.360300 < 5 bytes data, client => server 00:50:06.360375 'PWD\r\n' 00:50:06.360442 Received DATA (on stdin) 00:50:06.360503 > 30 bytes data, server => client 00:50:06.360582 '257 "/" is current directory\r\n' 00:50:06.362061 < 6 bytes data, client => server 00:50:06.362145 'EPSV\r\n' 00:50:06.407988 Received DATA (on stdin) 00:50:06.408165 > 39 bytes data, server => client 00:50:06.408282 '229 Entering Passive Mode (|||32975|)\r\n' 00:50:06.410646 < 8 bytes data, client => server 00:50:06.410738 'TYPE I\r\n' 00:50:06.411521 Received DATA (on stdin) 00:50:06.411592 > 33 bytes data, server => client 00:50:06.411962 '200 I modify TYPE as you wanted\r\n' 00:50:06.412349 < 21 bytes data, client => server 00:50:06.412425 'SIZE verifiedserver\r\n' 00:50:06.413174 Received DATA (on stdin) 00:50:06.413243 > 8 bytes data, server => client 00:50:06.413331 '213 18\r\n' 00:50:06.413769 < 21 bytes data, client => server 00:50:06.413845 'RETR verifiedserver\r\n' 00:50:06.414529 Received DATA (on stdin) 00:50:06.414598 > 29 bytes data, server => client 00:50:06.414701 '150 Binary junk (18 bytes).\r\n' 00:50:06.421045 Received DATA (on stdin) 00:50:06.421172 > 28 bytes data, server => client 00:50:06.421282 '226 File transfer complete\r\n' 00:50:06.475655 < 6 bytes data, client => server 00:50:06.475833 'QUIT\r\n' 00:50:06.477115 Received DATA (on stdin) 00:50:06.477196 > 18 bytes data, server => client 00:50:06.477293 '221 bye bye baby\r\n' 00:50:06.477871 ====> Client disconnect 00:50:06.478185 Received ACKD (on stdin) 00:50:53.874891 ====> Client connect 00:50:53.881165 Received DATA (on stdin) 00:50:53.881289 > 160 bytes data, server => client 00:50:53.881412 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:50:53.881511 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:50:53.881598 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:50:55.182287 < 16 bytes data, client => server 00:50:55.182476 'USER anonymous\r\n' 00:50:55.183909 Received DATA (on stdin) 00:50:55.183988 > 33 bytes data, server => client 00:50:55.188427 '331 We are happy you popped in!\r\n' 00:50:55.293748 < 22 bytes data, client => server 00:50:55.293960 'PASS ftp@example.com\r\n' 00:50:55.295659 Received DATA (on stdin) 00:50:55.295739 > 30 bytes data, server => client 00:50:55.295819 '230 Welcome you silly person\r\n' 00:50:55.385854 < 5 bytes data, client => server 00:50:55.386036 'PWD\r\n' 00:50:55.387363 Received DATA (on stdin) 00:50:55.387439 > 30 bytes data, server => client 00:50:55.391774 '257 "/" is current directory\r\n' 00:50:55.570579 < 11 bytes data, client => server 00:50:55.570781 'CWD first\r\n' 00:50:55.572497 Received DATA (on stdin) 00:50:55.572578 > 29 bytes data, server => client 00:50:55.572663 '250 CWD command successful.\r\n' 00:50:55.628640 < 9 bytes data, client => server 00:50:55.628816 'CWD dir\r\n' 00:50:55.630117 Received DATA (on stdin) 00:50:55.630193 > 29 bytes data, server => client 00:50:55.633583 '250 CWD command successful.\r\n' 00:50:55.676680 < 10 bytes data, client => server 00:50:55.676836 'CWD here\r\n' 00:50:55.678115 Received DATA (on stdin) 00:50:55.678191 > 29 bytes data, server => client 00:50:55.678295 '250 CWD command successful.\r\n' 00:50:55.736337 < 6 bytes data, client => server 00:50:55.736549 'EPSV\r\n' 00:50:55.792634 Received DATA (on stdin) 00:50:55.792785 > 39 bytes data, server => client 00:50:55.792879 '229 Entering Passive Mode (|||38525|)\r\n' 00:50:56.081360 < 8 bytes data, client => server 00:50:56.081547 'TYPE I\r\n' 00:50:56.082668 Received DATA (on stdin) 00:50:56.082737 > 33 bytes data, server => client 00:50:56.082815 '200 I modify TYPE as you wanted\r\n' 00:50:56.132100 < 10 bytes data, client => server 00:50:56.132298 'SIZE 146\r\n' 00:50:56.137491 Received DATA (on stdin) 00:50:56.137602 > 8 bytes data, server => client 00:50:56.137668 '213 22\r\n' 00:50:56.221879 < 10 bytes data, client => server 00:50:56.222045 'RETR 146\r\n' 00:50:56.227524 Received DATA (on stdin) 00:50:56.227635 > 51 bytes data, server => client 00:50:56.227733 '150 Binary data connection for 146 () (22 bytes).\r\n' 00:50:56.239127 Received DATA (on stdin) 00:50:56.239241 > 28 bytes data, server => client 00:50:56.239323 '226 File transfer complete\r\n' 00:50:58.728298 < 7 bytes data, client => server 00:50:58.728500 'CWD /\r\n' 00:50:58.729701 Received DATA (on stdin) 00:50:58.729770 > 29 bytes data, server => client 00:50:58.729851 '250 CWD command successful.\r\n' 00:50:58.747248 < 6 bytes data, client => server 00:50:58.747388 'EPSV\r\n' 00:50:58.823210 Received DATA (on stdin) 00:50:58.823363 > 39 bytes data, server => client 00:50:58.823457 '229 Entering Passive Mode (|||36915|)\r\n' 00:50:58.877063 < 10 bytes data, client => server 00:50:58.877241 'SIZE 146\r\n' 00:50:58.881317 Received DATA (on stdin) 00:50:58.881428 > 8 bytes data, server => client 00:50:58.881501 '213 22\r\n' 00:50:58.888572 < 10 bytes data, client => server 00:50:58.888691 'RETR 146\r\n' 00:50:58.892487 Received DATA (on stdin) 00:50:58.892594 > 51 bytes data, server => client 00:50:58.892710 '150 Binary data connection for 146 () (22 bytes).\r\n' 00:50:58.904925 Received DATA (on stdin) 00:50:58.905062 > 28 bytes data, server => client 00:50:58.905163 '226 File transfer complete\r\n' 00:50:59.212001 < 6 bytes data, client => server 00:50:59.212199 'QUIT\r\n' 00:50:59.213257 Received DATA (on stdin) 00:50:59.213336 > 18 bytes data, server => client 00:50:59.213424 '221 bye bye baby\r\n' 00:50:59.339568 ====> Client disconnect 00:50:59.340688 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:50:06.396671 Running IPv4 version 00:50:06.404583 Listening on port 32975 00:50:06.405091 Wrote pid 209457 to log/7/server/ftp_sockdata.pid 00:50:06.405867 Received PING (on stdin) 00:50:06.406967 Received PORT (on stdin) 00:50:06.409905 ====> Client connect 00:50:06.415758 Received DATA (on stdin) 00:50:06.416088 > 18 bytes data, server => client 00:50:06.416475 'WE ROOLZ: 202639\r\n' 00:50:06.416732 Received DISC (on stdin) 00:50:06.4172CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind147 ../src/curl -q --output log/8/curl147.out --include --trace-ascii log/8/trace147 --trace-time ftp://127.0.0.1:43843/first/dir/here/147 --ftp-create-dirs > log/8/stdout147 2> log/8/stderr147 65 ====> Client forcibly disconnected 00:50:06.417438 Received QUIT (on stdin) 00:50:06.417509 quits 00:50:06.418023 ============> sockfilt quits 00:50:56.781778 Running IPv4 version 00:50:56.789300 Listening on port 38525 00:50:56.789801 Wrote pid 210762 to log/7/server/ftp_sockdata.pid 00:50:56.790570 Received PING (on stdin) 00:50:56.791677 Received PORT (on stdin) 00:50:56.962222 ====> Client connect 00:50:57.227875 Received DATA (on stdin) 00:50:57.228263 > 22 bytes data, server => client 00:50:57.228633 'this is file contents\n' 00:50:57.228883 Received DISC (on stdin) 00:50:57.229003 ====> Client forcibly disconnected 00:50:57.235260 Received QUIT (on stdin) 00:50:57.235379 quits 00:50:57.235913 ============> sockfilt quits 00:50:59.790248 Running IPv4 version 00:50:59.819515 Listening on port 36915 00:50:59.820048 Wrote pid 210774 to log/7/server/ftp_sockdata.pid 00:50:59.820839 Received PING (on stdin) 00:50:59.821785 Received PORT (on stdin) 00:50:59.848083 ====> Client connect 00:50:59.893445 Received DATA (on stdin) 00:50:59.893822 > 22 bytes data, server => client 00:50:59.894184 'this is file contents\n' 00:50:59.894450 Received DISC (on stdin) 00:50:59.897631 ====> Client forcibly disconnected 00:50:59.897868 Received QUIT (on stdin) 00:50:59.897950 quits 00:50:59.898496 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 146 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD first CWD dir CWD here EPSV TYPE I SIZE 146 RETR 146 CWD / EPSV SIZE 146 RETR 146 QUIT === End of file server.input === Start of file stderr146 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 22 100 22 0 0 3 0 0:00:07 0:00:05 0:00:02 5 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 22 100 22 0 0 27 0 --:--:-- --:--:-- --:--:-- 61 === End of file stderr146 === Start of file stdout146 this is file contents === End of file stdout146 === Start of file trace146 00:50:53.941079 * Trying 127.0.0.1:45353... 00:50:54.823009 * Established connection to 127.0.0.1 (127.0.0.1 port 45353) from 127.0.0.1 port 43722 00:50:55.072362 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:50:55.447489 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:50:55.472229 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:50:55.479482 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:50:55.484676 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:50:55.585373 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:50:55.655899 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:50:55.677818 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:50:55.749788 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:50:55.768890 => Send header, 5 bytes (0x5) 0000: PWD 00:50:55.786567 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:50:55.821977 * Entry path is '/' 00:50:55.953644 => Send header, 11 bytes (0xb) 0000: CWD first 00:50:55.967020 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:56.011699 => Send header, 9 bytes (0x9) 0000: CWD dir 00:50:56.052129 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:56.059696 => Send header, 10 bytes (0xa) 0000: CWD here 00:50:56.084665 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:56.119386 => Send header, 6 bytes (0x6) 0000: EPSV 00:50:56.136406 * Connect data stream passively 00:50:56.177673 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||38525|) 00:50:56.278673 * Connecting to 127.0.0.1 (127.0.0.1) port 38525 00:50:56.339384 * Trying 127.0.0.1:38525... 00:50:56.432818 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 38525) from 127.0.0.1 port 40628 00:50:56.462941 => Send header, 8 bytes (0x8) 0000: TYPE I 00:50:56.483295 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:50:56.515172 => Send header, 10 bytes (0xa) 0000: SIZE 146 00:50:56.556585 <= Recv header, 8 bytes (0x8) 0000: 213 22 00:50:56.604945 => Send header, 10 bytes (0xa) 0000: RETR 146 00:50:56.630215 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 146 () (22 bytes). 00:50:56.672462 * Maxdownload = -1 00:50:56.682858 * Getting file with size: 22 00:50:56.828237 <= Recv data, 22 bytes (0x16) 0000: this is file contents. 00:50:57.136652 * abort upload 00:50:57.162310 <= Recv data, 0 bytes (0x0) 00:50:57.324206 * Remembering we are in dir "first/dir/here/" 00:50:57.517766 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:50:57.836384 * Connection #0 to host 127.0.0.1:45353 left intact 00:50:58.976662 * Reusing existing ftp: connection with host 127.0.0.1 00:50:59.113106 => Send header, 7 bytes (0x7) 0000: CWD / 00:50:59.121459 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:59.134045 => Send header, 6 bytes (0x6) 0000: EPSV 00:50:59.137395 * Connect data stream passively 00:50:59.209601 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||36915|) 00:50:59.223094 * Connecting to 127.0.0.1 (127.0.0.1) port 36915 00:50:59.228942 * Trying 127.0.0.1:36915... 00:50:59.247918 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 36915) from 127.0.0.1 port 42838 00:50:59.262164 => Send header, 10 bytes (0xa) 0000: SIZE 146 00:50:59.266402 <= Recv header, 8 bytes (0x8) 0000: 213 22 00:50:59.271635 => Send header, 10 bytes (0xa) 0000: RETR 146 00:50:59.280341 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 146 () (22 bytes). 00:50:59.293729 * Maxdownload = -1 00:50:59.295400 * Getting file with size: 22 00:50:59.305863 <= Recv data, 22 bytes (0x16) 0000: this is file contents. 00:50:59.327265 * abort upload 00:50:59.329723 <= Recv data, 0 bytes (0x0) 00:50:59.347947 * Remembering we are in dir "" 00:50:59.360414 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:50:59.395489 * Connection #0 to host 127.0.0.1:45353 left intact === End of file trace146 === Start of file valgrind146 ==209469== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind146 test 0147...[FTP with --ftp-create-dirs (failing CWD)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind147 ../src/curl -q --output log/8/curl147.out --include --trace-ascii log/8/trace147 --trace-time ftp://127.0.0.1:43843/first/dir/here/147 --ftp-create-dirs > log/8/stdout147 2> log/8/stderr147 valgrind ERROR ==209611== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 147 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind147 ../src/curl -q --output log/8/curl147.out --include --trace-ascii log/8/trace147 --trace-time ftp://127.0.0.1:43843/first/dir/here/147 --ftp-create-dirs > log/8/stdout147 2> log/8/stderr147 === End of file commands.log === Start of file curl147.out foo === End of file curl147.out === Start of file ftp_server.log 00:50:07.946802 ====> Client connect 00:50:07.947787 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:50:07.957999 < "USER anonymous" 00:50:07.958539 > "331 We are happy you popped in![CR][LF]" 00:50:07.960058 < "PASS ftp@example.com" 00:50:07.961019 > "230 Welcome you silly person[CR][LF]" 00:50:07.961609 < "PWD" 00:50:07.962193 > "257 "/" is current directory[CR][LF]" 00:50:07.964911 < "EPSV" 00:50:07.965143 ====> Passive DATA channel requested by client 00:50:07.965298 DATA sockfilt for passive data channel starting... 00:50:08.017809 DATA sockfilt for passive data channel started (pid 209550) 00:50:08.025318 DATA sockfilt for passive data channel listens on port 40611 00:50:08.026411 > "229 Entering Passive Mode (|||40611|)[CR][LF]" 00:50:08.026620 Client has been notified that DATA conn will be accepted on port 40611 00:50:08.029044 Client connects to port 40611 00:50:08.029367 ====> Client established passive DATA connection on port 40611 00:50:08.030155 < "TYPE I" 00:50:08.030626 > "200 I modify TYPE as you wanted[CR][LF]" 00:50:08.031782 < "SIZE verifiedserver" 00:50:08.034635 > "213 18[CR][LF]" 00:50:08.036159 < "RETR verifiedserver" 00:50:08.036475 > "150 Binary junk (18 bytes).[CR][LF]" 00:50:08.037029 =====> Closing passive DATA connection... 00:50:08.037193 Server disconnects passive DATA connection 00:50:08.041027 Server disconnected passive DATA connection 00:50:08.041361 DATA sockfilt for passive data channel quits (pid 209550) 00:50:08.044739 DATA sockfilt for passive data channel quit (pid 209550) 00:50:08.044992 =====> Closed passive DATA connection 00:50:08.045685 > "226 File transfer complete[CR][LF]" 00:50:08.093203 < "QUIT" 00:50:08.093611 > "221 bye bye baby[CR][LF]" 00:50:08.094757 MAIN sockfilt said DISC 00:50:08.097682 ====> Client disconnected 00:50:08.098185 Awaiting input 00:50:55.696623 ====> Client connect 00:50:55.697375 FTPD: Getting commands from log/8/server.cmd 00:50:55.698179 FTPD: set custom reply for CWD command 00:50:55.698453 FTPD: blank custom reply for CWD command after 1 uses 00:50:55.698697 FTPD: run test case number: 147 00:50:55.704450 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:50:56.996278 < "USER anonymous" 00:50:56.997008 > "331 We are happy you popped in![CR][LF]" 00:50:57.119759 < "PASS ftp@example.com" 00:50:57.124438 > "230 Welcome you silly person[CR][LF]" 00:50:57.212019 < "PWD" 00:50:57.212465 > "257 "/" is current directory[CR][LF]" 00:50:57.398783 < "CWD first" 00:50:57.404410 > "550 I won't allow this on my server[CR][LF]" 00:50:57.451051 < "MKD first" 00:50:57.451532 > "257 Created your requested directory[CR][LF]" 00:50:57.527916 < "CWD first" 00:50:57.528340 > "250 CWD command successful.[CR][LF]" 00:50:57.577023 < "CWD dir" 00:50:57.577451 > "250 CWD command successful.[CR][LF]" 00:50:57.591844 < "CWD here" 00:50:57.592259 > "250 CWD command successful.[CR][LF]" 00:50:57.631756 < "EPSV" 00:50:57.632070 ====> Passive DATA channel requested by client 00:50:57.632219 DATA sockfilt for passive data channel starting... 00:50:57.687615 DATA sockfilt for passive data channel started (pid 210765) 00:50:57.689221 DATA sockfilt for passive data channel listens on port 36779 00:50:57.694415 > "229 Entering Passive Mode (|||36779|)[CR][LF]" 00:50:57.694725 Client has been notified that DATA conn will be accepted on port 36779 00:50:57.864708 Client connects to port 36779 00:50:57.865300 ====> Client established passive DATA connection on port 36779 00:50:57.979846 < "TYPE I" 00:50:57.984403 > "200 I modify TYPE as you wanted[CR][LF]" 00:50:58.031822 < "SIZE 147" 00:50:58.034232 > "213 4[CR][LF]" 00:50:58.103291 < "RETR 147" 00:50:58.104399 > "150 Binary data connection for 147 () (4 bytes).[CR][LF]" 00:50:58.104961 =====> Closing passive DATA connection... 00:50:58.105141 Server disconnects passive DATA connection 00:50:58.107985 Server disconnected passive DATA connection 00:50:58.108197 DATA sockfilt for passive data channel quits (pid 210765) 00:50:58.111359 DATA sockfilt for passive data channel quit (pid 210765) 00:50:58.111538 =====> Closed passive DATA connection 00:50:58.117743 > "226 File transfer complete[CR][LF]" 00:51:00.150424 < "QUIT" 00:51:00.150883 > "221 bye bye baby[CR][LF]" 00:51:00.286647 MAIN sockfilt said DISC 00:51:00.287172 ====> Client disconnected 00:51:00.287495 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:50:07.563541 ====> Client connect 00:50:07.564771 Received DATA (on stdin) 00:50:07.564866 > 160 bytes data, server => client 00:50:07.564982 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:50:07.565092 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:50:07.565192 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:50:07.573899 < 16 bytes data, client => server 00:50:07.574050 'USER anonymous\r\n' 00:50:07.575893 Received DATA (on stdin) 00:50:07.575996 > 33 bytes data, server => client 00:50:07.576086 '331 We are happy you popped in!\r\n' 00:50:07.576459 < 22 bytes data, client => server 00:50:07.576544 'PASS ftp@example.com\r\n' 00:50:07.577411 Received DATA (on stdin) 00:50:07.577479 > 30 bytes data, server => client 00:50:07.577578 '230 Welcome you silly person\r\n' 00:50:07.577844 < 5 bytes data, client => server 00:50:07.577912 'PWD\r\n' 00:50:07.578970 Received DATA (on stdin) 00:50:07.579049 > 30 bytes data, server => client 00:50:07.579160 '257 "/" is current directory\r\n' 00:50:07.581425 < 6 bytes data, client => server 00:50:07.581510 'EPSV\r\n' 00:50:07.642981 Received DATA (on stdin) 00:50:07.643150 > 39 bytes data, server => client 00:50:07.643274 '229 Entering Passive Mode (|||40611|)\r\n' 00:50:07.646381 < 8 bytes data, client => server 00:50:07.646493 'TYPE I\r\n' 00:50:07.647527 Received DATA (on stdin) 00:50:07.647601 > 33 bytes data, server => client 00:50:07.647958 '200 I modify TYPE as you wanted\r\n' 00:50:07.648347 < 21 bytes data, client => server 00:50:07.648432 'SIZE verifiedserver\r\n' 00:50:07.652012 Received DATA (on stdin) 00:50:07.652129 > 8 bytes data, server => client 00:50:07.652214 '213 18\r\n' 00:50:07.654474 < 21 bytes data, client => server 00:50:07.654568 'RETR verifiedserver\r\n' 00:50:07.654638 Received DATA (on stdin) 00:50:07.654701 > 29 bytes data, server => client 00:50:07.654796 '150 Binary junk (18 bytes).\r\n' 00:50:07.662377 Received DATA (on stdin) 00:50:07.662502 > 28 bytes data, server => client 00:50:07.662615 '226 File transfer complete\r\n' 00:50:07.709020 < 6 bytes data, client => server 00:50:07.709191 'QUIT\r\n' 00:50:07.710955 Received DATA (on stdin) 00:50:07.711046 > 18 bytes data, server => client 00:50:07.711129 '221 bye bye baby\r\n' 00:50:07.711744 ====> Client disconnect 00:50:07.712075 Received ACKD (on stdin) 00:50:55.313345 ====> Client connect 00:50:55.318000 Received DATA (on stdin) 00:50:55.318120 > 160 bytes data, server => client 00:50:55.321840 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:50:55.321966 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:50:55.322055 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:50:56.612027 < 16 bytes data, client => server 00:50:56.612222 'USER anonymous\r\n' 00:50:56.613662 Received DATA (on stdin) 00:50:56.613741 > 33 bytes data, server => client 00:50:56.613854 '331 We are happy you popped in!\r\n' 00:50:56.735585 < 22 bytes data, client => server 00:50:56.735781 'PASS ftp@example.com\r\n' 00:50:56.737154 Received DATA (on stdin) 00:50:56.737230 > 30 bytes data, server => client 00:50:56.741837 '230 Welcome you silly person\r\n' 00:50:56.827900 < 5 bytes data, client => server 00:50:56.828107 'PWD\r\n' 00:50:56.829686 Received DATA (on stdin) 00:50:56.829761 > 30 bytes data, server => client 00:50:56.829845 '257 "/" is current directory\r\n' 00:50:57.014535 < 11 bytes data, client => server 00:50:57.014751 'CWD first\r\n' 00:50:57.016653 Received DATA (on stdin) 00:50:57.016740 > 37 bytes data, server => client 00:50:57.021748 '550 I won't allow this on my server\r\n' 00:50:57.066868 < 11 bytes data, client => server 00:50:57.067033 'MKD first\r\n' 00:50:57.068787 Received DATA (on stdin) 00:50:57.068871 > 38 bytes data, server => client 00:50:57.068969 '257 Created your requested directory\r\n' 00:50:57.143727 < 11 bytes data, client => server 00:50:57.143952 'CWD first\r\n' 00:50:57.145660 Received DATA (on stdin) 00:50:57.145743 > 29 bytes data, server => client 00:50:57.145827 '250 CWD command successful.\r\n' 00:50:57.192870 < 9 bytes data, client => server 00:50:57.193073 'CWD dir\r\n' 00:50:57.197464 Received DATA (on stdin) 00:50:57.197560 > 29 bytes data, server => client 00:50:57.197644 '250 CWD command successful.\r\n' 00:50:57.208021 < 10 bytes data, client => server 00:50:57.208191 'CWD here\r\n' 00:50:57.209225 Received DATA (on stdin) 00:50:57.209294 > 29 bytes data, server => client 00:50:57.209375 '250 CWD command successful.\r\n' 00:50:57.247069 < 6 bytes data, client => server 00:50:57.247227 'EPSV\r\n' 00:50:57.306542 Received DATA (on stdin) 00:50:57.306692 > 39 bytes data, server => client 00:50:57.306818 '229 Entering Passive Mode (|||36779|)\r\n' 00:50:57.596126 < 8 bytes data, client => server 00:50:57.596294 'TYPE I\r\n' 00:50:57.597231 Received DATA (on stdin) 00:50:57.597304 > 33 bytes data, server => client 00:50:57.601745 '200 I modify TYPE as you wanted\r\n' 00:50:57.647625 < 10 bytes data, client => server 00:50:57.647802 'SIZE 147\r\n' 00:50:57.650899 Received DATA (on stdin) 00:50:57.650989 > 7 bytes data, server => client 00:50:57.651083 '213 4\r\n' 00:50:57.719176 < 10 bytes data, client => server 00:50:57.719341 'RETR 147\r\n' 00:50:57.724649 Received DATA (on stdin) 00:50:57.724754 > 50 bytes data, server => client 00:50:57.724864 '150 Binary data connection for 147 () (4 bytes).\r\n' 00:50:57.728777 Received DATA (on stdin) 00:50:57.728861 > 28 bytes data, server => client 00:50:57.735085 '226 File transfer complete\r\n' 00:50:59.766272 < 6 bytes data, client => server 00:50:59.766458 'QUIT\r\n' 00:50:59.768143 Received DATA (on stdin) 00:50:59.768221 > 18 bytes data, server => client 00:50:59.768300 '221 bye bye baby\r\n' 00:50:59.903322 ====> Client disconnect 00:50:59.904727 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:50:08.623289 Running IPv4 version 00:50:08.631434 Listening on port 40611 00:50:08.631898 Wrote pid 209550 to log/8/server/ftp_sockdata.pid 00:50:08.632673 Received PING (on stdin) 00:50:08.641434 Received PORT (on stdin) 00:50:08.645647 ====> Client connect 00:50:08.653829 Received DATA (on stdin) 00:50:08.654213 > 18 bytes data, server => client 00:50:08.654598 'WE ROOLZ: 202642\r\n' 00:50:08.654871 Received DISC (on stdin) 00:50:08.654994 ====> Client forcibly disconnected 00:50:08.658688 Received QUIT (on stdin) 00:50:08.658816 quits 00:50:08.659359 ============> sockfilt quits 00:50:57.294964 Running IPv4 version 00:50:57.302979 Listening on port 36779 00:50:57.303497 Wrote pid 210765 to log/8/server/ftp_sockdata.pid 00:50:57.304238 Received PING (on stdin) 00:50:57.305188 Received PORT (on stdin) 00:50:57.481425 ====> Client connect 00:50:57.721676 Received DATA (on stdin) 00:50:57.722118 > 4 bytes data, server => client 00:50:57.722506 'foo\n' 00:50:57.722787 Received DISC (on stdin) 00:50:57.722907 ====> Client forcibly disconnected 00:50:57.725385 Received QUIT (on stdin) 00:50:57.725485 quits 00:50:57.725983 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY CWD 550 I won't allow this on my server COUNT CWD 1 Testnum 147 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD first MKD first CWD first CWD dir CWD here EPSV TYPE I SIZE 147 RETR 147 QUIT === End of file server.input === Start of file stderr147 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:05 --:--:-- 1 100 4 0 4 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 === End of file stderr147 === Start of file trace147 00:50:55.367299 * Trying 127.0.0.1:43843... 00:50:56.278333 * Established connection to 127.0.0.1 (127.0.0.1 port 43843) from 127.0.0.1 port 54706 00:50:56.523325 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:50:56.871860 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:50:56.898482 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:50:56.906326 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:50:56.911502 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:50:57.017184 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:50:57.097454 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:50:57.119858 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:50:57.190397 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:50:57.210925 => Send header, 5 bytes (0x5) 0000: PWD 00:50:57.227426 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:50:57.264055 * Entry path is '/' 00:50:57.397597 => Send header, 11 bytes (0xb) 0000: CWD first 00:50:57.411772 <= Recv header, 37 bytes (0x25) 0000: 550 I won't allow this on my server 00:50:57.449924 => Send header, 11 bytes (0xb) 0000: MKD first 00:50:57.504168 <= Recv header, 38 bytes (0x26) 0000: 257 Created your requested directory 00:50:57.526795 => Send header, 11 bytes (0xb) 0000: CWD first 00:50:57.551941 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:57.575917 => Send header, 9 bytes (0x9) 0000: CWD dir 00:50:57.581833 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:57.589190 => Send header, 10 bytes (0xa) 0000: CWD here 00:50:57.594159 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:57.630420 => Send header, 6 bytes (0x6) 0000: EPSV 00:50:57.646084 * Connect data stream passively 00:50:57.691474 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||36779|) 00:50:57.794104 * Connecting to 127.0.0.1 (127.0.0.1) port 36779 00:50:57.856636 * Trying 127.0.0.1:36779... 00:50:57.947754 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 36779) from 127.0.0.1 port 51354 00:50:57.978747 => Send header, 8 bytes (0x8) 0000: TYPE I 00:50:57.997939 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:50:58.030716 => Send header, 10 bytes (0xa) 0000: SIZE 147 00:50:58.062832 <= Recv header, 7 bytes (0x7) 0000: 213 4 00:50:58.102263 => Send header, 10 bytes (0xa) 0000: RETR 147 00:50:58.122089 <= Recv header, 50 bytes (0x32) 0000: 150 Binary data connection for 147 () (4 bytes). 00:50:58.165111 * Maxdownload = -1 00:50:58.175654 * Getting file with size: 4 00:50:58.324590 <= Recv data, 4 bytes (0x4) 0000: foo. 00:50:58.639551 * abort upload 00:50:58.665178 <= Recv data, 0 bytes (0x0) 00:50:58.853394 * Remembering we are in dir "first/dir/here/" 00:50:59.055492 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:50:59.366936 * Connection #0 to host 127.0.0.1:43843 left intact === End of file trace147 === Start of file valgrind147 ==209611== error calling PR_SET_PTRACER, vgdb might blockCMD (2304): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind148 ../src/curl -q --output log/6/curl148.out --include --trace-ascii log/6/trace148 --trace-time ftp://127.0.0.1:39413/attempt/to/get/this/148 --ftp-create-dirs > log/6/stdout148 2> log/6/stderr148 === End of file valgrind147 test 0148...[FTP with --ftp-create-dirs (failing MKD)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind148 ../src/curl -q --output log/6/curl148.out --include --trace-ascii log/6/trace148 --trace-time ftp://127.0.0.1:39413/attempt/to/get/this/148 --ftp-create-dirs > log/6/stdout148 2> log/6/stderr148 valgrind ERROR ==209807== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 148 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind148 ../src/curl -q --output log/6/curl148.out --include --trace-ascii log/6/trace148 --trace-time ftp://127.0.0.1:39413/attempt/to/get/this/148 --ftp-create-dirs > log/6/stdout148 2> log/6/stderr148 === End of file commands.log === Start of file ftp_server.log 00:50:09.661436 ====> Client connect 00:50:09.663238 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:50:09.675285 < "USER anonymous" 00:50:09.675772 > "331 We are happy you popped in![CR][LF]" 00:50:09.677068 < "PASS ftp@example.com" 00:50:09.677337 > "230 Welcome you silly person[CR][LF]" 00:50:09.678416 < "PWD" 00:50:09.681079 > "257 "/" is current directory[CR][LF]" 00:50:09.686641 < "EPSV" 00:50:09.686888 ====> Passive DATA channel requested by client 00:50:09.687034 DATA sockfilt for passive data channel starting... 00:50:09.759290 DATA sockfilt for passive data channel started (pid 209762) 00:50:09.760764 DATA sockfilt for passive data channel listens on port 44935 00:50:09.761231 > "229 Entering Passive Mode (|||44935|)[CR][LF]" 00:50:09.761422 Client has been notified that DATA conn will be accepted on port 44935 00:50:09.766997 Client connects to port 44935 00:50:09.767391 ====> Client established passive DATA connection on port 44935 00:50:09.768195 < "TYPE I" 00:50:09.768530 > "200 I modify TYPE as you wanted[CR][LF]" 00:50:09.775515 < "SIZE verifiedserver" 00:50:09.775969 > "213 18[CR][LF]" 00:50:09.782832 < "RETR verifiedserver" 00:50:09.783599 > "150 Binary junk (18 bytes).[CR][LF]" 00:50:09.784204 =====> Closing passive DATA connection... 00:50:09.784391 Server disconnects passive DATA connection 00:50:09.785884 Server disconnected passive DATA connection 00:50:09.786066 DATA sockfilt for passive data channel quits (pid 209762) 00:50:09.793224 DATA sockfilt for passive data channel quit (pid 209762) 00:50:09.793501 =====> Closed passive DATA connection 00:50:09.794171 > "226 File transfer complete[CR][LF]" 00:50:09.849627 < "QUIT" 00:50:09.850403 > "221 bye bye baby[CR][LF]" 00:50:09.851485 MAIN sockfilt said DISC 00:50:09.851840 ====> Client disconnected 00:50:09.852138 Awaiting input 00:50:57.224519 ====> Client connect 00:50:57.225266 FTPD: Getting commands from log/6/server.cmd 00:50:57.226036 FTPD: set custom reply for CWD command 00:50:57.226474 FTPD: set custom reply for MKD command 00:50:57.226724 FTPD: run test case number: 148 00:50:57.231140 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:50:58.513688 < "USER anonymous" 00:50:58.514122 > "331 We are happy you popped in![CR][LF]" 00:50:58.625177 < "PASS ftp@example.com" 00:50:58.625609 > "230 Welcome you silly person[CR][LF]" 00:50:58.714904 < "PWD" 00:50:58.715360 > "257 "/" is current directory[CR][LF]" 00:50:58.902071 < "CWD attempt" 00:50:58.902488 > "550 I won't allow this on my server[CR][LF]" 00:50:58.953315 < "MKD attempt" 00:50:58.953745 > "550 We will have no such thing[CR][LF]" 00:50:59.022247 < "CWD attempt" 00:50:59.023023 > "550 I won't allow this on my server[CR][LF]" 00:51:00.164869 < "QUIT" 00:51:00.167736 > "221 bye bye baby[CR][LF]" 00:51:00.396513 MAIN sockfilt said DISC 00:51:00.397000 ====> Client disconnected 00:51:00.397284 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:50:09.277807 ====> Client connect 00:50:09.279602 Received DATA (on stdin) 00:50:09.279731 > 160 bytes data, server => client 00:50:09.279863 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:50:09.279966 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:50:09.280056 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:50:09.288159 < 16 bytes data, client => server 00:50:09.288301 'USER anonymous\r\n' 00:50:09.293115 Received DATA (on stdin) 00:50:09.293216 > 33 bytes data, server => client 00:50:09.293307 '331 We are happy you popped in!\r\n' 00:50:09.293656 < 22 bytes data, client => server 00:50:09.293732 'PASS ftp@example.com\r\n' 00:50:09.294638 Received DATA (on stdin) 00:50:09.294703 > 30 bytes data, server => client 00:50:09.294794 '230 Welcome you silly person\r\n' 00:50:09.295054 < 5 bytes data, client => server 00:50:09.295120 'PWD\r\n' 00:50:09.295749 Received DATA (on stdin) 00:50:09.295817 > 30 bytes data, server => client 00:50:09.298457 '257 "/" is current directory\r\n' 00:50:09.303061 < 6 bytes data, client => server 00:50:09.303145 'EPSV\r\n' 00:50:09.378782 Received DATA (on stdin) 00:50:09.378931 > 39 bytes data, server => client 00:50:09.379038 '229 Entering Passive Mode (|||44935|)\r\n' 00:50:09.383861 < 8 bytes data, client => server 00:50:09.383964 'TYPE I\r\n' 00:50:09.389718 Received DATA (on stdin) 00:50:09.389839 > 33 bytes data, server => client 00:50:09.389942 '200 I modify TYPE as you wanted\r\n' 00:50:09.391800 < 21 bytes data, client => server 00:50:09.391901 'SIZE verifiedserver\r\n' 00:50:09.398156 Received DATA (on stdin) 00:50:09.398305 > 8 bytes data, server => client 00:50:09.398386 '213 18\r\n' 00:50:09.399023 < 21 bytes data, client => server 00:50:09.399113 'RETR verifiedserver\r\n' 00:50:09.400356 Received DATA (on stdin) 00:50:09.400431 > 29 bytes data, server => client 00:50:09.400547 '150 Binary junk (18 bytes).\r\n' 00:50:09.410858 Received DATA (on stdin) 00:50:09.410985 > 28 bytes data, server => client 00:50:09.411102 '226 File transfer complete\r\n' 00:50:09.465485 < 6 bytes data, client => server 00:50:09.465665 'QUIT\r\n' 00:50:09.467129 Received DATA (on stdin) 00:50:09.467209 > 18 bytes data, server => client 00:50:09.467318 '221 bye bye baby\r\n' 00:50:09.468479 ====> Client disconnect 00:50:09.468797 Received ACKD (on stdin) 00:50:56.841222 ====> Client connect 00:50:56.845592 Received DATA (on stdin) 00:50:56.845708 > 160 bytes data, server => client 00:50:56.848061 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:50:56.848191 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:50:56.848298 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:50:58.129624 < 16 bytes data, client => server 00:50:58.129887 'USER anonymous\r\n' 00:50:58.131070 Received DATA (on stdin) 00:50:58.131157 > 33 bytes data, server => client 00:50:58.131264 '331 We are happy you popped in!\r\n' 00:50:58.238135 < 22 bytes data, client => server 00:50:58.238337 'PASS ftp@example.com\r\n' 00:50:58.242567 Received DATA (on stdin) 00:50:58.242689 > 30 bytes data, server => client 00:50:58.242791 '230 Welcome you silly person\r\n' 00:50:58.330966 < 5 bytes data, client => server 00:50:58.331188 'PWD\r\n' 00:50:58.332306 Received DATA (on stdin) 00:50:58.332395 > 30 bytes data, server => client 00:50:58.332496 '257 "/" is current directory\r\n' 00:50:58.518113 < 13 bytes data, client => server 00:50:58.518361 'CWD attempt\r\n' 00:50:58.519428 Received DATA (on stdin) 00:50:58.519513 > 37 bytes data, server => client 00:50:58.519621 '550 I won't allow this on my server\r\n' 00:50:58.569195 < 13 bytes data, client => server 00:50:58.569379 'MKD attempt\r\n' 00:50:58.CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind149 ../src/curl -q --output log/4/curl149.out --include --trace-ascii log/4/trace149 --trace-time -T log/4/upload149 ftp://127.0.0.1:38207/dir1/149 -T log/4/upload149 ftp://127.0.0.1:38207/dir2/149 > log/4/stdout149 2> log/4/stderr149 574652 Received DATA (on stdin) 00:50:58.574778 > 32 bytes data, server => client 00:50:58.574881 '550 We will have no such thing\r\n' 00:50:58.637950 < 13 bytes data, client => server 00:50:58.638179 'CWD attempt\r\n' 00:50:58.639648 Received DATA (on stdin) 00:50:58.639729 > 37 bytes data, server => client 00:50:58.639843 '550 I won't allow this on my server\r\n' 00:50:59.780686 < 6 bytes data, client => server 00:50:59.780892 'QUIT\r\n' 00:50:59.782279 Received DATA (on stdin) 00:50:59.782361 > 18 bytes data, server => client 00:50:59.785075 '221 bye bye baby\r\n' 00:51:00.013231 ====> Client disconnect 00:51:00.014485 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:50:09.357270 Running IPv4 version 00:50:09.374223 Listening on port 44935 00:50:09.374820 Wrote pid 209762 to log/6/server/ftp_sockdata.pid 00:50:09.375735 Received PING (on stdin) 00:50:09.377023 Received PORT (on stdin) 00:50:09.383086 ====> Client connect 00:50:09.401704 Received DATA (on stdin) 00:50:09.402127 > 18 bytes data, server => client 00:50:09.402559 'WE ROOLZ: 201819\r\n' 00:50:09.402853 Received DISC (on stdin) 00:50:09.406627 ====> Client forcibly disconnected 00:50:09.406853 Received QUIT (on stdin) 00:50:09.406935 quits 00:50:09.407519 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY CWD 550 I won't allow this on my server REPLY MKD 550 We will have no such thing Testnum 148 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD attempt MKD attempt CWD attempt QUIT === End of file server.input === Start of file stderr148 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (9) Server denied you to change to the given directory === End of file stderr148 === Start of file trace148 00:50:56.906528 * Trying 127.0.0.1:39413... 00:50:57.794416 * Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 40112 00:50:58.051639 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:50:58.390199 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:50:58.417780 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:50:58.425490 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:50:58.430715 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:50:58.531963 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:50:58.601853 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:50:58.622399 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:50:58.694468 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:50:58.714015 => Send header, 5 bytes (0x5) 0000: PWD 00:50:58.731398 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:50:58.767016 * Entry path is '/' 00:50:58.901174 => Send header, 13 bytes (0xd) 0000: CWD attempt 00:50:58.915046 <= Recv header, 37 bytes (0x25) 0000: 550 I won't allow this on my server 00:50:58.952281 => Send header, 13 bytes (0xd) 0000: MKD attempt 00:50:58.996493 <= Recv header, 32 bytes (0x20) 0000: 550 We will have no such thing 00:50:59.021083 => Send header, 13 bytes (0xd) 0000: CWD attempt 00:50:59.049364 <= Recv header, 37 bytes (0x25) 0000: 550 I won't allow this on my server 00:50:59.086633 * Server denied you to change to the given directory 00:50:59.456109 * Connection #0 to host 127.0.0.1:39413 left intact === End of file trace148 === Start of file valgrind148 ==209807== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind148 test 0149...[FTP with multiple uploads] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind149 ../src/curl -q --output log/4/curl149.out --include --trace-ascii log/4/trace149 --trace-time -T log/4/upload149 ftp://127.0.0.1:38207/dir1/149 -T log/4/upload149 ftp://127.0.0.1:38207/dir2/149 > log/4/stdout149 2> log/4/stderr149 valgrind ERROR ==209846== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 149 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind149 ../src/curl -q --output log/4/curl149.out --include --trace-ascii log/4/trace149 --trace-time -T log/4/upload149 ftp://127.0.0.1:38207/dir1/149 -T log/4/upload149 ftp://127.0.0.1:38207/dir2/149 > log/4/stdout149 2> log/4/stderr149 === End of file commands.log === Start of file ftp_server.log 00:50:10.184399 ====> Client connect 00:50:10.185462 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:50:10.194880 < "USER anonymous" 00:50:10.195630 > "331 We are happy you popped in![CR][LF]" 00:50:10.196702 < "PASS ftp@example.com" 00:50:10.196994 > "230 Welcome you silly person[CR][LF]" 00:50:10.198361 < "PWD" 00:50:10.198822 > "257 "/" is current directory[CR][LF]" 00:50:10.202001 < "EPSV" 00:50:10.202238 ====> Passive DATA channel requested by client 00:50:10.202402 DATA sockfilt for passive data channel starting... 00:50:10.258065 DATA sockfilt for passive data channel started (pid 209804) 00:50:10.259633 DATA sockfilt for passive data channel listens on port 46039 00:50:10.260495 > "229 Entering Passive Mode (|||46039|)[CR][LF]" 00:50:10.260687 Client has been notified that DATA conn will be accepted on port 46039 00:50:10.264244 Client connects to port 46039 00:50:10.264512 ====> Client established passive DATA connection on port 46039 00:50:10.265248 < "TYPE I" 00:50:10.265885 > "200 I modify TYPE as you wanted[CR][LF]" 00:50:10.267006 < "SIZE verifiedserver" 00:50:10.268421 > "213 18[CR][LF]" 00:50:10.269011 < "RETR verifiedserver" 00:50:10.271992 > "150 Binary junk (18 bytes).[CR][LF]" 00:50:10.272633 =====> Closing passive DATA connection... 00:50:10.272808 Server disconnects passive DATA connection 00:50:10.274467 Server disconnected passive DATA connection 00:50:10.274656 DATA sockfilt for passive data channel quits (pid 209804) 00:50:10.281745 DATA sockfilt for passive data channel quit (pid 209804) 00:50:10.282004 =====> Closed passive DATA connection 00:50:10.282306 > "226 File transfer complete[CR][LF]" 00:50:10.324170 < "QUIT" 00:50:10.324660 > "221 bye bye baby[CR][LF]" 00:50:10.325874 MAIN sockfilt said DISC 00:50:10.330996 ====> Client disconnected 00:50:10.331481 Awaiting input 00:50:58.231953 ====> Client connect 00:50:58.232674 FTPD: Getting commands from log/4/server.cmd 00:50:58.232990 FTPD: run test case number: 149 00:50:58.233907 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:50:59.522256 < "USER anonymous" 00:50:59.522970 > "331 We are happy you popped in![CR][LF]" 00:50:59.635532 < "PASS ftp@example.com" 00:50:59.641065 > "230 Welcome you silly person[CR][LF]" 00:50:59.730911 < "PWD" 00:50:59.731362 > "257 "/" is current directory[CR][LF]" 00:50:59.920505 < "CWD dir1" 00:50:59.920920 > "250 CWD command successful.[CR][LF]" 00:50:59.992075 < "EPSV" 00:50:59.992416 ====> Passive DATA channel requested by client 00:50:59.992570 DATA sockfilt for passive data channel starting... 00:51:00.080201 DATA sockfilt for passive data channel started (pid 210777) 00:51:00.083377 DATA sockfilt for passive data channel listens on port 45569 00:51:00.083791 > "229 Entering Passive Mode (|||45569|)[CR][LF]" 00:51:00.083968 Client has been notified that DATA conn will be accepted on port 45569 00:51:00.261250 Client connects to port 45569 00:51:00.261803 ====> Client established passive DATA connection on port 45569 00:51:00.365177 < "TYPE I" 00:51:00.365600 > "200 I modify TYPE as you wanted[CR][LF]" 00:51:00.418408 < "STOR 149" 00:51:00.418750 STOR test number 149 in log/4/upload.149 00:51:00.421452 > "125 Gimme gimme gimme![CR][LF]" 00:51:00.734414 > Appending 24 bytes to file 00:51:01.158402 =====> Closing passive DATA connection... 00:51:01.158693 Server knows passive DATA connection is already disconnected 00:51:01.158878 DATA sockfilt for passive data channel quits (pid 210777) 00:51:01.162150 DATA sockfilt for passive data channel quit (pid 210777) 00:51:01.162389 =====> Closed passive DATA connection 00:51:01.162580 received 24 bytes upload 00:51:01.163135 > "226 File transfer complete[CR][LF]" 00:51:02.994437 < "CWD /" 00:51:02.995146 > "250 CWD command successful.[CR][LF]" 00:51:03.035175 < "CWD dir2" 00:51:03.035601 > "250 CWD command successful.[CR][LF]" 00:51:03.046803 < "EPSV" 00:51:03.047072 ====> Passive DATA channel requested by client 00:51:03.047222 DATA sockfilt for passive data channel starting... 00:51:03.097196 DATA sockfilt for passive data channel started (pid 210838) 00:51:03.098464 DATA sockfilt for passive data channel listens on port 37437 00:51:03.101366 > "229 Entering Passive Mode (|||37437|)[CR][LF]" 00:51:03.101662 Client has been notified that DATA conn will be accepted on port 37437 00:51:03.125136 Client connects to port 37437 00:51:03.125669 ====> Client established passive DATA connection on port 37437 00:51:03.161819 < "STOR 149" 00:51:03.162181 STOR test number 149 in log/4/upload.149 00:51:03.162488 > "125 Gimme gimme gimme![CR][LF]" 00:51:03.189324 > Appending 24 bytes to file 00:51:03.221747 =====> Closing passive DATA connection... 00:51:03.222043 Server knows passive DATA connection is already disconnected 00:51:03.222232 DATA sockfilt for passive data channel quits (pid 210838) 00:51:03.234011 DATA sockfilt for passive data channel quit (pid 210838) 00:51:03.234429 =====> Closed passive DATA connection 00:51:03.234634 received 24 bytes upload 00:51:03.234949 > "226 File transfer complete[CR][LF]" 00:51:03.539954 < "QUIT" 00:51:03.540667 > "221 bye bye baby[CR][LF]" 00:51:03.678528 MAIN sockfilt said DISC 00:51:03.679313 ====> Client disconnected 00:51:03.679672 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:50:09.800126 ====> Client connect 00:50:09.802408 Received DATA (on stdin) 00:50:09.802512 > 160 bytes data, server => client 00:50:09.802635 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:50:09.802751 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:50:09.802848 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:50:09.811110 < 16 bytes data, client => server 00:50:09.811229 'USER anonymous\r\n' 00:50:09.812335 Received DATA (on stdin) 00:50:09.812424 > 33 bytes data, server => client 00:50:09.812551 '331 We are happy you popped in!\r\n' 00:50:09.813218 < 22 bytes data, client => server 00:50:09.813311 'PASS ftp@example.com\r\n' 00:50:09.814396 Received DATA (on stdin) 00:50:09.814473 > 30 bytes data, server => client 00:50:09.814569 '230 Welcome you silly person\r\n' 00:50:09.814928 < 5 bytes data, client => server 00:50:09.815010 'PWD\r\n' 00:50:09.815718 Received DATA (on stdin) 00:50:09.815791 > 30 bytes data, server => client 00:50:09.816156 '257 "/" is current directory\r\n' 00:50:09.818547 < 6 bytes data, client => server 00:50:09.818633 'EPSV\r\n' 00:50:09.877066 Received DATA (on stdin) 00:50:09.877221 > 39 bytes data, server => client 00:50:09.877355 '229 Entering Passive Mode (|||46039|)\r\n' 00:50:09.881136 < 8 bytes data, client => server 00:50:09.881232 'TYPE I\r\n' 00:50:09.882617 Received DATA (on stdin) 00:50:09.882701 > 33 bytes data, server => client 00:50:09.882823 '200 I modify TYPE as you wanted\r\n' 00:50:09.883556 < 21 bytes data, client => server 00:50:09.883644 'SIZE verifiedserver\r\n' 00:50:09.884413 Received DATA (on stdin) 00:50:09.884490 > 8 bytes data, server => client 00:50:09.884716 '213 18\r\n' 00:50:09.885313 < 21 bytes data, client => server 00:50:09.885398 'RETR verifiedserver\r\n' 00:50:09.886404 Received DATA (on stdin) 00:50:09.886480 > 29 bytes data, server => client 00:50:09.886596 '150 Binary junk (18 bytes).\r\n' 00:50:09.899647 Received DATA (on stdin) 00:50:09.899782 > 28 bytes data, server => client 00:50:09.899869 '226 File transfer complete\r\n' 00:50:09.939951 < 6 bytes data, client => server 00:50:09.940114 'QUIT\r\n' 00:50:09.942026 Received DATA (on stdin) 00:50:09.942115 > 18 bytes data, server => client 00:50:09.942203 '221 bye bye baby\r\n' 00:50:09.942868 ====> Client disconnect 00:50:09.943188 Received ACKD (on stdin) 00:50:57.848674 ====> Client connect 00:50:57.851146 Received DATA (on stdin) 00:50:57.851222 > 160 bytes data, server => client 00:50:57.851332 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:50:57.851442 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:50:57.851526 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:50:59.138024 < 16 bytes data, client => server 00:50:59.138217 'USER anonymous\r\n' 00:50:59.139630 Received DATA (on stdin) 00:50:59.139705 > 33 bytes data, server => client 00:50:59.139815 '331 We are happy you popped in!\r\n' 00:50:59.251373 < 22 bytes data, client => server 00:50:59.251560 'PASS ftp@example.com\r\n' 00:50:59.252902 Received DATA (on stdin) 00:50:59.252980 > 30 bytes data, server => client 00:50:59.258410 '230 Welcome you silly person\r\n' 00:50:59.346793 < 5 bytes data, client => server 00:50:59.346961 'PWD\r\n' 00:50:59.348588 Received DATA (on stdin) 00:50:59.348669 > 30 bytes data, server => client 00:50:59.348756 '257 "/" is current directory\r\n' 00:50:59.536751 < 10 bytes data, client => server 00:50:59.536953 'CWD dir1\r\n' 00:50:59.538253 Received DATA (on stdin) 00:50:59.538332 > 29 bytes data, server => client 00:50:59.538423 '250 CWD command successful.\r\n' 00:50:59.607931 < 6 bytes data, client => server 00:50:59.608123 'EPSV\r\n' 00:50:59.701247 Received DATA (on stdin) 00:50:59.701392 > 39 bytes data, server => client 00:50:59.701490 '229 Entering Passive Mode (|||45569|)\r\n' 00:50:59.980407 < 8 bytes data, client => server 00:50:59.980596 'TYPE I\r\n' 00:50:59.984664 Received DATA (on stdin) 00:50:59.984782 > 33 bytes data, server => client 00:50:59.984874 '200 I modify TYPE as you wanted\r\n' 00:51:00.034011 < 10 bytes data, client => server 00:51:00.034230 'STOR 149\r\n' 00:51:00.037990 Received DATA (on stdin) 00:51:00.038104 > 24 bytes data, server => client 00:51:00.038228 '125 Gimme gimme gimme!\r\n' 00:51:00.779826 Received DATA (on stdin) 00:51:00.779973 > 28 bytes data, server => client 00:51:00.780388 '226 File transfer complete\r\n' 00:51:02.610002 < 7 bytes data, client => server 00:51:02.610182 'CWD /\r\n' 00:51:02.612536 Received DATA (on stdin) 00:51:02.612636 > 29 bytes data, server => client 00:51:02.612721 '250 CWD command successful.\r\n' 00:51:02.648092 < 10 bytes data, client => server 00:51:02.648266 'CWD dir2\r\n' 00:51:02.652985 Received DATA (on stdin) 00:51:02.653078 > 29 bytes data, server => client 00:51:02.653162 '250 CWD command successful.\r\n' 00:51:02.663049 < 6 bytes data, client => server 00:51:02.663152 'EPSV\r\n' 00:51:02.715849 Received DATA (on stdin) 00:51:02.716011 > 39 bytes data, server => client 00:51:02.716150 '229 Entering Passive Mode (|||37437|)\r\n' 00:51:02.777337 < 10 bytes data, client => server 00:51:02.777516 'STOR 149\r\n' 00:51:02.779815 Received DATA (on stdin) 00:51:02.779908 > 24 bytes data, server CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind150 ../src/curl -q --output log/1/curl150.out --include --trace-ascii log/1/trace150 --trace-time http://127.0.0.1:40641/150 -u testuser:testpass --ntlm --fail > log/1/stdout150 2> log/1/stderr150 => client 00:51:02.779991 '125 Gimme gimme gimme!\r\n' 00:51:02.857996 Received DATA (on stdin) 00:51:02.858177 > 28 bytes data, server => client 00:51:02.858271 '226 File transfer complete\r\n' 00:51:03.155723 < 6 bytes data, client => server 00:51:03.155911 'QUIT\r\n' 00:51:03.157394 Received DATA (on stdin) 00:51:03.157476 > 18 bytes data, server => client 00:51:03.157991 '221 bye bye baby\r\n' 00:51:03.295180 ====> Client disconnect 00:51:03.296118 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:50:10.863387 Running IPv4 version 00:50:10.873263 Listening on port 46039 00:50:10.873813 Wrote pid 209804 to log/4/server/ftp_sockdata.pid 00:50:10.874771 Received PING (on stdin) 00:50:10.875973 Received PORT (on stdin) 00:50:10.880933 ====> Client connect 00:50:10.890118 Received DATA (on stdin) 00:50:10.890495 > 18 bytes data, server => client 00:50:10.890924 'WE ROOLZ: 201673\r\n' 00:50:10.891211 Received DISC (on stdin) 00:50:10.891341 ====> Client forcibly disconnected 00:50:10.891988 Received QUIT (on stdin) 00:50:10.892070 quits 00:50:10.892647 ============> sockfilt quits 00:51:00.677591 Running IPv4 version 00:51:00.695486 Listening on port 45569 00:51:00.696029 Wrote pid 210777 to log/4/server/ftp_sockdata.pid 00:51:00.696838 Received PING (on stdin) 00:51:00.699650 Received PORT (on stdin) 00:51:00.877900 ====> Client connect 00:51:01.350817 < 24 bytes data, client => server 00:51:01.351326 'send away this contents\n' 00:51:01.771350 ====> Client disconnect 00:51:01.774785 Received ACKD (on stdin) 00:51:01.776085 Received QUIT (on stdin) 00:51:01.776191 quits 00:51:01.776718 ============> sockfilt quits 00:51:03.704363 Running IPv4 version 00:51:03.712405 Listening on port 37437 00:51:03.712983 Wrote pid 210838 to log/4/server/ftp_sockdata.pid 00:51:03.713810 Received PING (on stdin) 00:51:03.714740 Received PORT (on stdin) 00:51:03.741784 ====> Client connect 00:51:03.804835 < 24 bytes data, client => server 00:51:03.805274 'send away this contents\n' 00:51:03.837599 ====> Client disconnect 00:51:03.838024 Received ACKD (on stdin) 00:51:03.839427 Received QUIT (on stdin) 00:51:03.839520 quits 00:51:03.840040 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 149 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD dir1 EPSV TYPE I STOR 149 CWD / CWD dir2 EPSV STOR 149 QUIT === End of file server.input === Start of file stderr149 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 24 0 0 100 24 0 4 0:00:06 0:00:05 0:00:01 6 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 24 0 0 100 24 0 27 --:--:-- --:--:-- --:--:-- 66 === End of file stderr149 === Start of file trace149 00:50:57.919113 * Trying 127.0.0.1:38207... 00:50:58.792582 * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 36798 00:50:59.048842 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:50:59.395258 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:50:59.424388 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:50:59.431061 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:50:59.436103 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:50:59.541425 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:50:59.615139 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:50:59.637363 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:50:59.709383 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:50:59.732003 => Send header, 5 bytes (0x5) 0000: PWD 00:50:59.749691 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:50:59.786326 * Entry path is '/' 00:50:59.921704 => Send header, 10 bytes (0xa) 0000: CWD dir1 00:50:59.935705 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:50:59.994473 => Send header, 6 bytes (0x6) 0000: EPSV 00:51:00.010724 * Connect data stream passively 00:51:00.088447 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||45569|) 00:51:00.192139 * Connecting to 127.0.0.1 (127.0.0.1) port 45569 00:51:00.254952 * Trying 127.0.0.1:45569... 00:51:00.345144 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 45569) from 127.0.0.1 port 44782 00:51:00.363807 => Send header, 8 bytes (0x8) 0000: TYPE I 00:51:00.380305 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:51:00.417114 => Send header, 10 bytes (0xa) 0000: STOR 149 00:51:00.460439 <= Recv header, 24 bytes (0x18) 0000: 125 Gimme gimme gimme 00:51:00.752990 => Send data, 24 bytes (0x18) 0000: send away this contents. 00:51:00.939147 * upload completely sent off: 24 bytes 00:51:01.073881 * Remembering we are in dir "dir1/" 00:51:01.265834 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:51:01.602257 * Connection #0 to host 127.0.0.1:38207 left intact 00:51:02.877261 * Reusing existing ftp: connection with host 127.0.0.1 00:51:02.993097 => Send header, 7 bytes (0x7) 0000: CWD / 00:51:03.001977 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:51:03.031182 => Send header, 10 bytes (0xa) 0000: CWD dir2 00:51:03.037347 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:51:03.046097 => Send header, 6 bytes (0x6) 0000: EPSV 00:51:03.049238 * Connect data stream passively 00:51:03.101259 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||37437|) 00:51:03.116785 * Connecting to 127.0.0.1 (127.0.0.1) port 37437 00:51:03.123274 * Trying 127.0.0.1:37437... 00:51:03.140729 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 37437) from 127.0.0.1 port 56018 00:51:03.160758 => Send header, 10 bytes (0xa) 0000: STOR 149 00:51:03.165077 <= Recv header, 24 bytes (0x18) 0000: 125 Gimme gimme gimme 00:51:03.187611 => Send data, 24 bytes (0x18) 0000: send away this contents. 00:51:03.204556 * upload completely sent off: 24 bytes 00:51:03.214678 * Remembering we are in dir "dir2/" 00:51:03.260829 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:51:03.301900 * Connection #0 to host 127.0.0.1:38207 left intact === End of file trace149 === Start of file upload.149 send away this contents === End of file upload.149 === Start of file upload149 send away this contents === End of file upload149 === Start of file valgrind149 ==209846== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind149 test 0150...[HTTP with NTLM authorization and --fail] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind150 ../src/curl -q --output log/1/curl150.out --include --trace-ascii log/1/trace150 --trace-time http://127.0.0.1:40641/150 -u testuser:testpass --ntlm --fail > log/1/stdout150 2> log/1/stderr150 valgrind ERROR ==210112== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 150 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind150 ../src/curl -q --output log/1/curl150.out --include --trace-ascii log/1/trace150 --trace-time http://127.0.0.1:40641/150 -u testuser:testpass --ntlm --fail > log/1/stdout150 2> log/1/stderr150 === End of file commands.log === Start of file curl150.out HTTP/1.1 401 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== HTTP/1.1 200 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file curl150.out === Start of file http_server.log 00:50:19.148199 ====> Client connect 00:50:19.148366 accept_connection 3 returned 4 00:50:19.148446 accept_connection 3 returned 0 00:50:19.154462 Read 93 bytes 00:50:19.154564 Process 93 bytes request 00:50:19.154656 Got request: GET /verifiedserver HTTP/1.1 00:50:19.154763 Are-we-friendly question received 00:50:19.154901 Wrote request (93 bytes) input to log/1/server.input 00:50:19.154996 Identifying ourselves as friends 00:50:19.155162 Response sent (57 bytes) and written to log/1/server.response 00:50:19.155227 special request received, no persistency 00:50:19.155288 ====> Client disconnect 0 00:51:07.016041 ====> Client connect 00:51:07.016205 accept_connection 3 returned 4 00:51:07.016299 accept_connection 3 returned 0 00:51:08.266998 Read 148 bytes 00:51:08.267203 Process 148 bytes request 00:51:08.267303 Got request: GET /150 HTTP/1.1 00:51:08.267377 Serve test number 150 part 0 00:51:08.267584 - request found to be complete (150) 00:51:08.267789 Received NTLM type-1, sending back data 1001 00:51:08.267993 Wrote request (148 bytes) input to log/1/server.input 00:51:08.268115 Send response test150 section 00:51:08.268655 Response sent (421 bytes) and written to log/1/server.response 00:51:08.268728 => persistent connection request ended, awaits new request 00:51:11.543589 Read 280 bytes 00:51:11.543787 Process 280 bytes request 00:51:11.543875 Got request: GET /150 HTTP/1.1 00:51:11.543942 Serve test number 150 part 0 00:51:11.544147 - request found to be complete (150) 00:51:11.544322 Received NTLM type-3, sending back data 1002 00:51:11.544415 Wrote request (280 bytes) input to log/1/server.input 00:51:11.544497 Send response test150 section 00:51:11.544735 connection close instruction "swsclose" found in response 00:51:11.544938 Response sent (180 bytes) and written to log/1/server.response 00:51:11.544999 instructed to close connection after server-reply 00:51:11.545053 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 38634 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 150 === End of file server.cmd === Start of file server.input GET /150 HTTP/1.1 Host: 127.0.0.1:40641 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* GET /150 HTTP/1.1 Host: 127.0.0.1:40641 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 401 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== This is not the real page either HTTP/1.1 200 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file server.response === Start of file stderr150 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 34 100 34 0 0 6 0 0:00:05 0:00:05 --:--:-- 8 100 34 100 34 0 0 6 0 0:00:05 0:00:05 --:--:-- 8 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:07 --:--:-- 0 100 32 100 32 0 0 4 0 0:00:08 0:00:07 0:00:01 29 === End of file stderr150 === Start of file trace150 00:51:06.022341 * Trying 127.0.0.1:40641... 00:51:07.020436 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 37850 00:51:07.152312 * using HTTP/1.x 00:51:07.365749 * Server auth using NTLM with user 'testuser' 00:51:07.689058 => Send header, 148 bytes (0x94) 0000: GET /150 HTTP/1.1 0013: Host: 127.0.0.1:40641 002a: Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 006c: User-Agent: curl/8.17.0 0085: Accept: */* 0092: 00:51:08.070019 <= Recv header, 52 bytes (0x34) 0000: HTTP/1.1 401 Now gimme that second request of crap 00:51:08.395658 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:51:08.583044 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:51:08.624026 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 34 00:51:08.812858 <= Recv header, 241 bytes (0xf1) 0000: WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgy 0040: NcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQAS 0080: AAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAd 00c0: ABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== 00:51:08.952288 * Ignoring the response-body 00:51:08.970229 * setting size while ignoring 00:51:08.985332 <= Recv header, 2 bytes (0x2) 0000: 00:51:09.520710 * Connection #0 to host 127.0.0.1:40641 left intact 00:51:09.639686 * Issue another request to this URL: 'http://127.0.0.1:40641/150' 00:51:10.029517 * Reusing existing http: connection with host 127.0.0.1 00:51:10.907460 * Server auth using NTLM with user 'testuser' 00:51:10.928376 => Send header, 280 bytes (0x118) 0000: GET /150 HTTP/1.1 0013: Host: 127.0.0.1:40641 002a: Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABw 006a: AAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjK 00aa: HRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJ 00ea: T04= 00f0: User-Agent: curl/8.17.0 0109: Accept: */* 0116: 00:51:10.995062 <= Recv header, 54 bytes (0x36) 0000: HTTP/1.1 200 Things are fine in server land swsclose 00:51:11.012252 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:51:11.022209 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:51:11.030155 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 32 00:51:11.053890 <= Recv header, 2 bytes (0x2) 0000: 00:51:11.066438 <= Recv data, 32 bytes (0x20) 0000: Finally, this is the real page!. 00:51:11.179185 * Connection #0 to host 127.0.0.1:40641 left intact === End of file trace150 === Start oCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind151 ../src/curl -q --output log/2/curl151.out --include --trace-ascii log/2/trace151 --trace-time http://127.0.0.1:39863/151 > log/2/stdout151 2> log/2/stderr151 CMD (5632): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind152 ../src/curl -q --output log/5/curl152.out --include --trace-ascii log/5/trace152 --trace-time http://127.0.0.1:46263/152 --fail > log/5/stdout152 2> log/5/stderr152 f file valgrind150 ==210112== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind150 test 0151...[HTTP GET with an error code that might trick authentication] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind151 ../src/curl -q --output log/2/curl151.out --include --trace-ascii log/2/trace151 --trace-time http://127.0.0.1:39863/151 > log/2/stdout151 2> log/2/stderr151 valgrind ERROR ==210280== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 151 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind151 ../src/curl -q --output log/2/curl151.out --include --trace-ascii log/2/trace151 --trace-time http://127.0.0.1:39863/151 > log/2/stdout151 2> log/2/stderr151 === End of file commands.log === Start of file curl151.out HTTP/1.0 401 BAD BOY Server: swsclose Content-Type: text/html This contains a response code >= 400, so curl shouldn't display this. Even though it's a response code that triggers authentication, we're not using authentication so we should still fail. === End of file curl151.out === Start of file http_server.log 00:50:25.845915 ====> Client connect 00:50:25.846082 accept_connection 3 returned 4 00:50:25.846167 accept_connection 3 returned 0 00:50:25.852364 Read 93 bytes 00:50:25.852458 Process 93 bytes request 00:50:25.852557 Got request: GET /verifiedserver HTTP/1.1 00:50:25.852631 Are-we-friendly question received 00:50:25.852755 Wrote request (93 bytes) input to log/2/server.input 00:50:25.852850 Identifying ourselves as friends 00:50:25.853049 Response sent (57 bytes) and written to log/2/server.response 00:50:25.853120 special request received, no persistency 00:50:25.853185 ====> Client disconnect 0 00:51:13.639642 ====> Client connect 00:51:13.639786 accept_connection 3 returned 4 00:51:13.639860 accept_connection 3 returned 0 00:51:14.650922 Read 82 bytes 00:51:14.651117 Process 82 bytes request 00:51:14.651214 Got request: GET /151 HTTP/1.1 00:51:14.651297 Serve test number 151 part 0 00:51:14.651463 - request found to be complete (151) 00:51:14.651703 Wrote request (82 bytes) input to log/2/server.input 00:51:14.651809 Send response test151 section 00:51:14.652012 connection close instruction "swsclose" found in response 00:51:14.652257 Response sent (253 bytes) and written to log/2/server.response 00:51:14.652322 instructed to close connection after server-reply 00:51:14.652380 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 45980 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 151 === End of file server.cmd === Start of file server.input GET /151 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.0 401 BAD BOY Server: swsclose Content-Type: text/html This contains a response code >= 400, so curl shouldn't display this. Even though it's a response code that triggers authentication, we're not using authentication so we should still fail. === End of file server.response === Start of file stderr151 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 190 0 190 0 0 43 0 --:--:-- 0:00:04 --:--:-- 60 100 190 0 190 0 0 42 0 --:--:-- 0:00:04 --:--:-- 58 === End of file stderr151 === Start of file trace151 00:51:12.698290 * Trying 127.0.0.1:39863... 00:51:13.594589 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 34390 00:51:13.733033 * using HTTP/1.x 00:51:14.070883 => Send header, 82 bytes (0x52) 0000: GET /151 HTTP/1.1 0013: Host: 127.0.0.1:39863 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 00:51:14.385384 * HTTP 1.0, assume close after body 00:51:14.407577 <= Recv header, 21 bytes (0x15) 0000: HTTP/1.0 401 BAD BOY. 00:51:14.712862 <= Recv header, 17 bytes (0x11) 0000: Server: swsclose. 00:51:14.850543 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:51:14.939049 <= Recv header, 1 bytes (0x1) 0000: . 00:51:14.999525 <= Recv data, 190 bytes (0xbe) 0000: This contains a response code >= 400, so curl shouldn't display 0040: this. Even.though it's a response code that triggers authentica 0080: tion, we're not using.authentication so we should still fail.. 00:51:15.143587 * abort upload 00:51:15.169494 <= Recv data, 0 bytes (0x0) 00:51:15.653770 * shutting down connection #0 === End of file trace151 === Start of file valgrind151 ==210280== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind151 test 0152...[HTTP GET with an error code that might trick authentication and --fail] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind152 ../src/curl -q --output log/5/curl152.out --include --trace-ascii log/5/trace152 --trace-time http://127.0.0.1:46263/152 --fail > log/5/stdout152 2> log/5/stderr152 valgrind ERROR ==210430== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 152 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind152 ../src/curl -q --output log/5/curl152.out --include --trace-ascii log/5/trace152 --trace-time http://127.0.0.1:46263/152 --fail > log/5/stdout152 2> log/5/stderr152 === End of file commands.log === Start of file curl152.out HTTP/1.0 401 BAD BOY Server: swsclose Content-Type: text/html === End of file curl152.out === Start of file http_server.log 00:50:27.000527 ====> Client connect 00:50:27.000678 accept_connection 3 returned 4 00:50:27.000750 accept_connection 3 returned 0 00:50:27.007442 Read 93 bytes 00:50:27.007528 Process 93 bytes request 00:50:27.007617 Got request: GET /verifiedserver HTTP/1.1 00:50:27.007677 Are-we-friendly question received 00:50:27.007779 Wrote request (93 bytes) input to log/5/server.input 00:50:27.007861 Identifying ourselves as friends 00:50:27.008006 Response sent (57 bytes) and written to log/5/server.response 00:50:27.008080 special request received, no persistency 00:50:27.008133 ====> Client disconnect 0 00:51:14.620103 ====> Client connect 00:51:14.620257 accept_connection 3 returned 4 00:51:14.620340 accept_connection 3 returned 0 00:51:15.607915 Read 82 bytes 00:51:15.608134 Process 82 bytes request 00:51:15.608233 Got request: GET /152 HTTP/1.1 00:51:15.608304 Serve test number 152 part 0 00:51:15.608476 - request found to be complete (152) 00:51:15.608719 Wrote request (82 bytes) input to log/5/server.input 00:51:15.608832 Send response test152 section 00:51:15.609041 connection close instruction "swsclose" found in response 00:51:15.609234 Response sent (253 bytes) and written to log/5/server.response 00:51:15.609302 instructed to close connection after serveCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind153 ../src/curl -q --include --trace-ascii log/3/trace153 --trace-time http://127.0.0.1:46853/1530001 -u testuser:testpass --digest http://127.0.0.1:46853/1530002 > log/3/stdout153 2> log/3/stderr153 r-reply 00:51:15.609363 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 56708 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 152 === End of file server.cmd === Start of file server.input GET /152 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.0 401 BAD BOY Server: swsclose Content-Type: text/html This contains a response code >= 400, so curl shouldn't display this. Even though it's a response code that triggers authentication, we're not using authentication so we should still fail. === End of file server.response === Start of file stderr152 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (22) The requested URL returned error: 401 === End of file stderr152 === Start of file trace152 00:51:14.671266 * Trying 127.0.0.1:46263... 00:51:15.562815 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 39828 00:51:15.690996 * using HTTP/1.x 00:51:16.033458 => Send header, 82 bytes (0x52) 0000: GET /152 HTTP/1.1 0013: Host: 127.0.0.1:46263 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 00:51:16.354390 * HTTP 1.0, assume close after body 00:51:16.377513 <= Recv header, 21 bytes (0x15) 0000: HTTP/1.0 401 BAD BOY. 00:51:16.689556 <= Recv header, 17 bytes (0x11) 0000: Server: swsclose. 00:51:16.825245 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:51:16.909080 * The requested URL returned error: 401 00:51:16.924246 <= Recv header, 1 bytes (0x1) 0000: . 00:51:17.297446 * closing connection #0 === End of file trace152 === Start of file valgrind152 ==210430== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind152 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 158 in state 4 Runner 2 (id 185908) running test 160 in state 4 Runner 3 (id 185910) running test 153 in state 4 Runner 4 (id 185912) running test 157 in state 4 Runner 5 (id 185914) running test 161 in state 4 Runner 6 (id 185916) running test 156 in state 4 Runner 7 (id 185918) running test 154 in state 4 Runner 8 (id 185920) running test 155 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 158 in state 4 Runner 2 (id 185908) running test 160 in state 4 Runner 3 (id 185910) running test 153 in state 4 Runner 4 (id 185912) running test 157 in state 4 Runner 5 (id 185914) running test 161 in state 4 Runner 6 (id 185916) running test 156 in state 4 Runner 7 (id 185918) running test 154 in state 4 Runner 8 (id 185920) running test 155 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 158 in state 4 Runner 2 (id 185908) running test 160 in state 4 Runner 3 (id 185910) running test 153 in state 4 Runner 4 (id 185912) running test 157 in state 4 Runner 5 (id 185914) running test 161 in state 4 Runner 6 (id 185916) running test 156 in state 4 Runner 7 (id 185918) running test 154 in state 4 Runner 8 (id 185920) running test 155 in state 4 test 0153...[HTTP with Digest authorization with stale=true] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind153 ../src/curl -q --include --trace-ascii log/3/trace153 --trace-time http://127.0.0.1:46853/1530001 -u testuser:testpass --digest http://127.0.0.1:46853/1530002 > log/3/stdout153 2> log/3/stderr153 valgrind ERROR ==210649== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 153 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind153 ../src/curl -q --include --trace-ascii log/3/trace153 --trace-time http://127.0.0.1:46853/1530001 -u testuser:testpass --digest http://127.0.0.1:46853/1530002 > log/3/stdout153 2> log/3/stderr153 === End of file commands.log === Start of file http_server.log 00:50:51.320200 ====> Client connect 00:50:51.320361 accept_connection 3 returned 4 00:50:51.320434 accept_connection 3 returned 0 00:50:51.328000 Read 93 bytes 00:50:51.328116 Process 93 bytes request 00:50:51.328201 Got request: GET /verifiedserver HTTP/1.1 00:50:51.328264 Are-we-friendly question received 00:50:51.328374 Wrote request (93 bytes) input to log/3/server.input 00:50:51.328469 Identifying ourselves as friends 00:50:51.328636 Response sent (57 bytes) and written to log/3/server.response 00:50:51.328697 special request received, no persistency 00:50:51.328751 ====> Client disconnect 0 00:51:39.423145 ====> Client connect 00:51:39.423301 accept_connection 3 returned 4 00:51:39.423390 accept_connection 3 returned 0 00:51:40.449363 Read 86 bytes 00:51:40.449555 Process 86 bytes request 00:51:40.449649 Got request: GET /1530001 HTTP/1.1 00:51:40.449717 Serve test number 153 part 1 00:51:40.449966 - request found to be complete (153) 00:51:40.450297 Wrote request (86 bytes) input to log/3/server.input 00:51:40.450409 Send response test153 section 00:51:40.450705 connection close instruction "swsclose" found in response 00:51:40.450893 Response sent (245 bytes) and written to log/3/server.response 00:51:40.450960 instructed to close connection after server-reply 00:51:40.451021 ====> Client disconnect 0 00:51:42.989486 ====> Client connect 00:51:42.989631 accept_connection 3 returned 4 00:51:42.989707 accept_connection 3 returned 0 00:51:49.412700 Read 229 bytes 00:51:49.412908 Process 229 bytes request 00:51:49.413008 Got request: GET /1530001 HTTP/1.1 00:51:49.413084 Serve test number 153 part 1 00:51:49.413371 - request found to be complete (153) 00:51:49.413664 Received Digest request, sending back data 1001 00:51:49.413782 Wrote request (229 bytes) input to log/3/server.input 00:51:49.413880 Send response test153 section 00:51:49.414316 Response sent (149 bytes) and written to log/3/server.response 00:51:49.414391 => persistent connection request ended, awaits new request 00:51:50.530939 Read 86 bytes 00:51:50.531128 Process 86 bytes request 00:51:50.531231 Got request: GET /1530002 HTTP/1.1 00:51:50.531307 Serve test number 153 part 2 00:51:50.531587 - request found to be complete (153) 00:51:50.531873 Wrote request (86 bytes) input to log/3/server.input 00:51:50.531968 Send response test153 section 00:51:50.532262 connection close instruction "swsclose" found in response 00:51:50.532526 Response sent (245 bytes) and written to log/3/server.response 00:51:50.532598 instructed to close connection after server-reply 00:51:50.532660 ====> Client disconnect 0 00:51:50.902664 ====> Client connect 00:51:50.902798 accept_connection 3 returned 4 00:51:50.902876 accept_connection 3 returned 0 00:51:51.110684 Read 229 bytes 00:51:51.110877 Process 229 bytes request 00:51:51.110973 Got request: GET /1530002 HTTP/1.1 00:51:51.111042 Serve test number 153 part 2 00:51:51.111329 - request found to be complete (153) 00:51:51.111594 Received Digest request, sending back data 1002 00:51:51.111694 Wrote request (229 bytes) input to log/3/server.input 00:51:51.111784 Send response test153 section 00:51:51.112143 enable "swsbounce" in the next request 00:51:51.112340 Response sent (294 bytes) and written to log/3/server.response 00:51:51.112406 => persistent connection request ended, awaits new request 00:51:51.538206 Read 290 bytes 00:51:51.538405 Process 290 bytes request 00:51:51.538503 Got request: GET /1530002 HTTP/1.1 00:51:51.538572 Serve test number 153 part 2 00:51:51.538834 - request found to be complete (153) 00:51:51.539076 Received Digest request, sending back data 1002 00:51:51.539171 Wrote request (290 bytes) input to log/3/server.input 00:51:51.539310 BOUNCE part number to 1003 00:51:51.539400 Send response test153 section 00:51:51.539868 Response sent (156 bytes) and written to log/3/server.response 00:51:51.539938 => persistent connection request ended, awaits new request 00:51:51.793850 Connection closed by client 00:51:51.794060 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 45238 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 153 === End of file server.cmd === Start of file server.input GET /1530001 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* GET /1530001 HTTP/1.1 Host: 127.0.0.1:46853 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/1530001", response="f4f83139396995bac665f24a1f1055c7" User-Agent: curl/8.17.0 Accept: */* GET /1530002 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* GET /1530002 HTTP/1.1 Host: 127.0.0.1:46853 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/1530002", response="f84511b014fdd0ba6494f42871079c32" User-Agent: curl/8.17.0 Accept: */* GET /1530002 HTTP/1.1 Host: 127.0.0.1:46853 Authorization: Digest username="testuser", realm="testrealm", nonce="999999", uri="/1530002", cnonce="SK1mDSuTwKOiynEk", nc=00000001, qop=auth, response="fc0f93e7d58d2d9d788228f16ebdf26c", algorithm=MD5 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 This is not the real page HTTP/1.1 200 OK Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 23 This IS the real page HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 This is not the real page HTTP/1.1 401 Authorization re-negotiation please swsbounce Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="auth" Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 This is not the real page HTTP/1.1 200 OK Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 30 This IS the second real page === End of file server.response === Start of file stderr153 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 8 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 7 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:12 --:--:-- 0 100 23 100 23 0 0 1 0 0:00:23 0:00:12 0:00:11 3 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 26 100 26 0 0 78 0 --:--:-- --:--:-- --:--:-- 216 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 26 100 26 0 0 24 0 0:00:01 0:00:01 --:--:-- 128 100 30 100 30 0 0 22 0 0:00:01 0:00:01 --:--:-- 22 === End of file stderr153 === Start of file stdout153 HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 HTTP/1.1 200 OK Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 23 This IS the real page HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 HTTP/1.1 401 Authorization re-negotiation please swsbounce Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="auth" Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 HTTP/1.1 200 OK Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 30 This IS the second real page === End of file stdout153 === Start of file trace153 00:51:39.512134 * Trying 127.0.0.1:46853... 00:51:40.348892 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 32792 00:51:40.497276 * using HTTP/1.x 00:51:40.587588 * Server auth using Digest with user 'testuser' 00:51:40.872710 => Send header, 86 bytes (0x56) 0000: GET /1530001 HTTP/1.1 0017: Host: 127.0.0.1:46853 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 00:51:41.210315 <= Recv header, 46 bytes (0x2e) 0000: HTTP/1.1 401 Authorization Required swsclose 00:51:41.515507 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:51:41.783005 <= Recv header, 64 bytes (0x40) 0000: WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" 00:51:41.824677 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:51:41.853152 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 00:51:41.956751 * Ignoring the response-body 00:51:41.976169 * setting size while ignoring 00:51:41.993157 <= Recv header, 2 bytes (0x2) 0000: 00:51:42.524376 * Connection #0 to host 127.0.0.1:46853 left intact 00:51:42.642837 * Issue another request to this URL: 'http://127.0.0.1:46853/1530001' 00:51:42.821150 * Connection 0 seems to be dead 00:51:42.914951 * shutting down connection #0 00:51:43.316097 * Hostname 127.0.0.1 was found in DNS cache 00:51:43.366486 * Trying 127.0.0.1:46853... 00:51:43.405779 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 55740 00:51:43.423754 * using HTTP/1.x 00:51:CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind156 ../src/curl -q --output log/6/curl156.out --include --trace-ascii log/6/trace156 --trace-time http://127.0.0.1:38277/156 -T log/6/put156 -u testuser:testpass --anyauth > log/6/stdout156 2> log/6/stderr156 49.764155 * Server auth using Digest with user 'testuser' 00:51:49.799483 => Send header, 229 bytes (0xe5) 0000: GET /1530001 HTTP/1.1 0017: Host: 127.0.0.1:46853 002e: Authorization: Digest username="testuser", realm="testrealm", no 006e: nce="1053604145", uri="/1530001", response="f4f83139396995bac665 00ae: f24a1f1055c7" 00bd: User-Agent: curl/8.17.0 00d6: Accept: */* 00e3: 00:51:49.868419 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:51:49.880822 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:51:49.891695 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:51:49.899718 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 23 00:51:49.920919 <= Recv header, 2 bytes (0x2) 0000: 00:51:49.933937 <= Recv data, 23 bytes (0x17) 0000: This IS the real page!. 00:51:50.049061 * Connection #1 to host 127.0.0.1:46853 left intact 00:51:50.852328 * Reusing existing http: connection with host 127.0.0.1 00:51:50.910267 * Server auth using Digest with user 'testuser' 00:51:50.915958 => Send header, 86 bytes (0x56) 0000: GET /1530002 HTTP/1.1 0017: Host: 127.0.0.1:46853 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 00:51:50.937576 <= Recv header, 46 bytes (0x2e) 0000: HTTP/1.1 401 Authorization Required swsclose 00:51:50.947002 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:51:50.961324 <= Recv header, 64 bytes (0x40) 0000: WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" 00:51:50.970357 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:51:50.977053 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 00:51:50.985979 * Ignoring the response-body 00:51:50.988133 * setting size while ignoring 00:51:50.989172 <= Recv header, 2 bytes (0x2) 0000: 00:51:51.013612 * Connection #1 to host 127.0.0.1:46853 left intact 00:51:51.026694 * Issue another request to this URL: 'http://127.0.0.1:46853/1530002' 00:51:51.049480 * Connection 1 seems to be dead 00:51:51.056650 * shutting down connection #1 00:51:51.229939 * Hostname 127.0.0.1 was found in DNS cache 00:51:51.277534 * Trying 127.0.0.1:46853... 00:51:51.341585 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 55750 00:51:51.350465 * using HTTP/1.x 00:51:51.470777 * Server auth using Digest with user 'testuser' 00:51:51.498125 => Send header, 229 bytes (0xe5) 0000: GET /1530002 HTTP/1.1 0017: Host: 127.0.0.1:46853 002e: Authorization: Digest username="testuser", realm="testrealm", no 006e: nce="1053604145", uri="/1530002", response="f84511b014fdd0ba6494 00ae: f42871079c32" 00bd: User-Agent: curl/8.17.0 00d6: Accept: */* 00e3: 00:51:51.570478 <= Recv header, 60 bytes (0x3c) 0000: HTTP/1.1 401 Authorization re-negotiation please swsbounce 00:51:51.596328 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:51:51.680103 <= Recv header, 99 bytes (0x63) 0000: WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce 0040: ="999999", stale=true, qop="auth" 00:51:51.695311 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:51:51.703840 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 00:51:51.714864 * Ignoring the response-body 00:51:51.717091 * setting size while ignoring 00:51:51.718891 <= Recv header, 2 bytes (0x2) 0000: 00:51:51.764080 * Connection #2 to host 127.0.0.1:46853 left intact 00:51:51.800063 * Issue another request to this URL: 'http://127.0.0.1:46853/1530002' 00:51:51.860959 * Reusing existing http: connection with host 127.0.0.1 00:51:51.918275 * Server auth using Digest with user 'testuser' 00:51:51.923243 => Send header, 290 bytes (0x122) 0000: GET /1530002 HTTP/1.1 0017: Host: 127.0.0.1:46853 002e: Authorization: Digest username="testuser", realm="testrealm", no 006e: nce="999999", uri="/1530002", cnonce="SK1mDSuTwKOiynEk", nc=0000 00ae: 0001, qop=auth, response="fc0f93e7d58d2d9d788228f16ebdf26c", alg 00ee: orithm=MD5 00fa: User-Agent: curl/8.17.0 0113: Accept: */* 0120: 00:51:51.964047 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:51:51.968536 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:51:51.975223 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:51:51.982133 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 30 00:51:51.986980 <= Recv header, 2 bytes (0x2) 0000: 00:51:51.989453 <= Recv data, 30 bytes (0x1e) 0000: This IS the second real page!. 00:51:52.011201 * Connection #2 to host 127.0.0.1:46853 left intact === End of file trace153 === Start of file valgrind153 ==210649== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind153 test 0156...[HTTP PUT with --anyauth (when the server requires none)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind156 ../src/curl -q --output log/6/curl156.out --include --trace-ascii log/6/trace156 --trace-time http://127.0.0.1:38277/156 -T log/6/put156 -u testuser:testpass --anyauth > log/6/stdout156 2> log/6/stderr156 valgrind ERROR ==210944== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 156 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind156 ../src/curl -q --output log/6/curl156.out --include --trace-ascii log/6/trace156 --trace-time http://127.0.0.1:38277/156 -T log/6/put156 -u testuser:testpass --anyauth > log/6/stdout156 2> log/6/stderr156 === End of file commands.log === Start of file curl156.out HTTP/1.1 200 No Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Connection: close PUT received fine. Thank you very much === End of file curl156.out === Start of file http_server.log 00:51:03.457958 ====> Client connect 00:51:03.458129 accept_connection 3 returned 4 00:51:03.458204 accept_connection 3 returned 0 00:51:03.465091 Read 93 bytes 00:51:03.465199 Process 93 bytes request 00:51:03.465287 Got request: GET /verifiedserver HTTP/1.1 00:51:03.465352 Are-we-friendly question received 00:51:03.465482 Wrote request (93 bytes) input to log/6/server.input 00:51:03.465585 Identifying ourselves as friends 00:51:03.465771 Response sent (57 bytes) and written to log/6/server.response 00:51:03.465834 special request received, no persistency 00:51:03.465891 ====> Client disconnect 0 00:51:51.769877 ====> Client connect 00:51:51.770033 accept_connection 3 returned 4 00:51:51.770112 accept_connection 3 returned 0 00:51:52.996139 Read 187 bytes 00:51:52.996371 Process 187 bytes request 00:51:52.996478 Got request: PUT /156 HTTP/1.1 00:51:52.996557 Serve test number 156 part 0 00:51:52.996758 - request found to be complete (156) 00:51:52.996921 Found Content-Length: 85 in the request 00:51:52.997096 Wrote request (187 bytes) input to log/6/server.input 00:51:52.997211 Send response test156 section 00:51:52.997429 connection close instruction "swsclose" found in response 00:51:52.997674 Response sent (196 bytes) and written to log/6/server.response 00:51:52.997742 instructed to close connection after server-reply 00:51:52.997805 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 46006 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file put156 This is data CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind157 ../src/curl -q --output log/4/curl157.out --include --trace-ascii log/4/trace157 --trace-time http://127.0.0.1:42621/157 -u testuser:testpass --anyauth > log/4/stdout157 2> log/4/stderr157 we upload with PUT a second line line three four is the number of lines === End of file put156 === Start of file server.cmd Testnum 156 === End of file server.cmd === Start of file server.input PUT /156 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* Content-Length: 85 This is data we upload with PUT a second line line three four is the number of lines === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 No Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Connection: close PUT received fine. Thank you very much === End of file server.response === Start of file stderr156 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 85 0 0 100 85 0 22 0:00:03 0:00:03 --:--:-- 34 100 124 0 39 100 85 8 17 0:00:05 0:00:04 0:00:01 35 100 124 0 39 100 85 7 17 0:00:05 0:00:04 0:00:01 34 === End of file stderr156 === Start of file trace156 00:51:51.825400 * Trying 127.0.0.1:38277... 00:51:52.733419 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 51682 00:51:52.867072 * using HTTP/1.x 00:51:53.419806 => Send header, 102 bytes (0x66) 0000: PUT /156 HTTP/1.1 0013: Host: 127.0.0.1:38277 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Content-Length: 85 0064: 00:51:53.523087 => Send data, 85 bytes (0x55) 0000: This is data we upload with PUT.a second line.line three.four is 0040: the number of lines. 00:51:53.611172 * upload completely sent off: 85 bytes 00:51:53.897570 <= Recv header, 49 bytes (0x31) 0000: HTTP/1.1 200 No Authorization Required swsclose 00:51:54.225667 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:51:54.376914 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:51:54.430658 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:51:54.513397 <= Recv header, 2 bytes (0x2) 0000: 00:51:54.571904 <= Recv data, 39 bytes (0x27) 0000: PUT received fine. Thank you very much. 00:51:54.683904 <= Recv data, 0 bytes (0x0) 00:51:55.200585 * shutting down connection #0 === End of file trace156 === Start of file valgrind156 ==210944== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind156 test 0157...[HTTP GET with --anyauth (when the server requires none)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind157 ../src/curl -q --output log/4/curl157.out --include --trace-ascii log/4/trace157 --trace-time http://127.0.0.1:42621/157 -u testuser:testpass --anyauth > log/4/stdout157 2> log/4/stderr157 valgrind ERROR ==211318== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 157 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind157 ../src/curl -q --output log/4/curl157.out --include --trace-ascii log/4/trace157 --trace-time http://127.0.0.1:42621/157 -u testuser:testpass --anyauth > log/4/stdout157 2> log/4/stderr157 === End of file commands.log === Start of file curl157.out HTTP/1.1 200 No Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Connection: close GET received and served just fine. Thank you very much === End of file curl157.out === Start of file http_server.log 00:51:07.758173 ====> Client connect 00:51:07.758349 accept_connection 3 returned 4 00:51:07.758430 accept_connection 3 returned 0 00:51:07.765306 Read 93 bytes 00:51:07.765409 Process 93 bytes request 00:51:07.765499 Got request: GET /verifiedserver HTTP/1.1 00:51:07.765565 Are-we-friendly question received 00:51:07.765679 Wrote request (93 bytes) input to log/4/server.input 00:51:07.765770 Identifying ourselves as friends 00:51:07.765943 Response sent (57 bytes) and written to log/4/server.response 00:51:07.766004 special request received, no persistency 00:51:07.766058 ====> Client disconnect 0 00:51:54.977673 ====> Client connect 00:51:54.977815 accept_connection 3 returned 4 00:51:54.977909 accept_connection 3 returned 0 00:51:56.067611 Read 82 bytes 00:51:56.067855 Process 82 bytes request 00:51:56.067961 Got request: GET /157 HTTP/1.1 00:51:56.068035 Serve test number 157 part 0 00:51:56.068244 - request found to be complete (157) 00:51:56.068533 Wrote request (82 bytes) input to log/4/server.input 00:51:56.068663 Send response test157 section 00:51:56.068872 connection close instruction "swsclose" found in response 00:51:56.069147 Response sent (212 bytes) and written to log/4/server.response 00:51:56.069219 instructed to close connection after server-reply 00:51:56.069282 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 32794 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 157 === End of file server.cmd === Start of file server.input GET /157 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 No Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Connection: close GET received and served just fine. Thank you very much === End of file server.response === Start of file stderr157 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 55 0 55 0 0 11 0 --:--:-- 0:00:04 --:--:-- 16 100 55 0 55 0 0 11 0 --:--:-- 0:00:04 --:--:-- 15 === End of file stderr157 === Start of file trace157 00:51:54.026061 * Trying 127.0.0.1:42621... 00:51:54.955588 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 56580 00:51:55.071452 * using HTTP/1.x 00:51:55.492030 => Send header, 82 bytes (0x52) 0000: GET /157 HTTP/1.1 0013: Host: 127.0.0.1:42621 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 00:51:55.865934 <= Recv header, 49 bytes (0x31) 0000: HTTP/1.1 200 No Authorization Required swsclose 00:51:56.202625 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:51:56.352060 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:51:56.407823 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:51:56.498935 <= Recv header, 2 bytes (0x2) 0000: 00:51:56.558245 <= Recv data, 55 bytes (0x37) 0000: GET received and served just fine. Thank you very much. 00:51:56.696176 * abort upload 00:51:56.720563 <= Recv data, 0 bytes (0x0) 00:51:57.260501 * shutting down connection #0 === End of file trace1CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind155 ../src/curl -q --output log/8/curl155.out --include --trace-ascii log/8/trace155 --trace-time http://127.0.0.1:39461/155 -T log/8/put155 -u testuser:testpass --anyauth > log/8/stdout155 2> log/8/stderr155 57 === Start of file valgrind157 ==211318== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind157 test 0155...[HTTP PUT with --anyauth authorization (picking NTLM)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind155 ../src/curl -q --output log/8/curl155.out --include --trace-ascii log/8/trace155 --trace-time http://127.0.0.1:39461/155 -T log/8/put155 -u testuser:testpass --anyauth > log/8/stdout155 2> log/8/stderr155 valgrind ERROR ==210982== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 155 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind155 ../src/curl -q --output log/8/curl155.out --include --trace-ascii log/8/trace155 --trace-time http://127.0.0.1:39461/155 -T log/8/put155 -u testuser:testpass --anyauth > log/8/stdout155 2> log/8/stderr155 === End of file commands.log === Start of file curl155.out HTTP/1.1 401 NTLM Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" WWW-Authenticate: Basic realm="gimme all yer s3cr3ts" WWW-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Connection: close HTTP/1.1 401 Type-1 received, send back type-2 Server: Microsoft-IIS/5.0 Content-Length: 34 Content-Type: text/html; charset=iso-8859-1 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== HTTP/1.1 200 Type-3 Received and all Things are fine swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file curl155.out === Start of file http_server.log 00:51:03.381480 ====> Client connect 00:51:03.381694 accept_connection 3 returned 4 00:51:03.381781 accept_connection 3 returned 0 00:51:03.388629 Read 93 bytes 00:51:03.388758 Process 93 bytes request 00:51:03.388861 Got request: GET /verifiedserver HTTP/1.1 00:51:03.388937 Are-we-friendly question received 00:51:03.389074 Wrote request (93 bytes) input to log/8/server.input 00:51:03.389181 Identifying ourselves as friends 00:51:03.389385 Response sent (57 bytes) and written to log/8/server.response 00:51:03.389456 special request received, no persistency 00:51:03.389520 ====> Client disconnect 0 00:51:51.626316 ====> Client connect 00:51:51.626448 accept_connection 3 returned 4 00:51:51.626524 accept_connection 3 returned 0 00:51:52.814266 Read 187 bytes 00:51:52.814472 Process 187 bytes request 00:51:52.814574 Got request: PUT /155 HTTP/1.1 00:51:52.814649 Serve test number 155 part 0 00:51:52.814878 - request found to be complete (155) 00:51:52.815082 Found Content-Length: 85 in the request 00:51:52.815237 Wrote request (187 bytes) input to log/8/server.input 00:51:52.815344 Send response test155 section 00:51:52.815606 connection close instruction "swsclose" found in response 00:51:52.815875 Response sent (302 bytes) and written to log/8/server.response 00:51:52.815940 instructed to close connection after server-reply 00:51:52.815997 ====> Client disconnect 0 00:51:55.301318 ====> Client connect 00:51:55.301462 accept_connection 3 returned 4 00:51:55.301548 accept_connection 3 returned 0 00:51:55.514724 Read 167 bytes 00:51:55.514943 Process 167 bytes request 00:51:55.515048 Got request: PUT /155 HTTP/1.1 00:51:55.515132 Serve test number 155 part 0 00:51:55.515406 - request found to be complete (155) 00:51:55.515642 Found Content-Length: 0 in the request 00:51:55.515730 Received NTLM type-1, sending back data 1001 00:51:55.515836 Wrote request (167 bytes) input to log/8/server.input 00:51:55.515943 Send response test155 section 00:51:55.516494 Response sent (417 bytes) and written to log/8/server.response 00:51:55.516566 => persistent connection request ended, awaits new request 00:51:57.194320 Read 385 bytes 00:51:57.194589 Process 385 bytes request 00:51:57.194699 Got request: PUT /155 HTTP/1.1 00:51:57.194776 Serve test number 155 part 0 00:51:57.195030 - request found to be complete (155) 00:51:57.195250 Found Content-Length: 85 in the request 00:51:57.195331 Received NTLM type-3, sending back data 1002 00:51:57.195422 Expecting 85 POSTed bytes 00:51:57.195542 Wrote request (385 bytes) input to log/8/server.input 00:51:57.195635 Send response test155 section 00:51:57.195947 connection close instruction "swsclose" found in response 00:51:57.196218 Response sent (189 bytes) and written to log/8/server.response 00:51:57.196293 instructed to close connection after server-reply 00:51:57.196363 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 46614 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file put155 This is data we upload with PUT a second line line three four is the number of lines === End of file put155 === Start of file server.cmd Testnum 155 === End of file server.cmd === Start of file server.input PUT /155 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* Content-Length: 85 This is data we upload with PUT a second line line three four is the number of lines PUT /155 HTTP/1.1 Host: 127.0.0.1:39461 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* Content-Length: 0 PUT /155 HTTP/1.1 Host: 127.0.0.1:39461 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Accept: */* Content-Length: 85 This is data we upload with PUT a second line line three four is the number of lines === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 401 NTLM Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" WWW-Authenticate: Basic realm="gimme all yer s3cr3ts" WWW-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Connection: close moo HTTP/1.1 401 Type-1 received, send back type-2 Server: Microsoft-IIS/5.0 Content-Length: 34 Content-Type: text/html; charset=iso-8859-1 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== This is not the real page either HTTP/1.1 200 Type-3 Received and all Things are fine swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file server.response === Start of file stderr155 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 85 0 0 100 85 0 23 0:00:03 0:00:03 --:--:-- 35 100 85 0 0 100 85 0 17 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind154 ../src/curl -q --output log/7/curl154.out --include --trace-ascii log/7/trace154 --trace-time http://127.0.0.1:34897/154 -T log/7/put154 -u testuser:testpass --anyauth > log/7/stdout154 2> log/7/stderr154 0:00:05 0:00:04 0:00:01 24 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 34 100 34 0 0 5 0 0:00:06 0:00:06 --:--:-- 50 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 100 85 0 0 100 85 0 10 0:00:08 0:00:07 0:00:01 84 100 117 100 32 100 85 3 10 0:00:10 0:00:08 0:00:02 98 === End of file stderr155 === Start of file trace155 00:51:51.695280 * Trying 127.0.0.1:39461... 00:51:52.568712 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 42764 00:51:52.701457 * using HTTP/1.x 00:51:53.235833 => Send header, 102 bytes (0x66) 0000: PUT /155 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Content-Length: 85 0064: 00:51:53.335903 => Send data, 85 bytes (0x55) 0000: This is data we upload with PUT.a second line.line three.four is 0040: the number of lines. 00:51:53.421089 * upload completely sent off: 85 bytes 00:51:53.697266 <= Recv header, 51 bytes (0x33) 0000: HTTP/1.1 401 NTLM Authorization Required swsclose 00:51:54.007153 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:51:54.177872 <= Recv header, 60 bytes (0x3c) 0000: WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" 00:51:54.212612 <= Recv header, 55 bytes (0x37) 0000: WWW-Authenticate: Basic realm="gimme all yer s3cr3ts" 00:51:54.227939 <= Recv header, 24 bytes (0x18) 0000: WWW-Authenticate: NTLM 00:51:54.253440 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:51:54.294024 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:51:54.379437 * Need to rewind upload for next request 00:51:54.439623 <= Recv header, 2 bytes (0x2) 0000: 00:51:54.871984 * shutting down connection #0 00:51:55.463071 * Issue another request to this URL: 'http://127.0.0.1:39461/155' 00:51:55.635887 * Hostname 127.0.0.1 was found in DNS cache 00:51:55.677748 * Trying 127.0.0.1:39461... 00:51:55.716056 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 59988 00:51:55.723219 * using HTTP/1.x 00:51:55.838918 * Server auth using NTLM with user 'testuser' 00:51:55.904563 => Send header, 167 bytes (0xa7) 0000: PUT /155 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 006c: User-Agent: curl/8.17.0 0085: Accept: */* 0092: Content-Length: 0 00a5: 00:51:55.956513 <= Recv header, 48 bytes (0x30) 0000: HTTP/1.1 401 Type-1 received, send back type-2 00:51:55.966710 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:51:55.994324 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 34 00:51:56.000511 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:51:56.131810 <= Recv header, 241 bytes (0xf1) 0000: WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgy 0040: NcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQAS 0080: AAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAd 00c0: ABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== 00:51:56.187575 * Ignoring the response-body 00:51:56.204457 * setting size while ignoring 00:51:56.211936 <= Recv header, 2 bytes (0x2) 0000: 00:51:56.396876 * Connection #1 to host 127.0.0.1:39461 left intact 00:51:56.431949 * Issue another request to this URL: 'http://127.0.0.1:39461/155' 00:51:56.602283 * Reusing existing http: connection with host 127.0.0.1 00:51:57.552842 * Server auth using NTLM with user 'testuser' 00:51:57.577628 => Send header, 300 bytes (0x12c) 0000: PUT /155 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABw 006a: AAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjK 00aa: HRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJ 00ea: T04= 00f0: User-Agent: curl/8.17.0 0109: Accept: */* 0116: Content-Length: 85 012a: 00:51:57.615932 => Send data, 85 bytes (0x55) 0000: This is data we upload with PUT.a second line.line three.four is 0040: the number of lines. 00:51:57.630517 * upload completely sent off: 85 bytes 00:51:57.655269 <= Recv header, 63 bytes (0x3f) 0000: HTTP/1.1 200 Type-3 Received and all Things are fine swsclose 00:51:57.669788 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:51:57.678158 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:51:57.686604 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 32 00:51:57.705438 <= Recv header, 2 bytes (0x2) 0000: 00:51:57.717099 <= Recv data, 32 bytes (0x20) 0000: Finally, this is the real page!. 00:51:57.838433 * Connection #1 to host 127.0.0.1:39461 left intact === End of file trace155 === Start of file valgrind155 ==210982== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind155 test 0154...[HTTP PUT with --anyauth authorization (picking Digest)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind154 ../src/curl -q --output log/7/curl154.out --include --trace-ascii log/7/trace154 --trace-time http://127.0.0.1:34897/154 -T log/7/put154 -u testuser:testpass --anyauth > log/7/stdout154 2> log/7/stderr154 valgrind ERROR ==210906== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 154 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind154 ../src/curl -q --output log/7/curl154.out --include --trace-ascii log/7/trace154 --trace-time http://127.0.0.1:34897/154 -T log/7/put154 -u testuser:testpass --anyauth > log/7/stdout154 2> log/7/stderr154 === End of file commands.log === Start of file curl154.out HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" WWW-Authenticate: Basic realm="gimme all yer s3cr3ts" WWW-Authenticate: Digest realm="gimme all yer s3cr3ts", nonce="11223344" Content-Type: text/html; charset=iso-8859-1 Connection: close HTTP/1.1 200 OK swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 23 Connection: close This IS the real page === End of file curl154.out === Start of file http_server.log 00:51:02.666664 ====> Client connect 00:51:02.666846 accept_connection 3 returned 4 00:51:02.666929 accept_connection 3 returned 0 00:51:02.674345 Read 93 bytes 00:51:02.674489 Process 93 bytes request 00:51:02.674592 Got request: GET /verifiedserver HTTP/1.1 00:51:02.674681 Are-we-friendly question received 00:51:02.674816 Wrote request (93 bytes) input to log/7/server.input 00:51:02.674918 Identifying ourselves as friends 00:51:02.675107 Response sent (57 bytes) and written to log/7/server.response 00:51:02.675172 special request received, no persistency 00:51:02.675229 ====> Client disconnect 0 00:51:50.199085 ====> Client connect 00:51:50.199238 accept_connection 3 returned 4 00:51:50.199328 accept_connection 3 returned 0 00:51:51.390919 Read 187 bytes 00:51:51.413978 Process 187 bytes request 00:51:51.414162 Got request: PUT /154 HTTP/1.1 00:51:51.414241 Serve test number 154 part 0 00:51:51.414494 - request found to be complete (154) 00:51:51.414722 Found Content-Length: 85 in the request 00:51:51.414906 Wrote request (187 bytes) input to log/7/server.input 00:51:51.415025 Send response test154 section 00:51:51.421390 connection close instruction "swsclose" found in response 00:51:51.421786 Response sent (369 bytes) and written to log/7/server.response 00:51:51.421864 instructed to close connection after server-reply 00:51:51.421933 ====> Client disconnect 0 00:51:53.927388 ====> Client connect 00:51:53.927528 accept_connection 3 returned 4 00:51:53.927616 accCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind160 ../src/curl -q --include --trace-ascii log/2/trace160 --trace-time http://127.0.0.1:39863/want/160 http://127.0.0.1:39863/wantmore/1600001 > log/2/stdout160 2> log/2/stderr160 ept_connection 3 returned 0 00:52:01.118922 Read 336 bytes 00:52:01.119115 Process 336 bytes request 00:52:01.119212 Got request: PUT /154 HTTP/1.1 00:52:01.119281 Serve test number 154 part 0 00:52:01.119501 - request found to be complete (154) 00:52:01.119689 Found Content-Length: 85 in the request 00:52:01.119763 Received Digest request, sending back data 1000 00:52:01.119859 Wrote request (336 bytes) input to log/7/server.input 00:52:01.119948 Send response test154 section 00:52:01.120208 connection close instruction "swsclose" found in response 00:52:01.120453 Response sent (177 bytes) and written to log/7/server.response 00:52:01.120532 instructed to close connection after server-reply 00:52:01.120598 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 41020 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file put154 This is data we upload with PUT a second line line three four is the number of lines === End of file put154 === Start of file server.cmd Testnum 154 === End of file server.cmd === Start of file server.input PUT /154 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* Content-Length: 85 This is data we upload with PUT a second line line three four is the number of lines PUT /154 HTTP/1.1 Host: 127.0.0.1:34897 Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/154", response="b71551e12d1c456e47d8388ecb2edeca" User-Agent: curl/8.17.0 Accept: */* Content-Length: 85 This is data we upload with PUT a second line line three four is the number of lines === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" WWW-Authenticate: Basic realm="gimme all yer s3cr3ts" WWW-Authenticate: Digest realm="gimme all yer s3cr3ts", nonce="11223344" Content-Type: text/html; charset=iso-8859-1 Connection: close This is not the real page HTTP/1.1 200 OK swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 23 Connection: close This IS the real page === End of file server.response === Start of file stderr154 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 85 0 0 100 85 0 23 0:00:03 0:00:03 --:--:-- 35 100 85 0 0 100 85 0 17 0:00:05 0:00:04 0:00:01 23 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 85 0 0 100 85 0 6 0:00:14 0:00:13 0:00:01 11 100 108 100 23 100 85 1 6 0:00:23 0:00:13 0:00:10 14 === End of file stderr154 === Start of file trace154 00:51:50.261197 * Trying 127.0.0.1:34897... 00:51:51.150885 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 55186 00:51:51.271965 * using HTTP/1.x 00:51:51.813220 => Send header, 102 bytes (0x66) 0000: PUT /154 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Content-Length: 85 0064: 00:51:51.911481 => Send data, 85 bytes (0x55) 0000: This is data we upload with PUT.a second line.line three.four is 0040: the number of lines. 00:51:51.998820 * upload completely sent off: 85 bytes 00:51:52.285383 <= Recv header, 46 bytes (0x2e) 0000: HTTP/1.1 401 Authorization Required swsclose 00:51:52.606112 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:51:52.773975 <= Recv header, 60 bytes (0x3c) 0000: WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" 00:51:52.807752 <= Recv header, 55 bytes (0x37) 0000: WWW-Authenticate: Basic realm="gimme all yer s3cr3ts" 00:51:52.910210 <= Recv header, 74 bytes (0x4a) 0000: WWW-Authenticate: Digest realm="gimme all yer s3cr3ts", nonce="1 0040: 1223344" 00:51:52.940171 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:51:52.980917 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:51:53.071705 * Need to rewind upload for next request 00:51:53.131172 <= Recv header, 2 bytes (0x2) 0000: 00:51:53.575919 * shutting down connection #0 00:51:54.095279 * Issue another request to this URL: 'http://127.0.0.1:34897/154' 00:51:54.262039 * Hostname 127.0.0.1 was found in DNS cache 00:51:54.304203 * Trying 127.0.0.1:34897... 00:51:54.342137 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 53952 00:51:54.349090 * using HTTP/1.x 00:52:01.447367 * Server auth using Digest with user 'testuser' 00:52:01.504318 => Send header, 251 bytes (0xfb) 0000: PUT /154 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: Authorization: Digest username="testuser", realm="gimme all yer 006a: s3cr3ts", nonce="11223344", uri="/154", response="b71551e12d1c45 00aa: 6e47d8388ecb2edeca" 00bf: User-Agent: curl/8.17.0 00d8: Accept: */* 00e5: Content-Length: 85 00f9: 00:52:01.531855 => Send data, 85 bytes (0x55) 0000: This is data we upload with PUT.a second line.line three.four is 0040: the number of lines. 00:52:01.548211 * upload completely sent off: 85 bytes 00:52:01.589513 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 200 OK swsclose 00:52:01.602285 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 00:52:01.613372 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:52:01.642329 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 23 00:52:01.650422 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:52:01.684167 <= Recv header, 2 bytes (0x2) 0000: 00:52:01.709842 <= Recv data, 23 bytes (0x17) 0000: This IS the real page!. 00:52:01.929098 * shutting down connection #1 === End of file trace154 === Start of file valgrind154 ==210906== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind154 test 0160...[HTTP with delayed close, conn reuse, connection reset and retry] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind160 ../src/curl -q --include --trace-ascii log/2/trace160 --trace-time http://127.0.0.1:39863/want/160 http://127.0.0.1:39863/wantmore/1600001 > log/2/stdout160 2> log/2/stderr160 valgrind ERROR ==211645== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 160 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind160 ../src/curl -q --include --trace-ascii log/2/trace160 --trace-time http://127.0.0.1:39863/want/160 http://127.0.0.1:39863/wantmore/1600001 > log/2/stdout160 2> log/2/stderr160 === End of file commands.log === Start of file http_server.log 00:51:20.171266 ====> Client connect 00:51:20.171433 accept_connection 3 returned 4 00:51:20.171519 accept_connection 3 returned 0 00:51:20.174274 Read 93 bytes 00:51:20.174361 Process 93 bytes request 00:51:20.174461 Got request: GET /verifiedserver HTTP/1.1 00:51:20.174536 Are-we-friendly question received 00:51:20.174677 Wrote request (93 bytes) input to log/2/server.input 00:51:20.174779 Identifying ourselves as friends CMD (4608): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind161 ../src/curl -q --output log/5/curl161.out --include --trace-ascii log/5/trace161 --trace-time ftp://127.0.0.1:33729/161 > log/5/stdout161 2> log/5/stderr161 00:51:20.174976 Response sent (57 bytes) and written to log/2/server.response 00:51:20.175050 special request received, no persistency 00:51:20.175117 ====> Client disconnect 0 00:52:08.474238 ====> Client connect 00:52:08.474393 accept_connection 3 returned 4 00:52:08.474476 accept_connection 3 returned 0 00:52:09.495539 Read 87 bytes 00:52:09.495728 Process 87 bytes request 00:52:09.495828 Got request: GET /want/160 HTTP/1.1 00:52:09.495900 Serve test number 160 part 0 00:52:09.496086 - request found to be complete (160) 00:52:09.496348 Wrote request (87 bytes) input to log/2/server.input 00:52:09.496456 Send response test160 section 00:52:09.496641 connection close instruction "swsclose" found in response 00:52:09.496814 Response sent (93 bytes) and written to log/2/server.response 00:52:09.496970 Told to sleep for 1 seconds 00:52:10.498161 Continuing after sleeping 1 seconds 00:52:10.498387 instructed to close connection after server-reply 00:52:10.498451 ====> Client disconnect 0 00:52:12.289630 ====> Client connect 00:52:12.289757 accept_connection 3 returned 4 00:52:12.289833 accept_connection 3 returned 0 00:52:12.344060 Read 95 bytes 00:52:12.344220 Process 95 bytes request 00:52:12.344309 Got request: GET /wantmore/1600001 HTTP/1.1 00:52:12.344373 Serve test number 160 part 1 00:52:12.344557 - request found to be complete (160) 00:52:12.344757 Wrote request (95 bytes) input to log/2/server.input 00:52:12.344839 Send response test160 section 00:52:12.345013 connection close instruction "swsclose" found in response 00:52:12.345171 Response sent (94 bytes) and written to log/2/server.response 00:52:12.345239 Told to sleep for 1 seconds 00:52:13.346390 Continuing after sleeping 1 seconds 00:52:13.346580 instructed to close connection after server-reply 00:52:13.346648 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 34404 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 160 === End of file server.cmd === Start of file server.input GET /want/160 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* GET /wantmore/1600001 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 9 surprise HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close surprise2 === End of file server.response === Start of file stderr160 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 9 100 9 0 0 2 0 0:00:04 0:00:04 --:--:-- 2 100 9 100 9 0 0 1 0 0:00:09 0:00:04 0:00:05 2 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 10 0 10 0 0 5 0 --:--:-- 0:00:01 --:--:-- 8 100 10 0 10 0 0 5 0 --:--:-- 0:00:01 --:--:-- 8 === End of file stderr160 === Start of file stdout160 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 9 surprise HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Connection: close surprise2 === End of file stdout160 === Start of file trace160 00:52:07.501010 * Trying 127.0.0.1:39863... 00:52:08.443357 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 35076 00:52:08.574383 * using HTTP/1.x 00:52:08.915690 => Send header, 87 bytes (0x57) 0000: GET /want/160 HTTP/1.1 0018: Host: 127.0.0.1:39863 002f: User-Agent: curl/8.17.0 0048: Accept: */* 0055: 00:52:09.243798 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 200 OK swsclose 00:52:09.533751 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:52:09.643716 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 9 00:52:09.737842 <= Recv header, 2 bytes (0x2) 0000: 00:52:09.794188 <= Recv data, 9 bytes (0x9) 0000: surprise. 00:52:10.348127 * Connection #0 to host 127.0.0.1:39863 left intact 00:52:11.118467 * Connection 0 seems to be dead 00:52:11.208232 * shutting down connection #0 00:52:11.603118 * Hostname 127.0.0.1 was found in DNS cache 00:52:11.666648 * Trying 127.0.0.1:39863... 00:52:11.701067 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 35082 00:52:11.707872 * using HTTP/1.x 00:52:11.728992 => Send header, 95 bytes (0x5f) 0000: GET /wantmore/1600001 HTTP/1.1 0020: Host: 127.0.0.1:39863 0037: User-Agent: curl/8.17.0 0050: Accept: */* 005d: 00:52:11.759564 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 200 OK swsclose 00:52:11.768524 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:52:11.825243 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:52:11.841393 <= Recv header, 2 bytes (0x2) 0000: 00:52:11.846695 <= Recv data, 10 bytes (0xa) 0000: surprise2. 00:52:11.911577 * Request completely sent off 00:52:12.823852 <= Recv data, 0 bytes (0x0) 00:52:12.903768 * shutting down connection #1 === End of file trace160 === Start of file valgrind160 ==211645== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind160 test 0161...[FTP RETR PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind161 ../src/curl -q --output log/5/curl161.out --include --trace-ascii log/5/trace161 --trace-time ftp://127.0.0.1:33729/161 > log/5/stdout161 2> log/5/stderr161 valgrind ERROR ==211795== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 161 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind161 ../src/curl -q --output log/5/curl161.out --include --trace-ascii log/5/trace161 --trace-time ftp://127.0.0.1:33729/161 > log/5/stdout161 2> log/5/stderr161 === End of file commands.log === Start of file curl161.out 1oooooooooooooooooooooooooooooooooooooooooo2 === End of file curl161.out === Start of file ftp_server.log 00:51:21.151051 ====> Client connect 00:51:21.152027 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:51:21.158674 < "USER anonymous" 00:51:21.158971 > "331 We are happy you popped in![CR][LF]" 00:51:21.160854 < "PASS ftp@example.com" 00:51:21.161778 > "230 Welcome you silly person[CR][LF]" 00:51:21.162269 < "PWD" 00:51:21.164503 > "257 "/" is current directory[CR][LF]" 00:51:21.165163 < "EPSV" 00:51:21.165359 ====> Passive DATA channel requested by client 00:51:21.165497 DATA sockfilt for passive data channel starting... 00:51:21.209966 DATA sockfilt for passive data channel started (pid 211781) 00:51:21.211288 DATA sockfilt for passive data channel listens on port 38103 00:51:21.211611 > "229 Entering Passive Mode (|||38103|)[CR][LF]" 00:51:21.211774 Client has been notified that DATA conn will be accepted on port 38103 00:51:21.214895 Client connects to port 38103 00:51:21.215093 ====> Client established passive DATA connection on port 38103 00:51:21.215649 < "TYPE I" 00:51:21.216128 > "200 I modify TYPE as you wanted[CR][LF]" 00:51:21.216968 < "SIZE verifiedserver" 00:51:21.217249 > "213 18[CR][LF]" 00:51:21.218565 < "RETR verifiedserver" 00:51:21.218845 > "150 Binary junk (18 bytes).[CR][LF]" 00:51:21.221755 =====> Closing passive DATA connection... 00:51:21.221914 Server disconnects passive DATA connection 00:51:21.222835 Server disconnected passive DATA connection 00:51:21.222991 DATA sockfilt for passive data channel quits (pid 211781) 00:51:21.226035 DATA sockfilt for passive data channel quit (pid 211781) 00:51:21.226191 =====> Closed passive DATA connection 00:51:21.226418 > "226 File transfer complete[CR][LF]" 00:51:21.271966 < "QUIT" 00:51:21.272350 > "221 bye bye baby[CR][LF]" 00:51:21.277734 MAIN sockfilt said DISC 00:51:21.278041 ====> Client disconnected 00:51:21.278305 Awaiting input 00:52:09.118251 ====> Client connect 00:52:09.118990 FTPD: Getting commands from log/5/server.cmd 00:52:09.119321 FTPD: run test case number: 161 00:52:09.120841 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:52:10.406496 < "USER anonymous" 00:52:10.407372 > "331 We are happy you popped in![CR][LF]" 00:52:10.521843 < "PASS ftp@example.com" 00:52:10.522254 > "230 Welcome you silly person[CR][LF]" 00:52:10.610421 < "PWD" 00:52:10.610845 > "257 "/" is current directory[CR][LF]" 00:52:10.815315 < "EPSV" 00:52:10.815644 ====> Passive DATA channel requested by client 00:52:10.815793 DATA sockfilt for passive data channel starting... 00:52:10.900641 DATA sockfilt for passive data channel started (pid 212763) 00:52:10.902368 DATA sockfilt for passive data channel listens on port 38779 00:52:10.902694 > "229 Entering Passive Mode (|||38779|)[CR][LF]" 00:52:10.902863 Client has been notified that DATA conn will be accepted on port 38779 00:52:11.107710 Client connects to port 38779 00:52:11.108287 ====> Client established passive DATA connection on port 38779 00:52:11.215341 < "TYPE I" 00:52:11.215773 > "200 I modify TYPE as you wanted[CR][LF]" 00:52:11.268594 < "SIZE 161" 00:52:11.270380 > "213 10928[CR][LF]" 00:52:11.345130 < "RETR 161" 00:52:11.347225 > "150 Binary data connection for 161 () (45 bytes).[CR][LF]" 00:52:11.351181 =====> Closing passive DATA connection... 00:52:11.351371 Server disconnects passive DATA connection 00:52:11.351694 Server disconnected passive DATA connection 00:52:11.351863 DATA sockfilt for passive data channel quits (pid 212763) 00:52:11.357981 DATA sockfilt for passive data channel quit (pid 212763) 00:52:11.358207 =====> Closed passive DATA connection 00:52:11.358502 > "226 File transfer complete[CR][LF]" 00:52:12.501437 MAIN sockfilt said DISC 00:52:12.502103 ====> Client disconnected 00:52:12.502404 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:51:21.766874 ====> Client connect 00:51:21.768881 Received DATA (on stdin) 00:51:21.768962 > 160 bytes data, server => client 00:51:21.769066 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:51:21.769161 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:51:21.769248 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:51:21.774852 < 16 bytes data, client => server 00:51:21.774941 'USER anonymous\r\n' 00:51:21.776953 Received DATA (on stdin) 00:51:21.777021 > 33 bytes data, server => client 00:51:21.777106 '331 We are happy you popped in!\r\n' 00:51:21.777353 < 22 bytes data, client => server 00:51:21.777428 'PASS ftp@example.com\r\n' 00:51:21.778053 Received DATA (on stdin) 00:51:21.778122 > 30 bytes data, server => client 00:51:21.778285 '230 Welcome you silly person\r\n' 00:51:21.778506 < 5 bytes data, client => server 00:51:21.778569 'PWD\r\n' 00:51:21.779464 Received DATA (on stdin) 00:51:21.779528 > 30 bytes data, server => client 00:51:21.779626 '257 "/" is current directory\r\n' 00:51:21.781680 < 6 bytes data, client => server 00:51:21.781749 'EPSV\r\n' 00:51:21.828971 Received DATA (on stdin) 00:51:21.829101 > 39 bytes data, server => client 00:51:21.829191 '229 Entering Passive Mode (|||38103|)\r\n' 00:51:21.831709 < 8 bytes data, client => server 00:51:21.831781 'TYPE I\r\n' 00:51:21.832833 Received DATA (on stdin) 00:51:21.832893 > 33 bytes data, server => client 00:51:21.832984 '200 I modify TYPE as you wanted\r\n' 00:51:21.833517 < 21 bytes data, client => server 00:51:21.833586 'SIZE verifiedserver\r\n' 00:51:21.834488 Received DATA (on stdin) 00:51:21.834549 > 8 bytes data, server => client 00:51:21.834624 '213 18\r\n' 00:51:21.835031 < 21 bytes data, client => server 00:51:21.835101 'RETR verifiedserver\r\n' 00:51:21.836417 Received DATA (on stdin) 00:51:21.836480 > 29 bytes data, server => client 00:51:21.836555 '150 Binary junk (18 bytes).\r\n' 00:51:21.844594 Received DATA (on stdin) 00:51:21.844666 > 28 bytes data, server => client 00:51:21.844742 '226 File transfer complete\r\n' 00:51:21.887892 < 6 bytes data, client => server 00:51:21.888045 'QUIT\r\n' 00:51:21.889666 Received DATA (on stdin) 00:51:21.889730 > 18 bytes data, server => client 00:51:21.889795 '221 bye bye baby\r\n' 00:51:21.894606 ====> Client disconnect 00:51:21.894890 Received ACKD (on stdin) 00:52:09.734824 ====> Client connect 00:52:09.737093 Received DATA (on stdin) 00:52:09.737176 > 160 bytes data, server => client 00:52:09.737306 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:52:09.737410 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:52:09.737502 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:52:11.022084 < 16 bytes data, client => server 00:52:11.022267 'USER anonymous\r\n' 00:52:11.023832 Received DATA (on stdin) 00:52:11.023921 > 33 bytes data, server => client 00:52:11.024039 '331 We are happy you popped in!\r\n' 00:52:11.135362 < 22 bytes data, client => server 00:52:11.135540 'PASS ftp@example.com\r\n' 00:52:11.139085 Received DATA (on stdin) 00:52:11.139171 > 30 bytes data, server => client 00:52:11.139256 '230 Welcome you silly person\r\n' 00:52:11.226406 < 5 bytes data, client => server 00:52:11.226597 'PWD\r\n' 00:52:11.227673 Received DATA (on stdin) 00:52:11.227750 > 30 bytes data, server => client 00:52:11.227845 '257 "/" is current directory\r\n' 00:52:11.429689 < 6 bytes data, client => server 00:52:11.429865 'EPSV\r\n' 00:52:11.519517 Received DATA (on stdin) 00:52:11.519669 > 39 bytes data, server => client 00:52:11.519781 '229 Entering Passive Mode (|||38779|)\r\n' 00:52:11.831214 < 8 bytes data, client => server 00:52:11.831401 'TYPE I\r\n' 00:52:11.832591 Received DATA (on stdin) 00:52:11.832668 > 33 bytes data, server => client 00:52:11.832757 '200 I modify TYPE as you wanted\r\n' 00:52:11.884556 < 10 bytes data, client => server 00:52:11.884770 'SIZE 161\r\n' 00:52:11.891171 Received DATA (on stdin) 00:52:11.891279 > 11 bytes data, server => client 00:52:11.891356 '213 10928\r\n' 00:52:11.959769 < 10 bytes data, client => server 00:52:11.959966 'RETR 161\r\n' 00:52:11.964049 Received DATA (on stdin) 00:52:11.964165 > 51 bytes data, server => client 00:52:11.964276 '150 Binary data connection for 161 () (45 bytes).\r\n' 00:52:11.975329 Received DATA (on stdin) 00:52:11.975447 > 28 bytes data, server => client 00:52:11.975543 '226 File transfer complete\r\n' 00:52:13.117997 ====> Client disconnect 00:52:13.118816 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:51:21.817887 Running IPv4 version 00:51:21.825407 Listening on port 38103 00:51:21.825850 Wrote pid 211781 to log/5/server/ftp_sockdata.pid 00:51:21.826594 Received PING (on stdin) 00:51:21.827608 Received PORT (on stdin) 00:51:21.831558 ====> Client connect 00CMD (13312): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind158 ../src/curl -q --output log/1/curl158.out --include --trace-ascii log/1/trace158 --trace-time http://127.0.0.1:40641/158 -F name=daniel > log/1/stdout158 2> log/1/stderr158 :51:21.836018 Received DATA (on stdin) 00:51:21.836290 > 18 bytes data, server => client 00:51:21.839289 'WE ROOLZ: 202313\r\n' 00:51:21.839520 Received DISC (on stdin) 00:51:21.839630 ====> Client forcibly disconnected 00:51:21.840155 Received QUIT (on stdin) 00:51:21.840226 quits 00:51:21.840688 ============> sockfilt quits 00:52:10.498116 Running IPv4 version 00:52:10.515894 Listening on port 38779 00:52:10.516398 Wrote pid 212763 to log/5/server/ftp_sockdata.pid 00:52:10.517155 Received PING (on stdin) 00:52:10.518574 Received PORT (on stdin) 00:52:10.721276 ====> Client connect 00:52:10.964396 Received DATA (on stdin) 00:52:10.964791 > 45 bytes data, server => client 00:52:10.965172 '1oooooooooooooooooooooooooooooooooooooooooo2\n' 00:52:10.968427 Received DISC (on stdin) 00:52:10.968566 ====> Client forcibly disconnected 00:52:10.968912 Received QUIT (on stdin) 00:52:10.968991 quits 00:52:10.969529 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 161 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE 161 RETR 161 === End of file server.input === Start of file stderr161 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 10928 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 10928 0 45 0 0 8 0 0:22:46 0:00:05 0:22:41 11 curl: (18) transfer closed with 10883 bytes remaining to read === End of file stderr161 === Start of file trace161 00:52:08.798070 * Trying 127.0.0.1:33729... 00:52:09.683897 * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 33124 00:52:09.931503 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:52:10.279266 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:52:10.309850 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:52:10.316803 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:52:10.321858 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:52:10.426104 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:52:10.498248 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:52:10.520055 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:52:10.590958 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:52:10.609908 => Send header, 5 bytes (0x5) 0000: PWD 00:52:10.626535 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:52:10.662091 * Entry path is '/' 00:52:10.762654 * Request has same path as previous transfer 00:52:10.813203 => Send header, 6 bytes (0x6) 0000: EPSV 00:52:10.828175 * Connect data stream passively 00:52:10.906502 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||38779|) 00:52:11.031183 * Connecting to 127.0.0.1 (127.0.0.1) port 38779 00:52:11.095377 * Trying 127.0.0.1:38779... 00:52:11.184310 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 38779) from 127.0.0.1 port 53734 00:52:11.213857 => Send header, 8 bytes (0x8) 0000: TYPE I 00:52:11.233096 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:52:11.266015 => Send header, 10 bytes (0xa) 0000: SIZE 161 00:52:11.295264 <= Recv header, 11 bytes (0xb) 0000: 213 10928 00:52:11.342954 => Send header, 10 bytes (0xa) 0000: RETR 161 00:52:11.362922 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 161 () (45 bytes). 00:52:11.405972 * Maxdownload = -1 00:52:11.416641 * Getting file with size: 10928 00:52:11.589495 <= Recv data, 45 bytes (0x2d) 0000: 1oooooooooooooooooooooooooooooooooooooooooo2. 00:52:11.902813 * abort upload 00:52:11.927240 <= Recv data, 0 bytes (0x0) 00:52:12.016474 * transfer closed with 10883 bytes remaining to read 00:52:12.435245 * closing connection #0 === End of file trace161 === Start of file valgrind161 ==211795== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind161 test 0158...[HTTP multipart formpost with only a 100 reply] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind158 ../src/curl -q --output log/1/curl158.out --include --trace-ascii log/1/trace158 --trace-time http://127.0.0.1:40641/158 -F name=daniel > log/1/stdout158 2> log/1/stderr158 valgrind ERROR ==211486== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 158 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind158 ../src/curl -q --output log/1/curl158.out --include --trace-ascii log/1/trace158 --trace-time http://127.0.0.1:40641/158 -F name=daniel > log/1/stdout158 2> log/1/stderr158 === End of file commands.log === Start of file curl158.out HTTP/1.1 100 Continue swsclose Silly-header: yeeeees === End of file curl158.out === Start of file http_server.log 00:51:15.851974 ====> Client connect 00:51:15.852156 accept_connection 3 returned 4 00:51:15.852241 accept_connection 3 returned 0 00:51:15.858898 Read 93 bytes 00:51:15.859007 Process 93 bytes request 00:51:15.859099 Got request: GET /verifiedserver HTTP/1.1 00:51:15.859164 Are-we-friendly question received 00:51:15.859278 Wrote request (93 bytes) input to log/1/server.input 00:51:15.859368 Identifying ourselves as friends 00:51:15.859549 Response sent (57 bytes) and written to log/1/server.response 00:51:15.859612 special request received, no persistency 00:51:15.859668 ====> Client disconnect 0 00:52:10.244215 ====> Client connect 00:52:10.244372 accept_connection 3 returned 4 00:52:10.244451 accept_connection 3 returned 0 00:52:11.687699 Read 353 bytes 00:52:11.687920 Process 353 bytes request 00:52:11.688019 Got request: POST /158 HTTP/1.1 00:52:11.688090 Serve test number 158 part 0 00:52:11.688269 - request found to be complete (158) 00:52:11.688624 Found Content-Length: 157 in the request 00:52:11.688976 Wrote request (353 bytes) input to log/1/server.input 00:52:11.689088 Send response test158 section 00:52:11.689303 connection close instruction "swsclose" found in response 00:52:11.689436 Response sent (57 bytes) and written to log/1/server.response 00:52:11.689502 instructed to close connection after server-reply 00:52:11.689563 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 33494 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 158 === End of file server.cmd === Start of file server.input POST /158 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* Content-Length: 157 Content-Type: multipart/form-data; boundary=------------------------PoUo1uk1tX7YUzADxi9O8Y --------------------------PoUo1uk1tX7YUzADxi9O8Y Content-Disposition: form-data; name="name" daniel --------------------------PoUo1uk1tX7YUzADxi9O8Y-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 100 Continue swsclose SiCMD (5632): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind162 ../src/curl -q --output log/3/curl162.out --include --trace-ascii log/3/trace162 --trace-time http://127.0.0.1:46853/162 --proxy http://127.0.0.1:46853 --proxy-user foo:bar --proxy-ntlm --fail > log/3/stdout162 2> log/3/stderr162 lly-header: yeeeees === End of file server.response === Start of file stderr158 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 157 0 0 100 157 0 40 0:00:03 0:00:03 --:--:-- 59 100 157 0 0 100 157 0 39 0:00:04 0:00:03 0:00:01 58 100 157 0 0 100 157 0 32 0:00:04 0:00:04 --:--:-- 44 curl: (52) Empty reply from server === End of file stderr158 === Start of file trace158 00:52:09.315090 * Trying 127.0.0.1:40641... 00:52:10.177716 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 34536 00:52:10.298371 * using HTTP/1.x 00:52:11.110854 => Send header, 196 bytes (0xc4) 0000: POST /158 HTTP/1.1 0014: Host: 127.0.0.1:40641 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: Content-Length: 157 0066: Content-Type: multipart/form-data; boundary=-------------------- 00a6: ----PoUo1uk1tX7YUzADxi9O8Y 00c2: 00:52:11.220178 => Send data, 157 bytes (0x9d) 0000: --------------------------PoUo1uk1tX7YUzADxi9O8Y 0032: Content-Disposition: form-data; name="name" 005f: 0061: daniel 0069: --------------------------PoUo1uk1tX7YUzADxi9O8Y-- 00:52:11.311125 * upload completely sent off: 157 bytes 00:52:11.600265 <= Recv header, 32 bytes (0x20) 0000: HTTP/1.1 100 Continue swsclose 00:52:11.893561 <= Recv header, 23 bytes (0x17) 0000: Silly-header: yeeeees 00:52:11.997108 <= Recv header, 2 bytes (0x2) 0000: 00:52:12.233830 * Empty reply from server 00:52:12.502529 * shutting down connection #0 === End of file trace158 === Start of file valgrind158 ==211486== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind158 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 169 in state 4 Runner 2 (id 185908) running test 167 in state 4 Runner 3 (id 185910) running test 162 in state 4 Runner 4 (id 185912) running test 164 in state 4 Runner 5 (id 185914) running test 168 in state 4 Runner 6 (id 185916) running test 163 in state 4 Runner 7 (id 185918) running test 166 in state 4 Runner 8 (id 185920) running test 165 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 169 in state 4 Runner 2 (id 185908) running test 167 in state 4 Runner 3 (id 185910) running test 162 in state 4 Runner 4 (id 185912) running test 164 in state 4 Runner 5 (id 185914) running test 168 in state 4 Runner 6 (id 185916) running test 163 in state 4 Runner 7 (id 185918) running test 166 in state 4 Runner 8 (id 185920) running test 165 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 169 in state 4 Runner 2 (id 185908) running test 167 in state 4 Runner 3 (id 185910) running test 162 in state 4 Runner 4 (id 185912) running test 164 in state 4 Runner 5 (id 185914) running test 168 in state 4 Runner 6 (id 185916) running test 163 in state 4 Runner 7 (id 185918) running test 166 in state 4 Runner 8 (id 185920) running test 165 in state 4 test 0162...[HTTP GET asking for --proxy-ntlm when some other authentication is required] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind162 ../src/curl -q --output log/3/curl162.out --include --trace-ascii log/3/trace162 --trace-time http://127.0.0.1:46853/162 --proxy http://127.0.0.1:46853 --proxy-user foo:bar --proxy-ntlm --fail > log/3/stdout162 2> log/3/stderr162 valgrind ERROR ==212020== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 162 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind162 ../src/curl -q --output log/3/curl162.out --include --trace-ascii log/3/trace162 --trace-time http://127.0.0.1:46853/162 --proxy http://127.0.0.1:46853 --proxy-user foo:bar --proxy-ntlm --fail > log/3/stdout162 2> log/3/stderr162 === End of file commands.log === Start of file curl162.out HTTP/1.0 407 BAD BOY Proxy-Authenticate: Basic realm="Squid proxy-caching web server" Server: swsclose Content-Type: text/html === End of file curl162.out === Start of file http_server.log 00:51:55.635568 ====> Client connect 00:51:55.635751 accept_connection 3 returned 4 00:51:55.635829 accept_connection 3 returned 0 00:51:55.643554 Read 93 bytes 00:51:55.643722 Process 93 bytes request 00:51:55.643818 Got request: GET /verifiedserver HTTP/1.1 00:51:55.643887 Are-we-friendly question received 00:51:55.644024 Wrote request (93 bytes) input to log/3/server.input 00:51:55.644135 Identifying ourselves as friends 00:51:55.644314 Response sent (57 bytes) and written to log/3/server.response 00:51:55.644381 special request received, no persistency 00:51:55.644441 ====> Client disconnect 0 00:52:43.714073 ====> Client connect 00:52:43.714229 accept_connection 3 returned 4 00:52:43.714309 accept_connection 3 returned 0 00:52:44.956399 Read 206 bytes 00:52:44.956616 Process 206 bytes request 00:52:44.956712 Got request: GET http://127.0.0.1:46853/162 HTTP/1.1 00:52:44.956784 Serve test number 162 part 0 00:52:44.956966 - request found to be complete (162) 00:52:44.957141 Received NTLM type-1, sending back data 1001 00:52:44.957295 Wrote request (206 bytes) input to log/3/server.input 00:52:44.957415 Send response test162 section 00:52:44.957654 connection close instruction "swsclose" found in response 00:52:44.957860 Response sent (329 bytes) and written to log/3/server.response 00:52:44.957929 instructed to close connection after server-reply 00:52:44.957990 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 57302 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 162 === End of file server.cmd === Start of file server.input GET http://127.0.0.1:46853/162 HTTP/1.1 Host: 127.0.0.1:46853 Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.0 407 BAD BOY Proxy-Authenticate: Basic realm="Squid proxy-caching web server" Server: swsclose Content-Type: text/html Even though it's the response code that triggers authentication, we're using NTLM and the server isn't, so we should fail. We know the server isn't because there's no Proxy-Authorization: NTLM header === End of file server.response === Start of file stderr162 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind164 ../src/curl -q --output log/4/curl164.out --include --trace-ascii log/4/trace164 --trace-time http://127.0.0.1:42621/want/164 -r 0-10,12-15 > log/4/stdout164 2> log/4/stderr164 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind163 ../src/curl -q --output log/6/curl163.out --include --trace-ascii log/6/trace163 --trace-time http://127.0.0.1:38277/we/want/163 -F "name= log/6/stdout163 2> log/6/stderr163 :--:-- 0 curl: (22) The requested URL returned error: 407 === End of file stderr162 === Start of file trace162 00:52:43.776556 * Trying 127.0.0.1:46853... 00:52:44.670513 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 55972 00:52:44.801642 * using HTTP/1.x 00:52:44.978814 * Proxy auth using NTLM with user 'foo' 00:52:45.378687 => Send header, 206 bytes (0xce) 0000: GET http://127.0.0.1:46853/162 HTTP/1.1 0029: Host: 127.0.0.1:46853 0040: Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAA 0080: AAAAA= 0088: User-Agent: curl/8.17.0 00a1: Accept: */* 00ae: Proxy-Connection: Keep-Alive 00cc: 00:52:45.718746 * HTTP 1.0, assume close after body 00:52:45.740302 <= Recv header, 21 bytes (0x15) 0000: HTTP/1.0 407 BAD BOY. 00:52:46.131075 <= Recv header, 65 bytes (0x41) 0000: Proxy-Authenticate: Basic realm="Squid proxy-caching web server" 0040: . 00:52:46.236470 <= Recv header, 17 bytes (0x11) 0000: Server: swsclose. 00:52:46.273997 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:52:46.378538 * The requested URL returned error: 407 00:52:46.395688 <= Recv header, 1 bytes (0x1) 0000: . 00:52:46.753182 * closing connection #0 === End of file trace162 === Start of file valgrind162 ==212020== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind162 test 0164...[HTTP range with multiple ranges] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind164 ../src/curl -q --output log/4/curl164.out --include --trace-ascii log/4/trace164 --trace-time http://127.0.0.1:42621/want/164 -r 0-10,12-15 > log/4/stdout164 2> log/4/stderr164 valgrind ERROR ==212375== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 164 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind164 ../src/curl -q --output log/4/curl164.out --include --trace-ascii log/4/trace164 --trace-time http://127.0.0.1:42621/want/164 -r 0-10,12-15 > log/4/stdout164 2> log/4/stderr164 === End of file commands.log === Start of file curl164.out HTTP/1.1 206 Partial Content swsclose Date: Sat, 24 Apr 2004 09:24:49 GMT Server: Apache/1.3.29 (Unix) mod_throttle/3.1.2 PHP/4.3.4 mod_fastcgi/2.4.0 Last-Modified: Tue, 23 Mar 2004 08:23:14 GMT ETag: "53814a-ec5-405ff3f2" Accept-Ranges: bytes Content-Length: 187 Content-Type: multipart/byteranges; boundary=408a326132c --408a326132c Content-type: text/html Content-range: bytes 0-10/3781 {html} {hea --408a326132c Content-type: text/html Content-range: bytes 12-15/3781 } {t --408a326132c-- === End of file curl164.out === Start of file http_server.log 00:52:02.298002 ====> Client connect 00:52:02.298169 accept_connection 3 returned 4 00:52:02.298245 accept_connection 3 returned 0 00:52:02.305269 Read 93 bytes 00:52:02.305424 Process 93 bytes request 00:52:02.305532 Got request: GET /verifiedserver HTTP/1.1 00:52:02.305607 Are-we-friendly question received 00:52:02.305751 Wrote request (93 bytes) input to log/4/server.input 00:52:02.305857 Identifying ourselves as friends 00:52:02.306031 Response sent (57 bytes) and written to log/4/server.response 00:52:02.306102 special request received, no persistency 00:52:02.306167 ====> Client disconnect 0 00:52:49.349555 ====> Client connect 00:52:49.349700 accept_connection 3 returned 4 00:52:49.349780 accept_connection 3 returned 0 00:52:50.334246 Read 112 bytes 00:52:50.334438 Process 112 bytes request 00:52:50.334542 Got request: GET /want/164 HTTP/1.1 00:52:50.334618 Serve test number 164 part 0 00:52:50.334800 - request found to be complete (164) 00:52:50.335046 Wrote request (112 bytes) input to log/4/server.input 00:52:50.335149 Send response test164 section 00:52:50.335452 connection close instruction "swsclose" found in response 00:52:50.335792 Response sent (518 bytes) and written to log/4/server.response 00:52:50.335859 instructed to close connection after server-reply 00:52:50.335920 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 56584 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 164 === End of file server.cmd === Start of file server.input GET /want/164 HTTP/1.1 Host: 127.0.0.1:42621 Range: bytes=0-10,12-15 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 206 Partial Content swsclose Date: Sat, 24 Apr 2004 09:24:49 GMT Server: Apache/1.3.29 (Unix) mod_throttle/3.1.2 PHP/4.3.4 mod_fastcgi/2.4.0 Last-Modified: Tue, 23 Mar 2004 08:23:14 GMT ETag: "53814a-ec5-405ff3f2" Accept-Ranges: bytes Content-Length: 187 Content-Type: multipart/byteranges; boundary=408a326132c --408a326132c Content-type: text/html Content-range: bytes 0-10/3781 {html} {hea --408a326132c Content-type: text/html Content-range: bytes 12-15/3781 } {t --408a326132c-- === End of file server.response === Start of file stderr164 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 187 100 187 0 0 41 0 0:00:04 0:00:04 --:--:-- 58 100 187 100 187 0 0 40 0 0:00:04 0:00:04 --:--:-- 56 === End of file stderr164 === Start of file trace164 00:52:48.426252 * Trying 127.0.0.1:42621... 00:52:49.279726 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 33284 00:52:49.398331 * using HTTP/1.x 00:52:49.753258 => Send header, 112 bytes (0x70) 0000: GET /want/164 HTTP/1.1 0018: Host: 127.0.0.1:42621 002f: Range: bytes=0-10,12-15 0048: User-Agent: curl/8.17.0 0061: Accept: */* 006e: 00:52:50.153330 <= Recv header, 39 bytes (0x27) 0000: HTTP/1.1 206 Partial Content swsclose 00:52:50.487298 <= Recv header, 37 bytes (0x25) 0000: Date: Sat, 24 Apr 2004 09:24:49 GMT 00:52:50.584834 <= Recv header, 77 bytes (0x4d) 0000: Server: Apache/1.3.29 (Unix) mod_throttle/3.1.2 PHP/4.3.4 mod_fa 0040: stcgi/2.4.0 00:52:50.618694 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 23 Mar 2004 08:23:14 GMT 00:52:50.625953 <= Recv header, 29 bytes (0x1d) 0000: ETag: "53814a-ec5-405ff3f2" 00:52:50.632779 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 00:52:50.663574 <= Recv header, 21 bytes (0x15) 0000: Content-Length: 187 00:52:50.708599 <= Recv header, 58 bytes (0x3a) 0000: Content-Type: multipart/byteranges; boundary=408a326132c 00:52:50.788330 <= Recv header, 2 bytes (0x2) 0000: 00:52:50.843681 <= Recv data, 187 bytes (0xbb) 0000: --408a326132c 000f: Content-type: text/html 0028: Content-range: bytes 0-10/3781 0048: 004a: {html}.{hea. 0058: --408a326132c 0067: Content-type: text/html 0080: Content-range: bytes 12-15/3781 00a1: 00a3: }.{t. 00aa: --408a326132c-- 00:52:51.426804 * Connection #0 to host 127.0.0.1:42621 left intact === End of file trace164 === Start of file valgrind164 ==212375== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind164 test 0163...[HTTP multipart formpost with contents from a file] ../libtool --mode=execute /usr/bin/valgrind -CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind165 ../src/curl -q --output log/8/curl165.out --include --trace-ascii log/8/trace165 --trace-time http://www.åäö.se/page/165 -x 127.0.0.1:39461 http://www.große.de/page/165 > log/8/stdout165 2> log/8/stderr165 -tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind163 ../src/curl -q --output log/6/curl163.out --include --trace-ascii log/6/trace163 --trace-time http://127.0.0.1:38277/we/want/163 -F "name= log/6/stdout163 2> log/6/stderr163 valgrind ERROR ==212179== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 163 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind163 ../src/curl -q --output log/6/curl163.out --include --trace-ascii log/6/trace163 --trace-time http://127.0.0.1:38277/we/want/163 -F "name= log/6/stdout163 2> log/6/stderr163 === End of file commands.log === Start of file curl163.out HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 10 blablabla === End of file curl163.out === Start of file field163 contents from a file newlinens? yes please [tab][CR] too === End of file field163 === Start of file http_server.log 00:51:59.105228 ====> Client connect 00:51:59.105400 accept_connection 3 returned 4 00:51:59.105486 accept_connection 3 returned 0 00:51:59.112253 Read 93 bytes 00:51:59.112393 Process 93 bytes request 00:51:59.112488 Got request: GET /verifiedserver HTTP/1.1 00:51:59.112557 Are-we-friendly question received 00:51:59.112687 Wrote request (93 bytes) input to log/6/server.input 00:51:59.112793 Identifying ourselves as friends 00:51:59.112981 Response sent (57 bytes) and written to log/6/server.response 00:51:59.113047 special request received, no persistency 00:51:59.113105 ====> Client disconnect 0 00:52:53.134129 ====> Client connect 00:52:53.134270 accept_connection 3 returned 4 00:52:53.134351 accept_connection 3 returned 0 00:52:54.742385 Read 526 bytes 00:52:54.742604 Process 526 bytes request 00:52:54.742705 Got request: POST /we/want/163 HTTP/1.1 00:52:54.742780 Serve test number 163 part 0 00:52:54.742978 - request found to be complete (163) 00:52:54.743151 Found Content-Length: 322 in the request 00:52:54.743332 Wrote request (526 bytes) input to log/6/server.input 00:52:54.743453 Send response test163 section 00:52:54.743678 connection close instruction "swsclose" found in response 00:52:54.743873 Response sent (116 bytes) and written to log/6/server.response 00:52:54.743946 instructed to close connection after server-reply 00:52:54.744009 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 44214 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 163 === End of file server.cmd === Start of file server.input POST /we/want/163 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* Content-Length: 322 Content-Type: multipart/form-data; boundary=------------------------N9FJ0r9RjJ9hZoRHpoHLhR --------------------------N9FJ0r9RjJ9hZoRHpoHLhR Content-Disposition: form-data; name="name" contents from a file newlinens? yes please [tab][CR] too --------------------------N9FJ0r9RjJ9hZoRHpoHLhR Content-Disposition: form-data; name="tool" curl --------------------------N9FJ0r9RjJ9hZoRHpoHLhR-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 10 blablabla === End of file server.response === Start of file stderr163 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 322 0 0 100 322 0 73 0:00:04 0:00:04 --:--:-- 109 100 332 100 10 100 322 1 60 0:00:10 0:00:05 0:00:05 85 100 332 100 10 100 322 1 58 0:00:10 0:00:05 0:00:05 83 === End of file stderr163 === Start of file trace163 00:52:53.157193 * Trying 127.0.0.1:38277... 00:52:54.109608 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 51352 00:52:54.245617 * using HTTP/1.x 00:52:55.166273 => Send header, 204 bytes (0xcc) 0000: POST /we/want/163 HTTP/1.1 001c: Host: 127.0.0.1:38277 0033: User-Agent: curl/8.17.0 004c: Accept: */* 0059: Content-Length: 322 006e: Content-Type: multipart/form-data; boundary=-------------------- 00ae: ----N9FJ0r9RjJ9hZoRHpoHLhR 00ca: 00:52:55.286823 => Send data, 322 bytes (0x142) 0000: --------------------------N9FJ0r9RjJ9hZoRHpoHLhR 0032: Content-Disposition: form-data; name="name" 005f: 0061: contents.from.a.file..newlinens?.yes please. 0097: [tab][CR] too. 00a7: --------------------------N9FJ0r9RjJ9hZoRHpoHLhR 00d9: Content-Disposition: form-data; name="tool" 0106: 0108: curl 010e: --------------------------N9FJ0r9RjJ9hZoRHpoHLhR-- 00:52:55.395384 * upload completely sent off: 322 bytes 00:52:55.688155 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 00:52:55.995756 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:52:56.096119 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:52:56.137942 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 10. 00:52:56.223192 <= Recv header, 1 bytes (0x1) 0000: . 00:52:56.283563 <= Recv data, 10 bytes (0xa) 0000: blablabla. 00:52:56.794371 * Connection #0 to host 127.0.0.1:38277 left intact === End of file trace163 === Start of file valgrind163 ==212179== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind163 setenv LC_ALL = C.UTF-8 test 0165...[HTTP over proxy with IDN host name] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind165 ../src/curl -q --output log/8/curl165.out --include --trace-ascii log/8/trace165 --trace-time http://www.åäö.se/page/165 -x 127.0.0.1:39461 http://www.große.de/page/165 > log/8/stdout165 2> log/8/stderr165 valgrind ERROR ==212396== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 165 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind165 ../src/curl -q --output log/8/curl165.out --include --trace-ascii log/8/trace165 --trace-time http://www.åäö.se/page/165 -x 127.0.0.1:39461 http://www.große.de/page/165 > log/8/stdout165 2> log/8/stderr165 === End of file commands.log === Start of file curl165.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes === End of file curl165.out === Start of file http_server.log 00:52:01.637141 ====> Client connect 00:52:01.637309 accept_connection 3 returned 4 00:52:01.637379 accept_connection 3 returned 0 00:52:01.644348 Read 93 bytes 00:52:01.644467 Process 93 bytes request 00:52:01.644590 Got request: GET /verifiedserver HTTP/1.1 00:52:01.644655 Are-we-friendly question received 00:52:01.644774 Wrote request (93 bytes) input to log/8/server.input 00:52:01.644873 Identifying ourselves as friends 00:52:01.645053 Response sent (57 bytes) and written to log/8/serveCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind166 ../src/curl -q --output log/7/curl166.out --include --trace-ascii log/7/trace166 --trace-time http://127.0.0.1:34897/we/want/166 -F "name=@log/7/fie ld 166" > log/7/stdout166 2> log/7/stderr166 r.response 00:52:01.645116 special request received, no persistency 00:52:01.645170 ====> Client disconnect 0 00:52:56.780554 ====> Client connect 00:52:56.780705 accept_connection 3 returned 4 00:52:56.780791 accept_connection 3 returned 0 00:52:57.961602 Read 143 bytes 00:52:57.961794 Process 143 bytes request 00:52:57.961891 Got request: GET http://www.xn--4cab6c.se/page/165 HTTP/1.1 00:52:57.961966 Serve test number 165 part 0 00:52:57.962154 - request found to be complete (165) 00:52:57.962416 Wrote request (143 bytes) input to log/8/server.input 00:52:57.962529 Send response test165 section 00:52:57.962749 connection close instruction "swsclose" found in response 00:52:57.962956 Response sent (136 bytes) and written to log/8/server.response 00:52:57.963024 instructed to close connection after server-reply 00:52:57.963086 ====> Client disconnect 0 00:53:00.841241 ====> Client connect 00:53:00.841373 accept_connection 3 returned 4 00:53:00.841455 accept_connection 3 returned 0 00:53:00.905647 Read 147 bytes 00:53:00.905838 Process 147 bytes request 00:53:00.905930 Got request: GET http://www.xn--groe-xna.de/page/165 HTTP/1.1 00:53:00.905999 Serve test number 165 part 0 00:53:00.906168 - request found to be complete (165) 00:53:00.906377 Wrote request (147 bytes) input to log/8/server.input 00:53:00.906476 Send response test165 section 00:53:00.906719 connection close instruction "swsclose" found in response 00:53:00.906912 Response sent (136 bytes) and written to log/8/server.response 00:53:00.906978 instructed to close connection after server-reply 00:53:00.907039 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 59990 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 165 === End of file server.cmd === Start of file server.input GET http://www.xn--4cab6c.se/page/165 HTTP/1.1 Host: www.xn--4cab6c.se User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://www.xn--groe-xna.de/page/165 HTTP/1.1 Host: www.xn--groe-xna.de User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes === End of file server.response === Start of file stderr165 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:09 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:10 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:10 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:11 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:12 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:12 --:--:-- 0 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 === End of file stderr165 === Start of file stdout165 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes === End of file stdout165 === Start of file trace165 00:52:56.829869 * Trying 127.0.0.1:39461... 00:52:57.751300 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 41472 00:52:57.884311 * using HTTP/1.x 00:52:58.382885 => Send header, 143 bytes (0x8f) 0000: GET http://www.xn--4cab6c.se/page/165 HTTP/1.1 0030: Host: www.xn--4cab6c.se 0049: User-Agent: curl/8.17.0 0062: Accept: */* 006f: Proxy-Connection: Keep-Alive 008d: 00:52:58.739446 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:52:59.056407 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:52:59.159227 <= Recv header, 35 bytes (0x23) 0000: Server: test-server/fake swsclose 00:52:59.227405 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:52:59.235406 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 00:52:59.272694 * no chunk, no close, no size. Assume close to signal end 00:52:59.332965 <= Recv header, 2 bytes (0x2) 0000: 00:52:59.440253 * abort upload 00:52:59.478549 <= Recv data, 0 bytes (0x0) 00:52:59.997447 * shutting down connection #0 00:53:01.156133 * Hostname 127.0.0.1 was found in DNS cache 00:53:01.212931 * Trying 127.0.0.1:39461... 00:53:01.253014 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 41488 00:53:01.259487 * using HTTP/1.x 00:53:01.290320 => Send header, 147 bytes (0x93) 0000: GET http://www.xn--groe-xna.de/page/165 HTTP/1.1 0032: Host: www.xn--groe-xna.de 004d: User-Agent: curl/8.17.0 0066: Accept: */* 0073: Proxy-Connection: Keep-Alive 0091: 00:53:01.323813 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:53:01.334912 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:53:01.343956 <= Recv header, 35 bytes (0x23) 0000: Server: test-server/fake swsclose 00:53:01.352824 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:53:01.357420 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 00:53:01.363818 * no chunk, no close, no size. Assume close to signal end 00:53:01.368049 <= Recv header, 2 bytes (0x2) 0000: 00:53:01.379992 * abort upload 00:53:01.383282 <= Recv data, 0 bytes (0x0) 00:53:01.428894 * shutting down connection #1 === End of file trace165 === Start of file valgrind165 ==212396== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind165 test 0166...[HTTP formpost a file with spaces in name] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind166 ../src/curl -q --output log/7/curl166.out --include --trace-ascii log/7/trace166 --trace-time http://127.0.0.1:34897/we/want/166 -F "name=@log/7/fie ld 166" > log/7/stdout166 2> log/7/stderr166 valgrind ERROR ==212647== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 166 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind166 ../src/curl -q --output log/7/curl166.out --include --trace-ascii log/7/trace166 --trace-time http://127.0.0.1:34897/we/want/166 -F "name=@log/7/fie ld 166" > log/7/stdout166 2> log/7/stderr166 === End of file commands.log === Start of file curl166.out HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 10 blablabla === End of file curl166.out === Start of file fie ld 166 data inside the file === End of file fie ld 166 === Start of file http_server.log 00:52:06.127808 ====> Client connect 00:52:06.127986 accept_connection 3 returned 4 00:52:06.128065 accept_connection 3 returned 0 00:52:06.134702 Read 93 bytes 00:52:06.134800 Process 93 bytes request 00:52:06.134889 Got requestCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind167 ../src/curl -q --output log/2/curl167.out --include --trace-ascii log/2/trace167 --trace-time http://data.from.server.requiring.digest.hohoho.com/167 --proxy http://127.0.0.1:39863 --proxy-user foo:bar --digest --user digest:a-lot > log/2/stdout167 2> log/2/stderr167 : GET /verifiedserver HTTP/1.1 00:52:06.134954 Are-we-friendly question received 00:52:06.135072 Wrote request (93 bytes) input to log/7/server.input 00:52:06.135167 Identifying ourselves as friends 00:52:06.135367 Response sent (57 bytes) and written to log/7/server.response 00:52:06.135437 special request received, no persistency 00:52:06.135501 ====> Client disconnect 0 00:52:59.143575 ====> Client connect 00:52:59.143716 accept_connection 3 returned 4 00:52:59.143796 accept_connection 3 returned 0 00:53:00.706012 Read 439 bytes 00:53:00.706223 Process 439 bytes request 00:53:00.706324 Got request: POST /we/want/166 HTTP/1.1 00:53:00.706400 Serve test number 166 part 0 00:53:00.706597 - request found to be complete (166) 00:53:00.706760 Found Content-Length: 235 in the request 00:53:00.706995 Wrote request (439 bytes) input to log/7/server.input 00:53:00.707109 Send response test166 section 00:53:00.707331 connection close instruction "swsclose" found in response 00:53:00.707536 Response sent (116 bytes) and written to log/7/server.response 00:53:00.707607 instructed to close connection after server-reply 00:53:00.707667 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 51286 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 166 === End of file server.cmd === Start of file server.input POST /we/want/166 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* Content-Length: 235 Content-Type: multipart/form-data; boundary=------------------------qnoyuQvMkaJH7Ho67abUF7 --------------------------qnoyuQvMkaJH7Ho67abUF7 Content-Disposition: form-data; name="name"; filename="fie ld 166" Content-Type: application/octet-stream data inside the file --------------------------qnoyuQvMkaJH7Ho67abUF7-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 10 blablabla === End of file server.response === Start of file stderr166 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 235 0 0 100 235 0 57 0:00:04 0:00:04 --:--:-- 83 100 245 100 10 100 235 1 46 0:00:10 0:00:05 0:00:05 64 100 245 100 10 100 235 1 45 0:00:10 0:00:05 0:00:05 62 === End of file stderr166 === Start of file trace166 00:52:59.204957 * Trying 127.0.0.1:34897... 00:53:00.099701 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 54458 00:53:00.223062 * using HTTP/1.x 00:53:01.127992 => Send header, 204 bytes (0xcc) 0000: POST /we/want/166 HTTP/1.1 001c: Host: 127.0.0.1:34897 0033: User-Agent: curl/8.17.0 004c: Accept: */* 0059: Content-Length: 235 006e: Content-Type: multipart/form-data; boundary=-------------------- 00ae: ----qnoyuQvMkaJH7Ho67abUF7 00ca: 00:53:01.243203 => Send data, 235 bytes (0xeb) 0000: --------------------------qnoyuQvMkaJH7Ho67abUF7 0032: Content-Disposition: form-data; name="name"; filename="fie ld 16 0072: 6" 0076: Content-Type: application/octet-stream 009e: 00a0: data inside the file. 00b7: --------------------------qnoyuQvMkaJH7Ho67abUF7-- 00:53:01.342391 * upload completely sent off: 235 bytes 00:53:01.631353 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 00:53:01.957415 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:53:02.074748 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:53:02.121473 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 10. 00:53:02.198525 <= Recv header, 1 bytes (0x1) 0000: . 00:53:02.258670 <= Recv data, 10 bytes (0xa) 0000: blablabla. 00:53:02.770612 * Connection #0 to host 127.0.0.1:34897 left intact === End of file trace166 === Start of file valgrind166 ==212647== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind166 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 169 in state 4 Runner 2 (id 185908) running test 167 in state 4 Runner 3 (id 185910) running test 170 in state 4 Runner 4 (id 185912) running test 171 in state 4 Runner 5 (id 185914) running test 168 in state 4 Runner 6 (id 185916) running test 172 in state 4 Runner 7 (id 185918) running test 174 in state 4 Runner 8 (id 185920) running test 173 in state 4 test 0167...[HTTP with proxy-requiring-Basic to site-requiring-Digest] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind167 ../src/curl -q --output log/2/curl167.out --include --trace-ascii log/2/trace167 --trace-time http://data.from.server.requiring.digest.hohoho.com/167 --proxy http://127.0.0.1:39863 --proxy-user foo:bar --digest --user digest:a-lot > log/2/stdout167 2> log/2/stderr167 valgrind ERROR ==212891== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 167 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind167 ../src/curl -q --output log/2/curl167.out --include --trace-ascii log/2/trace167 --trace-time http://data.from.server.requiring.digest.hohoho.com/167 --proxy http://127.0.0.1:39863 --proxy-user foo:bar --digest --user digest:a-lot > log/2/stdout167 2> log/2/stderr167 === End of file commands.log === Start of file curl167.out HTTP/1.1 401 Authorization Required swsclose WWW-Authenticate: Digest realm="weirdorealm", nonce="12345" HTTP/1.1 200 OK swsclose Server: no Content-Length: 15 Nice auth sir === End of file curl167.out === Start of file http_server.log 00:52:16.799150 ====> Client connect 00:52:16.799306 accept_connection 3 returned 4 00:52:16.799382 accept_connection 3 returned 0 00:52:16.805793 Read 93 bytes 00:52:16.805873 Process 93 bytes request 00:52:16.805963 Got request: GET /verifiedserver HTTP/1.1 00:52:16.806028 Are-we-friendly question received 00:52:16.806140 Wrote request (93 bytes) input to log/2/server.input 00:52:16.806226 Identifying ourselves as friends 00:52:16.806402 Response sent (57 bytes) and written to log/2/server.response 00:52:16.806466 special request received, no persistency 00:52:16.806524 ====> Client disconnect 0 00:53:04.764205 ====> Client connect 00:53:04.764357 accept_connection 3 returned 4 00:53:04.764453 accept_connection 3 returned 0 00:53:05.948905 Read 233 bytes 00:53:05.949118 Process 233 bytes request 00:53:05.949225 Got request: GET http://data.from.server.requiring.digest.hohoho.com/167 HTTP/1.1 00:53:05.949306 Serve test number 167 part 0 00:53:05.949542 - request found to be complete (167) 00:53:05.949915 Wrote request (233 bytes) input to log/2/server.input 00:53:05.950036 Send response test167 section 00:53:05.950308 connection close instruction "swsclose" found in response 00:53:05.950479 Response sent (109 bytes) and written to log/2/server.response 00:53:05.950555 instructed to close connection after server-reply 00:53:05.950626 ====> Client disconnect 0 00:53:08.310506 ====> Client connect 00:53:08.310643 accept_connection 3 returned 4 00:53:08.310726 aCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind168 ../src/curl -q --output log/5/curl168.out --include --trace-ascii log/5/trace168 --trace-time http://data.from.server.requiring.digest.hohoho.com/168 --proxy http://127.0.0.1:46263 --proxy-user foo:bar --proxy-digest --digest --user digest:a-lot > log/5/stdout168 2> log/5/stderr168 ccept_connection 3 returned 0 00:53:14.927969 Read 367 bytes 00:53:14.928180 Process 367 bytes request 00:53:14.928279 Got request: GET http://data.from.server.requiring.digest.hohoho.com/167 HTTP/1.1 00:53:14.928351 Serve test number 167 part 0 00:53:14.928565 - request found to be complete (167) 00:53:14.928760 Received Digest request, sending back data 1000 00:53:14.928864 Wrote request (367 bytes) input to log/2/server.input 00:53:14.928953 Send response test167 section 00:53:14.929198 connection close instruction "swsclose" found in response 00:53:14.929346 Response sent (75 bytes) and written to log/2/server.response 00:53:14.929417 instructed to close connection after server-reply 00:53:14.929485 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 57784 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 167 === End of file server.cmd === Start of file server.input GET http://data.from.server.requiring.digest.hohoho.com/167 HTTP/1.1 Host: data.from.server.requiring.digest.hohoho.com Proxy-Authorization: Basic Zm9vOmJhcg== User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://data.from.server.requiring.digest.hohoho.com/167 HTTP/1.1 Host: data.from.server.requiring.digest.hohoho.com Proxy-Authorization: Basic Zm9vOmJhcg== Authorization: Digest username="digest", realm="weirdorealm", nonce="12345", uri="/167", response="304c55b19dbcb9c7e7a3354abd11ba1b" User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 401 Authorization Required swsclose WWW-Authenticate: Digest realm="weirdorealm", nonce="12345" HTTP/1.1 200 OK swsclose Server: no Content-Length: 15 Nice auth sir === End of file server.response === Start of file stderr167 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:12 --:--:-- 0 100 15 100 15 0 0 1 0 0:00:15 0:00:13 0:00:02 2 100 15 100 15 0 0 1 0 0:00:15 0:00:13 0:00:02 2 === End of file stderr167 === Start of file trace167 00:53:03.828178 * Trying 127.0.0.1:39863... 00:53:04.727195 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 33006 00:53:04.849906 * using HTTP/1.x 00:53:04.981044 * Proxy auth using Basic with user 'foo' 00:53:05.013816 * Server auth using Digest with user 'digest' 00:53:05.374192 => Send header, 233 bytes (0xe9) 0000: GET http://data.from.server.requiring.digest.hohoho.com/167 HTTP 0040: /1.1 0046: Host: data.from.server.requiring.digest.hohoho.com 007a: Proxy-Authorization: Basic Zm9vOmJhcg== 00a3: User-Agent: curl/8.17.0 00bc: Accept: */* 00c9: Proxy-Connection: Keep-Alive 00e7: 00:53:05.779247 <= Recv header, 46 bytes (0x2e) 0000: HTTP/1.1 401 Authorization Required swsclose 00:53:06.286243 <= Recv header, 61 bytes (0x3d) 0000: WWW-Authenticate: Digest realm="weirdorealm", nonce="12345" 00:53:06.410329 * no chunk, no close, no size. Assume close to signal end 00:53:06.507306 <= Recv header, 2 bytes (0x2) 0000: 00:53:06.749642 * Request completely sent off 00:53:07.010494 * shutting down connection #0 00:53:07.484225 * Issue another request to this URL: 'http://data.from.server.requiring.digest.hohoho.com/167' 00:53:07.648408 * Hostname 127.0.0.1 was found in DNS cache 00:53:07.687895 * Trying 127.0.0.1:39863... 00:53:07.727176 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 33016 00:53:07.733800 * using HTTP/1.x 00:53:07.750228 * Proxy auth using Basic with user 'foo' 00:53:14.282785 * Server auth using Digest with user 'digest' 00:53:14.314939 => Send header, 367 bytes (0x16f) 0000: GET http://data.from.server.requiring.digest.hohoho.com/167 HTTP 0040: /1.1 0046: Host: data.from.server.requiring.digest.hohoho.com 007a: Proxy-Authorization: Basic Zm9vOmJhcg== 00a3: Authorization: Digest username="digest", realm="weirdorealm", no 00e3: nce="12345", uri="/167", response="304c55b19dbcb9c7e7a3354abd11b 0123: a1b" 0129: User-Agent: curl/8.17.0 0142: Accept: */* 014f: Proxy-Connection: Keep-Alive 016d: 00:53:14.391995 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 200 OK swsclose 00:53:14.415092 <= Recv header, 12 bytes (0xc) 0000: Server: no 00:53:14.454943 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 15 00:53:14.487055 <= Recv header, 2 bytes (0x2) 0000: 00:53:14.512234 <= Recv data, 15 bytes (0xf) 0000: Nice auth sir!. 00:53:14.772991 * Connection #1 to host 127.0.0.1:39863 left intact === End of file trace167 === Start of file valgrind167 ==212891== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind167 test 0168...[HTTP with proxy-requiring-Digest to site-requiring-Digest] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind168 ../src/curl -q --output log/5/curl168.out --include --trace-ascii log/5/trace168 --trace-time http://data.from.server.requiring.digest.hohoho.com/168 --proxy http://127.0.0.1:46263 --proxy-user foo:bar --proxy-digest --digest --user digest:a-lot > log/5/stdout168 2> log/5/stderr168 valgrind ERROR ==212902== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 168 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind168 ../src/curl -q --output log/5/curl168.out --include --trace-ascii log/5/trace168 --trace-time http://data.from.server.requiring.digest.hohoho.com/168 --proxy http://127.0.0.1:46263 --proxy-user foo:bar --proxy-digest --digest --user digest:a-lot > log/5/stdout168 2> log/5/stderr168 === End of file commands.log === Start of file curl168.out HTTP/1.1 407 Authorization Required to proxy me my dear swsclose Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345" HTTP/1.1 401 Authorization to the remote host as well swsbounce swsclose WWW-Authenticate: Digest realm="realmweirdo", nonce="123456" HTTP/1.1 200 OK swsclose Server: no Content-Length: 15 Nice auth sir === End of file curl168.out === Start of file http_server.log 00:52:15.864166 ====> Client connect 00:52:15.864333 accept_connection 3 returned 4 00:52:15.864407 accept_connection 3 returned 0 00:52:15.871450 Read 93 bytes 00:52:15.871533 Process 93 bytes request 00:52:15.871624 Got request: GET /verifiedserver HTTP/1.1 00:52:15.871689 Are-we-friendly question received 00:52:15.871800 Wrote request (93 bytes) input to log/5/server.input 00:52:15.871888 Identifying ourselves as friends 00:52:15.872042 Response sent (57 bytes) and written to log/5/server.response 00:52:15.872105 special request received, no persistency 00:52:15.872162 ====> Client disconnect 0 00:53:04.883034 ====> Client connect 00:53:04.883182 accept_connection 3 returned 4 00:53:04.883266 accept_connection 3 returned 0 00:53:06.115747 Read 192 bytes 00:53:06.115928 Process 192 bytes request 00:53:06.116021 Got request: GET http://data.from.server.requiring.digest.hohoho.com/168 HTTP/1.1 00:53:06.116091 Serve test number 168 part 0 00:53:06.116407 - request found to be complete (168) 00:53:06.116703 Wrote request (192 bytes) input to log/5/server.input 00:53:06.116815 Send response test168 section 00:53:06.117159 connection close instruction "swsclose" found in response 00:53:06.117337 Response sent (164 bytes) and written to log/5/server.response 00:53:06.117411 instructed to close connection after server-reply 00:53:06.117473 ====> Client disconnect 0 00:53:08.532212 ====> Client connect 00:53:08.532361 accept_connection 3 returned 4 00:53:08.532446 accept_connection 3 returned 0 00:53:14.977483 Read 329 bytes 00:53:14.977713 Process 329 bytes request 00:53:15.000435 Got request: GET http://data.from.server.requiring.digest.hohoho.com/168 HTTP/1.1 00:53:15.000520 Serve test number 168 part 0 00:53:15.000729 - request found to be complete (168) 00:53:15.001046 Received Digest request, sending back data 1000 00:53:15.001163 Wrote request (329 bytes) input to log/5/server.input 00:53:15.001249 Send response test168 section 00:53:15.001481 connection close instruction "swsclose" found in response 00:53:15.001556 enable "swsbounce" in the next request 00:53:15.001756 Response sent (170 bytes) and written to log/5/server.response 00:53:15.001819 instructed to close connection after server-reply 00:53:15.001876 ====> Client disconnect 0 00:53:15.229440 ====> Client connect 00:53:15.229582 accept_connection 3 returned 4 00:53:15.229662 accept_connection 3 returned 0 00:53:15.302535 Read 464 bytes 00:53:15.302730 Process 464 bytes request 00:53:15.302828 Got request: GET http://data.from.server.requiring.digest.hohoho.com/168 HTTP/1.1 00:53:15.302900 Serve test number 168 part 0 00:53:15.303128 - request found to be complete (168) 00:53:15.303339 Received Digest request, sending back data 1000 00:53:15.303440 Wrote request (464 bytes) input to log/5/server.input 00:53:15.303572 BOUNCE part number to 1001 00:53:15.303657 Send response test168 section 00:53:15.303945 connection close instruction "swsclose" found in response 00:53:15.304083 Response sent (75 bytes) and written to log/5/server.response 00:53:15.304152 instructed to close connection after server-reply 00:53:15.304217 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 59310 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 168 === End of file server.cmd === Start of file server.input GET http://data.from.server.requiring.digest.hohoho.com/168 HTTP/1.1 Host: data.from.server.requiring.digest.hohoho.com User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://data.from.server.requiring.digest.hohoho.com/168 HTTP/1.1 Host: data.from.server.requiring.digest.hohoho.com Proxy-Authorization: Digest username="foo", realm="weirdorealm", nonce="12345", uri="/168", response="fb8608e00ad9239a3dedb14bc8575976" User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://data.from.server.requiring.digest.hohoho.com/168 HTTP/1.1 Host: data.from.server.requiring.digest.hohoho.com Proxy-Authorization: Digest username="foo", realm="weirdorealm", nonce="12345", uri="/168", response="fb8608e00ad9239a3dedb14bc8575976" Authorization: Digest username="digest", realm="realmweirdo", nonce="123456", uri="/168", response="bfecb43898f3db12543650d45493313b" User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 407 Authorization Required to proxy me my dear swsclose Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345" And you should ignore this data. HTTP/1.1 401 Authorization to the remote host as well swsbounce swsclose WWW-Authenticate: Digest realm="realmweirdo", nonce="123456" you should ignore this data too HTTP/1.1 200 OK swsclose Server: no Content-Length: 15 Nice auth sir === End of file server.response === Start of file stderr168 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:12 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:12 --:--:-- 0 100 15 100 15 0 0 1 0 0:00:15 0:00:13 0:00:02 1 === End of file stderr168 === Start of file trace168 00:53:04.944916 * Trying 127.0.0.1:46263... 00:53:05.863218 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 42734 00:53:05.987125 * using HTTP/1.x 00:53:06.086622 * Proxy auth using Digest with user 'foo' 00:53:06.145127 * Server auth using Digest with user 'digest' 00:53:06.546994 => Send header, 192 bytes (0xc0) 0000: GET http://data.from.server.requiring.digest.hohoho.com/168 HTTP 0040: /1.1 0046: Host: data.from.server.requiring.digest.hohoho.com 007a: User-Agent: curl/8.17.0 0093: Accept: */* 00a0: Proxy-Connection: Keep-Alive 00be: 00:53:06.924182 <= Recv header, 66 bytes (0x42) 0000: HTTP/1.1 407 Authorization Required to proxy me my dear swsclose 00:53:07.424099 <= Recv header, 63 bytes (0x3f) 0000: Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345" 00:53:07.541274 * no chunk, no close, no size. Assume close to signal end 00:53:07.649645 <= Recv header, 2 bytes (0x2) 0000: 00:53:07.914399 * Request completely sent off 00:53:08.165713 * shutting down connection #0 00:53:08.691365 * Issue another request to this URL: 'http://data.from.server.requiring.digest.hohoho.com/168' 00:53:08.868578 * Hostname 127.0.0.1 was found in DNS cache 00:53:08.909194 * Trying 127.0.0.1:46263... 00:53:08.947371 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 42750 00:53:08.953823 * using HTTP/1.x 00:53:15.325273 * Proxy auth using Digest with user 'foo' 00:53:15.329419 * Server auth using Digest with user 'digest' 00:53:15.362822 => Send header, 329 bytes (0x149) 0000: GET http://data.from.server.requiring.digest.hohoho.com/168 HTTP 0040: /1.1 0046: Host: data.from.server.requiring.digest.hohoho.com 007a: Proxy-Authorization: Digest username="foo", realm="weirdorealm", 00ba: nonce="12345", uri="/168", response="fb8608e00ad9239a3dedb14bc8 00fa: 575976" 0103: User-Agent: curl/8.17.0 011c: Accept: */* 0129: Proxy-Connection: Keep-Alive 0147: 00:53:15.439797 <= Recv header, 74 bytes (0x4a) 0000: HTTP/1.1 401 Authorization to the remote host as well swsbounce 0040: swsclose 00:53:15.477944 <= Recv header, 62 bytes (0x3e) 0000: WWW-Authenticate: Digest realm="realmweirdo", nonce="123456" 00:53:15.496800 * no chunk, no close, no size. Assume close to signal end 00:53:15.519812 <= Recv header, 2 bytes (0x2) 0000: 00:53:15.541551 * Request completely sent off 00:53:15.554703 * shutting down connection #1 00:53:15.585064 * Issue another request to this URL: 'http://data.from.server.requiring.digest.hohoho.com/168' 00:53:15.606835 *CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind169 ../src/curl -q --output log/1/curl169.out --include --trace-ascii log/1/trace169 --trace-time http://data.from.server.requiring.digest.hohoho.com/169 --proxy http://127.0.0.1:40641 --proxy-user testuser:testpass --proxy-ntlm --digest --user digest:a-lot > log/1/stdout169 2> log/1/stderr169 Hostname 127.0.0.1 was found in DNS cache 00:53:15.611218 * Trying 127.0.0.1:46263... 00:53:15.616841 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 52898 00:53:15.618817 * using HTTP/1.x 00:53:15.648112 * Proxy auth using Digest with user 'foo' 00:53:15.676486 * Server auth using Digest with user 'digest' 00:53:15.687701 => Send header, 464 bytes (0x1d0) 0000: GET http://data.from.server.requiring.digest.hohoho.com/168 HTTP 0040: /1.1 0046: Host: data.from.server.requiring.digest.hohoho.com 007a: Proxy-Authorization: Digest username="foo", realm="weirdorealm", 00ba: nonce="12345", uri="/168", response="fb8608e00ad9239a3dedb14bc8 00fa: 575976" 0103: Authorization: Digest username="digest", realm="realmweirdo", no 0143: nce="123456", uri="/168", response="bfecb43898f3db12543650d45493 0183: 313b" 018a: User-Agent: curl/8.17.0 01a3: Accept: */* 01b0: Proxy-Connection: Keep-Alive 01ce: 00:53:15.744828 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 200 OK swsclose 00:53:15.764071 <= Recv header, 12 bytes (0xc) 0000: Server: no 00:53:15.794277 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 15 00:53:15.818938 <= Recv header, 2 bytes (0x2) 0000: 00:53:15.838010 <= Recv data, 15 bytes (0xf) 0000: Nice auth sir!. 00:53:16.064794 * Connection #2 to host 127.0.0.1:46263 left intact === End of file trace168 === Start of file valgrind168 ==212902== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind168 test 0169...[HTTP with proxy-requiring-NTLM to site-requiring-Digest] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind169 ../src/curl -q --output log/1/curl169.out --include --trace-ascii log/1/trace169 --trace-time http://data.from.server.requiring.digest.hohoho.com/169 --proxy http://127.0.0.1:40641 --proxy-user testuser:testpass --proxy-ntlm --digest --user digest:a-lot > log/1/stdout169 2> log/1/stderr169 valgrind ERROR ==213025== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 169 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind169 ../src/curl -q --output log/1/curl169.out --include --trace-ascii log/1/trace169 --trace-time http://data.from.server.requiring.digest.hohoho.com/169 --proxy http://127.0.0.1:40641 --proxy-user testuser:testpass --proxy-ntlm --digest --user digest:a-lot > log/1/stdout169 2> log/1/stderr169 === End of file commands.log === Start of file curl169.out HTTP/1.1 407 NTLM type-1 received sending back type-2 Server: Microsoft-IIS/5.0 Content-Length: 34 Content-Type: text/html; charset=iso-8859-1 Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== HTTP/1.1 401 You now need to authenticate with the host Server: Microsoft-IIS/5.0 WWW-Authenticate: Digest realm="r e a l m", nonce="abcdef" Content-Length: 46 Content-Type: text/html; charset=iso-8859-1 HTTP/1.1 200 Authorizated fine Content-Length: 27 Welcome to the end station === End of file curl169.out === Start of file http_server.log 00:52:17.563151 ====> Client connect 00:52:17.563338 accept_connection 3 returned 4 00:52:17.563425 accept_connection 3 returned 0 00:52:17.572172 Read 93 bytes 00:52:17.572324 Process 93 bytes request 00:52:17.572429 Got request: GET /verifiedserver HTTP/1.1 00:52:17.572506 Are-we-friendly question received 00:52:17.572649 Wrote request (93 bytes) input to log/1/server.input 00:52:17.572759 Identifying ourselves as friends 00:52:17.572939 Response sent (57 bytes) and written to log/1/server.response 00:52:17.573011 special request received, no persistency 00:52:17.573078 ====> Client disconnect 0 00:53:06.197635 ====> Client connect 00:53:06.197824 accept_connection 3 returned 4 00:53:06.197907 accept_connection 3 returned 0 00:53:07.406229 Read 264 bytes 00:53:07.406421 Process 264 bytes request 00:53:07.406516 Got request: GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP/1.1 00:53:07.406585 Serve test number 169 part 0 00:53:07.406812 - request found to be complete (169) 00:53:07.407150 Received NTLM type-1, sending back data 1001 00:53:07.407302 Wrote request (264 bytes) input to log/1/server.input 00:53:07.407409 Send response test169 section 00:53:07.407847 Response sent (426 bytes) and written to log/1/server.response 00:53:07.407914 => persistent connection request ended, awaits new request 00:53:10.713928 Read 396 bytes 00:53:10.714131 Process 396 bytes request 00:53:10.714228 Got request: GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP/1.1 00:53:10.714295 Serve test number 169 part 0 00:53:10.714525 - request found to be complete (169) 00:53:10.714742 Received NTLM type-3, sending back data 1002 00:53:10.714845 Wrote request (396 bytes) input to log/1/server.input 00:53:10.714934 Send response test169 section 00:53:10.715399 Response sent (257 bytes) and written to log/1/server.response 00:53:10.715468 => persistent connection request ended, awaits new request 00:53:17.461058 Read 325 bytes 00:53:17.461264 Process 325 bytes request 00:53:17.461362 Got request: GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP/1.1 00:53:17.461437 Serve test number 169 part 0 00:53:17.461677 - request found to be complete (169) 00:53:17.461930 Received Digest request, sending back data 1000 00:53:17.462047 Wrote request (325 bytes) input to log/1/server.input 00:53:17.462139 Send response test169 section 00:53:17.462539 Response sent (81 bytes) and written to log/1/server.response 00:53:17.462610 => persistent connection request ended, awaits new request 00:53:18.434485 Connection closed by client 00:53:18.434683 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 57264 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 169 === End of file server.cmd === Start of file server.input GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP/1.1 Host: data.from.server.requiring.digest.hohoho.com Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP/1.1 Host: data.from.server.requiring.digest.hohoho.com Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP/1.1 Host: data.from.server.requiring.digest.hohoho.com Authorization: Digest username="digest", realm="r e a l m", nonce="abcdef", uri="/169", response="89b737a4b6eefde285c093c92e9bd6ea" User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 407 NTLM type-1 received sending back type-2 Server: Microsoft-IIS/5.0 Content-Length: 34 Content-Type: text/html; charset=iso-8859-1 Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAECMD (13312): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind170 ../src/curl -q --output log/3/curl170.out --include --trace-ascii log/3/trace170 --trace-time http://a.galaxy.far.far.away/170 --proxy http://127.0.0.1:46853 --proxy-user foo:bar --proxy-ntlm -F "dummy=value" > log/3/stdout170 2> log/3/stderr170 AEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== This is not the real page either HTTP/1.1 401 You now need to authenticate with the host Server: Microsoft-IIS/5.0 WWW-Authenticate: Digest realm="r e a l m", nonce="abcdef" Content-Length: 46 Content-Type: text/html; charset=iso-8859-1 We have not authenticated with the server yet HTTP/1.1 200 Authorizated fine Content-Length: 27 Welcome to the end station === End of file server.response === Start of file stderr169 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 34 100 34 0 0 6 0 0:00:05 0:00:05 --:--:-- 9 100 34 100 34 0 0 6 0 0:00:05 0:00:05 --:--:-- 8 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:07 --:--:-- 0 100 46 100 46 0 0 6 0 0:00:07 0:00:07 --:--:-- 40 0 0 0 0 0 0 0 0 --:--:-- 0:00:07 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:14 --:--:-- 0 100 27 100 27 0 0 1 0 0:00:27 0:00:14 0:00:13 4 === End of file stderr169 === Start of file trace169 00:53:05.249783 * Trying 127.0.0.1:40641... 00:53:06.128695 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 32986 00:53:06.245077 * using HTTP/1.x 00:53:06.441315 * Proxy auth using NTLM with user 'testuser' 00:53:06.476114 * Server auth using Digest with user 'digest' 00:53:06.826482 => Send header, 264 bytes (0x108) 0000: GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP 0040: /1.1 0046: Host: data.from.server.requiring.digest.hohoho.com 007a: Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAA 00ba: AAAAA= 00c2: User-Agent: curl/8.17.0 00db: Accept: */* 00e8: Proxy-Connection: Keep-Alive 0106: 00:53:07.210182 <= Recv header, 55 bytes (0x37) 0000: HTTP/1.1 407 NTLM type-1 received sending back type-2 00:53:07.577804 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:53:07.686485 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 34 00:53:07.743626 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:53:07.937642 <= Recv header, 243 bytes (0xf3) 0000: Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVD 0040: gyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQ 0080: ASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGU 00c0: AdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== 00:53:08.063330 * Ignoring the response-body 00:53:08.081671 * setting size while ignoring 00:53:08.097787 <= Recv header, 2 bytes (0x2) 0000: 00:53:08.635477 * Connection #0 to host 127.0.0.1:40641 left intact 00:53:08.779853 * Issue another request to this URL: 'http://data.from.server.requiring.digest.hohoho.com/169' 00:53:09.200165 * Reusing existing http: connection with proxy 127.0.0.1 00:53:10.068444 * Proxy auth using NTLM with user 'testuser' 00:53:10.073025 * Server auth using Digest with user 'digest' 00:53:10.100857 => Send header, 396 bytes (0x18c) 0000: GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP 0040: /1.1 0046: Host: data.from.server.requiring.digest.hohoho.com 007a: Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAA 00ba: AAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw 00fa: 47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1 013a: NUQVRJT04= 0146: User-Agent: curl/8.17.0 015f: Accept: */* 016c: Proxy-Connection: Keep-Alive 018a: 00:53:10.176903 <= Recv header, 57 bytes (0x39) 0000: HTTP/1.1 401 You now need to authenticate with the host 00:53:10.188382 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:53:10.301468 <= Recv header, 60 bytes (0x3c) 0000: WWW-Authenticate: Digest realm="r e a l m", nonce="abcdef" 00:53:10.311274 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 46 00:53:10.315858 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:53:10.343869 * Ignoring the response-body 00:53:10.345980 * setting size while ignoring 00:53:10.347635 <= Recv header, 2 bytes (0x2) 0000: 00:53:10.389409 * Connection #0 to host 127.0.0.1:40641 left intact 00:53:10.401273 * Issue another request to this URL: 'http://data.from.server.requiring.digest.hohoho.com/169' 00:53:10.437659 * Reusing existing http: connection with proxy 127.0.0.1 00:53:10.462201 * Proxy auth using NTLM with user 'testuser' 00:53:16.830224 * Server auth using Digest with user 'digest' 00:53:16.842178 => Send header, 325 bytes (0x145) 0000: GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP 0040: /1.1 0046: Host: data.from.server.requiring.digest.hohoho.com 007a: Authorization: Digest username="digest", realm="r e a l m", nonc 00ba: e="abcdef", uri="/169", response="89b737a4b6eefde285c093c92e9bd6 00fa: ea" 00ff: User-Agent: curl/8.17.0 0118: Accept: */* 0125: Proxy-Connection: Keep-Alive 0143: 00:53:16.895470 <= Recv header, 32 bytes (0x20) 0000: HTTP/1.1 200 Authorizated fine 00:53:16.904863 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 27 00:53:16.921456 <= Recv header, 2 bytes (0x2) 0000: 00:53:16.930742 <= Recv data, 27 bytes (0x1b) 0000: Welcome to the end station. 00:53:17.019085 * Connection #0 to host 127.0.0.1:40641 left intact === End of file trace169 === Start of file valgrind169 ==213025== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind169 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 177 in state 4 Runner 2 (id 185908) running test 175 in state 4 Runner 3 (id 185910) running test 170 in state 4 Runner 4 (id 185912) running test 171 in state 4 Runner 5 (id 185914) running test 176 in state 4 Runner 6 (id 185916) running test 172 in state 4 Runner 7 (id 185918) running test 174 in state 4 Runner 8 (id 185920) running test 173 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 177 in state 4 Runner 2 (id 185908) running test 175 in state 4 Runner 3 (id 185910) running test 170 in state 4 Runner 4 (id 185912) running test 171 in state 4 Runner 5 (id 185914) running test 176 in state 4 Runner 6 (id 185916) running test 172 in state 4 Runner 7 (id 185918) running test 174 in state 4 Runner 8 (id 185920) running test 173 in state 4 test 0170...[HTTP POST with --proxy-ntlm and no SSL with no response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind170 ../src/curl -q --output log/3/curl170.out --include --trace-ascii log/3/trace170 --trace-time http://a.galaxy.far.far.away/170 --proxy http://127.0.0.1:46853 --proxy-user foo:bar --proxy-ntlm -F "dummy=value" > log/3/stdout170 2> log/3/stderr170 valgrind ERROR ==213374== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 170 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind170 ../src/curl -q --output log/3/curl170.out --include --trace-ascii log/3/trace170 --trace-time http://a.galaxy.far.far.away/170 --proxy http://127.0.0.1:46853 --proxy-user foo:bar --proxy-ntlm -F "dummy=value" > log/3/stdout170 2> log/3/stderr170 === End of file commands.loCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind172 ../src/curl -q --output log/6/curl172.out --include --trace-ascii log/6/trace172 --trace-time http://127.0.0.1:38277/we/want/172 -b log/6/jar172.txt -b "tool=curl; name=fool" > log/6/stdout172 2> log/6/stderr172 g === Start of file http_server.log 00:52:50.094589 ====> Client connect 00:52:50.094758 accept_connection 3 returned 4 00:52:50.094837 accept_connection 3 returned 0 00:52:50.100778 Read 93 bytes 00:52:50.100891 Process 93 bytes request 00:52:50.100989 Got request: GET /verifiedserver HTTP/1.1 00:52:50.101057 Are-we-friendly question received 00:52:50.101197 Wrote request (93 bytes) input to log/3/server.input 00:52:50.101295 Identifying ourselves as friends 00:52:50.101456 Response sent (57 bytes) and written to log/3/server.response 00:52:50.101524 special request received, no persistency 00:52:50.101582 ====> Client disconnect 0 00:53:44.471736 ====> Client connect 00:53:44.471881 accept_connection 3 returned 4 00:53:44.471961 accept_connection 3 returned 0 00:53:45.717798 Read 238 bytes 00:53:45.717993 Process 238 bytes request 00:53:45.718087 Got request: POST http://a.galaxy.far.far.away/170 HTTP/1.1 00:53:45.718160 Serve test number 170 part 0 00:53:45.718335 - request found to be complete (170) 00:53:45.718482 Found Content-Length: 0 in the request 00:53:45.718603 Received NTLM type-1, sending back data 1001 00:53:45.718744 Wrote request (238 bytes) input to log/3/server.input 00:53:45.718852 Send response test170 section 00:53:45.719072 connection close instruction "swsclose" found in response 00:53:45.719171 Response sent (0 bytes) and written to log/3/server.response 00:53:45.719235 instructed to close connection after server-reply 00:53:45.719293 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 55976 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 170 === End of file server.cmd === Start of file server.input POST http://a.galaxy.far.far.away/170 HTTP/1.1 Host: a.galaxy.far.far.away Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive Content-Length: 0 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 === End of file server.response === Start of file stderr170 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (52) Empty reply from server === End of file stderr170 === Start of file trace170 00:53:44.540982 * Trying 127.0.0.1:46853... 00:53:45.424632 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 56014 00:53:45.555228 * using HTTP/1.x 00:53:45.729574 * Proxy auth using NTLM with user 'foo' 00:53:46.140096 => Send header, 238 bytes (0xee) 0000: POST http://a.galaxy.far.far.away/170 HTTP/1.1 0030: Host: a.galaxy.far.far.away 004d: Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAA 008d: AAAAA= 0095: User-Agent: curl/8.17.0 00ae: Accept: */* 00bb: Proxy-Connection: Keep-Alive 00d9: Content-Length: 0 00ec: 00:53:46.411714 * abort upload 00:53:46.632733 * Empty reply from server 00:53:46.902053 * shutting down connection #0 === End of file trace170 === Start of file valgrind170 ==213374== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind170 test 0172...[HTTP with cookies file and custom added cookie] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind172 ../src/curl -q --output log/6/curl172.out --include --trace-ascii log/6/trace172 --trace-time http://127.0.0.1:38277/we/want/172 -b log/6/jar172.txt -b "tool=curl; name=fool" > log/6/stdout172 2> log/6/stderr172 valgrind ERROR ==213699== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 172 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind172 ../src/curl -q --output log/6/curl172.out --include --trace-ascii log/6/trace172 --trace-time http://127.0.0.1:38277/we/want/172 -b log/6/jar172.txt -b "tool=curl; name=fool" > log/6/stdout172 2> log/6/stderr172 === End of file commands.log === Start of file curl172.out HTTP/1.1 200 OK Content-Length: 4 Connection: close boo === End of file curl172.out === Start of file http_server.log 00:53:01.239547 ====> Client connect 00:53:01.239710 accept_connection 3 returned 4 00:53:01.239788 accept_connection 3 returned 0 00:53:01.247768 Read 93 bytes 00:53:01.247922 Process 93 bytes request 00:53:01.248019 Got request: GET /verifiedserver HTTP/1.1 00:53:01.248092 Are-we-friendly question received 00:53:01.248239 Wrote request (93 bytes) input to log/6/server.input 00:53:01.248354 Identifying ourselves as friends 00:53:01.248554 Response sent (57 bytes) and written to log/6/server.response 00:53:01.248620 special request received, no persistency 00:53:01.248677 ====> Client disconnect 0 00:53:49.142994 ====> Client connect 00:53:49.143138 accept_connection 3 returned 4 00:53:49.143215 accept_connection 3 returned 0 00:53:50.350834 Read 155 bytes 00:53:50.351051 Process 155 bytes request 00:53:50.351143 Got request: GET /we/want/172 HTTP/1.1 00:53:50.351209 Serve test number 172 part 0 00:53:50.351375 - request found to be complete (172) 00:53:50.351620 Wrote request (155 bytes) input to log/6/server.input 00:53:50.351728 Send response test172 section 00:53:50.352019 Response sent (61 bytes) and written to log/6/server.response 00:53:50.352082 => persistent connection request ended, awaits new request 00:53:52.199813 Connection closed by client 00:53:52.200004 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 51368 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file jar172.txt # Netscape HTTP Cookie File # https://curl.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. .127.0.0.1 TRUE /silly/ FALSE 0 ismatch this .127.0.0.1 TRUE / FALSE 0 partmatch present 127.0.0.1 FALSE /we/want/ FALSE 22139150993 nodomain value === End of file jar172.txt === Start of file server.cmd Testnum 172 === End of file server.cmd === Start of file server.input GET /we/want/172 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* Cookie: nodomain=value; partmatch=present; tool=curl; name=fool === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Content-Length: 4 Connection: close boo === End of file server.response === Start of file stderr172 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind171 ../src/curl -q --output log/4/curl171.out --include --trace-ascii log/4/trace171 --trace-time -c log/4/jar171 -x 127.0.0.1:42621 http://z.x.com/171 > log/4/stdout171 2> log/4/stderr171 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind174 ../src/curl -q --output log/7/curl174.out --include --trace-ascii log/7/trace174 --trace-time http://127.0.0.1:34897/174 -u testuser:testpass --anyauth -d "junkelijunk" > log/7/stdout174 2> log/7/stderr174 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 === End of file stderr172 === Start of file trace172 00:53:49.203087 * Trying 127.0.0.1:38277... 00:53:50.107662 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 33470 00:53:50.231563 * using HTTP/1.x 00:53:50.774782 => Send header, 155 bytes (0x9b) 0000: GET /we/want/172 HTTP/1.1 001b: Host: 127.0.0.1:38277 0032: User-Agent: curl/8.17.0 004b: Accept: */* 0058: Cookie: nodomain=value; partmatch=present; tool=curl; name=fool 0099: 00:53:51.134378 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:53:51.477037 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 4 00:53:51.605072 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:53:51.698086 <= Recv header, 2 bytes (0x2) 0000: 00:53:51.754578 <= Recv data, 4 bytes (0x4) 0000: boo. 00:53:51.864438 * we are done reading and this is set to close, stop send 00:53:51.895648 * abort upload 00:53:52.374111 * shutting down connection #0 === End of file trace172 === Start of file valgrind172 ==213699== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind172 test 0171...[HTTP, get cookie with dot prefixed full domain] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind171 ../src/curl -q --output log/4/curl171.out --include --trace-ascii log/4/trace171 --trace-time -c log/4/jar171 -x 127.0.0.1:42621 http://z.x.com/171 > log/4/stdout171 2> log/4/stderr171 valgrind ERROR ==213537== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 171 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind171 ../src/curl -q --output log/4/curl171.out --include --trace-ascii log/4/trace171 --trace-time -c log/4/jar171 -x 127.0.0.1:42621 http://z.x.com/171 > log/4/stdout171 2> log/4/stderr171 === End of file commands.log === Start of file curl171.out HTTP/1.1 200 OK Date: Tue, 25 Sep 2001 19:37:44 GMT Content-Type: text/html Set-Cookie: XToken=xt;Domain=.z.x.com;Path=/ Cache-control: private Content-Length: 62 This server reply is for testing a simple cookie test case... === End of file curl171.out === Start of file http_server.log 00:52:56.447815 ====> Client connect 00:52:56.447996 accept_connection 3 returned 4 00:52:56.448084 accept_connection 3 returned 0 00:52:56.455169 Read 93 bytes 00:52:56.455311 Process 93 bytes request 00:52:56.455402 Got request: GET /verifiedserver HTTP/1.1 00:52:56.455468 Are-we-friendly question received 00:52:56.455600 Wrote request (93 bytes) input to log/4/server.input 00:52:56.455702 Identifying ourselves as friends 00:52:56.455893 Response sent (57 bytes) and written to log/4/server.response 00:52:56.455959 special request received, no persistency 00:52:56.456015 ====> Client disconnect 0 00:53:44.069305 ====> Client connect 00:53:44.069452 accept_connection 3 returned 4 00:53:44.069532 accept_connection 3 returned 0 00:53:45.258315 Read 118 bytes 00:53:45.258525 Process 118 bytes request 00:53:45.258630 Got request: GET http://z.x.com/171 HTTP/1.1 00:53:45.258711 Serve test number 171 part 0 00:53:45.258944 - request found to be complete (171) 00:53:45.259212 Wrote request (118 bytes) input to log/4/server.input 00:53:45.259325 Send response test171 section 00:53:45.259673 Response sent (233 bytes) and written to log/4/server.response 00:53:45.259743 => persistent connection request ended, awaits new request 00:53:54.500294 Connection closed by client 00:53:54.500520 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 49360 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file jar171 # Netscape HTTP Cookie File # https://curl.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. .z.x.com TRUE / FALSE 0 XToken xt === End of file jar171 === Start of file server.cmd Testnum 171 === End of file server.cmd === Start of file server.input GET http://z.x.com/171 HTTP/1.1 Host: z.x.com User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Tue, 25 Sep 2001 19:37:44 GMT Content-Type: text/html Set-Cookie: XToken=xt;Domain=.z.x.com;Path=/ Cache-control: private Content-Length: 62 This server reply is for testing a simple cookie test case... === End of file server.response === Start of file stderr171 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 62 100 62 0 0 11 0 0:00:05 0:00:05 --:--:-- 16 100 62 100 62 0 0 11 0 0:00:05 0:00:05 --:--:-- 16 === End of file stderr171 === Start of file trace171 00:53:43.122025 * Trying 127.0.0.1:42621... 00:53:44.037431 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 53258 00:53:44.158581 * using HTTP/1.x 00:53:44.681578 => Send header, 118 bytes (0x76) 0000: GET http://z.x.com/171 HTTP/1.1 0021: Host: z.x.com 0030: User-Agent: curl/8.17.0 0049: Accept: */* 0056: Proxy-Connection: Keep-Alive 0074: 00:53:45.031541 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:53:45.342864 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 25 Sep 2001 19:37:44 GMT 00:53:45.484808 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:53:45.794615 * Added cookie XToken="xt" for domain z.x.com, path /, expire 0 00:53:45.813255 <= Recv header, 46 bytes (0x2e) 0000: Set-Cookie: XToken=xt;Domain=.z.x.com;Path=/ 00:53:45.830454 <= Recv header, 24 bytes (0x18) 0000: Cache-control: private 00:53:45.855961 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 62 00:53:45.935112 <= Recv header, 2 bytes (0x2) 0000: 00:53:45.991597 <= Recv data, 62 bytes (0x3e) 0000: This server reply is for testing a simple cookie test case.... 00:53:46.548624 * Connection #0 to host 127.0.0.1:42621 left intact === End of file trace171 === Start of file valgrind171 ==213537== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind171 test 0174...[HTTP POST --anyauth to server not requiring any auth at all] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind174 ../src/curl -q --output log/7/curl174.out --include --trace-ascii log/7/trace174 --trace-time http://127.0.0.1:34897/174 -u testuser:testpass --anyauth -d "junkelijunk" > log/7/stdout174 2> log/7/stderr174 valgrind ERROR ==214022== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 174 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-cCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind173 ../src/curl -q --output log/8/curl173.out --include --trace-ascii log/8/trace173 --trace-time http://127.0.0.1:39461/we/want/173 -F field1=contents1 -F "fileupload=@-;filename=/dev/null;type=text/x-null;format=x-curl" log/8/stdout173 2> log/8/stderr173 heck=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind174 ../src/curl -q --output log/7/curl174.out --include --trace-ascii log/7/trace174 --trace-time http://127.0.0.1:34897/174 -u testuser:testpass --anyauth -d "junkelijunk" > log/7/stdout174 2> log/7/stderr174 === End of file commands.log === Start of file curl174.out HTTP/1.1 200 foobar swsclose Server: Microsoft-IIS/6.0 Authentication-Info: Passport1.4 tname=MSPAuth,tname=MSPProf,tname=MSPConsent,tname=MSPSecAuth Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 This is not the real page === End of file curl174.out === Start of file http_server.log 00:53:07.122433 ====> Client connect 00:53:07.122602 accept_connection 3 returned 4 00:53:07.122689 accept_connection 3 returned 0 00:53:07.129416 Read 93 bytes 00:53:07.129506 Process 93 bytes request 00:53:07.129594 Got request: GET /verifiedserver HTTP/1.1 00:53:07.129659 Are-we-friendly question received 00:53:07.129767 Wrote request (93 bytes) input to log/7/server.input 00:53:07.129857 Identifying ourselves as friends 00:53:07.130033 Response sent (57 bytes) and written to log/7/server.response 00:53:07.130094 special request received, no persistency 00:53:07.130149 ====> Client disconnect 0 00:53:54.040374 ====> Client connect 00:53:54.040519 accept_connection 3 returned 4 00:53:54.040612 accept_connection 3 returned 0 00:53:55.248187 Read 163 bytes 00:53:55.248368 Process 163 bytes request 00:53:55.248467 Got request: POST /174 HTTP/1.1 00:53:55.248543 Serve test number 174 part 0 00:53:55.248714 - request found to be complete (174) 00:53:55.248859 Found Content-Length: 11 in the request 00:53:55.249014 Wrote request (163 bytes) input to log/7/server.input 00:53:55.249117 Send response test174 section 00:53:55.249316 connection close instruction "swsclose" found in response 00:53:55.249502 Response sent (246 bytes) and written to log/7/server.response 00:53:55.249567 instructed to close connection after server-reply 00:53:55.249627 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 40744 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 174 === End of file server.cmd === Start of file server.input POST /174 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* Content-Length: 11 Content-Type: application/x-www-form-urlencoded junkelijunk === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 foobar swsclose Server: Microsoft-IIS/6.0 Authentication-Info: Passport1.4 tname=MSPAuth,tname=MSPProf,tname=MSPConsent,tname=MSPSecAuth Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 This is not the real page === End of file server.response === Start of file stderr174 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 11 0 0 100 11 0 2 0:00:05 0:00:03 0:00:02 4 100 37 100 26 100 11 5 2 0:00:05 0:00:04 0:00:01 10 100 37 100 26 100 11 5 2 0:00:05 0:00:05 --:--:-- 10 === End of file stderr174 === Start of file trace174 00:53:54.100312 * Trying 127.0.0.1:34897... 00:53:55.012846 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 52550 00:53:55.136069 * using HTTP/1.x 00:53:55.675558 => Send header, 152 bytes (0x98) 0000: POST /174 HTTP/1.1 0014: Host: 127.0.0.1:34897 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: Content-Length: 11 0065: Content-Type: application/x-www-form-urlencoded 0096: 00:53:55.782135 => Send data, 11 bytes (0xb) 0000: junkelijunk 00:53:55.863018 * upload completely sent off: 11 bytes 00:53:56.228438 <= Recv header, 30 bytes (0x1e) 0000: HTTP/1.1 200 foobar swsclose 00:53:56.571816 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/6.0 00:53:56.668288 <= Recv header, 96 bytes (0x60) 0000: Authentication-Info: Passport1.4 tname=MSPAuth,tname=MSPProf,tna 0040: me=MSPConsent,tname=MSPSecAuth 00:53:56.740621 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:53:56.768457 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 00:53:56.853721 <= Recv header, 2 bytes (0x2) 0000: 00:53:56.910651 <= Recv data, 26 bytes (0x1a) 0000: This is not the real page. 00:53:57.507562 * Connection #0 to host 127.0.0.1:34897 left intact === End of file trace174 === Start of file valgrind174 ==214022== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind174 test 0173...[HTTP RFC1867-formpost a file from stdin with "faked" filename] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind173 ../src/curl -q --output log/8/curl173.out --include --trace-ascii log/8/trace173 --trace-time http://127.0.0.1:39461/we/want/173 -F field1=contents1 -F "fileupload=@-;filename=/dev/null;type=text/x-null;format=x-curl" log/8/stdout173 2> log/8/stderr173 valgrind ERROR ==213863== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 173 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind173 ../src/curl -q --output log/8/curl173.out --include --trace-ascii log/8/trace173 --trace-time http://127.0.0.1:39461/we/want/173 -F field1=contents1 -F "fileupload=@-;filename=/dev/null;type=text/x-null;format=x-curl" log/8/stdout173 2> log/8/stderr173 === End of file commands.log === Start of file curl173.out HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 11 blablabla === End of file curl173.out === Start of file http_server.log 00:53:04.410697 ====> Client connect 00:53:04.410866 accept_connection 3 returned 4 00:53:04.410942 accept_connection 3 returned 0 00:53:04.417788 Read 93 bytes 00:53:04.417912 Process 93 bytes request 00:53:04.417997 Got request: GET /verifiedserver HTTP/1.1 00:53:04.418057 Are-we-friendly question received 00:53:04.418182 Wrote request (93 bytes) input to log/8/server.input 00:53:04.418282 Identifying ourselves as friends 00:53:04.418466 Response sent (57 bytes) and written to log/8/server.response 00:53:04.418530 special request received, no persistency 00:53:04.418588 ====> Client disconnect 0 00:53:59.641556 ====> Client connect 00:53:59.641698 accept_connection 3 returned 4 00:53:59.641772 accept_connection 3 returned 0 00:54:01.227377 Read 582 bytes 00:54:01.227568 Process 582 bytes request 00:54:01.227680 Got request: POST /we/want/173 HTTP/1.1 00:54:01.227754 Serve test number 173 part 0 00:54:01.227950 - request found to be complete (173) 00:54:01.228121 Found Content-Length: 378 in the request 00:54:01.228360 Wrote request (582 bytes) input to log/8/server.input 00:54:01.228474 Send response test173 section 00:54:01.228704 connection close instruction "swsclose" found in response 00:54:01.228887 Response sent (117 bytes) and written to log/8/server.response 00:54:01.228954 instructed to close connection after server-reply 00:54:01.229016 ====> Client disconnect 0 === End of file http_servCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind175 ../src/curl -q --output log/2/curl175.out --include --trace-ascii log/2/trace175 --trace-time http://127.0.0.1:39863/175 -u auser:apasswd --digest -d "junkelijunk" > log/2/stdout175 2> log/2/stderr175 er.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 58568 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 173 === End of file server.cmd === Start of file server.input POST /we/want/173 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* Content-Length: 378 Content-Type: multipart/form-data; boundary=------------------------GuxnfSjLaO4RodgBsznTp1 --------------------------GuxnfSjLaO4RodgBsznTp1 Content-Disposition: form-data; name="field1" contents1 --------------------------GuxnfSjLaO4RodgBsznTp1 Content-Disposition: form-data; name="fileupload"; filename="/dev/null" Content-Type: text/x-null;format=x-curl line1 line2 line3 line4 line5 line6 line7 line8 --------------------------GuxnfSjLaO4RodgBsznTp1-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 11 blablabla === End of file server.response === Start of file stderr173 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 378 0 0 100 378 0 85 0:00:04 0:00:04 --:--:-- 126 100 389 100 11 100 378 2 70 0:00:05 0:00:05 --:--:-- 98 100 389 100 11 100 378 1 68 0:00:11 0:00:05 0:00:06 96 === End of file stderr173 === Start of file stdin-for-173 line1 line2 line3 line4 line5 line6 line7 line8 === End of file stdin-for-173 === Start of file trace173 00:53:59.660489 * Trying 127.0.0.1:39461... 00:54:00.600510 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 53614 00:54:00.732158 * using HTTP/1.x 00:54:01.653987 => Send header, 204 bytes (0xcc) 0000: POST /we/want/173 HTTP/1.1 001c: Host: 127.0.0.1:39461 0033: User-Agent: curl/8.17.0 004c: Accept: */* 0059: Content-Length: 378 006e: Content-Type: multipart/form-data; boundary=-------------------- 00ae: ----GuxnfSjLaO4RodgBsznTp1 00ca: 00:54:01.765386 => Send data, 378 bytes (0x17a) 0000: --------------------------GuxnfSjLaO4RodgBsznTp1 0032: Content-Disposition: form-data; name="field1" 0061: 0063: contents1 006e: --------------------------GuxnfSjLaO4RodgBsznTp1 00a0: Content-Disposition: form-data; name="fileupload"; filename="/de 00e0: v/null" 00e9: Content-Type: text/x-null;format=x-curl 0112: 0114: line1.line2.line3.line4.line5.line6.line7.line8. 0146: --------------------------GuxnfSjLaO4RodgBsznTp1-- 00:54:01.880186 * upload completely sent off: 378 bytes 00:54:02.160399 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 00:54:02.474889 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:54:02.570450 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:54:02.610820 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 11. 00:54:02.699143 <= Recv header, 1 bytes (0x1) 0000: . 00:54:02.763550 <= Recv data, 11 bytes (0xb) 0000: blablabla.. 00:54:03.263835 * Connection #0 to host 127.0.0.1:39461 left intact === End of file trace173 === Start of file valgrind173 ==213863== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind173 test 0175...[HTTP POST --digest to server not requiring any auth at all] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind175 ../src/curl -q --output log/2/curl175.out --include --trace-ascii log/2/trace175 --trace-time http://127.0.0.1:39863/175 -u auser:apasswd --digest -d "junkelijunk" > log/2/stdout175 2> log/2/stderr175 valgrind ERROR ==214205== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 175 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind175 ../src/curl -q --output log/2/curl175.out --include --trace-ascii log/2/trace175 --trace-time http://127.0.0.1:39863/175 -u auser:apasswd --digest -d "junkelijunk" > log/2/stdout175 2> log/2/stderr175 === End of file commands.log === Start of file curl175.out HTTP/1.1 200 foobar swsclose swsbounce Server: Microsoft-IIS/6.0 Authentication-Info: Passport1.4 tname=MSPAuth,tname=MSPProf,tname=MSPConsent,tname=MSPSecAuth Content-Type: text/html; charset=iso-8859-1 HTTP/1.1 200 moo swsclose Server: Microsoft-IIS/6.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 16 content for you === End of file curl175.out === Start of file http_server.log 00:53:19.800249 ====> Client connect 00:53:19.800408 accept_connection 3 returned 4 00:53:19.800488 accept_connection 3 returned 0 00:53:19.807551 Read 93 bytes 00:53:19.807645 Process 93 bytes request 00:53:19.807749 Got request: GET /verifiedserver HTTP/1.1 00:53:19.807816 Are-we-friendly question received 00:53:19.807932 Wrote request (93 bytes) input to log/2/server.input 00:53:19.808019 Identifying ourselves as friends 00:53:19.808176 Response sent (57 bytes) and written to log/2/server.response 00:53:19.808237 special request received, no persistency 00:53:19.808296 ====> Client disconnect 0 00:54:07.646254 ====> Client connect 00:54:07.646393 accept_connection 3 returned 4 00:54:07.646472 accept_connection 3 returned 0 00:54:08.751239 Read 151 bytes 00:54:08.751435 Process 151 bytes request 00:54:08.751529 Got request: POST /175 HTTP/1.1 00:54:08.751600 Serve test number 175 part 0 00:54:08.751793 - request found to be complete (175) 00:54:08.751962 Found Content-Length: 0 in the request 00:54:08.752130 Wrote request (151 bytes) input to log/2/server.input 00:54:08.752237 Send response test175 section 00:54:08.752454 connection close instruction "swsclose" found in response 00:54:08.752543 enable "swsbounce" in the next request 00:54:08.752718 Response sent (236 bytes) and written to log/2/server.response 00:54:08.752789 instructed to close connection after server-reply 00:54:08.752851 ====> Client disconnect 0 00:54:11.019581 ====> Client connect 00:54:11.019741 accept_connection 3 returned 4 00:54:11.019832 accept_connection 3 returned 0 00:54:11.265382 Read 163 bytes 00:54:11.265573 Process 163 bytes request 00:54:11.265668 Got request: POST /175 HTTP/1.1 00:54:11.265740 Serve test number 175 part 0 00:54:11.265928 - request found to be complete (175) 00:54:11.266095 Found Content-Length: 11 in the request 00:54:11.266204 Wrote request (163 bytes) input to log/2/server.input 00:54:11.266329 BOUNCE part number to 1 00:54:11.266414 Send response test175 section 00:54:11.266648 connection close instruction "swsclose" found in response 00:54:11.266801 Response sent (137 bytes) and written to log/2/server.response 00:54:11.266864 instructed to close connection after server-reply 00:54:11.266922 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 49432 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to hostCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind177 ../src/curl -q --output log/1/curl177.out --include --trace-ascii log/1/trace177 --trace-time http://127.0.0.1:40641/177 -u auser:apasswd --digest -d "junkelijunk" > log/1/stdout177 2> log/1/stderr177 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 175 === End of file server.cmd === Start of file server.input POST /175 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* Content-Length: 0 Content-Type: application/x-www-form-urlencoded POST /175 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* Content-Length: 11 Content-Type: application/x-www-form-urlencoded junkelijunk === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 foobar swsclose swsbounce Server: Microsoft-IIS/6.0 Authentication-Info: Passport1.4 tname=MSPAuth,tname=MSPProf,tname=MSPConsent,tname=MSPSecAuth Content-Type: text/html; charset=iso-8859-1 This is not the real page HTTP/1.1 200 moo swsclose Server: Microsoft-IIS/6.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 16 content for you === End of file server.response === Start of file stderr175 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 27 100 16 100 11 2 1 0:00:11 0:00:06 0:00:05 41 === End of file stderr175 === Start of file trace175 00:54:06.707393 * Trying 127.0.0.1:39863... 00:54:07.627656 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 54094 00:54:07.757311 * using HTTP/1.x 00:54:07.855583 * Server auth using Digest with user 'auser' 00:54:08.173792 => Send header, 151 bytes (0x97) 0000: POST /175 HTTP/1.1 0014: Host: 127.0.0.1:39863 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: Content-Length: 0 0064: Content-Type: application/x-www-form-urlencoded 0095: 00:54:08.504978 <= Recv header, 40 bytes (0x28) 0000: HTTP/1.1 200 foobar swsclose swsbounce 00:54:08.829689 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/6.0 00:54:08.929594 <= Recv header, 96 bytes (0x60) 0000: Authentication-Info: Passport1.4 tname=MSPAuth,tname=MSPProf,tna 0040: me=MSPConsent,tname=MSPSecAuth 00:54:09.009467 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:54:09.057638 * no chunk, no close, no size. Assume close to signal end 00:54:09.146584 <= Recv header, 2 bytes (0x2) 0000: 00:54:09.396103 * Request completely sent off 00:54:09.670806 * shutting down connection #0 00:54:10.169972 * Issue another request to this URL: 'http://127.0.0.1:39863/175' 00:54:10.348313 * Hostname 127.0.0.1 was found in DNS cache 00:54:10.395680 * Trying 127.0.0.1:39863... 00:54:10.449866 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 54110 00:54:10.457894 * using HTTP/1.x 00:54:10.657309 => Send header, 152 bytes (0x98) 0000: POST /175 HTTP/1.1 0014: Host: 127.0.0.1:39863 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: Content-Length: 11 0065: Content-Type: application/x-www-form-urlencoded 0096: 00:54:10.682583 => Send data, 11 bytes (0xb) 0000: junkelijunk 00:54:10.729946 * upload completely sent off: 11 bytes 00:54:10.765452 <= Recv header, 27 bytes (0x1b) 0000: HTTP/1.1 200 moo swsclose 00:54:10.774194 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/6.0 00:54:10.784163 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:54:10.811300 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 16 00:54:10.833013 <= Recv header, 2 bytes (0x2) 0000: 00:54:10.855081 <= Recv data, 16 bytes (0x10) 0000: content for you. 00:54:11.089756 * Connection #1 to host 127.0.0.1:39863 left intact === End of file trace175 === Start of file valgrind175 ==214205== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind175 test 0177...[HTTP POST --digest to server doing a 302-location response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind177 ../src/curl -q --output log/1/curl177.out --include --trace-ascii log/1/trace177 --trace-time http://127.0.0.1:40641/177 -u auser:apasswd --digest -d "junkelijunk" > log/1/stdout177 2> log/1/stderr177 valgrind ERROR ==214497== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 177 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind177 ../src/curl -q --output log/1/curl177.out --include --trace-ascii log/1/trace177 --trace-time http://127.0.0.1:40641/177 -u auser:apasswd --digest -d "junkelijunk" > log/1/stdout177 2> log/1/stderr177 === End of file commands.log === Start of file curl177.out HTTP/1.1 302 *MOVED* swsclose swsbounce Server: Microsoft-IIS/6.0 Location: /mooooo/177 Content-Type: text/html; charset=iso-8859-1 === End of file curl177.out === Start of file http_server.log 00:53:22.534382 ====> Client connect 00:53:22.534554 accept_connection 3 returned 4 00:53:22.536018 accept_connection 3 returned 0 00:53:22.541049 Read 93 bytes 00:53:22.541153 Process 93 bytes request 00:53:22.541239 Got request: GET /verifiedserver HTTP/1.1 00:53:22.541301 Are-we-friendly question received 00:53:22.541418 Wrote request (93 bytes) input to log/1/server.input 00:53:22.541511 Identifying ourselves as friends 00:53:22.541679 Response sent (57 bytes) and written to log/1/server.response 00:53:22.541740 special request received, no persistency 00:53:22.541795 ====> Client disconnect 0 00:54:10.163484 ====> Client connect 00:54:10.163630 accept_connection 3 returned 4 00:54:10.163712 accept_connection 3 returned 0 00:54:11.202988 Read 151 bytes 00:54:11.203183 Process 151 bytes request 00:54:11.203277 Got request: POST /177 HTTP/1.1 00:54:11.203348 Serve test number 177 part 0 00:54:11.203514 - request found to be complete (177) 00:54:11.203652 Found Content-Length: 0 in the request 00:54:11.203804 Wrote request (151 bytes) input to log/1/server.input 00:54:11.203911 Send response test177 section 00:54:11.204118 connection close instruction "swsclose" found in response 00:54:11.204214 enable "swsbounce" in the next request 00:54:11.204384 Response sent (138 bytes) and written to log/1/server.response 00:54:11.204450 instructed to close connection after server-reply 00:54:11.204513 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 35010 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 177 === End of file server.cmd === Start of file server.input POST /177 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* Content-Length: 0 Content-Type: application/x-www-form-urlencoded === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 302 *MOVED* swsclose swsbounce Server: Microsoft-IIS/6.0 Location: /mooooo/177 Content-Type: text/html; charset=iso-8859-1 === End of file servCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind176 ../src/curl -q --output log/5/curl176.out --include --trace-ascii log/5/trace176 --trace-time http://127.0.0.1:46263/176 -u auser:apasswd --ntlm -d "junkelijunk" > log/5/stdout176 2> log/5/stderr176 er.response === Start of file stderr177 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr177 === Start of file trace177 00:54:09.230027 * Trying 127.0.0.1:40641... 00:54:10.101642 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 57098 00:54:10.217892 * using HTTP/1.x 00:54:10.311546 * Server auth using Digest with user 'auser' 00:54:10.624921 => Send header, 151 bytes (0x97) 0000: POST /177 HTTP/1.1 0014: Host: 127.0.0.1:40641 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: Content-Length: 0 0064: Content-Type: application/x-www-form-urlencoded 0095: 00:54:10.969025 <= Recv header, 41 bytes (0x29) 0000: HTTP/1.1 302 *MOVED* swsclose swsbounce 00:54:11.275693 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/6.0 00:54:11.409530 <= Recv header, 23 bytes (0x17) 0000: Location: /mooooo/177 00:54:11.448130 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:54:11.487774 * no chunk, no close, no size. Assume close to signal end 00:54:11.548612 <= Recv header, 2 bytes (0x2) 0000: 00:54:11.649804 * abort upload 00:54:11.685658 <= Recv data, 0 bytes (0x0) 00:54:12.284743 * shutting down connection #0 === End of file trace177 === Start of file valgrind177 ==214497== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind177 test 0176...[HTTP POST --ntlm to server not requiring any auth at all] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind176 ../src/curl -q --output log/5/curl176.out --include --trace-ascii log/5/trace176 --trace-time http://127.0.0.1:46263/176 -u auser:apasswd --ntlm -d "junkelijunk" > log/5/stdout176 2> log/5/stderr176 valgrind ERROR ==214344== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 176 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind176 ../src/curl -q --output log/5/curl176.out --include --trace-ascii log/5/trace176 --trace-time http://127.0.0.1:46263/176 -u auser:apasswd --ntlm -d "junkelijunk" > log/5/stdout176 2> log/5/stderr176 === End of file commands.log === Start of file curl176.out HTTP/1.1 200 foobar swsclose Server: Microsoft-IIS/6.0 Authentication-Info: Passport1.4 tname=MSPAuth,tname=MSPProf,tname=MSPConsent,tname=MSPSecAuth Content-Type: text/html; charset=iso-8859-1 HTTP/1.1 200 moo swsclose Server: Microsoft-IIS/6.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 16 content for you === End of file curl176.out === Start of file http_server.log 00:53:19.980666 ====> Client connect 00:53:19.980825 accept_connection 3 returned 4 00:53:19.980899 accept_connection 3 returned 0 00:53:19.987515 Read 93 bytes 00:53:19.987591 Process 93 bytes request 00:53:19.987673 Got request: GET /verifiedserver HTTP/1.1 00:53:19.987749 Are-we-friendly question received 00:53:19.987850 Wrote request (93 bytes) input to log/5/server.input 00:53:19.987932 Identifying ourselves as friends 00:53:19.988096 Response sent (57 bytes) and written to log/5/server.response 00:53:19.988155 special request received, no persistency 00:53:19.988207 ====> Client disconnect 0 00:54:08.375053 ====> Client connect 00:54:08.375197 accept_connection 3 returned 4 00:54:08.375276 accept_connection 3 returned 0 00:54:09.592314 Read 217 bytes 00:54:09.592526 Process 217 bytes request 00:54:09.592626 Got request: POST /176 HTTP/1.1 00:54:09.592702 Serve test number 176 part 0 00:54:09.592917 - request found to be complete (176) 00:54:09.593097 Found Content-Length: 0 in the request 00:54:09.593214 Received NTLM type-1, sending back data 1001 00:54:09.593384 Wrote request (217 bytes) input to log/5/server.input 00:54:09.593510 Send response test176 section 00:54:09.593751 connection close instruction "swsclose" found in response 00:54:09.593975 Response sent (200 bytes) and written to log/5/server.response 00:54:09.594048 instructed to close connection after server-reply 00:54:09.594117 ====> Client disconnect 0 00:54:11.746989 ====> Client connect 00:54:11.747133 accept_connection 3 returned 4 00:54:11.747213 accept_connection 3 returned 0 00:54:11.967656 Read 163 bytes 00:54:11.967858 Process 163 bytes request 00:54:11.967954 Got request: POST /176 HTTP/1.1 00:54:11.968028 Serve test number 176 part 0 00:54:11.968222 - request found to be complete (176) 00:54:11.968410 Found Content-Length: 11 in the request 00:54:11.968644 Wrote request (163 bytes) input to log/5/server.input 00:54:11.968742 Send response test176 section 00:54:11.968981 connection close instruction "swsclose" found in response 00:54:11.969175 Response sent (137 bytes) and written to log/5/server.response 00:54:11.969242 instructed to close connection after server-reply 00:54:11.969303 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 52910 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 176 === End of file server.cmd === Start of file server.input POST /176 HTTP/1.1 Host: 127.0.0.1:46263 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* Content-Length: 0 Content-Type: application/x-www-form-urlencoded POST /176 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* Content-Length: 11 Content-Type: application/x-www-form-urlencoded junkelijunk === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 foobar swsclose Server: Microsoft-IIS/6.0 Authentication-Info: Passport1.4 tname=MSPAuth,tname=MSPProf,tname=MSPConsent,tname=MSPSecAuth Content-Type: text/html; charset=iso-8859-1 HTTP/1.1 200 moo swsclose Server: Microsoft-IIS/6.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 16 content for you === End of file server.response === Start of file stderr176 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 11 0 0 100 11 0 1 0:00:11 0:00:06 0:00:05 32 100 27 100 16 100 11 2 1 0:00:11 0:00:06 0:00:05 43 === End of file stderr176 === Start of file trace176 00:54:08.405524 * Trying 127.0.0.1:46263... 00:54:09.352698 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 42916 00:54:09.518883 * using HTTP/1.x 00:54:09.697576 * Server auth using NTLM with user 'auser' 00:54:10.013374 => Send CMD (2048): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind178 ../src/curl -q --output log/3/curl178.out --include --trace-ascii log/3/trace178 --trace-time http://127.0.0.1:46853/178 > log/3/stdout178 2> log/3/stderr178 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind179 ../src/curl -q --output log/6/curl179.out --include --trace-ascii log/6/trace179 --trace-time http://supertrooper.fake/c/179 -b log/6/injar179 -x 127.0.0.1:38277 > log/6/stdout179 2> log/6/stderr179 header, 217 bytes (0xd9) 0000: POST /176 HTTP/1.1 0014: Host: 127.0.0.1:46263 002b: Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 006d: User-Agent: curl/8.17.0 0086: Accept: */* 0093: Content-Length: 0 00a6: Content-Type: application/x-www-form-urlencoded 00d7: 00:54:10.344416 <= Recv header, 30 bytes (0x1e) 0000: HTTP/1.1 200 foobar swsclose 00:54:10.669860 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/6.0 00:54:10.763642 <= Recv header, 96 bytes (0x60) 0000: Authentication-Info: Passport1.4 tname=MSPAuth,tname=MSPProf,tna 0040: me=MSPConsent,tname=MSPSecAuth 00:54:10.838851 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:54:10.878798 * no chunk, no close, no size. Assume close to signal end 00:54:10.968696 <= Recv header, 2 bytes (0x2) 0000: 00:54:11.201840 * Request completely sent off 00:54:11.463823 * shutting down connection #0 00:54:11.933514 * Issue another request to this URL: 'http://127.0.0.1:46263/176' 00:54:12.085122 * Hostname 127.0.0.1 was found in DNS cache 00:54:12.124220 * Trying 127.0.0.1:46263... 00:54:12.160870 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 42928 00:54:12.167629 * using HTTP/1.x 00:54:12.354706 => Send header, 152 bytes (0x98) 0000: POST /176 HTTP/1.1 0014: Host: 127.0.0.1:46263 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: Content-Length: 11 0065: Content-Type: application/x-www-form-urlencoded 0096: 00:54:12.378342 => Send data, 11 bytes (0xb) 0000: junkelijunk 00:54:12.424722 * upload completely sent off: 11 bytes 00:54:12.482865 <= Recv header, 27 bytes (0x1b) 0000: HTTP/1.1 200 moo swsclose 00:54:12.490690 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/6.0 00:54:12.499602 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:54:12.526156 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 16 00:54:12.546910 <= Recv header, 2 bytes (0x2) 0000: 00:54:12.570563 <= Recv data, 16 bytes (0x10) 0000: content for you. 00:54:12.784470 * Connection #1 to host 127.0.0.1:46263 left intact === End of file trace176 === Start of file valgrind176 ==214344== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind176 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 184 in state 4 Runner 2 (id 185908) running test 183 in state 4 Runner 3 (id 185910) running test 178 in state 4 Runner 4 (id 185912) running test 180 in state 4 Runner 5 (id 185914) running test 185 in state 4 Runner 6 (id 185916) running test 179 in state 4 Runner 7 (id 185918) running test 181 in state 4 Runner 8 (id 185920) running test 182 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 184 in state 4 Runner 2 (id 185908) running test 183 in state 4 Runner 3 (id 185910) running test 178 in state 4 Runner 4 (id 185912) running test 180 in state 4 Runner 5 (id 185914) running test 185 in state 4 Runner 6 (id 185916) running test 179 in state 4 Runner 7 (id 185918) running test 181 in state 4 Runner 8 (id 185920) running test 182 in state 4 test 0178...[HTTP response with negative Content-Length] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind178 ../src/curl -q --output log/3/curl178.out --include --trace-ascii log/3/trace178 --trace-time http://127.0.0.1:46853/178 > log/3/stdout178 2> log/3/stderr178 valgrind ERROR ==214730== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 178 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind178 ../src/curl -q --output log/3/curl178.out --include --trace-ascii log/3/trace178 --trace-time http://127.0.0.1:46853/178 > log/3/stdout178 2> log/3/stderr178 === End of file commands.log === Start of file curl178.out HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT === End of file curl178.out === Start of file http_server.log 00:53:50.972467 ====> Client connect 00:53:50.972618 accept_connection 3 returned 4 00:53:50.972689 accept_connection 3 returned 0 00:53:50.979062 Read 93 bytes 00:53:50.979181 Process 93 bytes request 00:53:50.979262 Got request: GET /verifiedserver HTTP/1.1 00:53:50.979318 Are-we-friendly question received 00:53:50.979430 Wrote request (93 bytes) input to log/3/server.input 00:53:50.979523 Identifying ourselves as friends 00:53:50.979669 Response sent (57 bytes) and written to log/3/server.response 00:53:50.979724 special request received, no persistency 00:53:50.979773 ====> Client disconnect 0 00:54:38.293507 ====> Client connect 00:54:38.293653 accept_connection 3 returned 4 00:54:38.293735 accept_connection 3 returned 0 00:54:39.323387 Read 82 bytes 00:54:39.323583 Process 82 bytes request 00:54:39.323674 Got request: GET /178 HTTP/1.1 00:54:39.323742 Serve test number 178 part 0 00:54:39.323909 - request found to be complete (178) 00:54:39.324170 Wrote request (82 bytes) input to log/3/server.input 00:54:39.324309 Send response test178 section 00:54:39.324533 connection close instruction "swsclose" found in response 00:54:39.324695 Response sent (138 bytes) and written to log/3/server.response 00:54:39.324762 instructed to close connection after server-reply 00:54:39.324823 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 56022 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 178 === End of file server.cmd === Start of file server.input GET /178 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: -6 Content-Type: text/html Funny-head: yesyes moooooooooooo === End of file server.response === Start of file stderr178 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (8) Invalid Content-Length: value === End of file stderr178 === Start of file trace178 00:54:38.328442 * Trying 127.0.0.1:46853... 00:54:39.263430 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 34618 00:54:39.389868 * using HTTP/1.x 00:54:39.745908 => Send header, 82 bytes (0x52) 0000: GET /178 HTTP/1.1 0013: Host: 127.0.0.1:46853 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 00:54:40.094339 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 00:54:40.398071 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:54:40.540281 * Invalid Content-Length: value 00:54:40.883893 * closing connection #0 === End of file trace178 === Start of file valgrind178 ==214730== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind178 test 0179...[HTTP usinCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind180 ../src/curl -q --output log/4/curl180.out --include --trace-ascii log/4/trace180 --trace-time http://127.0.0.1:42621/we/want/180 -T log/4/test180.txt --http1.0 > log/4/stdout180 2> log/4/stderr180 g proxy and cookies with path checks] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind179 ../src/curl -q --output log/6/curl179.out --include --trace-ascii log/6/trace179 --trace-time http://supertrooper.fake/c/179 -b log/6/injar179 -x 127.0.0.1:38277 > log/6/stdout179 2> log/6/stderr179 valgrind ERROR ==214892== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 179 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind179 ../src/curl -q --output log/6/curl179.out --include --trace-ascii log/6/trace179 --trace-time http://supertrooper.fake/c/179 -b log/6/injar179 -x 127.0.0.1:38277 > log/6/stdout179 2> log/6/stderr179 === End of file commands.log === Start of file curl179.out HTTP/1.1 200 OK Server: Microsoft-IIS/4.0 Date: Tue, 25 Sep 2001 19:37:44 GMT Content-Type: text/html Connection: close Content-Length: 21 This server says moo === End of file curl179.out === Start of file http_server.log 00:53:56.163810 ====> Client connect 00:53:56.163979 accept_connection 3 returned 4 00:53:56.164060 accept_connection 3 returned 0 00:53:56.170838 Read 93 bytes 00:53:56.171008 Process 93 bytes request 00:53:56.171100 Got request: GET /verifiedserver HTTP/1.1 00:53:56.171173 Are-we-friendly question received 00:53:56.171314 Wrote request (93 bytes) input to log/6/server.input 00:53:56.171419 Identifying ourselves as friends 00:53:56.171605 Response sent (57 bytes) and written to log/6/server.response 00:53:56.171671 special request received, no persistency 00:53:56.171729 ====> Client disconnect 0 00:54:43.947403 ====> Client connect 00:54:43.947556 accept_connection 3 returned 4 00:54:43.947636 accept_connection 3 returned 0 00:54:45.186194 Read 161 bytes 00:54:45.186409 Process 161 bytes request 00:54:45.186511 Got request: GET http://supertrooper.fake/c/179 HTTP/1.1 00:54:45.186583 Serve test number 179 part 0 00:54:45.186760 - request found to be complete (179) 00:54:45.187018 Wrote request (161 bytes) input to log/6/server.input 00:54:45.187138 Send response test179 section 00:54:45.187536 Response sent (161 bytes) and written to log/6/server.response 00:54:45.187608 => persistent connection request ended, awaits new request 00:54:47.166957 Connection closed by client 00:54:47.167149 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 35272 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file injar179 supertrooper.fake FALSE /a FALSE 22139150993 mooo indeed supertrooper.fake FALSE /b FALSE 0 moo1 indeed supertrooper.fake FALSE /c FALSE 22139150993 moo2 indeed === End of file injar179 === Start of file server.cmd Testnum 179 === End of file server.cmd === Start of file server.input GET http://supertrooper.fake/c/179 HTTP/1.1 Host: supertrooper.fake User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive Cookie: moo2=indeed === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Server: Microsoft-IIS/4.0 Date: Tue, 25 Sep 2001 19:37:44 GMT Content-Type: text/html Connection: close Content-Length: 21 This server says moo === End of file server.response === Start of file stderr179 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 100 21 100 21 0 0 4 0 0:00:05 0:00:05 --:--:-- 5 === End of file stderr179 === Start of file trace179 00:54:44.013051 * Trying 127.0.0.1:38277... 00:54:44.914549 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 59180 00:54:45.042253 * using HTTP/1.x 00:54:45.609031 => Send header, 161 bytes (0xa1) 0000: GET http://supertrooper.fake/c/179 HTTP/1.1 002d: Host: supertrooper.fake 0046: User-Agent: curl/8.17.0 005f: Accept: */* 006c: Proxy-Connection: Keep-Alive 008a: Cookie: moo2=indeed 009f: 00:54:45.984233 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:54:46.316180 <= Recv header, 26 bytes (0x1a) 0000: Server: Microsoft-IIS/4.0. 00:54:46.414147 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 25 Sep 2001 19:37:44 GMT. 00:54:46.479985 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:54:46.530500 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:54:46.556562 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 21. 00:54:46.645665 <= Recv header, 1 bytes (0x1) 0000: . 00:54:46.709898 <= Recv data, 21 bytes (0x15) 0000: This server says moo. 00:54:46.830191 * we are done reading and this is set to close, stop send 00:54:46.864328 * abort upload 00:54:47.356964 * shutting down connection #0 === End of file trace179 === Start of file valgrind179 ==214892== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind179 test 0180...[HTTP 1.0 PUT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind180 ../src/curl -q --output log/4/curl180.out --include --trace-ascii log/4/trace180 --trace-time http://127.0.0.1:42621/we/want/180 -T log/4/test180.txt --http1.0 > log/4/stdout180 2> log/4/stderr180 valgrind ERROR ==215028== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 180 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind180 ../src/curl -q --output log/4/curl180.out --include --trace-ascii log/4/trace180 --trace-time http://127.0.0.1:42621/we/want/180 -T log/4/test180.txt --http1.0 > log/4/stdout180 2> log/4/stderr180 === End of file commands.log === Start of file curl180.out HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file curl180.out === Start of file http_server.log 00:53:58.437520 ====> Client connect 00:53:58.437716 accept_connection 3 returned 4 00:53:58.437809 accept_connection 3 returned 0 00:53:58.445394 Read 93 bytes 00:53:58.445589 Process 93 bytes request 00:53:58.445683 Got request: GET /verifiedserver HTTP/1.1 00:53:58.445748 Are-we-friendly question received 00:53:58.445885 Wrote request (93 bytes) input to log/4/server.input 00:53:58.445986 Identifying ourselves as friends 00:53:58.446148 Response sent (57 bytes) and written to log/4/server.response 00:53:58.446212 special request received, no persistency 00:53:58.446268 ====> Client disconnect 0 00:54:45.826845 ====> Client connect 00:54:45.826988 accept_connection 3 returned 4 00:54:45.827073 accept_connection 3 returned 0 00:54:47.039286 Read 188 bytes 00:54:47.039459 Process 188 bytes request 00:54:47.039659 Got request: PUT /we/want/180 HTTP/1.0 00:54:47.039729 Serve test number 180 part 0 00:54:47.039899 - request found to be complete (180) 00:54:47.040047 Found Content-Length: 78 in the request 00:54:47.040281 Wrote request (188 bCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind181 ../src/curl -q --output log/7/curl181.out --include --trace-ascii log/7/trace181 --trace-time http://127.0.0.1:34897/we/want/181 --data-binary @log/7/test181.txt --http1.0 > log/7/stdout181 2> log/7/stderr181 ytes) input to log/4/server.input 00:54:47.040382 Send response test180 section 00:54:47.040578 connection close instruction "swsclose" found in response 00:54:47.040740 Response sent (98 bytes) and written to log/4/server.response 00:54:47.040803 instructed to close connection after server-reply 00:54:47.040872 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 58538 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 180 === End of file server.cmd === Start of file server.input PUT /we/want/180 HTTP/1.0 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* Content-Length: 78 Weird file to upload for testing the PUT feature === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file server.response === Start of file stderr180 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 78 0 0 100 78 0 21 0:00:03 0:00:03 --:--:-- 32 100 89 0 11 100 78 2 16 0:00:04 0:00:04 --:--:-- 26 100 89 0 11 100 78 2 16 0:00:04 0:00:04 --:--:-- 25 === End of file stderr180 === Start of file test180.txt Weird file to upload for testing the PUT feature === End of file test180.txt === Start of file trace180 00:54:44.882327 * Trying 127.0.0.1:42621... 00:54:45.796677 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 51262 00:54:45.930155 * using HTTP/1.x 00:54:46.459615 => Send header, 110 bytes (0x6e) 0000: PUT /we/want/180 HTTP/1.0 001b: Host: 127.0.0.1:42621 0032: User-Agent: curl/8.17.0 004b: Accept: */* 0058: Content-Length: 78 006c: 00:54:46.562575 => Send data, 78 bytes (0x4e) 0000: Weird. file. to. upload.for. testing.the. PUT. 0040: feature. 00:54:46.649139 * upload completely sent off: 78 bytes 00:54:46.921424 * HTTP 1.0, assume close after body 00:54:46.943297 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.0 200 OK swsclose. 00:54:47.242391 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:54:47.348861 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:54:47.459439 <= Recv header, 1 bytes (0x1) 0000: . 00:54:47.516176 <= Recv data, 11 bytes (0xb) 0000: blablabla.. 00:54:47.620669 <= Recv data, 0 bytes (0x0) 00:54:48.100543 * shutting down connection #0 === End of file trace180 === Start of file valgrind180 ==215028== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind180 test 0181...[HTTP 1.0 POST] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind181 ../src/curl -q --output log/7/curl181.out --include --trace-ascii log/7/trace181 --trace-time http://127.0.0.1:34897/we/want/181 --data-binary @log/7/test181.txt --http1.0 > log/7/stdout181 2> log/7/stderr181 valgrind ERROR ==215211== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 181 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind181 ../src/curl -q --output log/7/curl181.out --include --trace-ascii log/7/trace181 --trace-time http://127.0.0.1:34897/we/want/181 --data-binary @log/7/test181.txt --http1.0 > log/7/stdout181 2> log/7/stderr181 === End of file commands.log === Start of file curl181.out HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file curl181.out === Start of file http_server.log 00:54:01.560282 ====> Client connect 00:54:01.560450 accept_connection 3 returned 4 00:54:01.560528 accept_connection 3 returned 0 00:54:01.567961 Read 93 bytes 00:54:01.568115 Process 93 bytes request 00:54:01.568214 Got request: GET /verifiedserver HTTP/1.1 00:54:01.568282 Are-we-friendly question received 00:54:01.568411 Wrote request (93 bytes) input to log/7/server.input 00:54:01.568520 Identifying ourselves as friends 00:54:01.568680 Response sent (57 bytes) and written to log/7/server.response 00:54:01.568743 special request received, no persistency 00:54:01.568807 ====> Client disconnect 0 00:54:49.806196 ====> Client connect 00:54:49.806335 accept_connection 3 returned 4 00:54:49.806415 accept_connection 3 returned 0 00:54:51.050504 Read 239 bytes 00:54:51.050722 Process 239 bytes request 00:54:51.050949 Got request: POST /we/want/181 HTTP/1.0 00:54:51.051031 Serve test number 181 part 0 00:54:51.051228 - request found to be complete (181) 00:54:51.051386 Found Content-Length: 79 in the request 00:54:51.051563 Wrote request (239 bytes) input to log/7/server.input 00:54:51.051677 Send response test181 section 00:54:51.051891 connection close instruction "swsclose" found in response 00:54:51.052086 Response sent (98 bytes) and written to log/7/server.response 00:54:51.052157 instructed to close connection after server-reply 00:54:51.052220 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 52566 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 181 === End of file server.cmd === Start of file server.input POST /we/want/181 HTTP/1.0 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* Content-Length: 79 Content-Type: application/x-www-form-urlencoded Weird file to upload for testing the POST feature === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file server.response === Start of file stderr181 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 79 0 0 100 79 0 20 0:00:03 0:00:03 --:--:-- 31 100 90 0 11 100 79 2 16 0:00:04 0:00:04 --:--:-- 24 100 90 0 11 100 79 2 15 0:00:05 0:00:05 --:--:-- 24 === End of file stderr181 === Start of file test181.txt Weird file to upload for testing the POST feature === End of file test181.txt === Start of file trace181 00:54:49.868737 * Trying 127.0.0.1:3489CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind182 ../src/curl -q --output log/8/curl182.out --include --trace-ascii log/8/trace182 --trace-time ftp://127.0.0.1:43843/182 > log/8/stdout182 2> log/8/stderr182 7... 00:54:50.798401 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 40402 00:54:50.936203 * using HTTP/1.x 00:54:51.478491 => Send header, 160 bytes (0xa0) 0000: POST /we/want/181 HTTP/1.0 001c: Host: 127.0.0.1:34897 0033: User-Agent: curl/8.17.0 004c: Accept: */* 0059: Content-Length: 79 006d: Content-Type: application/x-www-form-urlencoded 009e: 00:54:51.601008 => Send data, 79 bytes (0x4f) 0000: Weird. file. to. upload.for. testing.the. POST 0040: . feature. 00:54:51.698821 * upload completely sent off: 79 bytes 00:54:52.009420 * HTTP 1.0, assume close after body 00:54:52.031942 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.0 200 OK swsclose. 00:54:52.372960 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:54:52.512333 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:54:52.616947 <= Recv header, 1 bytes (0x1) 0000: . 00:54:52.683472 <= Recv data, 11 bytes (0xb) 0000: blablabla.. 00:54:52.808737 <= Recv data, 0 bytes (0x0) 00:54:53.363168 * shutting down connection #0 === End of file trace181 === Start of file valgrind181 ==215211== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind181 test 0182...[FTP download an empty file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind182 ../src/curl -q --output log/8/curl182.out --include --trace-ascii log/8/trace182 --trace-time ftp://127.0.0.1:43843/182 > log/8/stdout182 2> log/8/stderr182 valgrind ERROR ==215376== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 182 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind182 ../src/curl -q --output log/8/curl182.out --include --trace-ascii log/8/trace182 --trace-time ftp://127.0.0.1:43843/182 > log/8/stdout182 2> log/8/stderr182 === End of file commands.log === Start of file ftp_server.log 00:54:07.779854 ====> Client connect 00:54:07.781494 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:54:07.788745 < "USER anonymous" 00:54:07.790118 > "331 We are happy you popped in![CR][LF]" 00:54:07.791192 < "PASS ftp@example.com" 00:54:07.792107 > "230 Welcome you silly person[CR][LF]" 00:54:07.792598 < "PWD" 00:54:07.792860 > "257 "/" is current directory[CR][LF]" 00:54:07.795024 < "EPSV" 00:54:07.795232 ====> Passive DATA channel requested by client 00:54:07.795377 DATA sockfilt for passive data channel starting... 00:54:07.838774 DATA sockfilt for passive data channel started (pid 215370) 00:54:07.840013 DATA sockfilt for passive data channel listens on port 46611 00:54:07.840624 > "229 Entering Passive Mode (|||46611|)[CR][LF]" 00:54:07.840811 Client has been notified that DATA conn will be accepted on port 46611 00:54:07.842840 Client connects to port 46611 00:54:07.843078 ====> Client established passive DATA connection on port 46611 00:54:07.843955 < "TYPE I" 00:54:07.844589 > "200 I modify TYPE as you wanted[CR][LF]" 00:54:07.845313 < "SIZE verifiedserver" 00:54:07.845794 > "213 18[CR][LF]" 00:54:07.846930 < "RETR verifiedserver" 00:54:07.847502 > "150 Binary junk (18 bytes).[CR][LF]" 00:54:07.849066 =====> Closing passive DATA connection... 00:54:07.849234 Server disconnects passive DATA connection 00:54:07.849556 Server disconnected passive DATA connection 00:54:07.849721 DATA sockfilt for passive data channel quits (pid 215370) 00:54:07.853135 DATA sockfilt for passive data channel quit (pid 215370) 00:54:07.853344 =====> Closed passive DATA connection 00:54:07.853962 > "226 File transfer complete[CR][LF]" 00:54:07.898426 < "QUIT" 00:54:07.898842 > "221 bye bye baby[CR][LF]" 00:54:07.899648 MAIN sockfilt said DISC 00:54:07.899841 ====> Client disconnected 00:54:07.900124 Awaiting input 00:54:55.344365 ====> Client connect 00:54:55.345132 FTPD: Getting commands from log/8/server.cmd 00:54:55.345480 FTPD: run test case number: 182 00:54:55.346469 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:54:56.708913 < "USER anonymous" 00:54:56.714369 > "331 We are happy you popped in![CR][LF]" 00:54:56.818786 < "PASS ftp@example.com" 00:54:56.819192 > "230 Welcome you silly person[CR][LF]" 00:54:56.903157 < "PWD" 00:54:56.903633 > "257 "/" is current directory[CR][LF]" 00:54:57.108289 < "EPSV" 00:54:57.108743 ====> Passive DATA channel requested by client 00:54:57.108955 DATA sockfilt for passive data channel starting... 00:54:57.161232 DATA sockfilt for passive data channel started (pid 216519) 00:54:57.162705 DATA sockfilt for passive data channel listens on port 45119 00:54:57.163135 > "229 Entering Passive Mode (|||45119|)[CR][LF]" 00:54:57.163310 Client has been notified that DATA conn will be accepted on port 45119 00:54:57.404689 Client connects to port 45119 00:54:57.405266 ====> Client established passive DATA connection on port 45119 00:54:57.549030 < "TYPE I" 00:54:57.551050 > "200 I modify TYPE as you wanted[CR][LF]" 00:54:57.601785 < "SIZE 182" 00:54:57.603495 > "213 0[CR][LF]" 00:54:57.675127 < "RETR 182" 00:54:57.684370 > "150 Binary data connection for 182 () (0 bytes).[CR][LF]" 00:54:57.685081 =====> Closing passive DATA connection... 00:54:57.685256 Server disconnects passive DATA connection 00:54:57.685684 Server disconnected passive DATA connection 00:54:57.685862 DATA sockfilt for passive data channel quits (pid 216519) 00:54:57.691694 DATA sockfilt for passive data channel quit (pid 216519) 00:54:57.691916 =====> Closed passive DATA connection 00:54:57.692541 > "226 File transfer complete[CR][LF]" 00:54:59.591589 < "QUIT" 00:54:59.594354 > "221 bye bye baby[CR][LF]" 00:54:59.724410 MAIN sockfilt said DISC 00:54:59.724897 ====> Client disconnected 00:54:59.725196 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:54:07.396107 ====> Client connect 00:54:07.397432 Received DATA (on stdin) 00:54:07.397514 > 160 bytes data, server => client 00:54:07.397668 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:54:07.397785 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:54:07.397886 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:54:07.404446 < 16 bytes data, client => server 00:54:07.404564 'USER anonymous\r\n' 00:54:07.405710 Received DATA (on stdin) 00:54:07.405779 > 33 bytes data, server => client 00:54:07.407028 '331 We are happy you popped in!\r\n' 00:54:07.407316 < 22 bytes data, client => server 00:54:07.407394 'PASS ftp@example.com\r\n' 00:54:07.408072 Received DATA (on stdin) 00:54:07.408141 > 30 bytes data, server => client 00:54:07.408305 '230 Welcome you silly person\r\n' 00:54:07.408588 < 5 bytes data, client => server 00:54:07.408652 'PWD\r\n' 00:54:07.409698 Received DATA (on stdin) 00:54:07.409763 > 30 bytes data, server => client 00:54:07.409841 '257 "/" is current directory\r\n' 00:54:07.411209 < 6 bytes data, client => server 00:54:07.411278 'EPSV\r\n' 00:54:07.456950 Received DATA (on stdin) 00:54:07.457096 > 39 bytes data, server => client 00:54:07.457726 '229 Entering Passive Mode (|||46611|)\r\n' 00:54:07.460013 < 8 bytes data, client => server 00:54:07.460091 'TYPE I\r\n' 00:54:07.460848 Received DATA (on stdin) 00:54:07.460957 > 33 bytes data, server => client 00:54:07.461091 '200 I modify TYPE as you wanted\r\n' 00:54:07.461461 < 21 bytes data, client => server 00:54:07.461541 'SIZE verifiedserver\r\n' 00:54:07.462250 Received DATA (on stdin) 00:54:07.462326 > 8 bytes data, server => client 00:54:07.462655 '213 18\r\n' 00:54:07.463078 < 21 bytes data, CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind183 ../src/curl -q --output log/2/curl183.out --include --trace-ascii log/2/trace183 --trace-time http://deathstar.another.galaxy/183 http://a.galaxy.far.far.away/183 --proxy http://127.0.0.1:39863 > log/2/stdout183 2> log/2/stderr183 client => server 00:54:07.463155 'RETR verifiedserver\r\n' 00:54:07.463855 Received DATA (on stdin) 00:54:07.463925 > 29 bytes data, server => client 00:54:07.464030 '150 Binary junk (18 bytes).\r\n' 00:54:07.470248 Received DATA (on stdin) 00:54:07.470352 > 28 bytes data, server => client 00:54:07.470469 '226 File transfer complete\r\n' 00:54:07.514066 < 6 bytes data, client => server 00:54:07.514205 'QUIT\r\n' 00:54:07.515436 Received DATA (on stdin) 00:54:07.515499 > 18 bytes data, server => client 00:54:07.515568 '221 bye bye baby\r\n' 00:54:07.516215 ====> Client disconnect 00:54:07.516497 Received ACKD (on stdin) 00:54:54.960059 ====> Client connect 00:54:54.962935 Received DATA (on stdin) 00:54:54.963059 > 160 bytes data, server => client 00:54:54.963175 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:54:54.963291 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:54:54.963394 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:54:56.324229 < 16 bytes data, client => server 00:54:56.324408 'USER anonymous\r\n' 00:54:56.325841 Received DATA (on stdin) 00:54:56.325917 > 33 bytes data, server => client 00:54:56.331253 '331 We are happy you popped in!\r\n' 00:54:56.434233 < 22 bytes data, client => server 00:54:56.434397 'PASS ftp@example.com\r\n' 00:54:56.435965 Received DATA (on stdin) 00:54:56.436038 > 30 bytes data, server => client 00:54:56.436120 '230 Welcome you silly person\r\n' 00:54:56.518514 < 5 bytes data, client => server 00:54:56.518704 'PWD\r\n' 00:54:56.520422 Received DATA (on stdin) 00:54:56.520505 > 30 bytes data, server => client 00:54:56.520602 '257 "/" is current directory\r\n' 00:54:56.723498 < 6 bytes data, client => server 00:54:56.723682 'EPSV\r\n' 00:54:56.780115 Received DATA (on stdin) 00:54:56.780269 > 39 bytes data, server => client 00:54:56.780363 '229 Entering Passive Mode (|||45119|)\r\n' 00:54:57.164313 < 8 bytes data, client => server 00:54:57.164501 'TYPE I\r\n' 00:54:57.165966 Received DATA (on stdin) 00:54:57.166046 > 33 bytes data, server => client 00:54:57.167561 '200 I modify TYPE as you wanted\r\n' 00:54:57.216584 < 10 bytes data, client => server 00:54:57.216765 'SIZE 182\r\n' 00:54:57.220025 Received DATA (on stdin) 00:54:57.220124 > 7 bytes data, server => client 00:54:57.220203 '213 0\r\n' 00:54:57.287551 < 10 bytes data, client => server 00:54:57.287720 'RETR 182\r\n' 00:54:57.293968 Received DATA (on stdin) 00:54:57.294064 > 50 bytes data, server => client 00:54:57.296764 '150 Binary data connection for 182 () (0 bytes).\r\n' 00:54:57.308720 Received DATA (on stdin) 00:54:57.308830 > 28 bytes data, server => client 00:54:57.308934 '226 File transfer complete\r\n' 00:54:59.206930 < 6 bytes data, client => server 00:54:59.207134 'QUIT\r\n' 00:54:59.208538 Received DATA (on stdin) 00:54:59.208622 > 18 bytes data, server => client 00:54:59.211185 '221 bye bye baby\r\n' 00:54:59.340642 ====> Client disconnect 00:54:59.341947 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:54:07.445582 Running IPv4 version 00:54:07.453585 Listening on port 46611 00:54:07.454041 Wrote pid 215370 to log/8/server/ftp_sockdata.pid 00:54:07.454868 Received PING (on stdin) 00:54:07.455961 Received PORT (on stdin) 00:54:07.459322 ====> Client connect 00:54:07.464568 Received DATA (on stdin) 00:54:07.464892 > 18 bytes data, server => client 00:54:07.465271 'WE ROOLZ: 202642\r\n' 00:54:07.466085 Received DISC (on stdin) 00:54:07.466606 ====> Client forcibly disconnected 00:54:07.466777 Received QUIT (on stdin) 00:54:07.466851 quits 00:54:07.467345 ============> sockfilt quits 00:54:57.764415 Running IPv4 version 00:54:57.772497 Listening on port 45119 00:54:57.773049 Wrote pid 216519 to log/8/server/ftp_sockdata.pid 00:54:57.773905 Received PING (on stdin) 00:54:57.778490 Received PORT (on stdin) 00:54:58.020951 ====> Client connect 00:54:58.302017 Received DISC (on stdin) 00:54:58.302236 ====> Client forcibly disconnected 00:54:58.302597 Received QUIT (on stdin) 00:54:58.302673 quits 00:54:58.303156 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 182 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE 182 RETR 182 QUIT === End of file server.input === Start of file stderr182 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 === End of file stderr182 === Start of file trace182 00:54:55.009437 * Trying 127.0.0.1:43843... 00:54:55.939271 * Established connection to 127.0.0.1 (127.0.0.1 port 43843) from 127.0.0.1 port 37344 00:54:56.177028 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:54:56.560381 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:54:56.587415 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:54:56.593274 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:54:56.598436 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:54:56.726000 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:54:56.798018 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:54:56.818903 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:54:56.883646 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:54:56.901992 => Send header, 5 bytes (0x5) 0000: PWD 00:54:56.916851 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:54:56.953224 * Entry path is '/' 00:54:57.055937 * Request has same path as previous transfer 00:54:57.107010 => Send header, 6 bytes (0x6) 0000: EPSV 00:54:57.129243 * Connect data stream passively 00:54:57.185452 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||45119|) 00:54:57.327627 * Connecting to 127.0.0.1 (127.0.0.1) port 45119 00:54:57.397776 * Trying 127.0.0.1:45119... 00:54:57.516626 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 45119) from 127.0.0.1 port 40056 00:54:57.547842 => Send header, 8 bytes (0x8) 0000: TYPE I 00:54:57.566472 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:54:57.600095 => Send header, 10 bytes (0xa) 0000: SIZE 182 00:54:57.628888 <= Recv header, 7 bytes (0x7) 0000: 213 0 00:54:57.668041 => Send header, 10 bytes (0xa) 0000: RETR 182 00:54:57.682601 <= Recv header, 50 bytes (0x32) 0000: 150 Binary data connection for 182 () (0 bytes). 00:54:57.736935 * Maxdownload = -1 00:54:57.746998 * Getting file with size: 0 00:54:58.002277 * abort upload 00:54:58.037235 <= Recv data, 0 bytes (0x0) 00:54:58.256704 * Remembering we are in dir "" 00:54:58.452798 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:54:58.770536 * Connection #0 to host 127.0.0.1:43843 left intact === End of file trace182 === Start of file valgrind182 ==215376== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind182 test 0183...[HTTP GET two URLs over a single proxy with persistent connection] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind183 ../src/curl -q --output log/2/curl183.out --include --trace-ascii log/2/trace183 --trace-time http://deathstar.another.galaxy/183 http://a.galaxy.far.far.away/183 --proxy http://127.0.0.1:39863 > log/2/stdout183 2> log/2/stderr183 valgrind ERROR ==215541== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind184 ../src/curl -q --output log/1/curl184.out --include --trace-ascii log/1/trace184 --trace-time http://deathstar.another.galaxy/184 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:40641 > log/1/stdout184 2> log/1/stderr184 dir after test 183 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind183 ../src/curl -q --output log/2/curl183.out --include --trace-ascii log/2/trace183 --trace-time http://deathstar.another.galaxy/183 http://a.galaxy.far.far.away/183 --proxy http://127.0.0.1:39863 > log/2/stdout183 2> log/2/stderr183 === End of file commands.log === Start of file curl183.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 4 moo === End of file curl183.out === Start of file http_server.log 00:54:15.367323 ====> Client connect 00:54:15.367488 accept_connection 3 returned 4 00:54:15.367560 accept_connection 3 returned 0 00:54:15.375019 Read 93 bytes 00:54:15.375131 Process 93 bytes request 00:54:15.375232 Got request: GET /verifiedserver HTTP/1.1 00:54:15.375295 Are-we-friendly question received 00:54:15.375407 Wrote request (93 bytes) input to log/2/server.input 00:54:15.375495 Identifying ourselves as friends 00:54:15.375652 Response sent (57 bytes) and written to log/2/server.response 00:54:15.375714 special request received, no persistency 00:54:15.375770 ====> Client disconnect 0 00:55:03.098760 ====> Client connect 00:55:03.098910 accept_connection 3 returned 4 00:55:03.098993 accept_connection 3 returned 0 00:55:04.186661 Read 152 bytes 00:55:04.186848 Process 152 bytes request 00:55:04.186942 Got request: GET http://deathstar.another.galaxy/183 HTTP/1.1 00:55:04.187013 Serve test number 183 part 0 00:55:04.187182 - request found to be complete (183) 00:55:04.187463 Wrote request (152 bytes) input to log/2/server.input 00:55:04.187600 Send response test183 section 00:55:04.187911 Response sent (79 bytes) and written to log/2/server.response 00:55:04.187980 => persistent connection request ended, awaits new request 00:55:06.848564 Read 146 bytes 00:55:06.848766 Process 146 bytes request 00:55:06.848865 Got request: GET http://a.galaxy.far.far.away/183 HTTP/1.1 00:55:06.848938 Serve test number 183 part 0 00:55:06.849117 - request found to be complete (183) 00:55:06.849326 Wrote request (146 bytes) input to log/2/server.input 00:55:06.849411 Send response test183 section 00:55:06.849724 Response sent (79 bytes) and written to log/2/server.response 00:55:06.849791 => persistent connection request ended, awaits new request 00:55:07.305643 Connection closed by client 00:55:07.305834 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 37872 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 183 === End of file server.cmd === Start of file server.input GET http://deathstar.another.galaxy/183 HTTP/1.1 Host: deathstar.another.galaxy User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://a.galaxy.far.far.away/183 HTTP/1.1 Host: a.galaxy.far.far.away User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 4 moo HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 4 moo === End of file server.response === Start of file stderr183 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 4 100 4 0 0 7 0 --:--:-- --:--:-- --:--:-- 25 === End of file stderr183 === Start of file stdout183 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 4 moo === End of file stdout183 === Start of file trace183 00:55:02.159343 * Trying 127.0.0.1:39863... 00:55:03.062131 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 56588 00:55:03.185379 * using HTTP/1.x 00:55:03.609046 => Send header, 152 bytes (0x98) 0000: GET http://deathstar.another.galaxy/183 HTTP/1.1 0032: Host: deathstar.another.galaxy 0052: User-Agent: curl/8.17.0 006b: Accept: */* 0078: Proxy-Connection: Keep-Alive 0096: 00:55:03.968795 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:55:04.279496 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:55:04.395407 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 4 00:55:04.492230 <= Recv header, 2 bytes (0x2) 0000: 00:55:04.550483 <= Recv data, 4 bytes (0x4) 0000: moo. 00:55:05.096568 * Connection #0 to host 127.0.0.1:39863 left intact 00:55:06.141089 * Reusing existing http: connection with proxy 127.0.0.1 00:55:06.235212 => Send header, 146 bytes (0x92) 0000: GET http://a.galaxy.far.far.away/183 HTTP/1.1 002f: Host: a.galaxy.far.far.away 004c: User-Agent: curl/8.17.0 0065: Accept: */* 0072: Proxy-Connection: Keep-Alive 0090: 00:55:06.273951 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:55:06.285609 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:55:06.295851 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 4 00:55:06.304586 <= Recv header, 2 bytes (0x2) 0000: 00:55:06.309748 <= Recv data, 4 bytes (0x4) 0000: moo. 00:55:06.362387 * Connection #0 to host 127.0.0.1:39863 left intact === End of file trace183 === Start of file valgrind183 ==215541== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind183 test 0184...[HTTP replace Host: when following Location: to new host] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind184 ../src/curl -q --output log/1/curl184.out --include --trace-ascii log/1/trace184 --trace-time http://deathstar.another.galaxy/184 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:40641 > log/1/stdout184 2> log/1/stderr184 valgrind ERROR ==215727== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 184 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind184 ../src/curl -q --output log/1/curl184.out --include --trace-ascii log/1/trace184 --trace-time http://deathstar.another.galaxy/184 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:40641 > log/1/stdout184 2> log/1/stderr184 === End of file commands.log === Start of file curl184.out HTTP/1.1 301 OK swsbounce Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 4 Location: http://yet.another.host/184 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 4 moo === End of file curl184.out === Start of file http_server.log 00:54:16.944155 ====> Client connect 00:54:16.944335 accept_connection 3 returned 4 00:54:16.944421 accept_connection 3 returned 0 00:54:16.952CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind185 ../src/curl -q --output log/5/curl185.out --include --trace-ascii log/5/trace185 --trace-time http://deathstar.another.galaxy/185 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:46263 > log/5/stdout185 2> log/5/stderr185 457 Read 93 bytes 00:54:16.952553 Process 93 bytes request 00:54:16.952653 Got request: GET /verifiedserver HTTP/1.1 00:54:16.952728 Are-we-friendly question received 00:54:16.952850 Wrote request (93 bytes) input to log/1/server.input 00:54:16.953001 Identifying ourselves as friends 00:54:16.953177 Response sent (57 bytes) and written to log/1/server.response 00:54:16.953247 special request received, no persistency 00:54:16.953311 ====> Client disconnect 0 00:55:04.897754 ====> Client connect 00:55:04.897904 accept_connection 3 returned 4 00:55:04.897986 accept_connection 3 returned 0 00:55:06.072661 Read 174 bytes 00:55:06.072858 Process 174 bytes request 00:55:06.072948 Got request: GET http://deathstar.another.galaxy/184 HTTP/1.1 00:55:06.073017 Serve test number 184 part 0 00:55:06.073205 - request found to be complete (184) 00:55:06.073462 Wrote request (174 bytes) input to log/1/server.input 00:55:06.073566 Send response test184 section 00:55:06.073777 enable "swsbounce" in the next request 00:55:06.073925 Response sent (128 bytes) and written to log/1/server.response 00:55:06.073988 => persistent connection request ended, awaits new request 00:55:08.124469 Read 136 bytes 00:55:08.124666 Process 136 bytes request 00:55:08.124756 Got request: GET http://yet.another.host/184 HTTP/1.1 00:55:08.124824 Serve test number 184 part 0 00:55:08.125015 - request found to be complete (184) 00:55:08.125221 Wrote request (136 bytes) input to log/1/server.input 00:55:08.125330 BOUNCE part number to 1 00:55:08.125411 Send response test184 section 00:55:08.125726 Response sent (79 bytes) and written to log/1/server.response 00:55:08.125790 => persistent connection request ended, awaits new request 00:55:09.050369 Connection closed by client 00:55:09.050552 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 53462 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 184 === End of file server.cmd === Start of file server.input GET http://deathstar.another.galaxy/184 HTTP/1.1 Host: another.visitor.stay.a.while.stay.foreeeeeever User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://yet.another.host/184 HTTP/1.1 Host: yet.another.host User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 301 OK swsbounce Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 4 Location: http://yet.another.host/184 moo HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 4 moo === End of file server.response === Start of file stderr184 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:05 --:--:-- 18 === End of file stderr184 === Start of file trace184 00:55:03.949877 * Trying 127.0.0.1:40641... 00:55:04.860374 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 59402 00:55:04.978871 * using HTTP/1.x 00:55:05.502051 => Send header, 174 bytes (0xae) 0000: GET http://deathstar.another.galaxy/184 HTTP/1.1 0032: Host: another.visitor.stay.a.while.stay.foreeeeeever 0068: User-Agent: curl/8.17.0 0081: Accept: */* 008e: Proxy-Connection: Keep-Alive 00ac: 00:55:05.851697 <= Recv header, 27 bytes (0x1b) 0000: HTTP/1.1 301 OK swsbounce 00:55:06.147113 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:55:06.258962 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 4 00:55:06.333193 <= Recv header, 39 bytes (0x27) 0000: Location: http://yet.another.host/184 00:55:06.405312 * Ignoring the response-body 00:55:06.421942 * setting size while ignoring 00:55:06.436299 <= Recv header, 2 bytes (0x2) 0000: 00:55:06.922284 * Connection #0 to host 127.0.0.1:40641 left intact 00:55:07.031378 * Issue another request to this URL: 'http://yet.another.host/184' 00:55:07.424933 * Reusing existing http: connection with proxy 127.0.0.1 00:55:07.510966 => Send header, 136 bytes (0x88) 0000: GET http://yet.another.host/184 HTTP/1.1 002a: Host: yet.another.host 0042: User-Agent: curl/8.17.0 005b: Accept: */* 0068: Proxy-Connection: Keep-Alive 0086: 00:55:07.552789 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:55:07.559524 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:55:07.567936 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 4 00:55:07.581068 <= Recv header, 2 bytes (0x2) 0000: 00:55:07.592203 <= Recv data, 4 bytes (0x4) 0000: moo. 00:55:07.695336 * Connection #0 to host 127.0.0.1:40641 left intact === End of file trace184 === Start of file valgrind184 ==215727== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind184 test 0185...[HTTP replace Host: when following Location: on the same host] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind185 ../src/curl -q --output log/5/curl185.out --include --trace-ascii log/5/trace185 --trace-time http://deathstar.another.galaxy/185 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:46263 > log/5/stdout185 2> log/5/stderr185 valgrind ERROR ==215752== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 185 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind185 ../src/curl -q --output log/5/curl185.out --include --trace-ascii log/5/trace185 --trace-time http://deathstar.another.galaxy/185 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:46263 > log/5/stdout185 2> log/5/stderr185 === End of file commands.log === Start of file curl185.out HTTP/1.1 301 OK swsbounce Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 4 Location: go/west/185 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 4 moo === End of file curl185.out === Start of file http_server.log 00:54:16.382485 ====> Client connect 00:54:16.382649 accept_connection 3 returned 4 00:54:16.382719 accept_connection 3 returned 0 00:54:16.390810 Read 93 bytes 00:54:16.390937 Process 93 bytes request 00:54:16.391030 Got request: GET /verifiedserver HTTP/1.1 00:54:16.391106 Are-we-friendly question received 00:54:16.391225 Wrote request (93 bytes) input to log/5/server.input 00:54:16.391318 Identifying ourselves as friends 00:54:16.391532 Response sent (57 bytes) and written to log/5/server.response 00:54:16.391593 special request received, no persistency 00:54:16.391646 ====> Client disconnect 0 00:55:04.237109 ====> Client connect 00:55:04.237260 accept_connection 3 returned 4 00:55:04.237341 accept_connection 3 returned 0 00:55:05.425012 Read 174 bytes 00:55:05.425225 Process 174 bytes request 00:55:05.425316 Got request: GET http://deathstarCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind186 ../src/curl -q --output log/3/curl186.out --include --trace-ascii log/3/trace186 --trace-time http://127.0.0.1:46853/we/want/186 -F "name=daniel;type=moo/foo-.4" -F "html= hello;type=text/html;charset=verymoo" > log/3/stdout186 2> log/3/stderr186 .another.galaxy/185 HTTP/1.1 00:55:05.425385 Serve test number 185 part 0 00:55:05.425597 - request found to be complete (185) 00:55:05.425872 Wrote request (174 bytes) input to log/5/server.input 00:55:05.425979 Send response test185 section 00:55:05.426196 enable "swsbounce" in the next request 00:55:05.426375 Response sent (112 bytes) and written to log/5/server.response 00:55:05.426441 => persistent connection request ended, awaits new request 00:55:07.677587 Read 182 bytes 00:55:07.677796 Process 182 bytes request 00:55:07.677919 Got request: GET http://deathstar.another.galaxy/go/west/185 HTTP/1.1 00:55:07.677997 Serve test number 185 part 0 00:55:07.678201 - request found to be complete (185) 00:55:07.678424 Wrote request (182 bytes) input to log/5/server.input 00:55:07.678504 BOUNCE part number to 1 00:55:07.678575 Send response test185 section 00:55:07.678938 Response sent (79 bytes) and written to log/5/server.response 00:55:07.679013 => persistent connection request ended, awaits new request 00:55:08.717240 Connection closed by client 00:55:08.717438 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 33778 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 185 === End of file server.cmd === Start of file server.input GET http://deathstar.another.galaxy/185 HTTP/1.1 Host: another.visitor.stay.a.while.stay.foreeeeeever User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://deathstar.another.galaxy/go/west/185 HTTP/1.1 Host: another.visitor.stay.a.while.stay.foreeeeeever User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 301 OK swsbounce Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 4 Location: go/west/185 moo HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 4 moo === End of file server.response === Start of file stderr185 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:06 --:--:-- 16 === End of file stderr185 === Start of file trace185 00:55:04.294552 * Trying 127.0.0.1:46263... 00:55:05.196854 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 48426 00:55:05.318664 * using HTTP/1.x 00:55:05.847435 => Send header, 174 bytes (0xae) 0000: GET http://deathstar.another.galaxy/185 HTTP/1.1 0032: Host: another.visitor.stay.a.while.stay.foreeeeeever 0068: User-Agent: curl/8.17.0 0081: Accept: */* 008e: Proxy-Connection: Keep-Alive 00ac: 00:55:06.208205 <= Recv header, 27 bytes (0x1b) 0000: HTTP/1.1 301 OK swsbounce 00:55:06.523165 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:55:06.634148 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 4 00:55:06.712483 <= Recv header, 23 bytes (0x17) 0000: Location: go/west/185 00:55:06.786750 * Ignoring the response-body 00:55:06.803825 * setting size while ignoring 00:55:06.818536 <= Recv header, 2 bytes (0x2) 0000: 00:55:07.339524 * Connection #0 to host 127.0.0.1:46263 left intact 00:55:07.548931 * Issue another request to this URL: 'http://deathstar.another.galaxy/go/west/185' 00:55:07.974542 * Reusing existing http: connection with proxy 127.0.0.1 00:55:08.062833 => Send header, 182 bytes (0xb6) 0000: GET http://deathstar.another.galaxy/go/west/185 HTTP/1.1 003a: Host: another.visitor.stay.a.while.stay.foreeeeeever 0070: User-Agent: curl/8.17.0 0089: Accept: */* 0096: Proxy-Connection: Keep-Alive 00b4: 00:55:08.113774 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:55:08.121846 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 00:55:08.131449 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 4 00:55:08.145423 <= Recv header, 2 bytes (0x2) 0000: 00:55:08.157421 <= Recv data, 4 bytes (0x4) 0000: moo. 00:55:08.272183 * Connection #0 to host 127.0.0.1:46263 left intact === End of file trace185 === Start of file valgrind185 ==215752== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind185 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 192 in state 4 Runner 2 (id 185908) running test 191 in state 4 Runner 3 (id 185910) running test 186 in state 4 Runner 4 (id 185912) running test 188 in state 4 Runner 5 (id 185914) running test 193 in state 4 Runner 6 (id 185916) running test 187 in state 4 Runner 7 (id 185918) running test 189 in state 4 Runner 8 (id 185920) running test 190 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 192 in state 4 Runner 2 (id 185908) running test 191 in state 4 Runner 3 (id 185910) running test 186 in state 4 Runner 4 (id 185912) running test 188 in state 4 Runner 5 (id 185914) running test 193 in state 4 Runner 6 (id 185916) running test 187 in state 4 Runner 7 (id 185918) running test 189 in state 4 Runner 8 (id 185920) running test 190 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 192 in state 4 Runner 2 (id 185908) running test 191 in state 4 Runner 3 (id 185910) running test 186 in state 4 Runner 4 (id 185912) running test 188 in state 4 Runner 5 (id 185914) running test 193 in state 4 Runner 6 (id 185916) running test 187 in state 4 Runner 7 (id 185918) running test 189 in state 4 Runner 8 (id 185920) running test 190 in state 4 test 0186...[HTTP RFC1867-type formposting with types on text fields] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind186 ../src/curl -q --output log/3/curl186.out --include --trace-ascii log/3/trace186 --trace-time http://127.0.0.1:46853/we/want/186 -F "name=daniel;type=moo/foo-.4" -F "html= hello;type=text/html;charset=verymoo" > log/3/stdout186 2> log/3/stderr186 valgrind ERROR ==216072== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 186 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind186 ../src/curl -q --output log/3/curl186.out --include --trace-ascii log/3/trace186 --trace-time http://127.0.0.1:46853/we/want/186 -F "name=daniel;type=moo/foo-.4" -F "html= hello;type=text/html;charset=verymoo" > log/3/stdout186 2> log/3/stderr186 === End of file commands.log === Start of file curl186.out HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 11 blablabla === End of file curl186.out === Start of file http_server.log 00:54:44.5CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind187 ../src/curl -q --output log/6/curl187.out --include --trace-ascii log/6/trace187 --trace-time http://127.0.0.1:38277?oh=what-weird=test/187 -L > log/6/stdout187 2> log/6/stderr187 24945 ====> Client connect 00:54:44.525098 accept_connection 3 returned 4 00:54:44.525174 accept_connection 3 returned 0 00:54:44.532635 Read 93 bytes 00:54:44.532792 Process 93 bytes request 00:54:44.532887 Got request: GET /verifiedserver HTTP/1.1 00:54:44.532952 Are-we-friendly question received 00:54:44.533079 Wrote request (93 bytes) input to log/3/server.input 00:54:44.533181 Identifying ourselves as friends 00:54:44.533347 Response sent (57 bytes) and written to log/3/server.response 00:54:44.533411 special request received, no persistency 00:54:44.533466 ====> Client disconnect 0 00:55:38.126911 ====> Client connect 00:55:38.127047 accept_connection 3 returned 4 00:55:38.127127 accept_connection 3 returned 0 00:55:39.575787 Read 545 bytes 00:55:39.575994 Process 545 bytes request 00:55:39.576088 Got request: POST /we/want/186 HTTP/1.1 00:55:39.576157 Serve test number 186 part 0 00:55:39.576374 - request found to be complete (186) 00:55:39.576542 Found Content-Length: 341 in the request 00:55:39.576810 Wrote request (545 bytes) input to log/3/server.input 00:55:39.576916 Send response test186 section 00:55:39.577131 connection close instruction "swsclose" found in response 00:55:39.577282 Response sent (117 bytes) and written to log/3/server.response 00:55:39.577349 instructed to close connection after server-reply 00:55:39.577419 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 56266 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 186 === End of file server.cmd === Start of file server.input POST /we/want/186 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* Content-Length: 341 Content-Type: multipart/form-data; boundary=------------------------xRpl8c4CYTVShkgt9q2tpq --------------------------xRpl8c4CYTVShkgt9q2tpq Content-Disposition: form-data; name="name" Content-Type: moo/foo-.4 daniel --------------------------xRpl8c4CYTVShkgt9q2tpq Content-Disposition: form-data; name="html" Content-Type: text/html;charset=verymoo hello --------------------------xRpl8c4CYTVShkgt9q2tpq-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 11 blablabla === End of file server.response === Start of file stderr186 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 341 0 0 100 341 0 86 0:00:03 0:00:03 --:--:-- 126 100 352 100 11 100 341 2 70 0:00:05 0:00:04 0:00:01 97 100 352 100 11 100 341 2 68 0:00:05 0:00:04 0:00:01 94 === End of file stderr186 === Start of file trace186 00:55:38.195909 * Trying 127.0.0.1:46853... 00:55:39.070461 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 45344 00:55:39.191862 * using HTTP/1.x 00:55:39.998978 => Send header, 204 bytes (0xcc) 0000: POST /we/want/186 HTTP/1.1 001c: Host: 127.0.0.1:46853 0033: User-Agent: curl/8.17.0 004c: Accept: */* 0059: Content-Length: 341 006e: Content-Type: multipart/form-data; boundary=-------------------- 00ae: ----xRpl8c4CYTVShkgt9q2tpq 00ca: 00:55:40.115713 => Send data, 341 bytes (0x155) 0000: --------------------------xRpl8c4CYTVShkgt9q2tpq 0032: Content-Disposition: form-data; name="name" 005f: Content-Type: moo/foo-.4 0079: 007b: daniel 0083: --------------------------xRpl8c4CYTVShkgt9q2tpq 00b5: Content-Disposition: form-data; name="html" 00e2: Content-Type: text/html;charset=verymoo 010b: 010d: hello 0121: --------------------------xRpl8c4CYTVShkgt9q2tpq-- 00:55:40.227808 * upload completely sent off: 341 bytes 00:55:40.508740 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 00:55:40.812852 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:55:40.906726 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:55:40.946198 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 11. 00:55:41.022962 <= Recv header, 1 bytes (0x1) 0000: . 00:55:41.082918 <= Recv data, 11 bytes (0xb) 0000: blablabla.. 00:55:41.567090 * Connection #0 to host 127.0.0.1:46853 left intact === End of file trace186 === Start of file valgrind186 ==216072== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind186 test 0187...[HTTP redirect with bad host name separation and slash in parameters] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind187 ../src/curl -q --output log/6/curl187.out --include --trace-ascii log/6/trace187 --trace-time http://127.0.0.1:38277?oh=what-weird=test/187 -L > log/6/stdout187 2> log/6/stderr187 valgrind ERROR ==216266== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 187 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind187 ../src/curl -q --output log/6/curl187.out --include --trace-ascii log/6/trace187 --trace-time http://127.0.0.1:38277?oh=what-weird=test/187 -L > log/6/stdout187 2> log/6/stderr187 === End of file commands.log === Start of file curl187.out HTTP/1.1 301 This is a weirdo text message Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: /root/1870002.txt?coolsite=yes Connection: close HTTP/1.1 200 Followed here fine swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 52 If this is received, the location following worked === End of file curl187.out === Start of file http_server.log 00:54:50.995821 ====> Client connect 00:54:50.995973 accept_connection 3 returned 4 00:54:50.996048 accept_connection 3 returned 0 00:54:51.002927 Read 93 bytes 00:54:51.003050 Process 93 bytes request 00:54:51.003131 Got request: GET /verifiedserver HTTP/1.1 00:54:51.003194 Are-we-friendly question received 00:54:51.003312 Wrote request (93 bytes) input to log/6/server.input 00:54:51.003403 Identifying ourselves as friends 00:54:51.003565 Response sent (57 bytes) and written to log/6/server.response 00:54:51.003623 special request received, no persistency 00:54:51.003677 ====> Client disconnect 0 00:55:39.052492 ====> Client connect 00:55:39.052637 accept_connection 3 returned 4 00:55:39.052719 accept_connection 3 returned 0 00:55:40.089781 Read 102 bytes 00:55:40.089982 Process 102 bytes request 00:55:40.090074 Got request: GET /?oh=what-weird=test/187 HTTP/1.1 00:55:40.090143 Serve test number 187 part 0 00:55:40.090330 - request found to be complete (187) 00:55:40.090596 Wrote request (102 bytes) input to log/6/server.input 00:55:40.090706 Send response test187 section 00:55:40.091117 Response sent (227 bytes) and written to log/6/server.response 00:55:40.091185 => persistent connection request ended, awaits new request 00:55:41.817149 Connection closed by client 00:55:41.817367 ====> Client disconnect 0 00:55:42.485527 ====> Client connect 00:55:42.485660 accept_connection 3 returned 4 00:55:42.485730 accept_connection 3 returned 0 00:55:42.547478 Read 108 bytes 00:55:42.547640 Process 108 bytes request 00:55:42.5CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind188 ../src/curl -q --output log/4/curl188.out --include --trace-ascii log/4/trace188 --trace-time http://127.0.0.1:42621/188 -C 50 -L > log/4/stdout188 2> log/4/stderr188 47725 Got request: GET /root/1870002.txt?coolsite=yes HTTP/1.1 00:55:42.547792 Serve test number 187 part 2 00:55:42.547956 - request found to be complete (187) 00:55:42.548140 Wrote request (108 bytes) input to log/6/server.input 00:55:42.548222 Send response test187 section 00:55:42.548418 connection close instruction "swsclose" found in response 00:55:42.548607 Response sent (174 bytes) and written to log/6/server.response 00:55:42.548666 instructed to close connection after server-reply 00:55:42.548719 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 59188 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 187 === End of file server.cmd === Start of file server.input GET /?oh=what-weird=test/187 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* GET /root/1870002.txt?coolsite=yes HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 301 This is a weirdo text message Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: /root/1870002.txt?coolsite=yes Connection: close This server reply is for testing a simple Location: following HTTP/1.1 200 Followed here fine swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 52 If this is received, the location following worked === End of file server.response === Start of file stderr187 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 52 100 52 0 0 8 0 0:00:06 0:00:06 --:--:-- 124 === End of file stderr187 === Start of file trace187 00:55:39.094298 * Trying 127.0.0.1:38277... 00:55:40.009599 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 36890 00:55:40.136095 * using HTTP/1.x 00:55:40.511361 => Send header, 102 bytes (0x66) 0000: GET /?oh=what-weird=test/187 HTTP/1.1 0027: Host: 127.0.0.1:38277 003e: User-Agent: curl/8.17.0 0057: Accept: */* 0064: 00:55:40.860210 <= Recv header, 43 bytes (0x2b) 0000: HTTP/1.1 301 This is a weirdo text message. 00:55:41.167484 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:55:41.273952 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:55:41.359198 <= Recv header, 41 bytes (0x29) 0000: Location: /root/1870002.txt?coolsite=yes. 00:55:41.433846 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:55:41.513965 <= Recv header, 1 bytes (0x1) 0000: . 00:55:41.744571 * Request completely sent off 00:55:41.996422 * shutting down connection #0 00:55:42.611979 * Issue another request to this URL: 'http://127.0.0.1:38277/root/1870002.txt?coolsite=yes' 00:55:42.811351 * Hostname 127.0.0.1 was found in DNS cache 00:55:42.862567 * Trying 127.0.0.1:38277... 00:55:42.900394 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 44274 00:55:42.907071 * using HTTP/1.x 00:55:42.933089 => Send header, 108 bytes (0x6c) 0000: GET /root/1870002.txt?coolsite=yes HTTP/1.1 002d: Host: 127.0.0.1:38277 0044: User-Agent: curl/8.17.0 005d: Accept: */* 006a: 00:55:42.971639 <= Recv header, 41 bytes (0x29) 0000: HTTP/1.1 200 Followed here fine swsclose. 00:55:42.980311 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:55:42.988647 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:55:43.019225 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 52. 00:55:43.046808 <= Recv header, 1 bytes (0x1) 0000: . 00:55:43.070030 <= Recv data, 52 bytes (0x34) 0000: If this is received, the location following worked.. 00:55:43.326113 * Connection #1 to host 127.0.0.1:38277 left intact === End of file trace187 === Start of file valgrind187 ==216266== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind187 test 0188...[HTTP GET with resume and redirect] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind188 ../src/curl -q --output log/4/curl188.out --include --trace-ascii log/4/trace188 --trace-time http://127.0.0.1:42621/188 -C 50 -L > log/4/stdout188 2> log/4/stderr188 valgrind ERROR ==216356== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 188 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind188 ../src/curl -q --output log/4/curl188.out --include --trace-ascii log/4/trace188 --trace-time http://127.0.0.1:42621/188 -C 50 -L > log/4/stdout188 2> log/4/stderr188 === End of file commands.log === Start of file curl188.out HTTP/1.1 301 OK swsbounce Location: /188 Content-Length: 3 HTTP/1.1 200 OK Connection: close Content-Length: 15 Content-Range: bytes 50- Actual content === End of file curl188.out === Start of file http_server.log 00:54:52.969184 ====> Client connect 00:54:52.969357 accept_connection 3 returned 4 00:54:52.969433 accept_connection 3 returned 0 00:54:52.976283 Read 93 bytes 00:54:52.976430 Process 93 bytes request 00:54:52.976523 Got request: GET /verifiedserver HTTP/1.1 00:54:52.976591 Are-we-friendly question received 00:54:52.976718 Wrote request (93 bytes) input to log/4/server.input 00:54:52.976813 Identifying ourselves as friends 00:54:52.976998 Response sent (57 bytes) and written to log/4/server.response 00:54:52.977064 special request received, no persistency 00:54:52.977124 ====> Client disconnect 0 00:55:40.367257 ====> Client connect 00:55:40.367394 accept_connection 3 returned 4 00:55:40.367489 accept_connection 3 returned 0 00:55:41.359382 Read 100 bytes 00:55:41.359595 Process 100 bytes request 00:55:41.359696 Got request: GET /188 HTTP/1.1 00:55:41.359771 Serve test number 188 part 0 00:55:41.359969 - request found to be complete (188) 00:55:41.360235 Wrote request (100 bytes) input to log/4/server.input 00:55:41.360348 Send response test188 section 00:55:41.360612 enable "swsbounce" in the next request 00:55:41.360804 Response sent (63 bytes) and written to log/4/server.response 00:55:41.360875 => persistent connection request ended, awaits new request 00:55:43.529147 Read 100 bytes 00:55:43.529362 Process 100 bytes request 00:55:43.529462 Got request: GET /188 HTTP/1.1 00:55:43.529531 Serve test number 188 part 0 00:55:43.529709 - request found to be complete (188) 00:55:43.529911 Wrote request (100 bytes) input to log/4/server.input 00:55:43.530038 BOUNCE part number to 1 00:55:43.530121 Send response test188 section 00:55:43.530457 Response sent (95 bytes) and written to log/4/server.response 00:55:43.530524 => persistent connection request ended, awaits new request 00:55:44.102774 Connection closed by client 00:55:44.102951 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 portCMD (8448): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind189 ../src/curl -q --output log/7/curl189.out --include --trace-ascii log/7/trace189 --trace-time http://127.0.0.1:34897/189 -C 50 -L > log/7/stdout189 2> log/7/stderr189 42621) from 127.0.0.1 port 51128 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 188 === End of file server.cmd === Start of file server.input GET /188 HTTP/1.1 Host: 127.0.0.1:42621 Range: bytes=50- User-Agent: curl/8.17.0 Accept: */* GET /188 HTTP/1.1 Host: 127.0.0.1:42621 Range: bytes=50- User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 301 OK swsbounce Location: /188 Content-Length: 3 OK HTTP/1.1 200 OK Connection: close Content-Length: 15 Content-Range: bytes 50- Actual content === End of file server.response === Start of file stderr188 ** Resuming transfer from byte position 50 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 3 0 3 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 3 0 3 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 15 100 15 0 0 2 0 0:00:07 0:00:05 0:00:02 48 === End of file stderr188 === Start of file trace188 00:55:39.440485 * Trying 127.0.0.1:42621... 00:55:40.314098 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 47170 00:55:40.432993 * using HTTP/1.x 00:55:40.780771 => Send header, 100 bytes (0x64) 0000: GET /188 HTTP/1.1 0013: Host: 127.0.0.1:42621 002a: Range: bytes=50- 003c: User-Agent: curl/8.17.0 0055: Accept: */* 0062: 00:55:41.125437 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 301 OK swsbounce. 00:55:41.489666 <= Recv header, 15 bytes (0xf) 0000: Location: /188. 00:55:41.595599 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 3. 00:55:41.679337 * Ignoring the response-body 00:55:41.699616 * setting size while ignoring 00:55:41.714361 <= Recv header, 1 bytes (0x1) 0000: . 00:55:42.228001 * Connection #0 to host 127.0.0.1:42621 left intact 00:55:42.426014 * Issue another request to this URL: 'http://127.0.0.1:42621/188' 00:55:42.842872 * Reusing existing http: connection with host 127.0.0.1 00:55:42.914266 => Send header, 100 bytes (0x64) 0000: GET /188 HTTP/1.1 0013: Host: 127.0.0.1:42621 002a: Range: bytes=50- 003c: User-Agent: curl/8.17.0 0055: Accept: */* 0062: 00:55:42.952100 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK . 00:55:42.996362 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:55:43.005281 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 15. 00:55:43.032194 <= Recv header, 25 bytes (0x19) 0000: Content-Range: bytes 50-. 00:55:43.049599 <= Recv header, 1 bytes (0x1) 0000: . 00:55:43.061379 <= Recv data, 15 bytes (0xf) 0000: Actual content. 00:55:43.125314 * we are done reading and this is set to close, stop send 00:55:43.144255 * abort upload 00:55:43.297620 * shutting down connection #0 === End of file trace188 === Start of file valgrind188 ==216356== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind188 test 0189...[HTTP GET with resume and redirect (to a page that doesn't resume)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind189 ../src/curl -q --output log/7/curl189.out --include --trace-ascii log/7/trace189 --trace-time http://127.0.0.1:34897/189 -C 50 -L > log/7/stdout189 2> log/7/stderr189 valgrind ERROR ==216546== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 189 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind189 ../src/curl -q --output log/7/curl189.out --include --trace-ascii log/7/trace189 --trace-time http://127.0.0.1:34897/189 -C 50 -L > log/7/stdout189 2> log/7/stderr189 === End of file commands.log === Start of file curl189.out HTTP/1.1 301 OK swsbounce Location: /189 Content-Length: 3 HTTP/1.1 200 OK Connection: close Content-Length: 15 === End of file curl189.out === Start of file http_server.log 00:54:57.229033 ====> Client connect 00:54:57.229192 accept_connection 3 returned 4 00:54:57.229271 accept_connection 3 returned 0 00:54:57.236692 Read 93 bytes 00:54:57.236816 Process 93 bytes request 00:54:57.236907 Got request: GET /verifiedserver HTTP/1.1 00:54:57.236974 Are-we-friendly question received 00:54:57.237096 Wrote request (93 bytes) input to log/7/server.input 00:54:57.237192 Identifying ourselves as friends 00:54:57.237354 Response sent (57 bytes) and written to log/7/server.response 00:54:57.237419 special request received, no persistency 00:54:57.237478 ====> Client disconnect 0 00:55:43.953196 ====> Client connect 00:55:43.953352 accept_connection 3 returned 4 00:55:43.953435 accept_connection 3 returned 0 00:55:44.983716 Read 100 bytes 00:55:44.983905 Process 100 bytes request 00:55:44.984002 Got request: GET /189 HTTP/1.1 00:55:44.984087 Serve test number 189 part 0 00:55:44.984280 - request found to be complete (189) 00:55:44.984537 Wrote request (100 bytes) input to log/7/server.input 00:55:44.984649 Send response test189 section 00:55:44.984901 enable "swsbounce" in the next request 00:55:44.985039 Response sent (63 bytes) and written to log/7/server.response 00:55:44.985110 => persistent connection request ended, awaits new request 00:55:47.433889 Read 100 bytes 00:55:47.454403 Process 100 bytes request 00:55:47.454589 Got request: GET /189 HTTP/1.1 00:55:47.454667 Serve test number 189 part 0 00:55:47.454877 - request found to be complete (189) 00:55:47.455110 Wrote request (100 bytes) input to log/7/server.input 00:55:47.455252 BOUNCE part number to 1 00:55:47.455341 Send response test189 section 00:55:47.455739 Response sent (70 bytes) and written to log/7/server.response 00:55:47.455813 => persistent connection request ended, awaits new request 00:55:47.897438 Connection closed by client 00:55:47.897685 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 56426 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 189 === End of file server.cmd === Start of file server.input GET /189 HTTP/1.1 Host: 127.0.0.1:34897 Range: bytes=50- User-Agent: curl/8.17.0 Accept: */* GET /189 HTTP/1.1 Host: 127.0.0.1:34897 Range: bytes=50- User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 301 OK swsbounce Location: /189 Content-Length: 3 OK HTTP/1.1 200 OK Connection: close Content-Length: 15 Actual content === End of file server.response === Start of file stderr189 ** Resuming transfer from byte position 50 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent CMD (7168): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind190 ../src/curl -q --output log/8/curl190.out --include --trace-ascii log/8/trace190 --trace-time ftp://127.0.0.1:43843/path/to/file/190 -m 10 > log/8/stdout190 2> log/8/stderr190 * kill pid for ftp-ctrl => 202653 RUN: Process with pid 202642 signalled to die RUN: Process with pid 202642 gracefully died Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 3 0 3 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 3 0 3 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 curl: (33) HTTP server does not seem to support byte ranges. Cannot resume. === End of file stderr189 === Start of file trace189 00:55:44.009018 * Trying 127.0.0.1:34897... 00:55:44.922487 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 39190 00:55:45.037141 * using HTTP/1.x 00:55:45.406595 => Send header, 100 bytes (0x64) 0000: GET /189 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: Range: bytes=50- 003c: User-Agent: curl/8.17.0 0055: Accept: */* 0062: 00:55:45.783536 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 301 OK swsbounce. 00:55:46.156110 <= Recv header, 15 bytes (0xf) 0000: Location: /189. 00:55:46.274708 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 3. 00:55:46.365530 * Ignoring the response-body 00:55:46.387448 * setting size while ignoring 00:55:46.402968 <= Recv header, 1 bytes (0x1) 0000: . 00:55:47.025758 * Connection #0 to host 127.0.0.1:34897 left intact 00:55:47.252597 * Issue another request to this URL: 'http://127.0.0.1:34897/189' 00:55:47.731791 * Reusing existing http: connection with host 127.0.0.1 00:55:47.819750 => Send header, 100 bytes (0x64) 0000: GET /189 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: Range: bytes=50- 003c: User-Agent: curl/8.17.0 0055: Accept: */* 0062: 00:55:47.868024 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK . 00:55:47.925888 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:55:47.936882 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 15. 00:55:47.995228 * HTTP server does not seem to support byte ranges. Cannot resume. 00:55:48.006340 <= Recv header, 1 bytes (0x1) 0000: . 00:55:48.170725 * closing connection #0 === End of file trace189 === Start of file valgrind189 ==216546== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind189 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 192 in state 4 Runner 2 (id 185908) running test 191 in state 4 Runner 3 (id 185910) running test 194 in state 4 Runner 4 (id 185912) running test 196 in state 4 Runner 5 (id 185914) running test 193 in state 4 Runner 6 (id 185916) running test 195 in state 4 Runner 7 (id 185918) running test 197 in state 4 Runner 8 (id 185920) running test 190 in state 4 test 0190...[FTP download with strict timeout and slow CWD] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind190 ../src/curl -q --output log/8/curl190.out --include --trace-ascii log/8/trace190 --trace-time ftp://127.0.0.1:43843/path/to/file/190 -m 10 > log/8/stdout190 2> log/8/stderr190 valgrind ERROR ==216708== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 190 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind190 ../src/curl -q --output log/8/curl190.out --include --trace-ascii log/8/trace190 --trace-time ftp://127.0.0.1:43843/path/to/file/190 -m 10 > log/8/stdout190 2> log/8/stderr190 === End of file commands.log === Start of file ftp_server.log 00:55:03.056449 ====> Client connect 00:55:03.057394 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:55:03.065870 < "USER anonymous" 00:55:03.066464 > "331 We are happy you popped in![CR][LF]" 00:55:03.067139 < "PASS ftp@example.com" 00:55:03.070990 > "230 Welcome you silly person[CR][LF]" 00:55:03.071890 < "PWD" 00:55:03.072144 > "257 "/" is current directory[CR][LF]" 00:55:03.074279 < "EPSV" 00:55:03.074470 ====> Passive DATA channel requested by client 00:55:03.074604 DATA sockfilt for passive data channel starting... 00:55:03.116278 DATA sockfilt for passive data channel started (pid 216699) 00:55:03.117498 DATA sockfilt for passive data channel listens on port 45187 00:55:03.117946 > "229 Entering Passive Mode (|||45187|)[CR][LF]" 00:55:03.118120 Client has been notified that DATA conn will be accepted on port 45187 00:55:03.120849 Client connects to port 45187 00:55:03.121089 ====> Client established passive DATA connection on port 45187 00:55:03.121745 < "TYPE I" 00:55:03.122837 > "200 I modify TYPE as you wanted[CR][LF]" 00:55:03.123354 < "SIZE verifiedserver" 00:55:03.124488 > "213 18[CR][LF]" 00:55:03.125012 < "RETR verifiedserver" 00:55:03.127417 > "150 Binary junk (18 bytes).[CR][LF]" 00:55:03.127991 =====> Closing passive DATA connection... 00:55:03.128156 Server disconnects passive DATA connection 00:55:03.129531 Server disconnected passive DATA connection 00:55:03.129705 DATA sockfilt for passive data channel quits (pid 216699) 00:55:03.132840 DATA sockfilt for passive data channel quit (pid 216699) 00:55:03.133013 =====> Closed passive DATA connection 00:55:03.133274 > "226 File transfer complete[CR][LF]" 00:55:03.187105 < "QUIT" 00:55:03.187534 > "221 bye bye baby[CR][LF]" 00:55:03.190958 MAIN sockfilt said DISC 00:55:03.191164 ====> Client disconnected 00:55:03.191442 Awaiting input 00:55:50.701065 ====> Client connect 00:55:50.701814 FTPD: Getting commands from log/8/server.cmd 00:55:50.702188 FTPD: delay reply for CWD with 60 seconds 00:55:50.702462 FTPD: run test case number: 190 00:55:50.703421 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:55:52.135240 < "USER anonymous" 00:55:52.135871 > "331 We are happy you popped in![CR][LF]" 00:55:52.255850 < "PASS ftp@example.com" 00:55:52.256372 > "230 Welcome you silly person[CR][LF]" 00:55:52.352690 < "PWD" 00:55:52.353286 > "257 "/" is current directory[CR][LF]" 00:55:52.555148 < "CWD path" 00:55:52.555449 Sleep for 60 seconds === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:55:02.672638 ====> Client connect 00:55:02.677491 Received DATA (on stdin) 00:55:02.677589 > 160 bytes data, server => client 00:55:02.677689 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:55:02.677782 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:55:02.677864 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:55:02.681566 < 16 bytes data, client => server 00:55:02.681652 'USER anonymous\r\n' 00:55:02.682702 Received DATA (on stdin) 00:55:02.682769 > 33 bytes data, server => client 00:55:02.682869 '331 We are happy you popped in!\r\n' 00:55:02.683123 < 22 bytes data, client => server 00:55:02.683196 'PASS ftp@example.com\r\n' 00:55:02.683899 Received DATA (on stdin) 00:55:02.683964 > 30 bytes data, server => client 00:55:02.687760 '230 Welcome you silly person\r\n' 00:55:02.688000 < 5 bytes data, client => server 00:55:02.688061 'PWD\r\n' 00:55:02.688874 Received DATA (on stdin) 00:55:02.688935 > 30 bytes data, server => client 00:55:02.689009 '257 "/" is current directory\r\n' 00:55:02.690401 < 6 bytes data, client => server 00:55:02.690462 'EPSV\r\n' 00:55:02.734368 Received DATA (on stdin) 00:55:02.734525 > 39 bytes data, server => client 00:55:02.734616 '229 Entering Passive Mode (|||45187|)\r\n' 00:55:02.737036 < 8 bytes data, client => server 00:55:02.737105 'TYPE I\r\n' 00:55:02.738534 Received DATA (on stdCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind191 ../src/curl -q --output log/2/curl191.out --include --trace-ascii log/2/trace191 --trace-time "ftp://use%3fr:pass%3fword@127.0.0.1:39881/191" > log/2/stdout191 2> log/2/stderr191 in) 00:55:02.738610 > 33 bytes data, server => client 00:55:02.738716 '200 I modify TYPE as you wanted\r\n' 00:55:02.739088 < 21 bytes data, client => server 00:55:02.739164 'SIZE verifiedserver\r\n' 00:55:02.740185 Received DATA (on stdin) 00:55:02.740251 > 8 bytes data, server => client 00:55:02.740338 '213 18\r\n' 00:55:02.740769 < 21 bytes data, client => server 00:55:02.740859 'RETR verifiedserver\r\n' 00:55:02.741827 Received DATA (on stdin) 00:55:02.741893 > 29 bytes data, server => client 00:55:02.741992 '150 Binary junk (18 bytes).\r\n' 00:55:02.750825 Received DATA (on stdin) 00:55:02.750919 > 28 bytes data, server => client 00:55:02.751001 '226 File transfer complete\r\n' 00:55:02.802509 < 6 bytes data, client => server 00:55:02.802691 'QUIT\r\n' 00:55:02.804168 Received DATA (on stdin) 00:55:02.804255 > 18 bytes data, server => client 00:55:02.804331 '221 bye bye baby\r\n' 00:55:02.804960 ====> Client disconnect 00:55:02.807717 Received ACKD (on stdin) 00:55:50.317216 ====> Client connect 00:55:50.319769 Received DATA (on stdin) 00:55:50.319882 > 160 bytes data, server => client 00:55:50.319989 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:55:50.320087 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:55:50.320174 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:55:51.748820 < 16 bytes data, client => server 00:55:51.748997 'USER anonymous\r\n' 00:55:51.752092 Received DATA (on stdin) 00:55:51.752182 > 33 bytes data, server => client 00:55:51.752582 '331 We are happy you popped in!\r\n' 00:55:51.871011 < 22 bytes data, client => server 00:55:51.871222 'PASS ftp@example.com\r\n' 00:55:51.874218 Received DATA (on stdin) 00:55:51.874319 > 30 bytes data, server => client 00:55:51.874423 '230 Welcome you silly person\r\n' 00:55:51.967449 < 5 bytes data, client => server 00:55:51.967627 'PWD\r\n' 00:55:51.969690 Received DATA (on stdin) 00:55:51.969787 > 30 bytes data, server => client 00:55:51.969889 '257 "/" is current directory\r\n' 00:55:52.168766 < 10 bytes data, client => server 00:55:52.168959 'CWD path\r\n' 00:55:58.480069 ====> Client disconnect === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:55:03.722940 Running IPv4 version 00:55:03.731074 Listening on port 45187 00:55:03.731536 Wrote pid 216699 to log/8/server/ftp_sockdata.pid 00:55:03.732291 Received PING (on stdin) 00:55:03.733347 Received PORT (on stdin) 00:55:03.737236 ====> Client connect 00:55:03.744890 Received DATA (on stdin) 00:55:03.745177 > 18 bytes data, server => client 00:55:03.745539 'WE ROOLZ: 202642\r\n' 00:55:03.745775 Received DISC (on stdin) 00:55:03.745889 ====> Client forcibly disconnected 00:55:03.746427 Received QUIT (on stdin) 00:55:03.746500 quits 00:55:03.746996 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd DELAY CWD 60 Testnum 190 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD path === End of file server.input === Start of file stderr190 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:07 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:08 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:09 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:10 --:--:-- 0 curl: (28) Operation timed out after 10018 milliseconds with 0 bytes received === End of file stderr190 === Start of file trace190 00:55:50.365114 * Trying 127.0.0.1:43843... 00:55:51.327711 * Established connection to 127.0.0.1 (127.0.0.1 port 43843) from 127.0.0.1 port 46090 00:55:51.595069 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:55:51.999368 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:55:52.028253 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:55:52.039154 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:55:52.044917 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:55:52.152944 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:55:52.232109 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:55:52.256003 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:55:52.328822 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:55:52.349321 => Send header, 5 bytes (0x5) 0000: PWD 00:55:52.365506 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:55:52.403363 * Entry path is '/' 00:55:52.552388 => Send header, 10 bytes (0xa) 0000: CWD path 00:55:58.399667 * Operation timed out after 10018 milliseconds with 0 bytes received 00:55:58.745067 * closing connection #0 === End of file trace190 === Start of file valgrind190 ==216708== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind190 test 0191...[FTP URL with ?-letters in username and password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind191 ../src/curl -q --output log/2/curl191.out --include --trace-ascii log/2/trace191 --trace-time "ftp://use%3fr:pass%3fword@127.0.0.1:39881/191" > log/2/stdout191 2> log/2/stderr191 valgrind ERROR ==216876== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 191 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind191 ../src/curl -q --output log/2/curl191.out --include --trace-ascii log/2/trace191 --trace-time "ftp://use%3fr:pass%3fword@127.0.0.1:39881/191" > log/2/stdout191 2> log/2/stderr191 === End of file commands.log === Start of file curl191.out data in file === End of file curl191.out === Start of file ftp_server.log 00:55:09.916547 ====> Client connect 00:55:09.917515 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:55:09.924703 < "USER anonymous" 00:55:09.925002 > "331 We are happy you popped in![CR][LF]" 00:55:09.925738 < "PASS ftp@example.com" 00:55:09.925984 > "230 Welcome you silly person[CR][LF]" 00:55:09.931273 < "PWD" 00:55:09.931544 > "257 "/" is current directory[CR][LF]" 00:55:09.933343 < "EPSV" 00:55:09.933553 ====> Passive DATA channel requested by client 00:55:09.933699 DATA sockfilt for passive data channel starting... 00:55:09.979276 DATA sockfilt for passive data channel started (pid 216867) 00:55:09.980543 DATA sockfilt for passive data channel listens on port 37825 00:55:09.980878 > "229 Entering Passive Mode (|||37825|)[CR][LF]" 00:55:09.981050 Client has been notified that DATA conn will be accepted on port 37825 00:55:09.984207 Client connects to port 37825 00:55:09.984426 ====> Client established passive DATA connection on port 37825 00:55:09.985183 < "TYPE I" 00:55:09.986205 > "200 I modify TYPE as you wanted[CR][LF]" 00:55:09.986733 < "SIZE verifiedserver" 00:55:09.987827 > "213 18[CR][LF]" 00:55:09.988324 < "RETR verifiedserver" 00:55:09.990652 > "150 Binary junk (18 bytes).[CR][LF]" 00:55:09.991174 =====> Closing passive DATA connection... 00:55:09.991336 Server disconnects passive DATA connection 00:55:09.992651 Server disconnected passive DATA connection 00:55:09.992811 DATA sockfilt for passive data channel quits (pid 216867) 00:55:09.999919 DATA sockfilt for passive data channel quit (pid 216867) 00:55:10.000103 =====> Closed passive DATA connection 00:55:10.000689 > "226 File transfer complete[CR][LF]" 00:55:10.042181 < "QUIT" 00:55:10.042582 > "221 bye bye baby[CR][LF]" 00:55:10.047618 MAIN sockfilt said DISC 00:55:10.047823 ====> Client disconnected 00:55:10.048090 Awaiting input 00:55:57.622318 ====> Client connect 00:55:57.623075 FTPD: Getting commands from log/2/server.cmd 00:55:57.623415 FTPD: run test case number: 191 00:55:57.624343 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:55:58.823751 < "USER use?r" 00:55:58.824209 > "331 We are happy you popped in![CR][LF]" 00:55:58.938525 < "PASS pass?word" 00:55:58.938969 > "230 Welcome you silly person[CR][LF]" 00:55:59.031850 < "PWD" 00:55:59.032658 > "257 "/" is current directory[CR][LF]" 00:55:59.215179 < "EPSV" 00:55:59.215535 ====> Passive DATA channel requested by client 00:55:59.215692 DATA sockfilt for passive data channel starting... 00:55:59.304403 DATA sockfilt for passive data channel started (pid 217979) 00:55:59.305835 DATA sockfilt for passive data channel listens on port 40015 00:55:59.306233 > "229 Entering Passive Mode (|||40015|)[CR][LF]" 00:55:59.306423 Client has been notified that DATA conn will be accepted on port 40015 00:55:59.516605 Client connects to port 40015 00:55:59.517200 ====> Client established passive DATA connection on port 40015 00:55:59.627324 < "TYPE I" 00:55:59.627760 > "200 I modify TYPE as you wanted[CR][LF]" 00:55:59.679618 < "SIZE 191" 00:55:59.681419 > "213 13[CR][LF]" 00:55:59.756711 < "RETR 191" 00:55:59.761006 > "150 Binary data connection for 191 () (13 bytes).[CR][LF]" 00:55:59.761599 =====> Closing passive DATA connection... 00:55:59.761768 Server disconnects passive DATA connection 00:55:59.763444 Server disconnected passive DATA connection 00:55:59.763633 DATA sockfilt for passive data channel quits (pid 217979) 00:55:59.766833 DATA sockfilt for passive data channel quit (pid 217979) 00:55:59.767023 =====> Closed passive DATA connection 00:55:59.771004 > "226 File transfer complete[CR][LF]" 00:56:01.721487 < "QUIT" 00:56:01.721910 > "221 bye bye baby[CR][LF]" 00:56:01.851086 MAIN sockfilt said DISC 00:56:01.851732 ====> Client disconnected 00:56:01.852033 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:55:10.532703 ====> Client connect 00:55:10.534320 Received DATA (on stdin) 00:55:10.534407 > 160 bytes data, server => client 00:55:10.534511 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:55:10.534605 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:55:10.534691 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:55:10.540582 < 16 bytes data, client => server 00:55:10.540676 'USER anonymous\r\n' 00:55:10.541503 Received DATA (on stdin) 00:55:10.541574 > 33 bytes data, server => client 00:55:10.541656 '331 We are happy you popped in!\r\n' 00:55:10.541959 < 22 bytes data, client => server 00:55:10.542033 'PASS ftp@example.com\r\n' 00:55:10.542491 Received DATA (on stdin) 00:55:10.542556 > 30 bytes data, server => client 00:55:10.542635 '230 Welcome you silly person\r\n' 00:55:10.542908 < 5 bytes data, client => server 00:55:10.542972 'PWD\r\n' 00:55:10.548051 Received DATA (on stdin) 00:55:10.548118 > 30 bytes data, server => client 00:55:10.548196 '257 "/" is current directory\r\n' 00:55:10.552469 < 6 bytes data, client => server 00:55:10.552563 'EPSV\r\n' 00:55:10.597817 Received DATA (on stdin) 00:55:10.597952 > 39 bytes data, server => client 00:55:10.598041 '229 Entering Passive Mode (|||37825|)\r\n' 00:55:10.600593 < 8 bytes data, client => server 00:55:10.600662 'TYPE I\r\n' 00:55:10.601950 Received DATA (on stdin) 00:55:10.602020 > 33 bytes data, server => client 00:55:10.602121 '200 I modify TYPE as you wanted\r\n' 00:55:10.602465 < 21 bytes data, client => server 00:55:10.602539 'SIZE verifiedserver\r\n' 00:55:10.603546 Received DATA (on stdin) 00:55:10.603610 > 8 bytes data, server => client 00:55:10.603695 '213 18\r\n' 00:55:10.604104 < 21 bytes data, client => server 00:55:10.604191 'RETR verifiedserver\r\n' 00:55:10.605114 Received DATA (on stdin) 00:55:10.605179 > 29 bytes data, server => client 00:55:10.605276 '150 Binary junk (18 bytes).\r\n' 00:55:10.617436 Received DATA (on stdin) 00:55:10.617531 > 28 bytes data, server => client 00:55:10.617618 '226 File transfer complete\r\n' 00:55:10.659326 < 6 bytes data, client => server 00:55:10.659456 'QUIT\r\n' 00:55:10.659532 Received DATA (on stdin) 00:55:10.659597 > 18 bytes data, server => client 00:55:10.659669 '221 bye bye baby\r\n' 00:55:10.660247 ====> Client disconnect 00:55:10.664800 Received ACKD (on stdin) 00:55:58.238450 ====> Client connect 00:55:58.240664 Received DATA (on stdin) 00:55:58.240786 > 160 bytes data, server => client 00:55:58.240911 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:55:58.241026 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:55:58.241119 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:55:59.439171 < 12 bytes data, client => server 00:55:59.439397 'USER use?r\r\n' 00:55:59.440581 Received DATA (on stdin) 00:55:59.440669 > 33 bytes data, server => client 00:55:59.440787 '331 We are happy you popped in!\r\n' 00:55:59.553310 < 16 bytes data, client => server 00:55:59.553495 'PASS pass?word\r\n' 00:55:59.557383 Received DATA (on stdin) 00:55:59.557473 > 30 bytes data, server => client 00:55:59.557563 '230 Welcome you silly person\r\n' 00:55:59.645912 < 5 bytes data, client => server 00:55:59.646074 'PWD\r\n' 00:55:59.648707 Received DATA (on stdin) 00:55:59.648796 > 30 bytes data, server => client 00:55:59.648907 '257 "/" is current directory\r\n' 00:55:59.830177 < 6 bytes data, client => server 00:55:59.830346 'EPSV\r\n' 00:55:59.922603 Received DATA (on stdin) 00:55:59.922770 > 39 bytes data, server => client 00:55:59.922883 '229 Entering Passive Mode (|||40015|)\r\n' 00:56:00.242605 < 8 bytes data, client => server 00:56:00.242789 'TYPE I\r\n' 00:56:00.247385 Received DATA (on stdin) 00:56:00.247481 > 33 bytes data, server => client 00:56:00.247571 '200 I modify TYPE as you wanted\r\n' 00:56:00.295042 < 10 bytes data, client => server 00:56:00.295201 'SIZE 191\r\n' 00:56:00.300719 Received DATA (on stdin) 00:56:00.300813 > 8 bytes data, server => client 00:56:00.300888 '213 13\r\n' 00:56:00.372010 < 10 bytes data, client => server 00:56:00.372189 'RETR 191\r\n' 00:56:00.374123 Received DATA (on stdin) 00:56:00.374207 > 51 bytes data, server => client 00:56:00.378432 '150 Binary data connection for 191 () (13 bytes).\r\n' 00:56:00.383690 Received DATA (on stdin) 00:56:00.383772 > 28 bytes data, server => client 00:56:00.387717 '226 File transfer complete\r\n' 00:56:02.336765 < 6 bytes data, client => server 00:56:02.336955 'QUIT\r\n' 00:56:02.338577 Received DATA (on stdin) 00:56:02.338654 > 18 bytes data, server => client 00:56:02.338729 '221 bye bye baby\r\n' 00:56:02.467221 ====> Client disconnect 00:56:02.468022 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:55:09.586966 Running IPv4 version 00:55:09.594339 Listening on port 37825 00:55:09.594778 Wrote pid 216867 to log/2/server/ftp_sockdata.pid 00:55:09.595500 Received PING (on stdin) 00:55:09.596458 Received PORT (on stdin) 00:55:09.600440 ====> Client connect 00:55:09.608052 Received DATA (on stdin) 00:55:09.608325 > 18 bytes data, server => client 00:55:09.608672 'WE ROOLZ: 202189\r\n' 00:55:09.608899 Received DISC (on stdin) 00:55:09.609009 ====> Client forcibly disconnected 00:55:09.610807 Received QUIT (on stdin) 00:55:09.610887 quits 00:55:09.611357 ============> sockfilt quits 00:CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind192 ../src/curl -q --include --trace-ascii log/1/trace192 --trace-time http://127.0.0.1:40641/192 -w "%{num_connects}\n" > log/1/stdout192 2> log/1/stderr192 55:59.897281 Running IPv4 version 00:55:59.915272 Listening on port 40015 00:55:59.915838 Wrote pid 217979 to log/2/server/ftp_sockdata.pid 00:55:59.916624 Received PING (on stdin) 00:55:59.921590 Received PORT (on stdin) 00:56:00.132748 ====> Client connect 00:56:00.378589 Received DATA (on stdin) 00:56:00.378954 > 13 bytes data, server => client 00:56:00.379312 'data in file\n' 00:56:00.379562 Received DISC (on stdin) 00:56:00.379684 ====> Client forcibly disconnected 00:56:00.380253 Received QUIT (on stdin) 00:56:00.380333 quits 00:56:00.380849 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 191 === End of file server.cmd === Start of file server.input USER use?r PASS pass?word PWD EPSV TYPE I SIZE 191 RETR 191 QUIT === End of file server.input === Start of file stderr191 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 13 100 13 0 0 2 0 0:00:06 0:00:04 0:00:02 3 100 13 100 13 0 0 2 0 0:00:06 0:00:05 0:00:01 3 === End of file stderr191 === Start of file trace191 00:55:57.321114 * Trying 127.0.0.1:39881... 00:55:58.137462 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 47334 00:55:58.365120 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:55:58.704346 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:55:58.729972 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:55:58.736459 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:55:58.741241 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:55:58.843525 => Send header, 12 bytes (0xc) 0000: USER use?r 00:55:58.916876 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:55:58.938499 => Send header, 16 bytes (0x10) 0000: PASS pass?word 00:55:59.007078 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:55:59.029845 => Send header, 5 bytes (0x5) 0000: PWD 00:55:59.044908 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:55:59.080769 * Entry path is '/' 00:55:59.165453 * Request has same path as previous transfer 00:55:59.214127 => Send header, 6 bytes (0x6) 0000: EPSV 00:55:59.229620 * Connect data stream passively 00:55:59.323179 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||40015|) 00:55:59.441606 * Connecting to 127.0.0.1 (127.0.0.1) port 40015 00:55:59.510498 * Trying 127.0.0.1:40015... 00:55:59.596829 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 40015) from 127.0.0.1 port 33200 00:55:59.628121 => Send header, 8 bytes (0x8) 0000: TYPE I 00:55:59.646509 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:55:59.681806 => Send header, 10 bytes (0xa) 0000: SIZE 191 00:55:59.709107 <= Recv header, 8 bytes (0x8) 0000: 213 13 00:55:59.757985 => Send header, 10 bytes (0xa) 0000: RETR 191 00:55:59.779965 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 191 () (13 bytes). 00:55:59.820660 * Maxdownload = -1 00:55:59.830818 * Getting file with size: 13 00:55:59.974628 <= Recv data, 13 bytes (0xd) 0000: data in file. 00:56:00.281847 * abort upload 00:56:00.308400 <= Recv data, 0 bytes (0x0) 00:56:00.500778 * Remembering we are in dir "" 00:56:00.687616 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:56:00.985204 * Connection #0 to host 127.0.0.1:39881 left intact === End of file trace191 === Start of file valgrind191 ==216876== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind191 test 0192...[HTTP GET -w num_connects with one simple connect] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind192 ../src/curl -q --include --trace-ascii log/1/trace192 --trace-time http://127.0.0.1:40641/192 -w "%{num_connects}\n" > log/1/stdout192 2> log/1/stderr192 valgrind ERROR ==217062== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 192 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind192 ../src/curl -q --include --trace-ascii log/1/trace192 --trace-time http://127.0.0.1:40641/192 -w "%{num_connects}\n" > log/1/stdout192 2> log/1/stderr192 === End of file commands.log === Start of file http_server.log 00:55:12.342061 ====> Client connect 00:55:12.342215 accept_connection 3 returned 4 00:55:12.342285 accept_connection 3 returned 0 00:55:12.348762 Read 93 bytes 00:55:12.348844 Process 93 bytes request 00:55:12.348929 Got request: GET /verifiedserver HTTP/1.1 00:55:12.348991 Are-we-friendly question received 00:55:12.349094 Wrote request (93 bytes) input to log/1/server.input 00:55:12.349177 Identifying ourselves as friends 00:55:12.349325 Response sent (57 bytes) and written to log/1/server.response 00:55:12.349384 special request received, no persistency 00:55:12.349437 ====> Client disconnect 0 00:55:59.088834 ====> Client connect 00:55:59.088982 accept_connection 3 returned 4 00:55:59.089069 accept_connection 3 returned 0 00:56:00.078713 Read 82 bytes 00:56:00.078902 Process 82 bytes request 00:56:00.078997 Got request: GET /192 HTTP/1.1 00:56:00.079067 Serve test number 192 part 0 00:56:00.079245 - request found to be complete (192) 00:56:00.079494 Wrote request (82 bytes) input to log/1/server.input 00:56:00.079604 Send response test192 section 00:56:00.079889 Response sent (97 bytes) and written to log/1/server.response 00:56:00.079957 => persistent connection request ended, awaits new request 00:56:01.908180 Connection closed by client 00:56:01.908369 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 59410 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 192 === End of file server.cmd === Start of file server.input GET /192 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 8 Connection: close monster === End of file server.response === Start of file stderr192 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 8 100 8 0 0 1 0 0:00:08 0:00:04 0:00:04 2 100 8 100 8 0 0 1 0 0:00:08 0:00:04 0:00:04 2 === End of file stderr192 === Start of file stdout192 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 8 Connection: close monster 1 === End of file stdout192 === Start of file trace192 00:55:58.192351 *CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind193 ../src/curl -q --include --trace-ascii log/5/trace193 --trace-time http://127.0.0.1:46263/193 -w "%{num_connects}\n" -L > log/5/stdout193 2> log/5/stderr193 Trying 127.0.0.1:40641... 00:55:59.033366 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 60470 00:55:59.154713 * using HTTP/1.x 00:55:59.500807 => Send header, 82 bytes (0x52) 0000: GET /192 HTTP/1.1 0013: Host: 127.0.0.1:40641 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 00:55:59.843485 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:56:00.137801 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:56:00.260080 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 8. 00:56:00.330525 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:56:00.413011 <= Recv header, 1 bytes (0x1) 0000: . 00:56:00.477855 <= Recv data, 8 bytes (0x8) 0000: monster. 00:56:00.584096 * we are done reading and this is set to close, stop send 00:56:00.613401 * abort upload 00:56:01.092564 * shutting down connection #0 === End of file trace192 === Start of file valgrind192 ==217062== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind192 test 0193...[HTTP GET -w num_connects with redirected fetch (2 connects)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind193 ../src/curl -q --include --trace-ascii log/5/trace193 --trace-time http://127.0.0.1:46263/193 -w "%{num_connects}\n" -L > log/5/stdout193 2> log/5/stderr193 valgrind ERROR ==217129== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 193 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind193 ../src/curl -q --include --trace-ascii log/5/trace193 --trace-time http://127.0.0.1:46263/193 -w "%{num_connects}\n" -L > log/5/stdout193 2> log/5/stderr193 === End of file commands.log === Start of file http_server.log 00:55:12.042544 ====> Client connect 00:55:12.042737 accept_connection 3 returned 4 00:55:12.042813 accept_connection 3 returned 0 00:55:12.051124 Read 93 bytes 00:55:12.051230 Process 93 bytes request 00:55:12.051318 Got request: GET /verifiedserver HTTP/1.1 00:55:12.051381 Are-we-friendly question received 00:55:12.051492 Wrote request (93 bytes) input to log/5/server.input 00:55:12.051592 Identifying ourselves as friends 00:55:12.051770 Response sent (57 bytes) and written to log/5/server.response 00:55:12.051833 special request received, no persistency 00:55:12.051888 ====> Client disconnect 0 00:55:59.728065 ====> Client connect 00:55:59.728214 accept_connection 3 returned 4 00:55:59.728295 accept_connection 3 returned 0 00:56:00.738814 Read 82 bytes 00:56:00.739034 Process 82 bytes request 00:56:00.739133 Got request: GET /193 HTTP/1.1 00:56:00.739204 Serve test number 193 part 0 00:56:00.739396 - request found to be complete (193) 00:56:00.739669 Wrote request (82 bytes) input to log/5/server.input 00:56:00.739791 Send response test193 section 00:56:00.740025 connection close instruction "swsclose" found in response 00:56:00.740092 enable "swsbounce" in the next request 00:56:00.740289 Response sent (132 bytes) and written to log/5/server.response 00:56:00.740357 instructed to close connection after server-reply 00:56:00.740420 ====> Client disconnect 0 00:56:03.024454 ====> Client connect 00:56:03.024629 accept_connection 3 returned 4 00:56:03.024721 accept_connection 3 returned 0 00:56:03.102853 Read 82 bytes 00:56:03.126102 Process 82 bytes request 00:56:03.126278 Got request: GET /193 HTTP/1.1 00:56:03.126355 Serve test number 193 part 0 00:56:03.126549 - request found to be complete (193) 00:56:03.126769 Wrote request (82 bytes) input to log/5/server.input 00:56:03.126852 BOUNCE part number to 1 00:56:03.126918 Send response test193 section 00:56:03.127290 Response sent (97 bytes) and written to log/5/server.response 00:56:03.127398 => persistent connection request ended, awaits new request 00:56:03.477920 Connection closed by client 00:56:03.478112 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 33150 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 193 === End of file server.cmd === Start of file server.input GET /193 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* GET /193 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 302 OK swsbounce swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 8 Connection: close Location: ./193 monster HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 8 Connection: close monster === End of file server.response === Start of file stderr193 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 8 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 8 100 8 0 0 1 0 0:00:08 0:00:05 0:00:03 18 === End of file stderr193 === Start of file stdout193 HTTP/1.1 302 OK swsbounce swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 8 Connection: close Location: ./193 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 8 Connection: close monster 2 === End of file stdout193 === Start of file trace193 00:55:59.790204 * Trying 127.0.0.1:46263... 00:56:00.681740 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 53036 00:56:00.814474 * using HTTP/1.x 00:56:01.160520 => Send header, 82 bytes (0x52) 0000: GET /193 HTTP/1.1 0013: Host: 127.0.0.1:46263 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 00:56:01.492996 <= Recv header, 35 bytes (0x23) 0000: HTTP/1.1 302 OK swsbounce swsclose. 00:56:01.780327 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:56:01.915183 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 8. 00:56:01.985288 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:56:02.055048 <= Recv header, 16 bytes (0x10) 0000: Location: ./193. 00:56:02.139257 <= Recv header, 1 bytes (0x1) 0000: . 00:56:02.393543 * Request completely sent off 00:56:02.649853 * shutting down connection #0 00:56:03.202687 * Issue another request to this URL: 'http://127.0.0.1:46263/193' 00:56:03.362931 * Hostname 127.0.0.1 was found in DNS cache 00:56:03.401473 * Trying 127.0.0.1:46263... 00:56:03.455448 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 45196 00:56:03.462135 * using HTTP/1.x 00:56:03.488646 => Send header, 82 bytes (0x52) 0000: GET /193 HTTP/1.1 0013: Host: 127.0.0.1:46263 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 00:56:03.534921 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:56:03.542862 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:56:03.556477 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 8. 00:56:03.564658 <= Recv header, 18 bytes (0x12) 0000: Connection: closeCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind194 ../src/curl -q --output log/3/curl194.out --include --trace-ascii log/3/trace194 --trace-time http://127.0.0.1:46853/want/194 -C 87 --fail > log/3/stdout194 2> log/3/stderr194 CMD (17152): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind195 ../src/curl -q --output log/6/curl195.out --include --trace-ascii log/6/trace195 --trace-time ftp://127.0.0.1:39413/195 > log/6/stdout195 2> log/6/stderr195 . 00:56:03.585574 <= Recv header, 1 bytes (0x1) 0000: . 00:56:03.612177 <= Recv data, 8 bytes (0x8) 0000: monster. 00:56:03.718712 * we are done reading and this is set to close, stop send 00:56:03.740348 * abort upload 00:56:03.848130 * shutting down connection #1 === End of file trace193 === Start of file valgrind193 ==217129== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind193 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 200 in state 4 Runner 2 (id 185908) running test 199 in state 4 Runner 3 (id 185910) running test 194 in state 4 Runner 4 (id 185912) running test 196 in state 4 Runner 5 (id 185914) running test 201 in state 4 Runner 6 (id 185916) running test 195 in state 4 Runner 7 (id 185918) running test 197 in state 4 Runner 8 (id 185920) running test 198 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 200 in state 4 Runner 2 (id 185908) running test 199 in state 4 Runner 3 (id 185910) running test 194 in state 4 Runner 4 (id 185912) running test 196 in state 4 Runner 5 (id 185914) running test 201 in state 4 Runner 6 (id 185916) running test 195 in state 4 Runner 7 (id 185918) running test 197 in state 4 Runner 8 (id 185920) running test 198 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 200 in state 4 Runner 2 (id 185908) running test 199 in state 4 Runner 3 (id 185910) running test 194 in state 4 Runner 4 (id 185912) running test 196 in state 4 Runner 5 (id 185914) running test 201 in state 4 Runner 6 (id 185916) running test 195 in state 4 Runner 7 (id 185918) running test 197 in state 4 Runner 8 (id 185920) running test 198 in state 4 test 0194...[HTTP resume transfer with the whole file already downloaded and --fail] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind194 ../src/curl -q --output log/3/curl194.out --include --trace-ascii log/3/trace194 --trace-time http://127.0.0.1:46853/want/194 -C 87 --fail > log/3/stdout194 2> log/3/stderr194 valgrind ERROR ==217422== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 194 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind194 ../src/curl -q --output log/3/curl194.out --include --trace-ascii log/3/trace194 --trace-time http://127.0.0.1:46853/want/194 -C 87 --fail > log/3/stdout194 2> log/3/stderr194 === End of file commands.log === Start of file curl194.out HTTP/1.1 416 Requested Range Not Satisfiable swsclose Date: Fri, 24 Oct 2003 21:33:12 GMT Server: Apache/1.3.19 (Unix) (Red-Hat/Linux) mod_ssl/2.8.1 OpenSSL/0.9.6 PHP/4.3.1 Last-Modified: Fri, 24 Oct 2003 18:01:23 GMT ETag: "ab57a-507-3f9968f3" Accept-Ranges: bytes Content-Length: 4 Content-Range: bytes */87 Content-Type: image/gif Connection: close === End of file curl194.out === Start of file http_server.log 00:55:45.790912 ====> Client connect 00:55:45.791088 accept_connection 3 returned 4 00:55:45.791164 accept_connection 3 returned 0 00:55:45.796124 Read 93 bytes 00:55:45.796267 Process 93 bytes request 00:55:45.796359 Got request: GET /verifiedserver HTTP/1.1 00:55:45.796427 Are-we-friendly question received 00:55:45.796553 Wrote request (93 bytes) input to log/3/server.input 00:55:45.796660 Identifying ourselves as friends 00:55:45.796834 Response sent (57 bytes) and written to log/3/server.response 00:55:45.796896 special request received, no persistency 00:55:45.796953 ====> Client disconnect 0 00:56:33.145046 ====> Client connect 00:56:33.145185 accept_connection 3 returned 4 00:56:33.145263 accept_connection 3 returned 0 00:56:34.138101 Read 105 bytes 00:56:34.138294 Process 105 bytes request 00:56:34.138390 Got request: GET /want/194 HTTP/1.1 00:56:34.138461 Serve test number 194 part 0 00:56:34.138649 - request found to be complete (194) 00:56:34.138939 Wrote request (105 bytes) input to log/3/server.input 00:56:34.139052 Send response test194 section 00:56:34.139364 connection close instruction "swsclose" found in response 00:56:34.139588 Response sent (368 bytes) and written to log/3/server.response 00:56:34.139660 instructed to close connection after server-reply 00:56:34.139729 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 59644 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 194 === End of file server.cmd === Start of file server.input GET /want/194 HTTP/1.1 Host: 127.0.0.1:46853 Range: bytes=87- User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 416 Requested Range Not Satisfiable swsclose Date: Fri, 24 Oct 2003 21:33:12 GMT Server: Apache/1.3.19 (Unix) (Red-Hat/Linux) mod_ssl/2.8.1 OpenSSL/0.9.6 PHP/4.3.1 Last-Modified: Fri, 24 Oct 2003 18:01:23 GMT ETag: "ab57a-507-3f9968f3" Accept-Ranges: bytes Content-Length: 4 Content-Range: bytes */87 Content-Type: image/gif Connection: close bad === End of file server.response === Start of file stderr194 ** Resuming transfer from byte position 87 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 === End of file stderr194 === Start of file trace194 00:56:33.215264 * Trying 127.0.0.1:46853... 00:56:34.089997 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 36700 00:56:34.207233 * using HTTP/1.x 00:56:34.562543 => Send header, 105 bytes (0x69) 0000: GET /want/194 HTTP/1.1 0018: Host: 127.0.0.1:46853 002f: Range: bytes=87- 0041: User-Agent: curl/8.17.0 005a: Accept: */* 0067: 00:56:34.910770 <= Recv header, 55 bytes (0x37) 0000: HTTP/1.1 416 Requested Range Not Satisfiable swsclose 00:56:35.190143 <= Recv header, 37 bytes (0x25) 0000: Date: Fri, 24 Oct 2003 21:33:12 GMT 00:56:35.288992 <= Recv header, 84 bytes (0x54) 0000: Server: Apache/1.3.19 (Unix) (Red-Hat/Linux) mod_ssl/2.8.1 OpenS 0040: SL/0.9.6 PHP/4.3.1 00:56:35.322878 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Fri, 24 Oct 2003 18:01:23 GMT 00:56:35.331024 <= Recv header, 28 bytes (0x1c) 0000: ETag: "ab57a-507-3f9968f3" 00:56:35.338799 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 00:56:35.370312 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 4 00:56:35.401828 <= Recv header, 27 bytes (0x1b) 0000: Content-Range: bytes */87 00:56:35.448683 <= Recv header, 25 bytes (0x19) 0000: Content-Type: image/gif 00:56:35.484819 <= Recv header, 19 bytes (0x13) 0000: Connection: close 00:56:35.569139 * setting size while ignoring 00:56:35.585830 <= Recv header, 2 bytes (0x2) 0000: 00:56:35.688160 * we are done reading and this is set to close, stop send 00:56:35.719106 * abort upload 00:56:36.191958 * shutting down connection #0 === End of file trace194 === Start of file valgrind194 ==217422== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind194 test 0195...[FTP response 530 after PASS, temporarily not allowed access] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind195 ../src/curl -q --output log/6/curl195.out --include --trace-ascii log/6/trace195 --trace-time ftp://127.0.0.1:39413/195 > log/6/stdout195 2> log/6/stderr195 valgrind ERROR ==217583== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 195 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind195 ../src/curl -q --output log/6/curl195.out --include --trace-ascii log/6/trace195 --trace-time ftp://127.0.0.1:39413/195 > log/6/stdout195 2> log/6/stderr195 === End of file commands.log === Start of file ftp_server.log 00:55:47.335051 ====> Client connect 00:55:47.341107 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:55:47.346572 < "USER anonymous" 00:55:47.347034 > "331 We are happy you popped in![CR][LF]" 00:55:47.348306 < "PASS ftp@example.com" 00:55:47.349275 > "230 Welcome you silly person[CR][LF]" 00:55:47.349845 < "PWD" 00:55:47.352309 > "257 "/" is current directory[CR][LF]" 00:55:47.353323 < "EPSV" 00:55:47.353537 ====> Passive DATA channel requested by client 00:55:47.353682 DATA sockfilt for passive data channel starting... 00:55:47.421153 DATA sockfilt for passive data channel started (pid 217523) 00:55:47.422585 DATA sockfilt for passive data channel listens on port 46003 00:55:47.423568 > "229 Entering Passive Mode (|||46003|)[CR][LF]" 00:55:47.423806 Client has been notified that DATA conn will be accepted on port 46003 00:55:47.427984 Client connects to port 46003 00:55:47.428397 ====> Client established passive DATA connection on port 46003 00:55:47.429264 < "TYPE I" 00:55:47.429619 > "200 I modify TYPE as you wanted[CR][LF]" 00:55:47.430718 < "SIZE verifiedserver" 00:55:47.431088 > "213 18[CR][LF]" 00:55:47.432755 < "RETR verifiedserver" 00:55:47.434352 > "150 Binary junk (18 bytes).[CR][LF]" 00:55:47.435043 =====> Closing passive DATA connection... 00:55:47.435227 Server disconnects passive DATA connection 00:55:47.436802 Server disconnected passive DATA connection 00:55:47.437023 DATA sockfilt for passive data channel quits (pid 217523) 00:55:47.443427 DATA sockfilt for passive data channel quit (pid 217523) 00:55:47.443776 =====> Closed passive DATA connection 00:55:47.444082 > "226 File transfer complete[CR][LF]" 00:55:47.494736 < "QUIT" 00:55:47.495132 > "221 bye bye baby[CR][LF]" 00:55:47.495874 MAIN sockfilt said DISC 00:55:47.496212 ====> Client disconnected 00:55:47.496504 Awaiting input 00:56:34.387686 ====> Client connect 00:56:34.388435 FTPD: Getting commands from log/6/server.cmd 00:56:34.389202 FTPD: set custom reply for PASS command 00:56:34.389467 FTPD: run test case number: 195 00:56:34.390320 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:56:35.672212 < "USER anonymous" 00:56:35.677687 > "331 We are happy you popped in![CR][LF]" 00:56:35.787607 < "PASS ftp@example.com" 00:56:35.788025 > "530 temporarily not available[CR][LF]" 00:56:36.345659 MAIN sockfilt said DISC 00:56:36.346165 ====> Client disconnected 00:56:36.346457 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:55:46.951143 ====> Client connect 00:55:46.952359 Received DATA (on stdin) 00:55:46.952440 > 160 bytes data, server => client 00:55:46.957943 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:55:46.958080 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:55:46.958173 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:55:46.962021 < 16 bytes data, client => server 00:55:46.962152 'USER anonymous\r\n' 00:55:46.963746 Received DATA (on stdin) 00:55:46.963822 > 33 bytes data, server => client 00:55:46.963906 '331 We are happy you popped in!\r\n' 00:55:46.964241 < 22 bytes data, client => server 00:55:46.964325 'PASS ftp@example.com\r\n' 00:55:46.965044 Received DATA (on stdin) 00:55:46.965121 > 30 bytes data, server => client 00:55:46.965227 '230 Welcome you silly person\r\n' 00:55:46.965477 < 5 bytes data, client => server 00:55:46.965545 'PWD\r\n' 00:55:46.966553 Received DATA (on stdin) 00:55:46.966620 > 30 bytes data, server => client 00:55:46.966720 '257 "/" is current directory\r\n' 00:55:46.969057 < 6 bytes data, client => server 00:55:46.969141 'EPSV\r\n' 00:55:47.039478 Received DATA (on stdin) 00:55:47.039637 > 39 bytes data, server => client 00:55:47.039776 '229 Entering Passive Mode (|||46003|)\r\n' 00:55:47.044376 < 8 bytes data, client => server 00:55:47.044527 'TYPE I\r\n' 00:55:47.046021 Received DATA (on stdin) 00:55:47.046101 > 33 bytes data, server => client 00:55:47.046203 '200 I modify TYPE as you wanted\r\n' 00:55:47.046681 < 21 bytes data, client => server 00:55:47.046772 'SIZE verifiedserver\r\n' 00:55:47.047523 Received DATA (on stdin) 00:55:47.047600 > 8 bytes data, server => client 00:55:47.047676 '213 18\r\n' 00:55:47.048657 < 21 bytes data, client => server 00:55:47.048749 'RETR verifiedserver\r\n' 00:55:47.049510 Received DATA (on stdin) 00:55:47.049578 > 29 bytes data, server => client 00:55:47.049681 '150 Binary junk (18 bytes).\r\n' 00:55:47.060494 Received DATA (on stdin) 00:55:47.060646 > 28 bytes data, server => client 00:55:47.060751 '226 File transfer complete\r\n' 00:55:47.110317 < 6 bytes data, client => server 00:55:47.110468 'QUIT\r\n' 00:55:47.111540 Received DATA (on stdin) 00:55:47.111634 > 18 bytes data, server => client 00:55:47.111722 '221 bye bye baby\r\n' 00:55:47.112234 ====> Client disconnect 00:55:47.112546 Received ACKD (on stdin) 00:56:34.000807 ====> Client connect 00:56:34.006921 Received DATA (on stdin) 00:56:34.007029 > 160 bytes data, server => client 00:56:34.007141 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:56:34.007255 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:56:34.007369 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:56:35.287358 < 16 bytes data, client => server 00:56:35.287542 'USER anonymous\r\n' 00:56:35.288988 Received DATA (on stdin) 00:56:35.289072 > 33 bytes data, server => client 00:56:35.294373 '331 We are happy you popped in!\r\n' 00:56:35.402844 < 22 bytes data, client => server 00:56:35.403019 'PASS ftp@example.com\r\n' 00:56:35.404610 Received DATA (on stdin) 00:56:35.404689 > 31 bytes data, server => client 00:56:35.404774 '530 temporarily not available\r\n' 00:56:35.961727 ====> Client disconnect 00:56:35.963047 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:55:47.016875 Running IPv4 version 00:55:47.035047 Listening on port 46003 00:55:47.035746 Wrote pid 217523 to log/6/server/ftp_sockdata.pid 00:55:47.036696 Received PING (on stdin) 00:55:47.038240 Received PORT (on stdin) 00:55:47.044169 ====> Client connect 00:55:47.051810 Received DATA (on stdin) 00:55:47.052444 > 18 bytes data, server => client 00:55:47.052850 'WE ROOLZ: 201819\r\n' 00:55:47.053116 Received DISC (on stdin) 00:55:47.053233 ====> Client forcibly disconnected 00:55:47.056031 Received QUIT (on stdin) 00:55:47.056149 quits 00:55:47.056755 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASS 530 temporarily not available Testnum 195 === End of file serveCMD (17152): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind196 ../src/curl -q --include --trace-ascii log/4/trace196 --trace-time ftp://127.0.0.1:38207/196 --retry 1 -w '%{num_retries}\n' > log/4/stdout196 2> log/4/stderr196 r.cmd === Start of file server.input USER anonymous PASS ftp@example.com === End of file server.input === Start of file stderr195 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 curl: (67) Access denied: 530 === End of file stderr195 === Start of file trace195 00:56:34.068817 * Trying 127.0.0.1:39413... 00:56:34.955635 * Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 58510 00:56:35.188469 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:56:35.549315 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:56:35.576828 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:56:35.582317 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:56:35.587132 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:56:35.692292 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:56:35.765955 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:56:35.789926 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:56:35.857550 <= Recv header, 31 bytes (0x1f) 0000: 530 temporarily not available 00:56:35.896735 * Access denied: 530 00:56:36.223730 * closing connection #0 === End of file trace195 === Start of file valgrind195 ==217583== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind195 test 0196...[FTP transient error, retry request once] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind196 ../src/curl -q --include --trace-ascii log/4/trace196 --trace-time ftp://127.0.0.1:38207/196 --retry 1 -w '%{num_retries}\n' > log/4/stdout196 2> log/4/stderr196 valgrind ERROR ==217589== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 196 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind196 ../src/curl -q --include --trace-ascii log/4/trace196 --trace-time ftp://127.0.0.1:38207/196 --retry 1 -w '%{num_retries}\n' > log/4/stdout196 2> log/4/stderr196 === End of file commands.log === Start of file ftp_server.log 00:55:47.427633 ====> Client connect 00:55:47.432103 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:55:47.436456 < "USER anonymous" 00:55:47.437766 > "331 We are happy you popped in![CR][LF]" 00:55:47.438792 < "PASS ftp@example.com" 00:55:47.439298 > "230 Welcome you silly person[CR][LF]" 00:55:47.440565 < "PWD" 00:55:47.440889 > "257 "/" is current directory[CR][LF]" 00:55:47.443517 < "EPSV" 00:55:47.443773 ====> Passive DATA channel requested by client 00:55:47.443934 DATA sockfilt for passive data channel starting... 00:55:47.478948 DATA sockfilt for passive data channel started (pid 217536) 00:55:47.480052 DATA sockfilt for passive data channel listens on port 40695 00:55:47.480395 > "229 Entering Passive Mode (|||40695|)[CR][LF]" 00:55:47.480582 Client has been notified that DATA conn will be accepted on port 40695 00:55:47.482216 Client connects to port 40695 00:55:47.482461 ====> Client established passive DATA connection on port 40695 00:55:47.483435 < "TYPE I" 00:55:47.483722 > "200 I modify TYPE as you wanted[CR][LF]" 00:55:47.484620 < "SIZE verifiedserver" 00:55:47.484915 > "213 18[CR][LF]" 00:55:47.485791 < "RETR verifiedserver" 00:55:47.486058 > "150 Binary junk (18 bytes).[CR][LF]" 00:55:47.486643 =====> Closing passive DATA connection... 00:55:47.486822 Server disconnects passive DATA connection 00:55:47.487746 Server disconnected passive DATA connection 00:55:47.487952 DATA sockfilt for passive data channel quits (pid 217536) 00:55:47.491584 DATA sockfilt for passive data channel quit (pid 217536) 00:55:47.491792 =====> Closed passive DATA connection 00:55:47.492089 > "226 File transfer complete[CR][LF]" 00:55:47.547596 < "QUIT" 00:55:47.554384 > "221 bye bye baby[CR][LF]" 00:55:47.555623 MAIN sockfilt said DISC 00:55:47.555860 ====> Client disconnected 00:55:47.556163 Awaiting input 00:56:34.443173 ====> Client connect 00:56:34.443938 FTPD: Getting commands from log/4/server.cmd 00:56:34.444742 FTPD: set custom reply for PASS command 00:56:34.445013 FTPD: run test case number: 196 00:56:34.446533 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:56:35.704076 < "USER anonymous" 00:56:35.704533 > "331 We are happy you popped in![CR][LF]" 00:56:35.818485 < "PASS ftp@example.com" 00:56:35.818897 > "430 temporarily not available[CR][LF]" 00:56:36.371029 MAIN sockfilt said DISC 00:56:36.371537 ====> Client disconnected 00:56:36.371829 Awaiting input 00:56:38.193631 ====> Client connect 00:56:38.194388 FTPD: Getting commands from log/4/server.cmd 00:56:38.195149 FTPD: set custom reply for PASS command 00:56:38.195425 FTPD: run test case number: 196 00:56:38.195814 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:56:38.271267 < "USER anonymous" 00:56:38.274356 > "331 We are happy you popped in![CR][LF]" 00:56:38.283315 < "PASS ftp@example.com" 00:56:38.283655 > "430 temporarily not available[CR][LF]" 00:56:38.336729 MAIN sockfilt said DISC 00:56:38.340945 ====> Client disconnected 00:56:38.341351 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:55:47.043711 ====> Client connect 00:55:47.045088 Received DATA (on stdin) 00:55:47.045204 > 160 bytes data, server => client 00:55:47.047857 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:55:47.047987 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:55:47.048075 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:55:47.052014 < 16 bytes data, client => server 00:55:47.052134 'USER anonymous\r\n' 00:55:47.053267 Received DATA (on stdin) 00:55:47.053361 > 33 bytes data, server => client 00:55:47.053772 '331 We are happy you popped in!\r\n' 00:55:47.054568 < 22 bytes data, client => server 00:55:47.054659 'PASS ftp@example.com\r\n' 00:55:47.055531 Received DATA (on stdin) 00:55:47.055613 > 30 bytes data, server => client 00:55:47.055979 '230 Welcome you silly person\r\n' 00:55:47.056393 < 5 bytes data, client => server 00:55:47.056470 'PWD\r\n' 00:55:47.057416 Received DATA (on stdin) 00:55:47.057506 > 30 bytes data, server => client 00:55:47.057596 '257 "/" is current directory\r\n' 00:55:47.059300 < 6 bytes data, client => server 00:55:47.059387 'EPSV\r\n' 00:55:47.096794 Received DATA (on stdin) 00:55:47.096951 > 39 bytes data, server => client 00:55:47.097060 '229 Entering Passive Mode (|||40695|)\r\n' 00:55:47.099292 < 8 bytes data, client => server 00:55:47.099385 'TYPE I\r\n' 00:55:47.100130 Received DATA (on stdin) 00:55:47.100210 > 33 bytes data, server => client 00:55:47.100318 '200 I modify TYPE as you wanted\r\n' 00:55:47.100657 < 21 bytes data, client => server 00:55:47.100759 'SIZE verifiedserver\r\n' 00:55:47.101347 Received DATA (on stdin) 00:55:47.101425 > 8 bytes data, server => client 00:55:47.101505 '213 18\r\n' 00:55:47.101888 < 21 bytes data, client => server 00:55:47.101975 'RETR verifiedserver\r\n' 00:55:47.102488 ReceivedCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind197 ../src/curl -q --include --trace-ascii log/7/trace197 --trace-time http://127.0.0.1:34897/197 --retry 1000 > log/7/stdout197 2> log/7/stderr197 DATA (on stdin) 00:55:47.102566 > 29 bytes data, server => client 00:55:47.102661 '150 Binary junk (18 bytes).\r\n' 00:55:47.108860 Received DATA (on stdin) 00:55:47.108974 > 28 bytes data, server => client 00:55:47.109068 '226 File transfer complete\r\n' 00:55:47.162795 < 6 bytes data, client => server 00:55:47.162997 'QUIT\r\n' 00:55:47.164457 Received DATA (on stdin) 00:55:47.164544 > 18 bytes data, server => client 00:55:47.171220 '221 bye bye baby\r\n' 00:55:47.171967 ====> Client disconnect 00:55:47.172837 Received ACKD (on stdin) 00:56:34.059246 ====> Client connect 00:56:34.062249 Received DATA (on stdin) 00:56:34.062354 > 160 bytes data, server => client 00:56:34.062488 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:56:34.062597 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:56:34.062694 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:56:35.319256 < 16 bytes data, client => server 00:56:35.319415 'USER anonymous\r\n' 00:56:35.323980 Received DATA (on stdin) 00:56:35.324080 > 33 bytes data, server => client 00:56:35.324165 '331 We are happy you popped in!\r\n' 00:56:35.433297 < 22 bytes data, client => server 00:56:35.433465 'PASS ftp@example.com\r\n' 00:56:35.435224 Received DATA (on stdin) 00:56:35.435305 > 31 bytes data, server => client 00:56:35.435392 '430 temporarily not available\r\n' 00:56:35.985261 ====> Client disconnect 00:56:35.987914 Received ACKD (on stdin) 00:56:37.809706 ====> Client connect 00:56:37.813979 Received DATA (on stdin) 00:56:37.814089 > 160 bytes data, server => client 00:56:37.814197 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:56:37.814297 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:56:37.814389 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:56:37.886438 < 16 bytes data, client => server 00:56:37.886614 'USER anonymous\r\n' 00:56:37.888007 Received DATA (on stdin) 00:56:37.888087 > 33 bytes data, server => client 00:56:37.891047 '331 We are happy you popped in!\r\n' 00:56:37.898836 < 22 bytes data, client => server 00:56:37.898966 'PASS ftp@example.com\r\n' 00:56:37.900237 Received DATA (on stdin) 00:56:37.900319 > 31 bytes data, server => client 00:56:37.900412 '430 temporarily not available\r\n' 00:56:37.952750 ====> Client disconnect 00:56:37.953631 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:55:47.088088 Running IPv4 version 00:55:47.094038 Listening on port 40695 00:55:47.094474 Wrote pid 217536 to log/4/server/ftp_sockdata.pid 00:55:47.095082 Received PING (on stdin) 00:55:47.095927 Received PORT (on stdin) 00:55:47.098493 ====> Client connect 00:55:47.102777 Received DATA (on stdin) 00:55:47.103137 > 18 bytes data, server => client 00:55:47.103566 'WE ROOLZ: 201673\r\n' 00:55:47.103836 Received DISC (on stdin) 00:55:47.103965 ====> Client forcibly disconnected 00:55:47.104661 Received QUIT (on stdin) 00:55:47.104746 quits 00:55:47.105300 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASS 430 temporarily not available Testnum 196 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com USER anonymous PASS ftp@example.com === End of file server.input === Start of file stderr196 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 curl: (67) Access denied: 430 Warning: Problem : FTP error. Will retry in 1 second. 1 retry left. 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 curl: (67) Access denied: 430 === End of file stderr196 === Start of file stdout196 1 === End of file stdout196 === Start of file trace196 00:56:34.123699 * Trying 127.0.0.1:38207... 00:56:34.996203 * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 48630 00:56:35.227387 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:56:35.585588 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:56:35.610329 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:56:35.616946 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:56:35.621881 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:56:35.723098 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:56:35.797317 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:56:35.818534 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:56:35.886649 <= Recv header, 31 bytes (0x1f) 0000: 430 temporarily not available 00:56:35.925042 * Access denied: 430 00:56:36.250493 * closing connection #0 00:56:38.151963 * Hostname 127.0.0.1 was found in DNS cache 00:56:38.187620 * Trying 127.0.0.1:38207... 00:56:38.225811 * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 48644 00:56:38.233718 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:56:38.247947 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:56:38.253201 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:56:38.257987 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:56:38.262968 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:56:38.270111 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:56:38.276064 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:56:38.282520 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:56:38.291480 <= Recv header, 31 bytes (0x1f) 0000: 430 temporarily not available 00:56:38.298964 * Access denied: 430 00:56:38.327988 * closing connection #1 === End of file trace196 === Start of file valgrind196 ==217589== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind196 test 0197...[HTTP GET --retry on 503 error with output to stdout] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind197 ../src/curl -q --include --trace-ascii log/7/trace197 --trace-time http://127.0.0.1:34897/197 --retry 1000 > log/7/stdout197 2> log/7/stderr197 valgrind ERROR ==217863== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 197 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind197 ../src/curl -q --include --trace-ascii log/7/trace197 --trace-time http://127.0.0.1:34897/197 --retry 1000 > log/7/stdout197 2> log/7/stderr197 === End of file commands.log === Start of file http_server.log 00:55:51.926061 ====> Client connect 00:55:51.926242 accept_connection 3 returned 4 00:55:51.926331 accept_connection 3 returned 0 00:55:51.934670 Read 93 bytes 00:55:51.934796 Process 93 bytes request 00:55:51.934897 Got request: GET /verifiedserver HTTP/1.1 00:55:51.934972 Are-we-friendly question received 00:55:51.935101 Wrote request (93 bytes) input to log/7/server.input 00:55:51.935205 Identifying ourselves as friends 00:55:51.935381 Response sent (57 bytes) and written to log/7/server.response 00:55:51.935451 special request received, no persistency 00:55:51.935515 ====> Client disconnect 0 00:56:38.894859 ====> Client connect 00:56:38.894998 accept_connection 3 returned 4 00:56:38.895074 accept_connection 3 returned 0 00:56:39.970666 Read 82 bytes 00:56:39.970952 Process 82 bytCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind200 ../src/curl -q --output log/1/curl200.out --trace-ascii log/1/trace200 --trace-time file://localhost/build/curl/src/build-curl/tests/log/1/test200.txt > log/1/stdout200 2> log/1/stderr200 CMD (9472): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind201 ../src/curl -q --output log/5/curl201.out --include --trace-ascii log/5/trace201 --trace-time file://localhost//build/curl/src/build-curl/tests/log/5/non-existent-file.txt > log/5/stdout201 2> log/5/stderr201 es request 00:56:39.971074 Got request: GET /197 HTTP/1.1 00:56:39.971165 Serve test number 197 part 0 00:56:39.971378 - request found to be complete (197) 00:56:39.971672 Wrote request (82 bytes) input to log/7/server.input 00:56:39.971810 Send response test197 section 00:56:39.972043 enable "swsbounce" in the next request 00:56:39.972261 Response sent (104 bytes) and written to log/7/server.response 00:56:39.972330 => persistent connection request ended, awaits new request 00:56:43.648738 Read 82 bytes 00:56:43.648944 Process 82 bytes request 00:56:43.649036 Got request: GET /197 HTTP/1.1 00:56:43.649105 Serve test number 197 part 0 00:56:43.649283 - request found to be complete (197) 00:56:43.649475 Wrote request (82 bytes) input to log/7/server.input 00:56:43.649555 BOUNCE part number to 1 00:56:43.649620 Send response test197 section 00:56:43.649964 Response sent (92 bytes) and written to log/7/server.response 00:56:43.650029 => persistent connection request ended, awaits new request 00:56:44.153153 Connection closed by client 00:56:44.153368 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 43602 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 197 === End of file server.cmd === Start of file server.input GET /197 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* GET /197 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 503 BAD swsbounce Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 21 server not available HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 3 Connection: close ok === End of file server.response === Start of file stderr197 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 Warning: Problem : HTTP error. Will retry in 1 second. 1000 retries left. 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 3 100 3 0 0 4 0 --:--:-- --:--:-- --:--:-- 12 === End of file stderr197 === Start of file stdout197 HTTP/1.1 503 BAD swsbounce Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 21 server not available HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 3 Connection: close ok === End of file stdout197 === Start of file trace197 00:56:38.955224 * Trying 127.0.0.1:34897... 00:56:39.861741 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 52248 00:56:39.994785 * using HTTP/1.x 00:56:40.400407 => Send header, 82 bytes (0x52) 0000: GET /197 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 00:56:40.810915 <= Recv header, 27 bytes (0x1b) 0000: HTTP/1.1 503 BAD swsbounce. 00:56:41.139114 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:56:41.271310 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 21. 00:56:41.377360 <= Recv header, 1 bytes (0x1) 0000: . 00:56:41.439880 <= Recv data, 21 bytes (0x15) 0000: server not available. 00:56:42.085327 * Connection #0 to host 127.0.0.1:34897 left intact 00:56:43.954598 * Reusing existing http: connection with host 127.0.0.1 00:56:44.035568 => Send header, 82 bytes (0x52) 0000: GET /197 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 00:56:44.066390 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:56:44.079177 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:56:44.088775 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 3. 00:56:44.144791 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:56:44.161746 <= Recv header, 1 bytes (0x1) 0000: . 00:56:44.167467 <= Recv data, 3 bytes (0x3) 0000: ok. 00:56:44.184127 * we are done reading and this is set to close, stop send 00:56:44.205048 * abort upload 00:56:44.338689 * shutting down connection #0 === End of file trace197 === Start of file valgrind197 ==217863== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind197 test 0200...[basic file:// file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind200 ../src/curl -q --output log/1/curl200.out --trace-ascii log/1/trace200 --trace-time file://localhost/build/curl/src/build-curl/tests/log/1/test200.txt > log/1/stdout200 2> log/1/stderr200 valgrind ERROR ==218166== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 200 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind200 ../src/curl -q --output log/1/curl200.out --trace-ascii log/1/trace200 --trace-time file://localhost/build/curl/src/build-curl/tests/log/1/test200.txt > log/1/stdout200 2> log/1/stderr200 === End of file commands.log === Start of file curl200.out foo bar bar foo moo === End of file curl200.out === Start of file server.cmd Testnum 200 === End of file server.cmd === Start of file stderr200 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 100 26 100 26 0 0 12 0 0:00:02 0:00:02 --:--:-- 21 100 26 100 26 0 0 11 0 0:00:02 0:00:02 --:--:-- 19 === End of file stderr200 === Start of file test200.txt foo bar bar foo moo === End of file test200.txt === Start of file trace200 00:56:51.169014 <= Recv data, 26 bytes (0x1a) 0000: foo. bar.bar. foo.moo. 00:56:51.884993 * shutting down connection #0 === End of file trace200 === Start of file valgrind200 ==218166== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind200 test 0201...[missing file:// file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind201 ../src/curl -q --output log/5/curl201.out --include --trace-ascii log/5/trace201 --trace-time file://localhost//build/curl/src/build-curl/tests/log/5/non-existent-file.txt > log/5/stdout201 2> log/5/stderr201 valgrind ERROR ==218402== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 201 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind201 ../src/curl -q --output log/5/curl201.out --include --trace-ascii log/5/trace201 --trace-time file://localhost//build/curl/src/build-curl/tests/log/5/non-existent-file.txt > log/5/stdout201 2> log/5/stderr201 === End CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind198 ../src/curl -q --output log/8/curl198.out --include --trace-ascii log/8/trace198 --trace-time http://127.0.0.1:39461/198 --retry 1000 > log/8/stdout198 2> log/8/stderr198 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind199 ../src/curl -q --output log/2/curl199.out --include --trace-ascii log/2/trace199 --trace-time -d "foo=moo&moo=poo" "http://127.0.0.1:39863/{199,199}" -G > log/2/stdout199 2> log/2/stderr199 of file commands.log === Start of file server.cmd Testnum 201 === End of file server.cmd === Start of file stderr201 curl: (37) Couldn't open file //build/curl/src/build-curl/tests/log/5/non-existent-file.txt === End of file stderr201 === Start of file trace201 00:56:52.074865 * Couldn't open file //build/curl/src/build-curl/tests/log/5/non-existent-file.txt 00:56:52.480073 * closing connection #-1 === End of file trace201 === Start of file valgrind201 ==218402== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind201 test 0198...[HTTP GET --retry on 503 error with output to file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind198 ../src/curl -q --output log/8/curl198.out --include --trace-ascii log/8/trace198 --trace-time http://127.0.0.1:39461/198 --retry 1000 > log/8/stdout198 2> log/8/stderr198 valgrind ERROR ==218025== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 198 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind198 ../src/curl -q --output log/8/curl198.out --include --trace-ascii log/8/trace198 --trace-time http://127.0.0.1:39461/198 --retry 1000 > log/8/stdout198 2> log/8/stderr198 === End of file commands.log === Start of file curl198.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 3 Connection: close ok === End of file curl198.out === Start of file http_server.log 00:56:02.430374 ====> Client connect 00:56:02.430537 accept_connection 3 returned 4 00:56:02.430613 accept_connection 3 returned 0 00:56:02.437196 Read 93 bytes 00:56:02.437289 Process 93 bytes request 00:56:02.437384 Got request: GET /verifiedserver HTTP/1.1 00:56:02.437454 Are-we-friendly question received 00:56:02.437581 Wrote request (93 bytes) input to log/8/server.input 00:56:02.437680 Identifying ourselves as friends 00:56:02.437865 Response sent (57 bytes) and written to log/8/server.response 00:56:02.437929 special request received, no persistency 00:56:02.437984 ====> Client disconnect 0 00:56:50.049614 ====> Client connect 00:56:50.049758 accept_connection 3 returned 4 00:56:50.049840 accept_connection 3 returned 0 00:56:51.043649 Read 82 bytes 00:56:51.043845 Process 82 bytes request 00:56:51.043949 Got request: GET /198 HTTP/1.1 00:56:51.044020 Serve test number 198 part 0 00:56:51.044191 - request found to be complete (198) 00:56:51.044432 Wrote request (82 bytes) input to log/8/server.input 00:56:51.044536 Send response test198 section 00:56:51.044768 enable "swsbounce" in the next request 00:56:51.044937 Response sent (103 bytes) and written to log/8/server.response 00:56:51.044999 => persistent connection request ended, awaits new request 00:56:54.563467 Read 82 bytes 00:56:54.563653 Process 82 bytes request 00:56:54.563747 Got request: GET /198 HTTP/1.1 00:56:54.563815 Serve test number 198 part 0 00:56:54.563998 - request found to be complete (198) 00:56:54.564196 Wrote request (82 bytes) input to log/8/server.input 00:56:54.564332 BOUNCE part number to 1 00:56:54.564415 Send response test198 section 00:56:54.564766 Response sent (92 bytes) and written to log/8/server.response 00:56:54.564835 => persistent connection request ended, awaits new request 00:56:55.113863 Connection closed by client 00:56:55.114112 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 58246 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 198 === End of file server.cmd === Start of file server.input GET /198 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* GET /198 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 503 OK swsbounce Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 21 server not available HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 3 Connection: close ok === End of file server.response === Start of file stderr198 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 Warning: Problem : HTTP error. Will retry in 1 second. 1000 retries left. Note: Throwing away 21 bytes 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 3 100 3 0 0 4 0 --:--:-- --:--:-- --:--:-- 11 === End of file stderr198 === Start of file trace198 00:56:50.110888 * Trying 127.0.0.1:39461... 00:56:50.998448 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 48172 00:56:51.113120 * using HTTP/1.x 00:56:51.464699 => Send header, 82 bytes (0x52) 0000: GET /198 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 00:56:51.807705 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 503 OK swsbounce. 00:56:52.108958 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:56:52.226787 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 21. 00:56:52.319047 <= Recv header, 1 bytes (0x1) 0000: . 00:56:52.376005 <= Recv data, 21 bytes (0x15) 0000: server not available. 00:56:52.918984 * Connection #0 to host 127.0.0.1:39461 left intact 00:56:54.871156 * Reusing existing http: connection with host 127.0.0.1 00:56:54.948926 => Send header, 82 bytes (0x52) 0000: GET /198 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 00:56:54.979498 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:56:55.011082 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:56:55.023039 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 3. 00:56:55.083246 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:56:55.100642 <= Recv header, 1 bytes (0x1) 0000: . 00:56:55.106246 <= Recv data, 3 bytes (0x3) 0000: ok. 00:56:55.121560 * we are done reading and this is set to close, stop send 00:56:55.142805 * abort upload 00:56:55.278030 * shutting down connection #0 === End of file trace198 === Start of file valgrind198 ==218025== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind198 test 0199...[HTTP with -d, -G and {}] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind199 ../src/curl -q --output log/2/curl199.out --include --trace-ascii log/2/trace199 --trace-time -d "foo=moo&moo=poo" "http://127.0.0.1:39863/{199,199}" -G > log/2/stdout199 2> log/2/stderr199 valgrind ERROR ==218251== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 199 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind199 ../src/curl -q --output log/2/curl199.out --include --trace-ascii log/2/trace199 --trace-time -d "foo=moo&moo=poo" "http://127.0.0.1:39863/{199,199}" -G > log/2/stdout199 2> log/2/stderr199 === End of file commands.log === Start of file curl199.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl199.out === Start of file http_server.log 00:56:05.783834 ====> Client connect 00:56:05.783981 accept_connection 3 returned 4 00:56:05.784066 accept_connection 3 returned 0 00:56:05.794059 Read 93 bytes 00:56:05.794232 Process 93 bytes request 00:56:05.794342 Got request: GET /verifiedserver HTTP/1.1 00:56:05.794418 Are-we-friendly question received 00:56:05.794571 Wrote request (93 bytes) input to log/2/server.input 00:56:05.794684 Identifying ourselves as friends 00:56:05.794876 Response sent (57 bytes) and written to log/2/server.response 00:56:05.794947 special request received, no persistency 00:56:05.795012 ====> Client disconnect 0 00:56:53.286129 ====> Client connect 00:56:53.286278 accept_connection 3 returned 4 00:56:53.286369 accept_connection 3 returned 0 00:56:54.261128 Read 98 bytes 00:56:54.261328 Process 98 bytes request 00:56:54.261420 Got request: GET /199?foo=moo&moo=poo HTTP/1.1 00:56:54.261488 Serve test number 199 part 0 00:56:54.261650 - request found to be complete (199) 00:56:54.261888 Wrote request (98 bytes) input to log/2/server.input 00:56:54.261988 Send response test199 section 00:56:54.262315 Response sent (256 bytes) and written to log/2/server.response 00:56:54.262381 => persistent connection request ended, awaits new request 00:56:56.094800 Connection closed by client 00:56:56.095014 ====> Client disconnect 0 00:56:57.150384 ====> Client connect 00:56:57.150531 accept_connection 3 returned 4 00:56:57.150636 accept_connection 3 returned 0 00:56:57.213557 Read 98 bytes 00:56:57.213741 Process 98 bytes request 00:56:57.213847 Got request: GET /199?foo=moo&moo=poo HTTP/1.1 00:56:57.213951 Serve test number 199 part 0 00:56:57.214153 - request found to be complete (199) 00:56:57.214370 Wrote request (98 bytes) input to log/2/server.input 00:56:57.214462 Send response test199 section 00:56:57.214985 Response sent (256 bytes) and written to log/2/server.response 00:56:57.215061 => persistent connection request ended, awaits new request 00:56:57.410617 Connection closed by client 00:56:57.410816 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 47492 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 199 === End of file server.cmd === Start of file server.input GET /199?foo=moo&moo=poo HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* GET /199?foo=moo&moo=poo HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr199 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 6 100 6 0 0 16 0 --:--:-- --:--:-- --:--:-- 23 === End of file stderr199 === Start of file trace199 00:56:52.353449 * Trying 127.0.0.1:39863... 00:56:53.232370 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 53912 00:56:53.353400 * using HTTP/1.x 00:56:53.681372 => Send header, 98 bytes (0x62) 0000: GET /199?foo=moo&moo=poo HTTP/1.1 0023: Host: 127.0.0.1:39863 003a: User-Agent: curl/8.17.0 0053: Accept: */* 0060: 00:56:53.998362 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:56:54.284696 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:56:54.379090 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:56:54.402469 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 00:56:54.410281 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 00:56:54.416842 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 00:56:54.459288 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 00:56:54.512085 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:56:54.545520 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:56:54.550100 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:56:54.624830 <= Recv header, 1 bytes (0x1) 0000: . 00:56:54.677860 <= Recv data, 6 bytes (0x6) 0000: -foo-. 00:56:54.777068 * we are done reading and this is set to close, stop send 00:56:54.805184 * abort upload 00:56:55.261955 * shutting down connection #0 00:56:56.468345 * Hostname 127.0.0.1 was found in DNS cache 00:56:56.526096 * Trying 127.0.0.1:39863... 00:56:56.568165 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 53916 00:56:56.575868 * using HTTP/1.x 00:56:56.599467 => Send header, 98 bytes (0x62) 0000: GET /199?foo=moo&moo=poo HTTP/1.1 0023: Host: 127.0.0.1:39863 003a: User-Agent: curl/8.17.0 0053: Accept: */* 0060: 00:56:56.635647 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:56:56.652290 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:56:56.661773 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:56:56.666999 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 00:56:56.673664 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 00:56:56.678510 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 00:56:56.684002 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 00:56:56.690933 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:56:56.697495 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:56:56.702410 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:56:56.713816 <= Recv header, 1 bytes (0x1) 0000: . 00:56:56.720032 <= Recv data, 6 bytes (0x6) 0000: -foo-. 00:56:56.731004 * we are done reading and this is set to close, stop send 00:56:56.734209 * abort upload 00:56:56.777677 * shutting down connection #1 === End of file trace199 === Start of file valgrind1CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind203 ../src/curl -q --output log/6/curl203.out --trace-ascii log/6/trace203 --trace-time file:/build/curl/src/build-curl/tests/log/6/test203.txt > log/6/stdout203 2> log/6/stderr203 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind202 ../src/curl -q --trace-ascii log/3/trace202 --trace-time file://localhost/build/curl/src/build-curl/tests/log/3/test202.txt FILE://localhost/build/curl/src/build-curl/tests/log/3/test202.txt > log/3/stdout202 2> log/3/stderr202 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind204 ../src/curl -q --output log/4/curl204.out --trace-ascii log/4/trace204 --trace-time file://localhost/build/curl/src/build-curl/tests/log/4/result204.txt -T log/4/upload204.txt > log/4/stdout204 2> log/4/stderr204 CMD (5888): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind205 ../src/curl -q --output log/7/curl205.out --trace-ascii log/7/trace205 --trace-time file://localhost//build/curl/src/build-curl/tests/log/7/nonexisting/result205.txt -T log/7/upload205.txt > log/7/stdout205 2> log/7/stderr205 99 ==218251== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind199 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 206 in state 4 Runner 2 (id 185908) running test 209 in state 4 Runner 3 (id 185910) running test 202 in state 4 Runner 4 (id 185912) running test 204 in state 4 Runner 5 (id 185914) running test 207 in state 4 Runner 6 (id 185916) running test 203 in state 4 Runner 7 (id 185918) running test 205 in state 4 Runner 8 (id 185920) running test 208 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 206 in state 4 Runner 2 (id 185908) running test 209 in state 4 Runner 3 (id 185910) running test 202 in state 4 Runner 4 (id 185912) running test 204 in state 4 Runner 5 (id 185914) running test 207 in state 4 Runner 6 (id 185916) running test 203 in state 4 Runner 7 (id 185918) running test 205 in state 4 Runner 8 (id 185920) running test 208 in state 4 setenv MSYS2_ARG_CONV_EXCL = file: test 0203...[file:/path URL with a single slash] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind203 ../src/curl -q --output log/6/curl203.out --trace-ascii log/6/trace203 --trace-time file:/build/curl/src/build-curl/tests/log/6/test203.txt > log/6/stdout203 2> log/6/stderr203 valgrind ERROR ==218613== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 203 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind203 ../src/curl -q --output log/6/curl203.out --trace-ascii log/6/trace203 --trace-time file:/build/curl/src/build-curl/tests/log/6/test203.txt > log/6/stdout203 2> log/6/stderr203 === End of file commands.log === Start of file curl203.out foo bar bar foo moo === End of file curl203.out === Start of file server.cmd Testnum 203 === End of file server.cmd === Start of file stderr203 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 26 100 26 0 0 13 0 0:00:02 0:00:01 0:00:01 23 100 26 100 26 0 0 12 0 0:00:02 0:00:02 --:--:-- 20 === End of file stderr203 === Start of file test203.txt foo bar bar foo moo === End of file test203.txt === Start of file trace203 00:57:25.857713 <= Recv data, 26 bytes (0x1a) 0000: foo. bar.bar. foo.moo. 00:57:26.609988 * shutting down connection #0 === End of file trace203 === Start of file valgrind203 ==218613== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind203 test 0202...[two file:// URLs to stdout] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind202 ../src/curl -q --trace-ascii log/3/trace202 --trace-time file://localhost/build/curl/src/build-curl/tests/log/3/test202.txt FILE://localhost/build/curl/src/build-curl/tests/log/3/test202.txt > log/3/stdout202 2> log/3/stderr202 valgrind ERROR ==218610== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 202 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind202 ../src/curl -q --trace-ascii log/3/trace202 --trace-time file://localhost/build/curl/src/build-curl/tests/log/3/test202.txt FILE://localhost/build/curl/src/build-curl/tests/log/3/test202.txt > log/3/stdout202 2> log/3/stderr202 === End of file commands.log === Start of file server.cmd Testnum 202 === End of file server.cmd === Start of file stderr202 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 100 26 100 26 0 0 13 0 0:00:02 0:00:01 0:00:01 22 100 26 100 26 0 0 12 0 0:00:02 0:00:02 --:--:-- 19 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 26 100 26 0 0 184 0 --:--:-- --:--:-- --:--:-- 302 === End of file stderr202 === Start of file stdout202 contents in a single file contents in a single file === End of file stdout202 === Start of file test202.txt contents in a single file === End of file test202.txt === Start of file trace202 00:57:26.253865 <= Recv data, 26 bytes (0x1a) 0000: contents in a single file. 00:57:26.974271 * shutting down connection #0 00:57:27.961542 <= Recv data, 26 bytes (0x1a) 0000: contents in a single file. 00:57:28.031982 * shutting down connection #1 === End of file trace202 === Start of file valgrind202 ==218610== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind202 test 0204...["upload" with file://] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind204 ../src/curl -q --output log/4/curl204.out --trace-ascii log/4/trace204 --trace-time file://localhost/build/curl/src/build-curl/tests/log/4/result204.txt -T log/4/upload204.txt > log/4/stdout204 2> log/4/stderr204 valgrind ERROR ==218827== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 204 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind204 ../src/curl -q --output log/4/curl204.out --trace-ascii log/4/trace204 --trace-time file://localhost/build/curl/src/build-curl/tests/log/4/result204.txt -T log/4/upload204.txt > log/4/stdout204 2> log/4/stderr204 === End of file commands.log === Start of file result204.txt data in file to write === End of file result204.txt === Start of file server.cmd Testnum 204 === End of file server.cmd === Start of file stderr204 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 100 22 0 0 100 22 0 14 0:00:01 0:00:01 --:--:-- 33 === End of file stderr204 === Start of file trace204 00:57:28.011713 * shutting down connection #0 === End of file trace204 === Start of file upload204.txt data in file to write === End of file upload204.txt === Start of file valgrind204 ==218827== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind204 test 0205...["upload" nonexisting with file://] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind205 ../src/curl -q --output log/7/curl205.out --trace-ascii log/7/trace205 --trace-time file://localhost//build/curl/src/build-curl/tests/log/7/nonexisting/result205.txt -T log/7/upload205.txt > log/7/stdout205 2> log/7/stderr205 valgrind ERROR ==218963== error calling PR_SET_PTRACER, vgdb might block ==CMD (4608): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind207 ../src/curl -q --output log/5/curl207.out --include --trace-ascii log/5/trace207 --trace-time http://127.0.0.1:46263/207 > log/5/stdout207 2> log/5/stderr207 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind208 ../src/curl -q --output log/8/curl208.out --include --trace-ascii log/8/trace208 --trace-time -x http://127.0.0.1:39461 ftp://daniel:mysecret@host.com/we/want/208 -T log/8/test208.txt > log/8/stdout208 2> log/8/stderr208 Contents of files in the log/7/ dir after test 205 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind205 ../src/curl -q --output log/7/curl205.out --trace-ascii log/7/trace205 --trace-time file://localhost//build/curl/src/build-curl/tests/log/7/nonexisting/result205.txt -T log/7/upload205.txt > log/7/stdout205 2> log/7/stderr205 === End of file commands.log === Start of file server.cmd Testnum 205 === End of file server.cmd === Start of file stderr205 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 curl: (23) cannot open //build/curl/src/build-curl/tests/log/7/nonexisting/result205.txt for writing === End of file stderr205 === Start of file trace205 00:57:33.247339 * cannot open //build/curl/src/build-curl/tests/log/7/nonexisting/result205.txt for writing 00:57:33.848058 * closing connection #0 === End of file trace205 === Start of file upload205.txt data in file to write === End of file upload205.txt === Start of file valgrind205 ==218963== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind205 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 206 in state 4 Runner 2 (id 185908) running test 209 in state 4 Runner 3 (id 185910) running test 211 in state 4 Runner 4 (id 185912) running test 212 in state 4 Runner 5 (id 185914) running test 207 in state 4 Runner 6 (id 185916) running test 210 in state 4 Runner 7 (id 185918) running test 213 in state 4 Runner 8 (id 185920) running test 208 in state 4 test 0207...[HTTP GET with chunked Transfer-Encoding closed prematurely] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind207 ../src/curl -q --output log/5/curl207.out --include --trace-ascii log/5/trace207 --trace-time http://127.0.0.1:46263/207 > log/5/stdout207 2> log/5/stderr207 valgrind ERROR ==219195== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 207 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind207 ../src/curl -q --output log/5/curl207.out --include --trace-ascii log/5/trace207 --trace-time http://127.0.0.1:46263/207 > log/5/stdout207 2> log/5/stderr207 === End of file commands.log === Start of file curl207.out HTTP/1.1 200 funky chunky! swsclose Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Connection: mooo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa === End of file curl207.out === Start of file http_server.log 00:56:55.889925 ====> Client connect 00:56:55.890103 accept_connection 3 returned 4 00:56:55.890191 accept_connection 3 returned 0 00:56:55.896960 Read 93 bytes 00:56:55.897066 Process 93 bytes request 00:56:55.897166 Got request: GET /verifiedserver HTTP/1.1 00:56:55.897241 Are-we-friendly question received 00:56:55.897392 Wrote request (93 bytes) input to log/5/server.input 00:56:55.897495 Identifying ourselves as friends 00:56:55.897699 Response sent (57 bytes) and written to log/5/server.response 00:56:55.897771 special request received, no persistency 00:56:55.897837 ====> Client disconnect 0 00:57:43.556304 ====> Client connect 00:57:43.556455 accept_connection 3 returned 4 00:57:43.556539 accept_connection 3 returned 0 00:57:44.574807 Read 82 bytes 00:57:44.575047 Process 82 bytes request 00:57:44.575151 Got request: GET /207 HTTP/1.1 00:57:44.575225 Serve test number 207 part 0 00:57:44.575412 - request found to be complete (207) 00:57:44.575685 Wrote request (82 bytes) input to log/5/server.input 00:57:44.575801 Send response test207 section 00:57:44.576037 connection close instruction "swsclose" found in response 00:57:44.576222 Response sent (185 bytes) and written to log/5/server.response 00:57:44.576290 instructed to close connection after server-reply 00:57:44.576355 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 43168 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 207 === End of file server.cmd === Start of file server.input GET /207 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 funky chunky! swsclose Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Connection: mooo 41 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa === End of file server.response === Start of file stderr207 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 65 0 65 0 0 13 0 --:--:-- 0:00:04 --:--:-- 19 curl: (18) transfer closed with outstanding read data remaining === End of file stderr207 === Start of file trace207 00:57:43.623846 * Trying 127.0.0.1:46263... 00:57:44.525253 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 38796 00:57:44.657217 * using HTTP/1.x 00:57:44.997399 => Send header, 82 bytes (0x52) 0000: GET /207 HTTP/1.1 0013: Host: 127.0.0.1:46263 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 00:57:45.329934 <= Recv header, 36 bytes (0x24) 0000: HTTP/1.1 200 funky chunky! swsclose. 00:57:45.662734 <= Recv header, 33 bytes (0x21) 0000: Server: fakeit/0.9 fakeitbad/1.0. 00:57:45.833147 <= Recv header, 27 bytes (0x1b) 0000: Transfer-Encoding: chunked. 00:57:45.907650 <= Recv header, 17 bytes (0x11) 0000: Connection: mooo. 00:57:45.980048 <= Recv header, 1 bytes (0x1) 0000: . 00:57:46.039851 <= Recv data, 71 bytes (0x47) 0000: 41 0004: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0044: . 00:57:46.245323 * abort upload 00:57:46.269761 <= Recv data, 0 bytes (0x0) 00:57:46.304755 * transfer closed with outstanding read data remaining 00:57:46.661451 * closing connection #0 === End of file trace207 === Start of file valgrind207 ==219195== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind207 test 0208...[HTTP PUT to an FTP URL with username+password - over HTTP proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind208 ../src/curl -q --output log/8/curl208.out --include --trace-ascii log/8/trace208 --trace-time -x http://127.0.0.1:39461 ftp://daniel:mysecret@host.com/we/want/208 -T log/8/test208.txt > log/8/stdout208 2> log/8/stderr208 valgrind ERROR ==219436== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 208 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet -CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind209 ../src/curl -q --output log/2/curl209.out --include --trace-ascii log/2/trace209 --trace-time http://test.remote.example.com.209:39863/path/2090002 --proxy http://127.0.0.1:39863 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel > log/2/stdout209 2> log/2/stderr209 -leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind208 ../src/curl -q --output log/8/curl208.out --include --trace-ascii log/8/trace208 --trace-time -x http://127.0.0.1:39461 ftp://daniel:mysecret@host.com/we/want/208 -T log/8/test208.txt > log/8/stdout208 2> log/8/stderr208 === End of file commands.log === Start of file curl208.out HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file curl208.out === Start of file http_server.log 00:56:58.676021 ====> Client connect 00:56:58.676177 accept_connection 3 returned 4 00:56:58.676249 accept_connection 3 returned 0 00:56:58.683741 Read 93 bytes 00:56:58.683865 Process 93 bytes request 00:56:58.683973 Got request: GET /verifiedserver HTTP/1.1 00:56:58.684041 Are-we-friendly question received 00:56:58.684161 Wrote request (93 bytes) input to log/8/server.input 00:56:58.684255 Identifying ourselves as friends 00:56:58.684433 Response sent (57 bytes) and written to log/8/server.response 00:56:58.684493 special request received, no persistency 00:56:58.684546 ====> Client disconnect 0 00:57:46.423018 ====> Client connect 00:57:46.423158 accept_connection 3 returned 4 00:57:46.423237 accept_connection 3 returned 0 00:57:47.741538 Read 287 bytes 00:57:47.741766 Process 287 bytes request 00:57:47.741876 Got request: PUT ftp://daniel:mysecret@host.com/we/want/208 HTTP/1.1 00:57:47.741958 Serve test number 208 part 0 00:57:47.742172 - request found to be complete (208) 00:57:47.742360 Found Content-Length: 78 in the request 00:57:47.742545 Wrote request (287 bytes) input to log/8/server.input 00:57:47.742667 Send response test208 section 00:57:47.742912 connection close instruction "swsclose" found in response 00:57:47.743107 Response sent (98 bytes) and written to log/8/server.response 00:57:47.743181 instructed to close connection after server-reply 00:57:47.743249 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 45298 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 208 === End of file server.cmd === Start of file server.input PUT ftp://daniel:mysecret@host.com/we/want/208 HTTP/1.1 Host: host.com:21 Authorization: Basic ZGFuaWVsOm15c2VjcmV0 User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive Content-Length: 78 Weird file to upload for testing the PUT feature === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file server.response === Start of file stderr208 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 78 0 0 100 78 0 19 0:00:04 0:00:03 0:00:01 31 100 89 0 11 100 78 2 15 0:00:05 0:00:05 --:--:-- 25 === End of file stderr208 === Start of file test208.txt Weird file to upload for testing the PUT feature === End of file test208.txt === Start of file trace208 00:57:46.498261 * Trying 127.0.0.1:39461... 00:57:47.365784 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 60970 00:57:47.496468 * using HTTP/1.x 00:57:47.636320 * Server auth using Basic with user 'daniel' 00:57:48.162964 => Send header, 209 bytes (0xd1) 0000: PUT ftp://daniel:mysecret@host.com/we/want/208 HTTP/1.1 0039: Host: host.com:21 004c: Authorization: Basic ZGFuaWVsOm15c2VjcmV0 0077: User-Agent: curl/8.17.0 0090: Accept: */* 009d: Proxy-Connection: Keep-Alive 00bb: Content-Length: 78 00cf: 00:57:48.271122 => Send data, 78 bytes (0x4e) 0000: Weird. file. to. upload.for. testing.the. PUT. 0040: feature. 00:57:48.352662 * upload completely sent off: 78 bytes 00:57:48.617085 * HTTP 1.0, assume close after body 00:57:48.638512 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.0 200 OK swsclose. 00:57:48.929558 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:57:49.029183 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 00:57:49.120741 <= Recv header, 1 bytes (0x1) 0000: . 00:57:49.177577 <= Recv data, 11 bytes (0xb) 0000: blablabla.. 00:57:49.281311 <= Recv data, 0 bytes (0x0) 00:57:49.738445 * shutting down connection #0 === End of file trace208 === Start of file valgrind208 ==219436== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind208 test 0209...[HTTP proxy CONNECT auth NTLM] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind209 ../src/curl -q --output log/2/curl209.out --include --trace-ascii log/2/trace209 --trace-time http://test.remote.example.com.209:39863/path/2090002 --proxy http://127.0.0.1:39863 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel > log/2/stdout209 2> log/2/stderr209 valgrind ERROR ==219575== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 209 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind209 ../src/curl -q --output log/2/curl209.out --include --trace-ascii log/2/trace209 --trace-time http://test.remote.example.com.209:39863/path/2090002 --proxy http://127.0.0.1:39863 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel > log/2/stdout209 2> log/2/stderr209 === End of file commands.log === Start of file curl209.out HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 33 HTTP/1.1 200 Things are fine in proxy land Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 7 Connection: close Content-Type: text/html Funny-head: yesyes daniel === End of file curl209.out === Start of file http_server.log 00:57:00.869463 ====> Client connect 00:57:00.869621 accept_connection 3 returned 4 00:57:00.869695 accept_connection 3 returned 0 00:57:00.877362 Read 93 bytes 00:57:00.877469 Process 93 bytes request 00:57:00.877560 Got request: GET /verifiedserver HTTP/1.1 00:57:00.877628 Are-we-friendly question received 00:57:00.877748 Wrote request (93 bytes) input to log/2/server.input 00:57:00.877838 Identifying ourselves as friends 00:57:00.878006 Response sent (57 bytes) and written to log/2/server.response 00:57:00.878070 special request received, no persistency 00:57:00.878127 ====> Client disconnect 0 00:57:48.377608 ====> Client connect 00:57:48.377748 accept_connection 3 returned 4 00:57:48.377824 accept_connection 3 returned 0 00:57:49.341650 Read 222 bytes 00:57:49.341854 Process 222 bytes request 00:57:49.341958 Received a CONNECT test.remote.example.com.209:39863 HTTP/1.1 request 00:57:49.342057 Port number: 39863, test case number: -7CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind206 ../src/curl -q --output log/1/curl206.out --include --trace-ascii log/1/trace206 --trace-time http://test.remote.haxx.se.206:8990/path/2060002 --proxy=http://127.0.0.1:40641 --proxy-user=silly:person --proxy-digest --proxytunnel > log/1/stdout206 2> log/1/stderr206 00:57:49.342177 [log/2/server.cmd] cmdfile says testnum 209 00:57:49.342513 - request found to be complete (209) 00:57:49.342788 Received NTLM type-1, sending back data 1001 00:57:49.342966 Wrote request (222 bytes) input to log/2/server.input 00:57:49.343089 Send response test209 section 00:57:49.343503 Response sent (355 bytes) and written to log/2/server.response 00:57:49.343602 received CONNECT but isn't running as proxy 00:57:51.349055 Read 354 bytes 00:57:51.349231 Process 354 bytes request 00:57:51.349336 Received a CONNECT test.remote.example.com.209:39863 HTTP/1.1 request 00:57:51.349411 Port number: 39863, test case number: -7 00:57:51.349521 [log/2/server.cmd] cmdfile says testnum 209 00:57:51.349778 - request found to be complete (209) 00:57:51.350035 Received NTLM type-3, sending back data 1002 00:57:51.350159 Wrote request (354 bytes) input to log/2/server.input 00:57:51.350253 Send response test209 section 00:57:51.350684 Response sent (118 bytes) and written to log/2/server.response 00:57:51.350755 received CONNECT but isn't running as proxy 00:57:52.036397 Read 109 bytes 00:57:52.036588 Process 109 bytes request 00:57:52.036684 Got request: GET /path/2090002 HTTP/1.1 00:57:52.036754 Serve test number 209 part 2 00:57:52.036974 - request found to be complete (209) 00:57:52.037236 Wrote request (109 bytes) input to log/2/server.input 00:57:52.037313 Send response test209 section 00:57:52.037694 Response sent (139 bytes) and written to log/2/server.response 00:57:52.037760 => persistent connection request ended, awaits new request 00:57:53.392853 Connection closed by client 00:57:53.393058 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 53924 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 209 === End of file server.cmd === Start of file server.input CONNECT test.remote.example.com.209:39863 HTTP/1.1 Host: test.remote.example.com.209:39863 Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive CONNECT test.remote.example.com.209:39863 HTTP/1.1 Host: test.remote.example.com.209:39863 Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive GET /path/2090002 HTTP/1.1 Host: test.remote.example.com.209:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 33 And you should ignore this data. HTTP/1.1 200 Things are fine in proxy land Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 7 Connection: close Content-Type: text/html Funny-head: yesyes daniel === End of file server.response === Start of file stderr209 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 7 100 7 0 0 1 0 0:00:07 0:00:06 0:00:01 1 === End of file stderr209 === Start of file trace209 00:57:47.465826 * Trying 127.0.0.1:39863... 00:57:48.239809 * CONNECT: no ALPN negotiated 00:57:48.293462 * allocate connect buffer 00:57:48.478781 * Proxy auth using NTLM with user 'testuser' 00:57:48.605464 * Establish HTTP proxy tunnel to test.remote.example.com.209:39863 00:57:48.756211 => Send header, 222 bytes (0xde) 0000: CONNECT test.remote.example.com.209:39863 HTTP/1.1 0034: Host: test.remote.example.com.209:39863 005d: Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAA 009d: AAAAA= 00a5: User-Agent: curl/8.17.0 00be: Proxy-Connection: Keep-Alive 00dc: 00:57:48.964311 <= Recv header, 57 bytes (0x39) 0000: HTTP/1.1 407 Authorization Required to proxy me my dear 00:57:49.312290 <= Recv header, 243 bytes (0xf3) 0000: Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVD 0040: gyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQ 0080: ASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGU 00c0: AdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== 00:57:49.632674 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 33 00:57:49.657838 <= Recv header, 2 bytes (0x2) 0000: 00:57:49.672355 * Ignore 33 bytes of response-body 00:57:50.700690 * Proxy auth using NTLM with user 'testuser' 00:57:50.710068 * Establish HTTP proxy tunnel to test.remote.example.com.209:39863 00:57:50.736143 => Send header, 354 bytes (0x162) 0000: CONNECT test.remote.example.com.209:39863 HTTP/1.1 0034: Host: test.remote.example.com.209:39863 005d: Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAA 009d: AAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw 00dd: 47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1 011d: NUQVRJT04= 0129: User-Agent: curl/8.17.0 0142: Proxy-Connection: Keep-Alive 0160: 00:57:50.792228 <= Recv header, 44 bytes (0x2c) 0000: HTTP/1.1 200 Things are fine in proxy land 00:57:50.806589 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:57:50.819875 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:57:50.827650 <= Recv header, 2 bytes (0x2) 0000: 00:57:50.848307 * CONNECT phase completed 00:57:50.866441 * CONNECT tunnel established, response 200 00:57:51.051472 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 36792 00:57:51.140795 * using HTTP/1.x 00:57:51.439365 => Send header, 109 bytes (0x6d) 0000: GET /path/2090002 HTTP/1.1 001c: Host: test.remote.example.com.209:39863 0045: User-Agent: curl/8.17.0 005e: Accept: */* 006b: 00:57:51.682465 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:57:51.743215 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:57:51.790682 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 7. 00:57:51.837537 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:57:51.854494 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:57:51.859212 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:57:51.933046 <= Recv header, 1 bytes (0x1) 0000: . 00:57:51.989158 <= Recv data, 7 bytes (0x7) 0000: daniel. 00:57:52.097123 * we are done reading and this is set to close, stop send 00:57:52.133060 * abort upload 00:57:52.563978 * shutting down connection #0 === End of file trace209 === Start of file valgrind209 ==219575== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind209 test 0206...[HTTP proxy CONNECT auth Digest] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind206 ../src/curl -q --output log/1/curl206.out --include --trace-ascii log/1/trace206 --trace-time http://test.remote.haxx.se.206:8990/path/2060002 --proxy=http://127.0.0.1:40641 --proxy-user=silly:person --proxy-digest --proxytunnel > log/1/stdout206 2> log/1/stderr206 valgrind ERROR ==219167== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 206 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind206 ../src/curl -q --output log/1/curl206.out --include --trace-ascii log/1/trace206 --trace-time http://test.remote.haxx.se.206:8990/path/2060002 --proxy=http://127.0.0.1:40641 --proxy-user=silly:person --proxy-digest --proxytunnel > log/1/stdout206 2> log/1/stderr206 === End of file commands.log === Start of file curl206.out HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345" Content-Length: 33 HTTP/1.1 200 OK Server: no HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 7 Connection: close Content-Type: text/html Funny-head: yesyes daniel === End of file curl206.out === Start of file http_server.log 00:56:56.266819 ====> Client connect 00:56:56.266987 accept_connection 3 returned 4 00:56:56.267068 accept_connection 3 returned 0 00:56:56.275059 Read 93 bytes 00:56:56.275201 Process 93 bytes request 00:56:56.275290 Got request: GET /verifiedserver HTTP/1.1 00:56:56.275358 Are-we-friendly question received 00:56:56.275483 Wrote request (93 bytes) input to log/1/server.input 00:56:56.275577 Identifying ourselves as friends 00:56:56.275735 Response sent (57 bytes) and written to log/1/server.response 00:56:56.275799 special request received, no persistency 00:56:56.275855 ====> Client disconnect 0 00:57:45.186430 ====> Client connect 00:57:45.186588 accept_connection 3 returned 4 00:57:45.186679 accept_connection 3 returned 0 00:57:46.111793 Read 140 bytes 00:57:46.111996 Process 140 bytes request 00:57:46.112220 Received a CONNECT test.remote.haxx.se.206:8990 HTTP/1.1 request 00:57:46.112379 Port number: 8990, test case number: -7 00:57:46.112681 [log/1/server.cmd] cmdfile says testnum 206 00:57:46.113085 enabled connection monitoring 00:57:46.113313 instructed to require authorization header 00:57:46.113403 - request found to be complete (206) 00:57:46.113535 enabled connection monitoring 00:57:46.113605 instructed to require authorization header 00:57:46.113722 Return early due to auth requested by none provided 00:57:46.113895 Wrote request (140 bytes) input to log/1/server.input 00:57:46.114020 Send response test206 section 00:57:46.114394 Response sent (175 bytes) and written to log/1/server.response 00:57:46.114496 received CONNECT but isn't running as proxy 00:57:53.848181 Read 303 bytes 00:57:53.848383 Process 303 bytes request 00:57:53.848496 Received a CONNECT test.remote.haxx.se.206:8990 HTTP/1.1 request 00:57:53.848575 Port number: 8990, test case number: -7 00:57:53.848695 [log/1/server.cmd] cmdfile says testnum 206 00:57:53.848872 enabled connection monitoring 00:57:53.848943 instructed to require authorization header 00:57:53.849014 - request found to be complete (206) 00:57:53.849146 enabled connection monitoring 00:57:53.849215 instructed to require authorization header 00:57:53.849316 Authorization header found, as required 00:57:53.849402 Received Digest request, sending back data 1000 00:57:53.849513 Wrote request (303 bytes) input to log/1/server.input 00:57:53.849600 Send response test206 section 00:57:53.849985 Response sent (30 bytes) and written to log/1/server.response 00:57:53.850063 received CONNECT but isn't running as proxy 00:57:54.581998 Read 104 bytes 00:57:54.582222 Process 104 bytes request 00:57:54.582322 Got request: GET /path/2060002 HTTP/1.1 00:57:54.582449 Serve test number 206 part 2 00:57:54.582607 enabled connection monitoring 00:57:54.582674 instructed to require authorization header 00:57:54.582739 - request found to be complete (206) 00:57:54.582861 enabled connection monitoring 00:57:54.582925 instructed to require authorization header 00:57:54.583011 Return early due to auth requested by none provided 00:57:54.583102 Wrote request (104 bytes) input to log/1/server.input 00:57:54.583189 Send response test206 section 00:57:54.583589 Response sent (139 bytes) and written to log/1/server.response 00:57:54.583660 => persistent connection request ended, awaits new request 00:57:55.900751 Connection closed by client 00:57:55.900946 ====> Client disconnect 1 00:57:55.901082 Wrote request (13 bytes) input to log/1/server.input === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 60816 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd connection-monitor auth_required Testnum 206 === End of file server.cmd === Start of file server.input CONNECT test.remote.haxx.se.206:8990 HTTP/1.1 Host: test.remote.haxx.se.206:8990 User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive CONNECT test.remote.haxx.se.206:8990 HTTP/1.1 Host: test.remote.haxx.se.206:8990 Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="test.remote.haxx.se.206:8990", response="003e36decb4dbf6366b3ecb9b87c24ec" User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive GET /path/2060002 HTTP/1.1 Host: test.remote.haxx.se.206:8990 User-Agent: curl/8.17.0 Accept: */* [DISCONNECT] === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345" Content-Length: 33 And you should ignore this data. HTTP/1.1 200 OK Server: no HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 7 Connection: close Content-Type: text/html Funny-head: yesyes daniel === End of file server.response === Start of file stderr206 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:11 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:11 --:--:-- 0 100 7 0 7 0 0 0 0 --:--:-- 0:00:12 --:--:-- 0 100 7 0 7 0 0 0 0 --:--:-- 0:00:12 --:--:-- 0 === End of file stderr206 === Start of file trace206 00:57:44.249357 * Trying 127.0.0.1:40641... 00:57:45.081476 * CONNECT: no ALPN negotiated 00:57:45.136654 * allocate connect buffer 00:57:45.248693 * Proxy auth using Digest with user 'silly' 00:57:45.363382 * Establish HTTP proxy tunnel to test.remote.haxx.se.206:8990 00:57:45.526309 => Send header, 140 bytes (0x8c) 0000: CONNECT test.remote.haxx.se.206:8990 HTTP/1.1 002f: Host: test.remote.haxx.se.206:8990 0053: User-Agent: curl/8.17.0 006c: Proxy-Connection: Keep-Alive 008a: 00:57:45.730580 <= Recv header, 57 bytes (0x39) 0000: HTTP/1.1 407 Authorization Required to proxy me my dear 00:57:46.049693 <= Recv header, 63 bytes (0x3f)CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind210 ../src/curl -q --output log/6/curl210.out --trace-ascii log/6/trace210 --trace-time ftp://127.0.0.1:39413/a/path/210 ftp://127.0.0.1:39413/a/path/210 > log/6/stdout210 2> log/6/stderr210 0000: Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345" 00:57:46.312622 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 33 00:57:46.337926 <= Recv header, 2 bytes (0x2) 0000: 00:57:46.353121 * Ignore 33 bytes of response-body 00:57:53.177842 * Proxy auth using Digest with user 'silly' 00:57:53.208205 * Establish HTTP proxy tunnel to test.remote.haxx.se.206:8990 00:57:53.235325 => Send header, 303 bytes (0x12f) 0000: CONNECT test.remote.haxx.se.206:8990 HTTP/1.1 002f: Host: test.remote.haxx.se.206:8990 0053: Proxy-Authorization: Digest username="silly", realm="weirdorealm 0093: ", nonce="12345", uri="test.remote.haxx.se.206:8990", response=" 00d3: 003e36decb4dbf6366b3ecb9b87c24ec" 00f6: User-Agent: curl/8.17.0 010f: Proxy-Connection: Keep-Alive 012d: 00:57:53.298215 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:57:53.307674 <= Recv header, 11 bytes (0xb) 0000: Server: no. 00:57:53.319104 <= Recv header, 2 bytes (0x2) 0000: 00:57:53.341223 * CONNECT phase completed 00:57:53.359781 * CONNECT tunnel established, response 200 00:57:53.567516 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 39174 00:57:53.679196 * using HTTP/1.x 00:57:53.984913 => Send header, 104 bytes (0x68) 0000: GET /path/2060002 HTTP/1.1 001c: Host: test.remote.haxx.se.206:8990 0040: User-Agent: curl/8.17.0 0059: Accept: */* 0066: 00:57:54.213285 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:57:54.270341 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:57:54.311544 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 7. 00:57:54.353363 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:57:54.368590 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:57:54.372930 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:57:54.446301 <= Recv header, 1 bytes (0x1) 0000: . 00:57:54.501643 <= Recv data, 7 bytes (0x7) 0000: daniel. 00:57:54.608701 * we are done reading and this is set to close, stop send 00:57:54.637626 * abort upload 00:57:55.072181 * shutting down connection #0 === End of file trace206 === Start of file valgrind206 ==219167== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind206 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 217 in state 4 Runner 2 (id 185908) running test 216 in state 4 Runner 3 (id 185910) running test 211 in state 4 Runner 4 (id 185912) running test 212 in state 4 Runner 5 (id 185914) running test 214 in state 4 Runner 6 (id 185916) running test 210 in state 4 Runner 7 (id 185918) running test 213 in state 4 Runner 8 (id 185920) running test 215 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 217 in state 4 Runner 2 (id 185908) running test 216 in state 4 Runner 3 (id 185910) running test 211 in state 4 Runner 4 (id 185912) running test 212 in state 4 Runner 5 (id 185914) running test 214 in state 4 Runner 6 (id 185916) running test 210 in state 4 Runner 7 (id 185918) running test 213 in state 4 Runner 8 (id 185920) running test 215 in state 4 test 0210...[Get two FTP files from the same remote dir: no second CWD] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind210 ../src/curl -q --output log/6/curl210.out --trace-ascii log/6/trace210 --trace-time ftp://127.0.0.1:39413/a/path/210 ftp://127.0.0.1:39413/a/path/210 > log/6/stdout210 2> log/6/stderr210 valgrind ERROR ==219867== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 210 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind210 ../src/curl -q --output log/6/curl210.out --trace-ascii log/6/trace210 --trace-time ftp://127.0.0.1:39413/a/path/210 ftp://127.0.0.1:39413/a/path/210 > log/6/stdout210 2> log/6/stderr210 === End of file commands.log === Start of file curl210.out data blobb === End of file curl210.out === Start of file ftp_server.log 00:57:30.448243 ====> Client connect 00:57:30.449257 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:57:30.458315 < "USER anonymous" 00:57:30.458696 > "331 We are happy you popped in![CR][LF]" 00:57:30.460013 < "PASS ftp@example.com" 00:57:30.460928 > "230 Welcome you silly person[CR][LF]" 00:57:30.461453 < "PWD" 00:57:30.461881 > "257 "/" is current directory[CR][LF]" 00:57:30.464614 < "EPSV" 00:57:30.464836 ====> Passive DATA channel requested by client 00:57:30.464983 DATA sockfilt for passive data channel starting... 00:57:30.509946 DATA sockfilt for passive data channel started (pid 219831) 00:57:30.511377 DATA sockfilt for passive data channel listens on port 34765 00:57:30.511732 > "229 Entering Passive Mode (|||34765|)[CR][LF]" 00:57:30.511894 Client has been notified that DATA conn will be accepted on port 34765 00:57:30.515251 Client connects to port 34765 00:57:30.515571 ====> Client established passive DATA connection on port 34765 00:57:30.516340 < "TYPE I" 00:57:30.517534 > "200 I modify TYPE as you wanted[CR][LF]" 00:57:30.518137 < "SIZE verifiedserver" 00:57:30.519131 > "213 18[CR][LF]" 00:57:30.519839 < "RETR verifiedserver" 00:57:30.522481 > "150 Binary junk (18 bytes).[CR][LF]" 00:57:30.523200 =====> Closing passive DATA connection... 00:57:30.523364 Server disconnects passive DATA connection 00:57:30.524900 Server disconnected passive DATA connection 00:57:30.525072 DATA sockfilt for passive data channel quits (pid 219831) 00:57:30.530993 DATA sockfilt for passive data channel quit (pid 219831) 00:57:30.531299 =====> Closed passive DATA connection 00:57:30.531635 > "226 File transfer complete[CR][LF]" 00:57:30.569629 < "QUIT" 00:57:30.574356 > "221 bye bye baby[CR][LF]" 00:57:30.574661 MAIN sockfilt said DISC 00:57:30.574866 ====> Client disconnected 00:57:30.575138 Awaiting input 00:58:17.406071 ====> Client connect 00:58:17.406817 FTPD: Getting commands from log/6/server.cmd 00:58:17.407133 FTPD: run test case number: 210 00:58:17.408109 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:58:18.655855 < "USER anonymous" 00:58:18.656570 > "331 We are happy you popped in![CR][LF]" 00:58:18.765764 < "PASS ftp@example.com" 00:58:18.771009 > "230 Welcome you silly person[CR][LF]" 00:58:18.851359 < "PWD" 00:58:18.851801 > "257 "/" is current directory[CR][LF]" 00:58:19.034354 < "CWD a" 00:58:19.034777 > "250 CWD command successful.[CR][LF]" 00:58:19.088319 < "CWD path" 00:58:19.088730 > "250 CWD command successful.[CR][LF]" 00:58:19.162425 < "EPSV" 00:58:19.162748 ====> Passive DATA channel requested by client 00:58:19.162898 DATA sockfilt for passive data channel starting... 00:58:19.224934 DATA sockfilt for passive data channel started (pid 221091) 00:58:19.226071 DATA sockfilt for passive data channel listens on port 41799 00:58:19.226819 > "229 Entering Passive Mode (|||41799|)[CR][LF]" 00:58:19.226990 Client has been notified that DATA conn will be accepted on port 41799 00:58:19.411009 Client connects to port 41799 00:58:19.411631 ====> Client established passive DATA connection on port 41799 00:58:19.535577 < "TYPE I" 00:58:19.535997 > "200 I modify TYPE as you wanted[CR][LF]" 00:58:19.586701 < "SIZE 210" 00:58:19.592492 > "213 11[CR][LF]" 00:58:19.663493 < "RETR 210" 00:58:19.668563 > "150 Binary data connection for 210 () (11 bytes).[CR][LF]" 00:58:19.669165 =====> Closing passive DATA connection... 00:58:19.669333 Server disconnects passive DATA connection 00:58:19.674294 Server disconnected passive DATA connection 00:58:19.674591 DATA sockfilt for passive data channel quits (pid 221091) 00:58:19.677856 DATA sockfilt for passive data channel quit (pid 221091) 00:58:19.678062 =====> Closed passive DATA connection 00:58:19.678361 > "226 File transfer complete[CR][LF]" 00:58:22.209645 < "EPSV" 00:58:22.209983 ====> Passive DATA channel requested by client 00:58:22.210155 DATA sockfilt for passive data channel starting... 00:58:22.262387 DATA sockfilt for passive data channel started (pid 221112) 00:58:22.263615 DATA sockfilt for passive data channel listens on port 41217 00:58:22.267691 > "229 Entering Passive Mode (|||41217|)[CR][LF]" 00:58:22.267929 Client has been notified that DATA conn will be accepted on port 41217 00:58:22.291038 Client connects to port 41217 00:58:22.291467 ====> Client established passive DATA connection on port 41217 00:58:22.320368 < "SIZE 210" 00:58:22.321043 > "213 11[CR][LF]" 00:58:22.334866 < "RETR 210" 00:58:22.335439 > "150 Binary data connection for 210 () (11 bytes).[CR][LF]" 00:58:22.337047 =====> Closing passive DATA connection... 00:58:22.337213 Server disconnects passive DATA connection 00:58:22.337739 Server disconnected passive DATA connection 00:58:22.337913 DATA sockfilt for passive data channel quits (pid 221112) 00:58:22.341506 DATA sockfilt for passive data channel quit (pid 221112) 00:58:22.341719 =====> Closed passive DATA connection 00:58:22.342003 > "226 File transfer complete[CR][LF]" 00:58:22.678156 < "QUIT" 00:58:22.678623 > "221 bye bye baby[CR][LF]" 00:58:22.811024 MAIN sockfilt said DISC 00:58:22.811566 ====> Client disconnected 00:58:22.811881 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:57:30.064151 ====> Client connect 00:57:30.065788 Received DATA (on stdin) 00:57:30.065875 > 160 bytes data, server => client 00:57:30.065984 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:57:30.066082 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:57:30.066171 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:57:30.073474 < 16 bytes data, client => server 00:57:30.073613 'USER anonymous\r\n' 00:57:30.075194 Received DATA (on stdin) 00:57:30.075276 > 33 bytes data, server => client 00:57:30.075374 '331 We are happy you popped in!\r\n' 00:57:30.075690 < 22 bytes data, client => server 00:57:30.075768 'PASS ftp@example.com\r\n' 00:57:30.076515 Received DATA (on stdin) 00:57:30.076583 > 30 bytes data, server => client 00:57:30.076687 '230 Welcome you silly person\r\n' 00:57:30.076928 < 5 bytes data, client => server 00:57:30.076990 'PWD\r\n' 00:57:30.077974 Received DATA (on stdin) 00:57:30.078043 > 30 bytes data, server => client 00:57:30.078358 '257 "/" is current directory\r\n' 00:57:30.080344 < 6 bytes data, client => server 00:57:30.080426 'EPSV\r\n' 00:57:30.128400 Received DATA (on stdin) 00:57:30.128537 > 39 bytes data, server => client 00:57:30.128628 '229 Entering Passive Mode (|||34765|)\r\n' 00:57:30.131315 < 8 bytes data, client => server 00:57:30.131408 'TYPE I\r\n' 00:57:30.132882 Received DATA (on stdin) 00:57:30.132954 > 33 bytes data, server => client 00:57:30.133060 '200 I modify TYPE as you wanted\r\n' 00:57:30.133484 < 21 bytes data, client => server 00:57:30.133560 'SIZE verifiedserver\r\n' 00:57:30.134699 Received DATA (on stdin) 00:57:30.134772 > 8 bytes data, server => client 00:57:30.134858 '213 18\r\n' 00:57:30.135621 < 21 bytes data, client => server 00:57:30.135699 'RETR verifiedserver\r\n' 00:57:30.136370 Received DATA (on stdin) 00:57:30.136436 > 29 bytes data, server => client 00:57:30.136534 '150 Binary junk (18 bytes).\r\n' 00:57:30.150107 Received DATA (on stdin) 00:57:30.150302 > 28 bytes data, server => client 00:57:30.150391 '226 File transfer complete\r\n' 00:57:30.184768 < 6 bytes data, client => server 00:57:30.184913 'QUIT\r\n' 00:57:30.186271 Received DATA (on stdin) 00:57:30.186344 > 18 bytes data, server => client 00:57:30.186636 '221 bye bye baby\r\n' 00:57:30.187199 ====> Client disconnect 00:57:30.191588 Received ACKD (on stdin) 00:58:17.021944 ====> Client connect 00:58:17.027115 Received DATA (on stdin) 00:58:17.027252 > 160 bytes data, server => client 00:58:17.027369 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:58:17.027477 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:58:17.027569 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:58:18.270789 < 16 bytes data, client => server 00:58:18.270978 'USER anonymous\r\n' 00:58:18.272400 Received DATA (on stdin) 00:58:18.272478 > 33 bytes data, server => client 00:58:18.272591 '331 We are happy you popped in!\r\n' 00:58:18.380828 < 22 bytes data, client => server 00:58:18.381007 'PASS ftp@example.com\r\n' 00:58:18.382314 Received DATA (on stdin) 00:58:18.382388 > 30 bytes data, server => client 00:58:18.387501 '230 Welcome you silly person\r\n' 00:58:18.466437 < 5 bytes data, client => server 00:58:18.466594 'PWD\r\n' 00:58:18.468191 Received DATA (on stdin) 00:58:18.468270 > 30 bytes data, server => client 00:58:18.468358 '257 "/" is current directory\r\n' 00:58:18.649356 < 7 bytes data, client => server 00:58:18.649545 'CWD a\r\n' 00:58:18.651259 Received DATA (on stdin) 00:58:18.651340 > 29 bytes data, server => client 00:58:18.651430 '250 CWD command successful.\r\n' 00:58:18.703398 < 10 bytes data, client => server 00:58:18.703566 'CWD path\r\n' 00:58:18.710451 Received DATA (on stdin) 00:58:18.710589 > 29 bytes data, server => client 00:58:18.710683 '250 CWD command successful.\r\n' 00:58:18.777495 < 6 bytes data, client => server 00:58:18.777671 'EPSV\r\n' 00:58:18.842535 Received DATA (on stdin) 00:58:18.842672 > 39 bytes data, server => client 00:58:18.842790 '229 Entering Passive Mode (|||41799|)\r\n' 00:58:19.150596 < 8 bytes data, client => server 00:58:19.150789 'TYPE I\r\n' 00:58:19.152401 Received DATA (on stdin) 00:58:19.152473 > 33 bytes data, server => client 00:58:19.152560 '200 I modify TYPE as you wanted\r\n' 00:58:19.201729 < 10 bytes data, client => server 00:58:19.201901 'SIZE 210\r\n' 00:58:19.208408 Received DATA (on stdin) 00:58:19.208535 > 8 bytes data, server => client 00:58:19.208971 '213 11\r\n' 00:58:19.278554 < 10 bytes data, client => server 00:58:19.278722 'RETR 210\r\n' 00:58:19.285715 Received DATA (on stdin) 00:58:19.285828 > 51 bytes data, server => client 00:58:19.285926 '150 Binary data connection for 210 () (11 bytes).\r\n' 00:58:19.294792 Received DATA (on stdin) 00:58:19.294908 > 28 bytes data, server => client 00:58:19.294992 '226 File transfer complete\r\n' 00:58:21.824643 < 6 bytes data, client => server 00:58:21.824838 'EPSV\r\n' 00:58:21.880078 Received DATA (on stdin) 00:58:21.880214 > 39 bytes data, server => client 00:58:21.880328 '229 Entering Passive Mode (|||41217|)\r\n' 00:58:21.935460 < 10 bytes data, client => server 00:58:21.935612 'SIZE 210\r\n' 00:58:21.940437 Received DATA (on stdin) 00:58:21.940550 > 8 bytes data, server => client 00:58:21.940633 '213 11\r\n' 00:58:21.947150 < 10 bytes data, client => server 00:58:21.947245 'RETR 210\r\n' 00:58:21.951560 Received DATA (on stdin) 00:58:21.951658 > 51 bytes data, server => client 00:58:21.951774 '150 Binary data connection for 210 () (11 bytes).\r\n' 00:58:21.958124 Received DATA (on stdin) 00:58:21.958236 > 28 bytes data, server => client 00:58:21.958335 '226 File transfer complete\r\n' 00:58:22.293368 < 6 bytes data, client => server 00:58:22.293587 'QUIT\r\n' 00:58:22.294727 Received DATA (on stdin) 00:58:22.294815 > 18 bytes data, server => client 00:58:22.294905 '221 bye bye baby\r\n' 00:58:22.425687 ====> Client disconnect 00:58:22.427738 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:57:30.116621 Running IPv4 version 00:57:30.124626 Listening on port 34765 00:57:30.125101 Wrote pid 219831 to log/6/server/ftp_sockdata.pid 00:57:30.12CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind211 ../src/curl -q --output log/3/curl211.out --include --trace-ascii log/3/trace211 --trace-time ftp://127.0.0.1:37331/a/path/211 ftp://127.0.0.1:37331/a/path/211 > log/3/stdout211 2> log/3/stderr211 5854 Received PING (on stdin) 00:57:30.126961 Received PORT (on stdin) 00:57:30.131122 ====> Client connect 00:57:30.139835 Received DATA (on stdin) 00:57:30.140205 > 18 bytes data, server => client 00:57:30.140596 'WE ROOLZ: 201819\r\n' 00:57:30.140861 Received DISC (on stdin) 00:57:30.140974 ====> Client forcibly disconnected 00:57:30.143880 Received QUIT (on stdin) 00:57:30.143980 quits 00:57:30.144510 ============> sockfilt quits 00:58:19.829236 Running IPv4 version 00:58:19.839479 Listening on port 41799 00:58:19.839981 Wrote pid 221091 to log/6/server/ftp_sockdata.pid 00:58:19.840751 Received PING (on stdin) 00:58:19.841626 Received PORT (on stdin) 00:58:20.024305 ====> Client connect 00:58:20.287117 Received DATA (on stdin) 00:58:20.287498 > 11 bytes data, server => client 00:58:20.287854 'data blobb\n' 00:58:20.288121 Received DISC (on stdin) 00:58:20.288244 ====> Client forcibly disconnected 00:58:20.290954 Received QUIT (on stdin) 00:58:20.291052 quits 00:58:20.291614 ============> sockfilt quits 00:58:22.869000 Running IPv4 version 00:58:22.876704 Listening on port 41217 00:58:22.877221 Wrote pid 221112 to log/6/server/ftp_sockdata.pid 00:58:22.878012 Received PING (on stdin) 00:58:22.879081 Received PORT (on stdin) 00:58:22.906959 ====> Client connect 00:58:22.951879 Received DATA (on stdin) 00:58:22.952255 > 11 bytes data, server => client 00:58:22.952641 'data blobb\n' 00:58:22.953566 Received DISC (on stdin) 00:58:22.953691 ====> Client forcibly disconnected 00:58:22.954266 Received QUIT (on stdin) 00:58:22.954350 quits 00:58:22.954920 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 210 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD a CWD path EPSV TYPE I SIZE 210 RETR 210 EPSV SIZE 210 RETR 210 QUIT === End of file server.input === Start of file stderr210 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 11 100 11 0 0 2 0 0:00:05 0:00:05 --:--:-- 2 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 11 100 11 0 0 15 0 --:--:-- --:--:-- --:--:-- 40 100 11 100 11 0 0 14 0 --:--:-- --:--:-- --:--:-- 34 === End of file stderr210 === Start of file stdout210 data blobb === End of file stdout210 === Start of file trace210 00:58:17.076614 * Trying 127.0.0.1:39413... 00:58:17.974972 * Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 33744 00:58:18.206434 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:58:18.537550 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:58:18.562179 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:58:18.569159 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:58:18.574345 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:58:18.674088 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:58:18.745614 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:58:18.765746 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:58:18.830983 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:58:18.850322 => Send header, 5 bytes (0x5) 0000: PWD 00:58:18.866442 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:58:18.902555 * Entry path is '/' 00:58:19.033257 => Send header, 7 bytes (0x7) 0000: CWD a 00:58:19.047410 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:58:19.087295 => Send header, 10 bytes (0xa) 0000: CWD path 00:58:19.125512 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:58:19.161380 => Send header, 6 bytes (0x6) 0000: EPSV 00:58:19.175581 * Connect data stream passively 00:58:19.229892 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||41799|) 00:58:19.340469 * Connecting to 127.0.0.1 (127.0.0.1) port 41799 00:58:19.401733 * Trying 127.0.0.1:41799... 00:58:19.503187 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 41799) from 127.0.0.1 port 38838 00:58:19.534510 => Send header, 8 bytes (0x8) 0000: TYPE I 00:58:19.553335 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:58:19.585615 => Send header, 10 bytes (0xa) 0000: SIZE 210 00:58:19.614628 <= Recv header, 8 bytes (0x8) 0000: 213 11 00:58:19.662447 => Send header, 10 bytes (0xa) 0000: RETR 210 00:58:19.682328 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 210 () (11 bytes). 00:58:19.728122 * Maxdownload = -1 00:58:19.739019 * Getting file with size: 11 00:58:19.891106 <= Recv data, 11 bytes (0xb) 0000: data blobb. 00:58:20.213417 * abort upload 00:58:20.244961 <= Recv data, 0 bytes (0x0) 00:58:20.414389 * Remembering we are in dir "a/path/" 00:58:20.611768 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:58:20.932934 * Connection #0 to host 127.0.0.1:39413 left intact 00:58:22.088644 * Reusing existing ftp: connection with host 127.0.0.1 00:58:22.197756 * Request has same path as previous transfer 00:58:22.208532 => Send header, 6 bytes (0x6) 0000: EPSV 00:58:22.211582 * Connect data stream passively 00:58:22.266939 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||41217|) 00:58:22.283332 * Connecting to 127.0.0.1 (127.0.0.1) port 41217 00:58:22.289344 * Trying 127.0.0.1:41217... 00:58:22.307298 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 41217) from 127.0.0.1 port 37502 00:58:22.321415 => Send header, 10 bytes (0xa) 0000: SIZE 210 00:58:22.325679 <= Recv header, 8 bytes (0x8) 0000: 213 11 00:58:22.331043 => Send header, 10 bytes (0xa) 0000: RETR 210 00:58:22.343828 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 210 () (11 bytes). 00:58:22.353204 * Maxdownload = -1 00:58:22.354853 * Getting file with size: 11 00:58:22.364717 <= Recv data, 11 bytes (0xb) 0000: data blobb. 00:58:22.385288 * abort upload 00:58:22.387575 <= Recv data, 0 bytes (0x0) 00:58:22.413832 * Remembering we are in dir "a/path/" 00:58:22.426690 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:58:22.475979 * Connection #0 to host 127.0.0.1:39413 left intact === End of file trace210 === Start of file valgrind210 ==219867== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind210 test 0211...[Get two FTP files with no remote EPSV support] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind211 ../src/curl -q --output log/3/curl211.out --include --trace-ascii log/3/trace211 --trace-time ftp://127.0.0.1:37331/a/path/211 ftp://127.0.0.1:37331/a/path/211 > log/3/stdout211 2> log/3/stderr211 valgrind ERROR ==219969== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 211 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind211 ../src/curl -q --output log/3/curl211.out --include --trace-ascii log/3/trace211 --trace-time ftp://127.0.0.1:37331/a/path/211 ftp://127.0.0.1:37331/a/path/211 > log/3/stdout211 2> log/3/stderr211 === End of file commands.log === Start of file curl211.out data blobb === End of file curl211.out === Start of file ftp_server.log 00:57:31.304704 ====> Client connect 00:57:31.305764 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:57:31.316457 < "USER anonymous" 00:57:31.316873 > "331 We are happy you popped in![CR][LF]" 00:57:31.318996 < "PASS ftp@example.com" 00:57:31.319922 > "230 Welcome you silly person[CR][LF]" 00:57:31.320421 < "PWD" 00:57:31.320954 > "257 "/" is current directory[CR][LF]" 00:57:31.323452 < "EPSV" 00:57:31.323651 ====> Passive DATA channel requested by client 00:57:31.323790 DATA sockfilt for passive data channel starting... 00:57:31.373997 DATA sockfilt for passive data channel started (pid 219902) 00:57:31.375523 DATA sockfilt for passive data channel listens on port 37971 00:57:31.375879 > "229 Entering Passive Mode (|||37971|)[CR][LF]" 00:57:31.376034 Client has been notified that DATA conn will be accepted on port 37971 00:57:31.378259 Client connects to port 37971 00:57:31.378517 ====> Client established passive DATA connection on port 37971 00:57:31.381489 < "TYPE I" 00:57:31.382148 > "200 I modify TYPE as you wanted[CR][LF]" 00:57:31.382960 < "SIZE verifiedserver" 00:57:31.383554 > "213 18[CR][LF]" 00:57:31.384448 < "RETR verifiedserver" 00:57:31.385067 > "150 Binary junk (18 bytes).[CR][LF]" 00:57:31.385639 =====> Closing passive DATA connection... 00:57:31.385797 Server disconnects passive DATA connection 00:57:31.387153 Server disconnected passive DATA connection 00:57:31.387332 DATA sockfilt for passive data channel quits (pid 219902) 00:57:31.390892 DATA sockfilt for passive data channel quit (pid 219902) 00:57:31.391106 =====> Closed passive DATA connection 00:57:31.391750 > "226 File transfer complete[CR][LF]" 00:57:31.438739 < "QUIT" 00:57:31.439490 > "221 bye bye baby[CR][LF]" 00:57:31.440003 MAIN sockfilt said DISC 00:57:31.440324 ====> Client disconnected 00:57:31.440597 Awaiting input 00:58:18.326630 ====> Client connect 00:58:18.327363 FTPD: Getting commands from log/3/server.cmd 00:58:18.328109 FTPD: set custom reply for EPSV command 00:58:18.328392 FTPD: run test case number: 211 00:58:18.329896 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:58:19.602148 < "USER anonymous" 00:58:19.607696 > "331 We are happy you popped in![CR][LF]" 00:58:19.718577 < "PASS ftp@example.com" 00:58:19.719011 > "230 Welcome you silly person[CR][LF]" 00:58:19.809065 < "PWD" 00:58:19.809507 > "257 "/" is current directory[CR][LF]" 00:58:19.999255 < "CWD a" 00:58:19.999665 > "250 CWD command successful.[CR][LF]" 00:58:20.061763 < "CWD path" 00:58:20.062195 > "250 CWD command successful.[CR][LF]" 00:58:20.139744 < "EPSV" 00:58:20.140428 > "500 no such command[CR][LF]" 00:58:20.234464 < "PASV" 00:58:20.234792 ====> Passive DATA channel requested by client 00:58:20.234942 DATA sockfilt for passive data channel starting... 00:58:20.279923 DATA sockfilt for passive data channel started (pid 221100) 00:58:20.281142 DATA sockfilt for passive data channel listens on port 35087 00:58:20.282018 > "227 Entering Passive Mode (127,0,0,1,137,15)[CR][LF]" 00:58:20.282191 Client has been notified that DATA conn will be accepted on port 35087 00:58:20.484337 Client connects to port 35087 00:58:20.484890 ====> Client established passive DATA connection on port 35087 00:58:20.595417 < "TYPE I" 00:58:20.596096 > "200 I modify TYPE as you wanted[CR][LF]" 00:58:20.646099 < "SIZE 211" 00:58:20.647938 > "213 11[CR][LF]" 00:58:20.721990 < "RETR 211" 00:58:20.727673 > "150 Binary data connection for 211 () (11 bytes).[CR][LF]" 00:58:20.728270 =====> Closing passive DATA connection... 00:58:20.728428 Server disconnects passive DATA connection 00:58:20.729984 Server disconnected passive DATA connection 00:58:20.730153 DATA sockfilt for passive data channel quits (pid 221100) 00:58:20.733214 DATA sockfilt for passive data channel quit (pid 221100) 00:58:20.733399 =====> Closed passive DATA connection 00:58:20.733963 > "226 File transfer complete[CR][LF]" 00:58:23.288605 < "PASV" 00:58:23.288940 ====> Passive DATA channel requested by client 00:58:23.289090 DATA sockfilt for passive data channel starting... 00:58:23.355845 DATA sockfilt for passive data channel started (pid 221118) 00:58:23.357092 DATA sockfilt for passive data channel listens on port 40699 00:58:23.361003 > "227 Entering Passive Mode (127,0,0,1,158,251)[CR][LF]" 00:58:23.361220 Client has been notified that DATA conn will be accepted on port 40699 00:58:23.387072 Client connects to port 40699 00:58:23.387578 ====> Client established passive DATA connection on port 40699 00:58:23.425952 < "SIZE 211" 00:58:23.431021 > "213 11[CR][LF]" 00:58:23.439946 < "RETR 211" 00:58:23.440531 > "150 Binary data connection for 211 () (11 bytes).[CR][LF]" 00:58:23.441643 =====> Closing passive DATA connection... 00:58:23.441820 Server disconnects passive DATA connection 00:58:23.442811 Server disconnected passive DATA connection 00:58:23.442983 DATA sockfilt for passive data channel quits (pid 221118) 00:58:23.446343 DATA sockfilt for passive data channel quit (pid 221118) 00:58:23.446526 =====> Closed passive DATA connection 00:58:23.446807 > "226 File transfer complete[CR][LF]" 00:58:23.751501 < "QUIT" 00:58:23.751947 > "221 bye bye baby[CR][LF]" 00:58:23.874354 MAIN sockfilt said DISC 00:58:23.874863 ====> Client disconnected 00:58:23.875165 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:57:30.920499 ====> Client connect 00:57:30.922301 Received DATA (on stdin) 00:57:30.922407 > 160 bytes data, server => client 00:57:30.922509 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:57:30.922602 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:57:30.922684 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:57:30.931929 < 16 bytes data, client => server 00:57:30.932109 'USER anonymous\r\n' 00:57:30.934260 Received DATA (on stdin) 00:57:30.934340 > 33 bytes data, server => client 00:57:30.934424 '331 We are happy you popped in!\r\n' 00:57:30.934729 < 22 bytes data, client => server 00:57:30.934803 'PASS ftp@example.com\r\n' 00:57:30.935504 Received DATA (on stdin) 00:57:30.935569 > 30 bytes data, server => client 00:57:30.935735 '230 Welcome you silly person\r\n' 00:57:30.936020 < 5 bytes data, client => server 00:57:30.936082 'PWD\r\n' 00:57:30.936928 Received DATA (on stdin) 00:57:30.936994 > 30 bytes data, server => client 00:57:30.937098 '257 "/" is current directory\r\n' 00:57:30.939261 < 6 bytes data, client => server 00:57:30.939333 'EPSV\r\n' 00:57:30.992098 Received DATA (on stdin) 00:57:30.992269 > 39 bytes data, server => client 00:57:30.992387 '229 Entering Passive Mode (|||37971|)\r\n' 00:57:30.997219 < 8 bytes data, client => server 00:57:30.997321 'TYPE I\r\n' 00:57:30.998055 Received DATA (on stdin) 00:57:30.998134 > 33 bytes data, server => client 00:57:30.998247 '200 I modify TYPE as you wanted\r\n' 00:57:30.998708 < 21 bytes data, client => server 00:57:30.998783 'SIZE verifiedserver\r\n' 00:57:30.999536 Received DATA (on stdin) 00:57:30.999606 > 8 bytes data, server => client 00:57:30.999698 '213 18\r\n' 00:57:31.000209 < 21 bytes data, client => server 00:57:31.000284 'RETR verifiedserver\r\n' 00:57:31.001016 Received DATA (on stdin) 00:57:31.001092 > 29 bytes data, server => client 00:57:31.001203 '150 Binary junk (18 bytes).\r\n' 00:57:31.007614 Received DATA (on stdin) 00:57:31.007751 > 28 bytes data, server => client 00:57:31.007861 '226 File transfer complete\r\n' 00:57:31.053796 < 6 bytes data, client => server 00:57:31.053978 'QUIT\r\n' 00:57:31.055403 Received DATA (on stdin) 00:57:31.055477 > 18 bytes data, server => client 00:57:31.055579 '221 bye bye baby\r\n' 00:57:31.056179 ====> Client disconnect 00:57:31.056464 Received ACKD (on stdin) 00:58:17.942497 ====> Client connect 00:58:17.945468 Received DATA (on stdin) 00:58:17.945547 > 160 bytes data, server => client 00:58:17.945675 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:58:17.945774 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:58:17.945866 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:58:19.217147 < 16 bytes data, client => server 00:58:19.217301 'USER anonymous\r\n' 00:58:19.218680 Received DATA (on stdin) 00:58:19.218755 > 33 bytes data, server => client 00:58:19.224226 '331 We are happy you popped in!\r\n' 00:58:19.333645 < 22 bytes data, client => server 00:58:19.333825 'PASS ftp@example.com\r\n' 00:58:19.335408 Received DATA (on stdin) 00:58:19.335486 > 30 bytes data, server => client 00:58:19.335573 '230 Welcome you silly person\r\n' 00:58:19.424158 < 5 bytes data, client => server 00:58:19.424319 'PWD\r\n' 00:58:19.425891 Received DATA (on stdin) 00:58:19.425966 > 30 bytes data, server => client 00:58:19.426050 '257 "/" is current directory\r\n' 00:58:19.614318 < 7 bytes data, client => server 00:58:19.614503 'CWD a\r\n' 00:58:19.617107 Received DATA (on stdin) 00:58:19.617203 > 29 bytes data, server => client 00:58:19.617294 '250 CWD command successful.\r\n' 00:58:19.676694 < 10 bytes data, client => server 00:58:19.676879 'CWD path\r\n' 00:58:19.683777 Received DATA (on stdin) 00:58:19.683900 > 29 bytes data, server => client 00:58:19.683987 '250 CWD command successful.\r\n' 00:58:19.754794 < 6 bytes data, client => server 00:58:19.754956 'EPSV\r\n' 00:58:19.756270 Received DATA (on stdin) 00:58:19.756345 > 21 bytes data, server => client 00:58:19.756443 '500 no such command\r\n' 00:58:19.849512 < 6 bytes data, client => server 00:58:19.849702 'PASV\r\n' 00:58:19.897760 Received DATA (on stdin) 00:58:19.897897 > 46 bytes data, server => client 00:58:19.898007 '227 Entering Passive Mode (127,0,0,1,137,15)\r\n' 00:58:20.210478 < 8 bytes data, client => server 00:58:20.210664 'TYPE I\r\n' 00:58:20.211953 Received DATA (on stdin) 00:58:20.212020 > 33 bytes data, server => client 00:58:20.212114 '200 I modify TYPE as you wanted\r\n' 00:58:20.261285 < 10 bytes data, client => server 00:58:20.261434 'SIZE 211\r\n' 00:58:20.267104 Received DATA (on stdin) 00:58:20.267195 > 8 bytes data, server => client 00:58:20.267257 '213 11\r\n' 00:58:20.337090 < 10 bytes data, client => server 00:58:20.337262 'RETR 211\r\n' 00:58:20.339154 Received DATA (on stdin) 00:58:20.339220 > 51 bytes data, server => client 00:58:20.344822 '150 Binary data connection for 211 () (11 bytes).\r\n' 00:58:20.349815 Received DATA (on stdin) 00:58:20.349897 > 28 bytes data, server => client 00:58:20.349992 '226 File transfer complete\r\n' 00:58:22.903631 < 6 bytes data, client => server 00:58:22.903836 'PASV\r\n' 00:58:22.973629 Received DATA (on stdin) 00:58:22.973789 > 47 bytes data, server => client 00:58:22.973911 '227 Entering Passive Mode (127,0,0,1,158,251)\r\n' 00:58:23.040949 < 10 bytes data, client => server 00:58:23.041122 'SIZE 211\r\n' 00:58:23.042764 Received DATA (on stdin) 00:58:23.042841 > 8 bytes data, server => client 00:58:23.047530 '213 11\r\n' 00:58:23.055334 < 10 bytes data, client => server 00:58:23.055439 'RETR 211\r\n' 00:58:23.057107 Received DATA (on stdin) 00:58:23.057201 > 51 bytes data, server => client 00:58:23.057300 '150 Binary data connection for 211 () (11 bytes).\r\n' 00:58:23.062932 Received DATA (on stdin) 00:58:23.063020 > 28 bytes data, server => client 00:58:23.063102 '226 File transfer complete\r\n' 00:58:23.366737 < 6 bytes data, client => server 00:58:23.366944 'QUIT\r\n' 00:58:23.368060 Received DATA (on stdin) 00:58:23.368136 > 18 bytes data, server => client 00:58:23.368213 '221 bye bye baby\r\n' 00:58:23.489406 ====> Client disconnect 00:58:23.491037 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:57:31.979433 Running IPv4 version 00:57:31.988509 Listening on port 37971 00:57:31.989008 Wrote pid 219902 to log/3/server/ftp_sockdata.pid 00:57:31.989868 Received PING (on stdin) 00:57:31.991066 Received PORT (on stdin) 00:57:31.994324 ====> Client connect 00:57:32.002259 Received DATA (on stdin) 00:57:32.002620 > 18 bytes data, server => client 00:57:32.003039 'WE ROOLZ: 202504\r\n' 00:57:32.003298 Received DISC (on stdin) 00:57:32.003853 ====> Client forcibly disconnected 00:57:32.004037 Received QUIT (on stdin) 00:57:32.004117 quits 00:57:32.004645 ============> sockfilt quits 00:58:20.887857 Running IPv4 version 00:58:20.894479 Listening on port 35087 00:58:20.894928 Wrote pid 221100 to log/3/server/ftp_sockdata.pid 00:58:20.895597 Received PING (on stdin) 00:58:20.896645 Received PORT (on stdin) 00:58:21.099843 ====> Client connect 00:58:21.344975 Received DATA (on stdin) 00:58:21.345323 > 11 bytes data, server => client 00:58:21.345641 'data blobb\n' 00:58:21.345865 Received DISC (on stdin) 00:58:21.345974 ====> Client forcibly disconnected 00:58:21.346533 Received QUIT (on stdin) 00:58:21.346606 quits 00:58:21.347074 ============> sockfilt quits 00:58:23.962403 Running IPv4 version 00:58:23.970163 Listening on port 40699 00:58:23.970697 Wrote pid 221118 to log/3/server/ftp_sockdata.pid 00:58:23.971472 Received PING (on stdin) 00:58:23.972546 Received PORT (on stdin) 00:58:24.002968 ====> Client connect 00:58:24.056944 Received DATA (on stdin) 00:58:24.057339 > 11 bytes data, server => client 00:58:24.058398 'data blobb\n' 00:58:24.058654 Received DISC (on stdin) 00:58:24.058779 ====> Client forcibly disconnected 00:58:24.059324 Received QUIT (on stdin) 00:58:24.059403 quits 00:58:24.059928 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPSV 500 no such command Testnum 211 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD a CWD path EPSV PASV TYPE I SIZE 211 RETR 211 PASV SIZE 211 RETR 211 QUIT === End of file server.input === Start of file stderr211 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 11 100 11 0 0 2 0 0:00:05 0:00:05 --:--:-- 2 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 11 100 11 0 0 14 0 --:--:-- --:--:-- --:--:-- 32 === End of file stderr211 === Start of file stdout211 data blobb === End of file stdout211 === Start of file trace211 00:58:18.021832 * Trying 127.0.0.1:37331... 00:58:18.884377 * Established connection to 127.0.0.1 (127.0.0.1 port 37331) from 127.0.0.1 port 47830 00:58:19.115340 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:58:19.471201 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:58:19.500120 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:58:19.508496 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:58:19.513659 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:58:19.619712 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:58:19.696133 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:58:19.718798 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:58:19.788566 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:58:19.808044 => Send header, 5 bytes (0x5) 0000: PWD 00:58:19.82CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind212 ../src/curl -q --output log/4/curl212.out --include --trace-ascii log/4/trace212 --trace-time ftp://127.0.0.1:38207/a/path/212 ftp://127.0.0.1:38207/a/path/212 -P - > log/4/stdout212 2> log/4/stderr212 4479 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:58:19.861648 * Entry path is '/' 00:58:19.998212 => Send header, 7 bytes (0x7) 0000: CWD a 00:58:20.014273 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:58:20.060585 => Send header, 10 bytes (0xa) 0000: CWD path 00:58:20.100331 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:58:20.138689 => Send header, 6 bytes (0x6) 0000: EPSV 00:58:20.154002 * Connect data stream passively 00:58:20.180813 <= Recv header, 21 bytes (0x15) 0000: 500 no such command 00:58:20.208590 * Failed EPSV attempt. Disabling EPSV 00:58:20.233410 => Send header, 6 bytes (0x6) 0000: PASV 00:58:20.285767 <= Recv header, 46 bytes (0x2e) 0000: 227 Entering Passive Mode (127,0,0,1,137,15) 00:58:20.327488 * Skip 127.0.0.1 for data connection, reuse 127.0.0.1 instead 00:58:20.403600 * Connecting to 127.0.0.1 (127.0.0.1) port 35087 00:58:20.477909 * Trying 127.0.0.1:35087... 00:58:20.564477 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 35087) from 127.0.0.1 port 40008 00:58:20.594403 => Send header, 8 bytes (0x8) 0000: TYPE I 00:58:20.613006 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:58:20.645180 => Send header, 10 bytes (0xa) 0000: SIZE 211 00:58:20.672194 <= Recv header, 8 bytes (0x8) 0000: 213 11 00:58:20.720993 => Send header, 10 bytes (0xa) 0000: RETR 211 00:58:20.736376 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 211 () (11 bytes). 00:58:20.778437 * Maxdownload = -1 00:58:20.788788 * Getting file with size: 11 00:58:20.935171 <= Recv data, 11 bytes (0xb) 0000: data blobb. 00:58:21.245312 * abort upload 00:58:21.274858 <= Recv data, 0 bytes (0x0) 00:58:21.445018 * Remembering we are in dir "a/path/" 00:58:21.634218 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:58:21.962807 * Connection #0 to host 127.0.0.1:37331 left intact 00:58:23.159726 * Reusing existing ftp: connection with host 127.0.0.1 00:58:23.272251 * Request has same path as previous transfer 00:58:23.287525 => Send header, 6 bytes (0x6) 0000: PASV 00:58:23.290715 * Connect data stream passively 00:58:23.360290 <= Recv header, 47 bytes (0x2f) 0000: 227 Entering Passive Mode (127,0,0,1,158,251) 00:58:23.372895 * Skip 127.0.0.1 for data connection, reuse 127.0.0.1 instead 00:58:23.379720 * Connecting to 127.0.0.1 (127.0.0.1) port 40699 00:58:23.385332 * Trying 127.0.0.1:40699... 00:58:23.412575 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 40699) from 127.0.0.1 port 38336 00:58:23.426901 => Send header, 10 bytes (0xa) 0000: SIZE 211 00:58:23.433711 <= Recv header, 8 bytes (0x8) 0000: 213 11 00:58:23.447159 => Send header, 10 bytes (0xa) 0000: RETR 211 00:58:23.451938 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 211 () (11 bytes). 00:58:23.461032 * Maxdownload = -1 00:58:23.462618 * Getting file with size: 11 00:58:23.472485 <= Recv data, 11 bytes (0xb) 0000: data blobb. 00:58:23.493551 * abort upload 00:58:23.496006 <= Recv data, 0 bytes (0x0) 00:58:23.510351 * Remembering we are in dir "a/path/" 00:58:23.523007 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:58:23.558053 * Connection #0 to host 127.0.0.1:37331 left intact === End of file trace211 === Start of file valgrind211 ==219969== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind211 test 0212...[Get two FTP files with no remote EPRT support] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind212 ../src/curl -q --output log/4/curl212.out --include --trace-ascii log/4/trace212 --trace-time ftp://127.0.0.1:38207/a/path/212 ftp://127.0.0.1:38207/a/path/212 -P - > log/4/stdout212 2> log/4/stderr212 valgrind ERROR ==220120== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 212 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind212 ../src/curl -q --output log/4/curl212.out --include --trace-ascii log/4/trace212 --trace-time ftp://127.0.0.1:38207/a/path/212 ftp://127.0.0.1:38207/a/path/212 -P - > log/4/stdout212 2> log/4/stderr212 === End of file commands.log === Start of file curl212.out data blobb === End of file curl212.out === Start of file ftp_server.log 00:57:32.372718 ====> Client connect 00:57:32.373742 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:57:32.382701 < "USER anonymous" 00:57:32.383587 > "331 We are happy you popped in![CR][LF]" 00:57:32.384327 < "PASS ftp@example.com" 00:57:32.384739 > "230 Welcome you silly person[CR][LF]" 00:57:32.385816 < "PWD" 00:57:32.386082 > "257 "/" is current directory[CR][LF]" 00:57:32.388866 < "EPSV" 00:57:32.389086 ====> Passive DATA channel requested by client 00:57:32.389244 DATA sockfilt for passive data channel starting... 00:57:32.451077 DATA sockfilt for passive data channel started (pid 220056) 00:57:32.452248 DATA sockfilt for passive data channel listens on port 40041 00:57:32.452614 > "229 Entering Passive Mode (|||40041|)[CR][LF]" 00:57:32.452797 Client has been notified that DATA conn will be accepted on port 40041 00:57:32.455015 Client connects to port 40041 00:57:32.455256 ====> Client established passive DATA connection on port 40041 00:57:32.458729 < "TYPE I" 00:57:32.459036 > "200 I modify TYPE as you wanted[CR][LF]" 00:57:32.460375 < "SIZE verifiedserver" 00:57:32.460698 > "213 18[CR][LF]" 00:57:32.461964 < "RETR verifiedserver" 00:57:32.462274 > "150 Binary junk (18 bytes).[CR][LF]" 00:57:32.462815 =====> Closing passive DATA connection... 00:57:32.462986 Server disconnects passive DATA connection 00:57:32.465793 Server disconnected passive DATA connection 00:57:32.466021 DATA sockfilt for passive data channel quits (pid 220056) 00:57:32.469674 DATA sockfilt for passive data channel quit (pid 220056) 00:57:32.469908 =====> Closed passive DATA connection 00:57:32.470230 > "226 File transfer complete[CR][LF]" 00:57:32.514384 < "QUIT" 00:57:32.515730 > "221 bye bye baby[CR][LF]" 00:57:32.516088 MAIN sockfilt said DISC 00:57:32.520929 ====> Client disconnected 00:57:32.521271 Awaiting input 00:58:19.698060 ====> Client connect 00:58:19.698792 FTPD: Getting commands from log/4/server.cmd 00:58:19.699537 FTPD: set custom reply for EPRT command 00:58:19.699801 FTPD: run test case number: 212 00:58:19.700843 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:58:21.004715 < "USER anonymous" 00:58:21.005165 > "331 We are happy you popped in![CR][LF]" 00:58:21.124460 < "PASS ftp@example.com" 00:58:21.124895 > "230 Welcome you silly person[CR][LF]" 00:58:21.215109 < "PWD" 00:58:21.215588 > "257 "/" is current directory[CR][LF]" 00:58:21.410521 < "CWD a" 00:58:21.410960 > "250 CWD command successful.[CR][LF]" 00:58:21.475138 < "CWD path" 00:58:21.475573 > "250 CWD command successful.[CR][LF]" 00:58:21.657200 < "EPRT |1|127.0.0.1|35009|" 00:58:21.657629 > "500 no such command[CR][LF]" 00:58:21.968533 < "PORT 127,0,0,1,233,123" 00:58:21.968982 > "200 You said PORT - I say FINE[CR][LF]" 00:58:21.969214 ====> Active DATA channel requested by client 00:58:21.969852 DATA sockfilt for active data channel starting... 00:58:22.046179 DATA sockfilt for active data channel started (pid 221106) 00:58:22.046670 ====> Active DATA channel connected to client port 59771 00:58:22.301847 < "TYPE I" 00:58:22.302307 > "200 I modify TYPE as you wanted[CR][LF]" 00:58:22.349521 < "SIZE 212" 00:58:22.351891 > "213 11[CR][LF]" 00:58:22.454836 < "RETR 212" 00:58:22.457655 > "150 Binary data connection for 212 () (11 bytes).[CR][LF]" 00:58:22.458246 =====> Closing active DATA connection... 00:58:22.458430 Server disconnects active DATA connection 00:58:22.464277 Server disconnected active DATA connection 00:58:22.464499 DATA sockfilt for active data channel quits (pid 221106) 00:58:22.467791 DATA sockfilt for active data channel quit (pid 221106) 00:58:22.467964 =====> Closed active DATA connection 00:58:22.468234 > "226 File transfer complete[CR][LF]" 00:58:24.776401 < "PORT 127,0,0,1,207,81" 00:58:24.776800 > "200 You said PORT - I say FINE[CR][LF]" 00:58:24.777001 ====> Active DATA channel requested by client 00:58:24.777272 DATA sockfilt for active data channel starting... 00:58:24.859121 DATA sockfilt for active data channel started (pid 221124) 00:58:24.859619 ====> Active DATA channel connected to client port 53073 00:58:24.860423 < "SIZE 212" 00:58:24.864331 > "213 11[CR][LF]" 00:58:24.874734 < "RETR 212" 00:58:24.875341 > "150 Binary data connection for 212 () (11 bytes).[CR][LF]" 00:58:24.875843 =====> Closing active DATA connection... 00:58:24.875999 Server disconnects active DATA connection 00:58:24.879027 Server disconnected active DATA connection 00:58:24.879246 DATA sockfilt for active data channel quits (pid 221124) 00:58:24.882396 DATA sockfilt for active data channel quit (pid 221124) 00:58:24.882591 =====> Closed active DATA connection 00:58:24.882883 > "226 File transfer complete[CR][LF]" 00:58:25.178504 < "QUIT" 00:58:25.178931 > "221 bye bye baby[CR][LF]" 00:58:25.331697 MAIN sockfilt said DISC 00:58:25.332225 ====> Client disconnected 00:58:25.332517 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:57:31.988596 ====> Client connect 00:57:31.990276 Received DATA (on stdin) 00:57:31.990367 > 160 bytes data, server => client 00:57:31.990489 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:57:31.990623 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:57:31.990722 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:57:31.998319 < 16 bytes data, client => server 00:57:31.998454 'USER anonymous\r\n' 00:57:31.999279 Received DATA (on stdin) 00:57:31.999347 > 33 bytes data, server => client 00:57:31.999455 '331 We are happy you popped in!\r\n' 00:57:32.000098 < 22 bytes data, client => server 00:57:32.000175 'PASS ftp@example.com\r\n' 00:57:32.000817 Received DATA (on stdin) 00:57:32.000888 > 30 bytes data, server => client 00:57:32.001228 '230 Welcome you silly person\r\n' 00:57:32.001633 < 5 bytes data, client => server 00:57:32.001697 'PWD\r\n' 00:57:32.002538 Received DATA (on stdin) 00:57:32.002604 > 30 bytes data, server => client 00:57:32.002683 '257 "/" is current directory\r\n' 00:57:32.004630 < 6 bytes data, client => server 00:57:32.004708 'EPSV\r\n' 00:57:32.069327 Received DATA (on stdin) 00:57:32.069471 > 39 bytes data, server => client 00:57:32.069569 '229 Entering Passive Mode (|||40041|)\r\n' 00:57:32.074362 < 8 bytes data, client => server 00:57:32.074450 'TYPE I\r\n' 00:57:32.075677 Received DATA (on stdin) 00:57:32.075749 > 33 bytes data, server => client 00:57:32.075830 '200 I modify TYPE as you wanted\r\n' 00:57:32.076173 < 21 bytes data, client => server 00:57:32.076250 'SIZE verifiedserver\r\n' 00:57:32.077215 Received DATA (on stdin) 00:57:32.077300 > 8 bytes data, server => client 00:57:32.077373 '213 18\r\n' 00:57:32.077859 < 21 bytes data, client => server 00:57:32.077934 'RETR verifiedserver\r\n' 00:57:32.078512 Received DATA (on stdin) 00:57:32.078576 > 29 bytes data, server => client 00:57:32.078657 '150 Binary junk (18 bytes).\r\n' 00:57:32.086746 Received DATA (on stdin) 00:57:32.086871 > 28 bytes data, server => client 00:57:32.086968 '226 File transfer complete\r\n' 00:57:32.129460 < 6 bytes data, client => server 00:57:32.129639 'QUIT\r\n' 00:57:32.131033 Received DATA (on stdin) 00:57:32.131119 > 18 bytes data, server => client 00:57:32.131233 '221 bye bye baby\r\n' 00:57:32.132251 ====> Client disconnect 00:57:32.132570 Received ACKD (on stdin) 00:58:19.313968 ====> Client connect 00:58:19.320453 Received DATA (on stdin) 00:58:19.320578 > 160 bytes data, server => client 00:58:19.320700 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:58:19.320803 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:58:19.320894 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:58:20.619746 < 16 bytes data, client => server 00:58:20.619944 'USER anonymous\r\n' 00:58:20.621280 Received DATA (on stdin) 00:58:20.621371 > 33 bytes data, server => client 00:58:20.621474 '331 We are happy you popped in!\r\n' 00:58:20.739709 < 22 bytes data, client => server 00:58:20.739917 'PASS ftp@example.com\r\n' 00:58:20.741009 Received DATA (on stdin) 00:58:20.741099 > 30 bytes data, server => client 00:58:20.741199 '230 Welcome you silly person\r\n' 00:58:20.828397 < 5 bytes data, client => server 00:58:20.828566 'PWD\r\n' 00:58:20.831710 Received DATA (on stdin) 00:58:20.831816 > 30 bytes data, server => client 00:58:20.831920 '257 "/" is current directory\r\n' 00:58:21.025722 < 7 bytes data, client => server 00:58:21.025929 'CWD a\r\n' 00:58:21.027058 Received DATA (on stdin) 00:58:21.027172 > 29 bytes data, server => client 00:58:21.027275 '250 CWD command successful.\r\n' 00:58:21.087156 < 10 bytes data, client => server 00:58:21.087324 'CWD path\r\n' 00:58:21.091704 Received DATA (on stdin) 00:58:21.091810 > 29 bytes data, server => client 00:58:21.091918 '250 CWD command successful.\r\n' 00:58:21.272380 < 26 bytes data, client => server 00:58:21.272616 'EPRT |1|127.0.0.1|35009|\r\n' 00:58:21.273742 Received DATA (on stdin) 00:58:21.273839 > 21 bytes data, server => client 00:58:21.273934 '500 no such command\r\n' 00:58:21.581452 < 24 bytes data, client => server 00:58:21.581706 'PORT 127,0,0,1,233,123\r\n' 00:58:21.585106 Received DATA (on stdin) 00:58:21.585209 > 32 bytes data, server => client 00:58:21.585310 '200 You said PORT - I say FINE\r\n' 00:58:21.914088 < 8 bytes data, client => server 00:58:21.914238 'TYPE I\r\n' 00:58:21.918719 Received DATA (on stdin) 00:58:21.918824 > 33 bytes data, server => client 00:58:21.918913 '200 I modify TYPE as you wanted\r\n' 00:58:21.964758 < 10 bytes data, client => server 00:58:21.964928 'SIZE 212\r\n' 00:58:21.968033 Received DATA (on stdin) 00:58:21.968128 > 8 bytes data, server => client 00:58:21.968209 '213 11\r\n' 00:58:22.067989 < 10 bytes data, client => server 00:58:22.069551 'RETR 212\r\n' 00:58:22.072123 Received DATA (on stdin) 00:58:22.072206 > 51 bytes data, server => client 00:58:22.074843 '150 Binary data connection for 212 () (11 bytes).\r\n' 00:58:22.084633 Received DATA (on stdin) 00:58:22.084724 > 28 bytes data, server => client 00:58:22.084806 '226 File transfer complete\r\n' 00:58:24.391436 < 23 bytes data, client => server 00:58:24.391622 'PORT 127,0,0,1,207,81\r\n' 00:58:24.395567 Received DATA (on stdin) 00:58:24.395652 > 32 bytes data, server => client 00:58:24.395733 '200 You said PORT - I say FINE\r\n' 00:58:24.448173 < 10 bytes data, client => server 00:58:24.448357 'SIZE 212\r\n' 00:58:24.477097 Received DATA (on stdin) 00:58:24.477241 > 8 bytes data, server => client 00:58:24.480748 '213 11\r\n' 00:58:24.489908 < 10 bytes data, client => server 00:58:24.490051 'RETR 212\r\n' 00:58:24.492350 Received DATA (on stdin) 00:58:24.492424 > 51 bytes data, server => client 00:58:24.492517 '150 Binary data connection for 212 () (11 bytes).\r\n' 00:58:24.499002 Received DATA (on stdin) 00:58:24.499104 > 28 bytes data, server => client 00:58:24.499184 '226 File transfer complete\r\n' 00:58:24.790953 < 6 bytes data, client => server 00:58:24.791121 'QUIT\r\n' 00:58:24.795048 Received DATA (on stdin) 00:58:24.795153 > 18 bytes data, server => client 00:58:24.795232 '221 bye bye baby\r\n' 00:58:24.947557 ====> Client disconnect 00:58:24.948395 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:57:32.048704 RunningCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind213 ../src/curl -q --output log/7/curl213.out --include --trace-ascii log/7/trace213 --trace-time http://test.remote.example.com.213:34897/path/2130002 --proxy1.0 http://127.0.0.1:34897 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit" > log/7/stdout213 2> log/7/stderr213 IPv4 version 00:57:32.060108 Listening on port 40041 00:57:32.062766 Wrote pid 220056 to log/4/server/ftp_sockdata.pid 00:57:32.063605 Received PING (on stdin) 00:57:32.067865 Received PORT (on stdin) 00:57:32.071163 ====> Client connect 00:57:32.078775 Received DATA (on stdin) 00:57:32.079106 > 18 bytes data, server => client 00:57:32.079476 'WE ROOLZ: 201673\r\n' 00:57:32.079714 Received DISC (on stdin) 00:57:32.079831 ====> Client forcibly disconnected 00:57:32.082544 Received QUIT (on stdin) 00:57:32.082641 quits 00:57:32.083218 ============> sockfilt quits 00:58:22.652704 ====> Client connect 00:58:22.660540 Running IPv4 version 00:58:22.660720 Connected to port 59771 00:58:22.661193 Wrote pid 221106 to log/4/server/ftp_sockdata.pid 00:58:22.661992 Received PING (on stdin) 00:58:23.074123 Received DATA (on stdin) 00:58:23.074590 > 11 bytes data, server => client 00:58:23.075010 'data blobb\n' 00:58:23.075269 Received DISC (on stdin) 00:58:23.075397 ====> Client forcibly disconnected 00:58:23.075597 disconnected, no socket to read on 00:58:23.080909 Received QUIT (on stdin) 00:58:23.081000 quits 00:58:23.081556 ============> sockfilt quits 00:58:24.455753 ====> Client connect 00:58:24.470156 Running IPv4 version 00:58:24.470311 Connected to port 53073 00:58:24.474136 Wrote pid 221124 to log/4/server/ftp_sockdata.pid 00:58:24.474938 Received PING (on stdin) 00:58:24.493779 Received DATA (on stdin) 00:58:24.494163 > 11 bytes data, server => client 00:58:24.494523 'data blobb\n' 00:58:24.494769 Received DISC (on stdin) 00:58:24.494894 ====> Client forcibly disconnected 00:58:24.495078 disconnected, no socket to read on 00:58:24.495591 Received QUIT (on stdin) 00:58:24.495668 quits 00:58:24.496206 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPRT 500 no such command Testnum 212 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD a CWD path EPRT |1|127.0.0.1|35009| PORT 127,0,0,1,233,123 TYPE I SIZE 212 RETR 212 PORT 127,0,0,1,207,81 SIZE 212 RETR 212 QUIT === End of file server.input === Start of file stderr212 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 11 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 11 100 11 0 0 1 0 0:00:11 0:00:05 0:00:06 2 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 11 100 11 0 0 15 0 --:--:-- --:--:-- --:--:-- 41 === End of file stderr212 === Start of file stdout212 data blobb === End of file stdout212 === Start of file trace212 00:58:19.363294 * Trying 127.0.0.1:38207... 00:58:20.294273 * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 45572 00:58:20.537020 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:58:20.881938 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:58:20.907852 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:58:20.914119 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:58:20.919292 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:58:21.025731 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:58:21.103640 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:58:21.124876 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:58:21.192406 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:58:21.212281 => Send header, 5 bytes (0x5) 0000: PWD 00:58:21.227245 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:58:21.264823 * Entry path is '/' 00:58:21.411412 => Send header, 7 bytes (0x7) 0000: CWD a 00:58:21.425968 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:58:21.468238 => Send header, 10 bytes (0xa) 0000: CWD path 00:58:21.519053 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:58:21.657962 => Send header, 26 bytes (0x1a) 0000: EPRT |1|127.0.0.1|35009| 00:58:21.873641 <= Recv header, 21 bytes (0x15) 0000: 500 no such command 00:58:21.889050 * disabling EPRT usage 00:58:21.941353 * Hostname 127.0.0.1 was found in DNS cache 00:58:21.965366 => Send header, 24 bytes (0x18) 0000: PORT 127,0,0,1,233,123 00:58:22.094526 <= Recv header, 32 bytes (0x20) 0000: 200 You said PORT - I say FINE 00:58:22.110469 * Connect data stream actively 00:58:22.196893 * Ready to accept data connection from server 00:58:22.212254 * Connection accepted from server 00:58:22.266304 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 42762) from 127.0.0.1 port 59771 00:58:22.298272 => Send header, 8 bytes (0x8) 0000: TYPE I 00:58:22.317005 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:58:22.349000 => Send header, 10 bytes (0xa) 0000: SIZE 212 00:58:22.401577 <= Recv header, 8 bytes (0x8) 0000: 213 11 00:58:22.452828 => Send header, 10 bytes (0xa) 0000: RETR 212 00:58:22.499066 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 212 () (11 bytes). 00:58:22.541201 * Maxdownload = -1 00:58:22.551885 * Getting file with size: 11 00:58:22.720996 <= Recv data, 11 bytes (0xb) 0000: data blobb. 00:58:23.012564 * abort upload 00:58:23.038475 <= Recv data, 0 bytes (0x0) 00:58:23.198083 * Remembering we are in dir "a/path/" 00:58:23.276393 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:58:23.564154 * Connection #0 to host 127.0.0.1:38207 left intact 00:58:24.652385 * Reusing existing ftp: connection with host 127.0.0.1 00:58:24.757963 * Request has same path as previous transfer 00:58:24.770937 * Hostname 127.0.0.1 was found in DNS cache 00:58:24.779820 => Send header, 23 bytes (0x17) 0000: PORT 127,0,0,1,207,81 00:58:24.788412 <= Recv header, 32 bytes (0x20) 0000: 200 You said PORT - I say FINE 00:58:24.796048 * Connect data stream actively 00:58:24.832390 => Send header, 10 bytes (0xa) 0000: SIZE 212 00:58:24.847121 * Ready to accept data connection from server 00:58:24.849510 * Connection accepted from server 00:58:24.864047 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 54166) from 127.0.0.1 port 53073 00:58:24.868507 <= Recv header, 8 bytes (0x8) 0000: 213 11 00:58:24.876572 => Send header, 10 bytes (0xa) 0000: RETR 212 00:58:24.881441 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 212 () (11 bytes). 00:58:24.890253 * Maxdownload = -1 00:58:24.891844 * Getting file with size: 11 00:58:24.901855 <= Recv data, 11 bytes (0xb) 0000: data blobb. 00:58:24.920133 * abort upload 00:58:24.922290 <= Recv data, 0 bytes (0x0) 00:58:24.936200 * Remembering we are in dir "a/path/" 00:58:24.943266 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:58:24.976110 * Connection #0 to host 127.0.0.1:38207 left intact === End of file trace212 === Start of file valgrind212 ==220120== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind212 test 0213...[HTTP 1.0 proxy CONNECT auth NTLM and then POST] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind213 ../src/curl -q --output log/7/curl213.out --include --trace-ascii log/7/trace213 --trace-time http://test.remote.example.com.213:34897/path/2130002 --proxy1.0 http://127.0.0.1:34897 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit" > log/7/stdout213 2> log/7/stderr213 valgrind ERROR ==220308== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 213 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind213 ../src/curl -q --output log/7/curl213.out --include --trace-ascii log/7/trace213 --trace-time http://test.remote.example.com.213:34897/path/2130002 --proxy1.0 http://127.0.0.1:34897 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit" > log/7/stdout213 2> log/7/stderr213 === End of file commands.log === Start of file curl213.out HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 33 HTTP/1.1 200 Things are fine in proxy land Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 7 Connection: close Content-Type: text/html Funny-head: yesyes daniel === End of file curl213.out === Start of file http_server.log 00:57:37.562349 ====> Client connect 00:57:37.562514 accept_connection 3 returned 4 00:57:37.562590 accept_connection 3 returned 0 00:57:37.570529 Read 93 bytes 00:57:37.570623 Process 93 bytes request 00:57:37.570712 Got request: GET /verifiedserver HTTP/1.1 00:57:37.570776 Are-we-friendly question received 00:57:37.570883 Wrote request (93 bytes) input to log/7/server.input 00:57:37.570974 Identifying ourselves as friends 00:57:37.571171 Response sent (57 bytes) and written to log/7/server.response 00:57:37.571242 special request received, no persistency 00:57:37.571305 ====> Client disconnect 0 00:58:25.433494 ====> Client connect 00:58:25.433646 accept_connection 3 returned 4 00:58:25.433725 accept_connection 3 returned 0 00:58:26.550041 Read 222 bytes 00:58:26.550243 Process 222 bytes request 00:58:26.550495 Received a CONNECT test.remote.example.com.213:34897 HTTP/1.0 request 00:58:26.550670 Port number: 34897, test case number: -7 00:58:26.550961 [log/7/server.cmd] cmdfile says testnum 213 00:58:26.551260 - request found to be complete (213) 00:58:26.551504 Received NTLM type-1, sending back data 1001 00:58:26.551676 Wrote request (222 bytes) input to log/7/server.input 00:58:26.551802 Send response test213 section 00:58:26.552215 Response sent (355 bytes) and written to log/7/server.response 00:58:26.552312 received CONNECT but isn't running as proxy 00:58:28.610309 Read 354 bytes 00:58:28.610496 Process 354 bytes request 00:58:28.610600 Received a CONNECT test.remote.example.com.213:34897 HTTP/1.0 request 00:58:28.610668 Port number: 34897, test case number: -7 00:58:28.610763 [log/7/server.cmd] cmdfile says testnum 213 00:58:28.610991 - request found to be complete (213) 00:58:28.611224 Received NTLM type-3, sending back data 1002 00:58:28.611333 Wrote request (354 bytes) input to log/7/server.input 00:58:28.611415 Send response test213 section 00:58:28.611786 Response sent (118 bytes) and written to log/7/server.response 00:58:28.611884 received CONNECT but isn't running as proxy 00:58:29.487587 Read 184 bytes 00:58:29.487787 Process 184 bytes request 00:58:29.487880 Got request: POST /path/2130002 HTTP/1.1 00:58:29.487953 Serve test number 213 part 2 00:58:29.488192 - request found to be complete (213) 00:58:29.488428 Found Content-Length: 6 in the request 00:58:29.488536 Wrote request (184 bytes) input to log/7/server.input 00:58:29.488621 Send response test213 section 00:58:29.489020 Response sent (139 bytes) and written to log/7/server.response 00:58:29.489088 => persistent connection request ended, awaits new request 00:58:30.877581 Connection closed by client 00:58:30.877776 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 44462 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 213 === End of file server.cmd === Start of file server.input CONNECT test.remote.example.com.213:34897 HTTP/1.0 Host: test.remote.example.com.213:34897 Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive CONNECT test.remote.example.com.213:34897 HTTP/1.0 Host: test.remote.example.com.213:34897 Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive POST /path/2130002 HTTP/1.1 Host: test.remote.example.com.213:34897 User-Agent: curl/8.17.0 Accept: */* Content-Length: 6 Content-Type: application/x-www-form-urlencoded postit === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 33 And you should ignore this data. HTTP/1.1 200 Things are fine in proxy land Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 7 Connection: close Content-Type: text/html Funny-head: yesyes daniel === End of file server.response === Start of file stderr213 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 6 0 0 0 6 0 0 --:--:-- 0:00:06 --:--:-- 1 100 13 0 7 0 6 0 0 --:--:-- 0:00:07 --:--:-- 2 100 13 0 7 0 6 0 0 --:--:-- 0:00:07 --:--:-- 3 === End of file stderr213 === Start of file trace213 00:58:25.491226 * Trying 127.0.0.1:34897... 00:58:26.372533 * CONNECT: no ALPN negotiated 00:58:26.438906 * allocate connect buffer 00:58:26.650904 * Proxy auth using NTLM with user 'testuser' 00:58:26.796647 * Establish HTTP proxy tunnel to test.remote.example.com.213:34897 00:58:26.965361 => Send header, 222 bytes (0xde) 0000: CONNECT test.remote.example.com.213:34897 HTTP/1.0 0034: Host: test.remote.example.com.213:34897 005d: Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAA 009d: AAAAA= 00a5: User-Agent: curl/8.17.0 00be: Proxy-Connection: Keep-Alive 00dc: 00:58:27.188743 <= Recv header, 57 bytes (0x39) 0000: HTTP/1.1 407 Authorization Required to proxy me my dear 00:58:27.619289 <= Recv header, 243 bytes (0xf3) 0000: Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVD 0040: gyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQ 0080: ASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGU 00c0: AdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind214 ../src/curl -q --output log/5/curl214.out --include --trace-ascii log/5/trace214 --trace-time "http://127.0.0.1:46263/\{\}\/214" > log/5/stdout214 2> log/5/stderr214 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind215 ../src/curl -q --output log/8/curl215.out --include --trace-ascii log/8/trace215 --trace-time ftp://127.0.0.1:33545/a/path/215/ ftp://127.0.0.1:33545/a/path/215/ > log/8/stdout215 2> log/8/stderr215 UAAAAAAA== 00:58:27.953464 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 33 00:58:27.981168 <= Recv header, 2 bytes (0x2) 0000: 00:58:27.996354 * Ignore 33 bytes of response-body 00:58:28.960709 * Proxy auth using NTLM with user 'testuser' 00:58:28.970517 * Establish HTTP proxy tunnel to test.remote.example.com.213:34897 00:58:28.997340 => Send header, 354 bytes (0x162) 0000: CONNECT test.remote.example.com.213:34897 HTTP/1.0 0034: Host: test.remote.example.com.213:34897 005d: Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAA 009d: AAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw 00dd: 47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1 011d: NUQVRJT04= 0129: User-Agent: curl/8.17.0 0142: Proxy-Connection: Keep-Alive 0160: 00:58:29.055817 <= Recv header, 44 bytes (0x2c) 0000: HTTP/1.1 200 Things are fine in proxy land 00:58:29.071856 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 00:58:29.086089 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 00:58:29.094111 <= Recv header, 2 bytes (0x2) 0000: 00:58:29.116383 * CONNECT phase completed 00:58:29.136902 * CONNECT tunnel established, response 200 00:58:29.333792 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 60426 00:58:29.430849 * using HTTP/1.x 00:58:29.892303 => Send header, 178 bytes (0xb2) 0000: POST /path/2130002 HTTP/1.1 001d: Host: test.remote.example.com.213:34897 0046: User-Agent: curl/8.17.0 005f: Accept: */* 006c: Content-Length: 6 007f: Content-Type: application/x-www-form-urlencoded 00b0: 00:58:29.921383 => Send data, 6 bytes (0x6) 0000: postit 00:58:29.992536 * upload completely sent off: 6 bytes 00:58:30.242660 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:58:30.305284 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:58:30.353509 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 7. 00:58:30.402608 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 00:58:30.423361 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:58:30.430954 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:58:30.505003 <= Recv header, 1 bytes (0x1) 0000: . 00:58:30.562542 <= Recv data, 7 bytes (0x7) 0000: daniel. 00:58:31.052288 * shutting down connection #0 === End of file trace213 === Start of file valgrind213 ==220308== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind213 setenv MSYS2_ARG_CONV_EXCL = http:// test 0214...[HTTP URL with escaped { and }] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind214 ../src/curl -q --output log/5/curl214.out --include --trace-ascii log/5/trace214 --trace-time "http://127.0.0.1:46263/\{\}\/214" > log/5/stdout214 2> log/5/stderr214 valgrind ERROR ==220470== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 214 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind214 ../src/curl -q --output log/5/curl214.out --include --trace-ascii log/5/trace214 --trace-time "http://127.0.0.1:46263/\{\}\/214" > log/5/stdout214 2> log/5/stderr214 === End of file commands.log === Start of file curl214.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Content-Type: text/html Funny-head: yesyes -foo- === End of file curl214.out === Start of file http_server.log 00:57:50.266484 ====> Client connect 00:57:50.266661 accept_connection 3 returned 4 00:57:50.266747 accept_connection 3 returned 0 00:57:50.273598 Read 93 bytes 00:57:50.273737 Process 93 bytes request 00:57:50.273847 Got request: GET /verifiedserver HTTP/1.1 00:57:50.273926 Are-we-friendly question received 00:57:50.274062 Wrote request (93 bytes) input to log/5/server.input 00:57:50.274171 Identifying ourselves as friends 00:57:50.274372 Response sent (57 bytes) and written to log/5/server.response 00:57:50.274444 special request received, no persistency 00:57:50.274509 ====> Client disconnect 0 00:58:38.103114 ====> Client connect 00:58:38.103258 accept_connection 3 returned 4 00:58:38.103339 accept_connection 3 returned 0 00:58:39.109303 Read 86 bytes 00:58:39.109511 Process 86 bytes request 00:58:39.109605 Got request: GET /{}\/214 HTTP/1.1 00:58:39.109675 Serve test number 214 part 0 00:58:39.109852 - request found to be complete (214) 00:58:39.110108 Wrote request (86 bytes) input to log/5/server.input 00:58:39.110217 Send response test214 section 00:58:39.110555 Response sent (120 bytes) and written to log/5/server.response 00:58:39.110624 => persistent connection request ended, awaits new request 00:58:41.476632 Connection closed by client 00:58:41.476825 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 38808 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 214 === End of file server.cmd === Start of file server.input GET /{}\/214 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr214 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr214 === Start of file trace214 00:58:38.163539 * Trying 127.0.0.1:46263... 00:58:39.065888 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 42414 00:58:39.185302 * using HTTP/1.x 00:58:39.530284 => Send header, 86 bytes (0x56) 0000: GET /{}\/214 HTTP/1.1 0017: Host: 127.0.0.1:46263 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 00:58:39.869265 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 00:58:40.178615 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 00:58:40.298653 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 00:58:40.362509 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 00:58:40.369768 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 00:58:40.452139 <= Recv header, 1 bytes (0x1) 0000: . 00:58:40.507688 <= Recv data, 6 bytes (0x6) 0000: -foo-. 00:58:41.038828 * Connection #0 to host 127.0.0.1:46263 left intact === End of file trace214 === Start of file valgrind214 ==220470== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind214 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/8/server/ftp_server.pid" --logfile "log/8/ftp_server.log" --logdir "log/8" --portfile "log/8/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 33545 (log/8/server/ftp_server.port) RUN: FTP server is PID 220580 port 33545 * pid ftp => 220580 220580 test 0215...[Get two FTP dir listings from the same remote dir: no second CWD] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind215 ../src/curl -q --output log/8/curl215.out --include --trace-ascii log/8/trace215 --trace-time ftp://127.0.0.1:33545/a/path/215/ ftp://127.0.0.1:33545/a/path/215/ > log/8/stdout215 2> log/8/stderr215 valgrind ERROR ==220608== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 215 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind215 ../src/curl -q --output log/8/curl215.out --include --trace-ascii log/8/trace215 --trace-time ftp://127.0.0.1:33545/a/path/215/ ftp://127.0.0.1:33545/a/path/215/ > log/8/stdout215 2> log/8/stderr215 === End of file commands.log === Start of file curl215.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl215.out === Start of file ftp_server.log 00:57:54.245657 FTP server listens on port IPv4/33545 00:57:54.249048 logged pid 220580 in log/8/server/ftp_server.pid 00:57:54.249300 Awaiting input 00:58:42.557740 ====> Client connect 00:58:42.558570 FTPD: Getting commands from log/8/server.cmd 00:58:42.558990 FTPD: run test case number: 215 00:58:42.564959 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:58:43.801567 < "USER anonymous" 00:58:43.801999 > "331 We are happy you popped in![CR][LF]" 00:58:43.912002 < "PASS ftp@example.com" 00:58:43.912423 > "230 Welcome you silly person[CR][LF]" 00:58:43.996768 < "PWD" 00:58:43.997234 > "257 "/" is current directory[CR][LF]" 00:58:44.181674 < "CWD a" 00:58:44.182106 > "250 CWD command successful.[CR][LF]" 00:58:44.230404 < "CWD path" 00:58:44.230835 > "250 CWD command successful.[CR][LF]" 00:58:44.277947 < "CWD 215" 00:58:44.278697 > "250 CWD command successful.[CR][LF]" 00:58:44.336904 < "EPSV" 00:58:44.337243 ====> Passive DATA channel requested by client 00:58:44.337406 DATA sockfilt for passive data channel starting... 00:58:44.387896 DATA sockfilt for passive data channel started (pid 221734) 00:58:44.389120 DATA sockfilt for passive data channel listens on port 34361 00:58:44.389682 > "229 Entering Passive Mode (|||34361|)[CR][LF]" 00:58:44.389869 Client has been notified that DATA conn will be accepted on port 34361 00:58:44.573950 Client connects to port 34361 00:58:44.574610 ====> Client established passive DATA connection on port 34361 00:58:44.701960 < "TYPE A" 00:58:44.702395 > "200 I modify TYPE as you wanted[CR][LF]" 00:58:44.746393 < "LIST" 00:58:44.747097 > "150 here comes a directory[CR][LF]" 00:58:44.747288 pass LIST data on data connection 00:58:44.750036 send total 20 as data 00:58:44.754875 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 00:58:44.755151 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 00:58:44.755369 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 00:58:44.755578 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 00:58:44.755796 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 00:58:44.756012 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 00:58:44.756218 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 00:58:44.756433 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 00:58:44.756640 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 00:58:44.756847 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 00:58:44.758174 =====> Closing passive DATA connection... 00:58:44.758357 Server disconnects passive DATA connection 00:58:44.767888 Server disconnected passive DATA connection 00:58:44.768127 DATA sockfilt for passive data channel quits (pid 221734) 00:58:44.771995 DATA sockfilt for passive data channel quit (pid 221734) 00:58:44.772214 =====> Closed passive DATA connection 00:58:44.772525 > "226 ASCII transfer complete[CR][LF]" 00:58:47.411347 < "EPSV" 00:58:47.411740 ====> Passive DATA channel requested by client 00:58:47.411915 DATA sockfilt for passive data channel starting... 00:58:47.468100 DATA sockfilt for passive data channel started (pid 221876) 00:58:47.469334 DATA sockfilt for passive data channel listens on port 36007 00:58:47.469685 > "229 Entering Passive Mode (|||36007|)[CR][LF]" 00:58:47.469855 Client has been notified that DATA conn will be accepted on port 36007 00:58:47.494313 Client connects to port 36007 00:58:47.494774 ====> Client established passive DATA connection on port 36007 00:58:47.519969 < "LIST" 00:58:47.520370 > "150 here comes a directory[CR][LF]" 00:58:47.520558 pass LIST data on data connection 00:58:47.520953 send total 20 as data 00:58:47.521210 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 00:58:47.521439 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 00:58:47.521692 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 00:58:47.521909 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 00:58:47.522121 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 00:58:47.522333 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 00:58:47.522571 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 00:58:47.522789 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 00:58:47.523006 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 00:58:47.523217 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 00:58:47.523823 =====> Closing passive DATA connection... 00:58:47.523984 Server disconnects passive DATA connection 00:58:47.527367 Server disconnected passive DATA connection 00:58:47.527586 DATA sockfilt for passive data channel quits (pid 221876) 00:58:47.534042 DATA sockfilt for passive data channel quit (pid 221876) 00:58:47.534254 =====> Closed passive DATA connection 00:58:47.537662 > "226 ASCII transfer complete[CR][LF]" 00:58:47.890407 < "QUIT" 00:58:47.891126 > "221 bye bye baby[CR][LF]" 00:58:48.006890 MAIN sockfilt said DISC 00:58:48.007769 ====> Client disconnected 00:58:48.008394 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:57:54.848587 Running IPv4 version 00:57:54.856519 Listening on port 33545 00:57:54.856983 Wrote pid 220593 to log/8/server/ftp_sockctrl.pid 00:57:54.857276 Wrote port 33545 to log/8/server/ftp_server.port 00:57:54.858053 Received PING (on stdin) 00:58:43.171757 ====> Client connect 00:58:43.180907 Received DATA (on stdin) 00:58:43.181259 > 160 bytes data, server => client 00:58:43.181660 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:58:43.181782 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:58:43.181891 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:58:44.414851 < 16 bytes data, client => server 00:58:44.415120 'USER anonymous\r\n' 00:58:44.418088 Received DATA (on stdin) 00:58:44.418171 > 33 bytes data, server => client 00:58:44.418266 '331 We are happy you popped in!\r\n' 00:58:44.527049 < 22 bytes data, client => server 00:58:44.527270 'PASS ftp@example.com\r\n' 00:58:44.528515 Received DATA (on stdin) 00:58:44.528597 > 30 bytes data, server => client 00:58:44.528697 '230 Welcome you silly person\r\n' 00:58:44.611635 < 5 bytes data, client => server 00:58:44.611857 'PWD\r\n' 00:58:44.613319 Received DATA (on stdin) 00:58:44.613403 > 30 bytes data, server => client 00:58:44.613497 '257 "/" is current directory\r\n' 00:58:44.793602 < 7 bytes data, client => server 00:58:44.793833 'CWD a\r\n' 00:58:44.798182 Received DATA (on stdin) 00:58:44.798265 > 29 bytes data, server => client 00:58:44.798353 '250 CWD command successful.\r\n' 00:58:44.845361 < 10 bytes data, client => server 00:58:44.845535 'CWD path\r\n' 00:58:44.850404 Received DATA (on stdin) 00:58:44.850494 > 29 bytes data, server => client 00:58:44.850582 '250 CWD command successful.\r\n' 00:58:44.892892 < 9 bytes data, client => server 00:58:44.893051 'CWD 215\r\n' 00:58:44.894462 Received DATA (on stdin) 00:58:44.894543 > 29 bytes data, server => client 00:58:44.894655 '250 CWD command successful.\r\n' 00:58:44.951930 < 6 bytes data, client => server 00:58:44.952089 'EPSV\r\n' 00:58:45.005763 Received DATA (on stdin) 00:58:45.005917 > 39 bytes data, server => client 00:58:45.006013 '229 Entering Passive Mode (|||34361|)\r\n' 00:58:45.317103 < 8 bytes data, client => server 00:58:45.317322 'TYPE A\r\n' 00:58:45.323734 Received DATA (on stdin) 00:58:45.323824 > 33 bytes data, server => client 00:58:45.323920 '200 I modify TYPE as you wanted\r\n' 00:58:45.361442 < 6 bytes data, client => server 00:58:45.361592 'LIST\r\n' 00:58:45.362888 Received DATA (on stdin) 00:58:45.362966 > 28 bytes data, server => client 00:58:45.363072 '150 here comes a directory\r\n' 00:58:45.388609 Received DATA (on stdin) 00:58:45.388745 > 29 bytes data, server => client 00:58:45.388838 '226 ASCII transfer complete\r\n' 00:58:48.026415 < 6 bytes data, client => server 00:58:48.026606 'EPSV\r\n' 00:58:48.085756 Received DATA (on stdin) 00:58:48.085922 > 39 bytes data, server => client 00:58:48.086031 '229 Entering Passive Mode (|||36007|)\r\n' 00:58:48.135006 < 6 bytes data, client => server 00:58:48.135183 'LIST\r\n' 00:58:48.140304 Received DATA (on stdin) 00:58:48.140413 > 28 bytes data, server => client 00:58:48.140508 '150 here comes a directory\r\n' 00:58:48.150619 Received DATA (on stdin) 00:58:48.150716 > 29 bytes data, server => client 00:58:48.154049 '226 ASCII transfer complete\r\n' 00:58:48.505419 < 6 bytes data, client => server 00:58:48.505587 'QUIT\r\n' 00:58:48.506900 Received DATA (on stdin) 00:58:48.506975 > 18 bytes data, server => client 00:58:48.507078 '221 bye bye baby\r\n' 00:58:48.622576 ====> Client disconnect 00:58:48.623533 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:58:44.989903 Running IPv4 version 00:58:44.997449 Listening on port 34361 00:58:44.997889 Wrote pid 221734 to log/8/server/ftp_sockdata.pid 00:58:44.998611 Received PING (on stdin) 00:58:45.004556 Received PORT (on stdin) 00:58:45.189800 ====> Client connect 00:58:45.370402 Received DATA (on stdin) 00:58:45.370779 > 10 bytes data, server => client 00:58:45.374943 'total 20\r\n' 00:58:45.375237 Received DATA (on stdin) 00:58:45.375307 > 57 bytes data, server => client 00:58:45.375406 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 00:58:45.375504 Received DATA (on stdin) 00:58:45.375569 > 58 bytes data, server => client 00:58:45.375670 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 00:58:45.375750 Received DATA (on stdin) 00:58:45.375811 > 61 bytes data, server => client 00:58:45.375922 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 00:58:45.375994 '\n' 00:58:45.376075 Received DATA (on stdin) 00:58:45.376136 > 62 bytes data, server => client 00:58:45.376234 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 00:58:45.376290 '\n' 00:58:45.376372 Received DATA (on stdin) 00:58:45.376443 > 70 bytes data, server => client 00:58:45.376557 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 00:58:45.376629 'usr/bin\r\n' 00:58:45.376714 Received DATA (on stdin) 00:58:45.376776 > 59 bytes data, server => client 00:58:45.376872 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 00:58:45.376949 Received DATA (on stdin) 00:58:45.377009 > 69 bytes data, server => client 00:58:45.377121 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 00:58:45.377183 'd.html\r\n' 00:58:45.377276 Received DATA (on stdin) 00:58:45.377339 > 59 bytes data, server => client 00:58:45.377440 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 00:58:45.377522 Received DATA (on stdin) 00:58:45.377582 > 59 bytes data, server => client 00:58:45.377677 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 00:58:45.377755 Received DATA (on stdin) 00:58:45.377813 > 59 bytes data, server => client 00:58:45.377909 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 00:58:45.377987 Received DISC (on stdin) 00:58:45.383751 ====> Client forcibly disconnected 00:58:45.384719 Received QUIT (on stdin) 00:58:45.384795 quits 00:58:45.385331 ============> sockfilt quits 00:58:47.075164 Running IPv4 version 00:58:47.082479 Listening on port 36007 00:58:47.082960 Wrote pid 221876 to log/8/server/ftp_sockdata.pid 00:58:47.083697 Received PING (on stdin) 00:58:47.084766 Received PORT (on stdin) 00:58:47.107968 ====> Client connect 00:58:47.139910 Received DATA (on stdin) 00:58:47.140271 > 10 bytes data, server => client 00:58:47.140629 'total 20\r\n' 00:58:47.140868 Received DATA (on stdin) 00:58:47.140928 > 57 bytes data, server => client 00:58:47.141020 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 00:58:47.141107 Received DATA (on stdin) 00:58:47.141165 > 58 bytes data, server => client 00:58:47.141257 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 00:58:47.141330 Received DATA (on stdin) 00:58:47.141386 > 61 bytes data, server => client 00:58:47.141493 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 00:58:47.141559 '\n' 00:58:47.141633 Received DATA (on stdin) 00:58:47.141689 > 62 bytes data, server => client 00:58:47.141783 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 00:58:47.141835 '\n' 00:58:47.141905 Received DATA (on stdin) 00:58:47.141962 > 70 bytes data, server => client 00:58:47.142055 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 00:58:47.142113 'usr/bin\r\n' 00:58:47.142184 Received DATA (on stdin) 00:58:47.142240 > 59 bytes data, server => client 00:58:47.142333 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 00:58:47.142405 Received DATA (on stdin) 00:58:47.142461 > 69 bytes data, server => client 00:58:47.142554 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 00:58:47.142611 'd.html\r\n' 00:58:47.142693 Received DATA (on stdin) 00:58:47.142766 > 59 bytes data, server => client 00:58:47.142860 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 00:58:47.142932 Received DATA (on stdin) 00:58:47.142989 > 59 bytes data, server => client 00:58:47.143080 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 00:58:47.143152 Received DATA (on stdin) 00:58:47.143209 > 59 bytes data, server => client 00:58:47.143301 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 00:58:47.143373 Received DISC (on stdin) 00:58:47.143479 ====> Client forcibly disconnected 00:58:47.147116 Received QUIT (on stdin) 00:58:47.147203 quits 00:58:47.147727 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 215 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD a CWD path CWD 215 EPSV TYPE A LIST EPSV LIST QUIT === End of file server.input === StartCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind216 ../src/curl -q --output log/2/curl216.out --include --trace-ascii log/2/trace216 --trace-time -T log/2/upload.216 ftp://127.0.0.1:39881/a/path/216/ -T log/2/upload.216 ftp://127.0.0.1:39881/a/path/216/%2e%2eanotherup.216 > log/2/stdout216 2> log/2/stderr216 of file stderr215 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 623 0 623 0 0 125 0 --:--:-- 0:00:04 --:--:-- 163 100 623 0 623 0 0 117 0 --:--:-- 0:00:05 --:--:-- 149 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 623 0 623 0 0 790 0 --:--:-- --:--:-- --:--:-- 1769 === End of file stderr215 === Start of file stdout215 total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file stdout215 === Start of file trace215 00:58:42.244509 * Trying 127.0.0.1:33545... 00:58:43.107503 * Established connection to 127.0.0.1 (127.0.0.1 port 33545) from 127.0.0.1 port 54780 00:58:43.344391 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:58:43.676088 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:58:43.707050 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:58:43.714595 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:58:43.719417 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:58:43.817925 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:58:43.887949 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:58:43.908774 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:58:43.973997 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:58:43.995604 => Send header, 5 bytes (0x5) 0000: PWD 00:58:44.011662 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:58:44.049567 * Entry path is '/' 00:58:44.177598 => Send header, 7 bytes (0x7) 0000: CWD a 00:58:44.190199 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:58:44.229316 => Send header, 10 bytes (0xa) 0000: CWD path 00:58:44.268615 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:58:44.276822 => Send header, 9 bytes (0x9) 0000: CWD 215 00:58:44.302200 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:58:44.335873 => Send header, 6 bytes (0x6) 0000: EPSV 00:58:44.355358 * Connect data stream passively 00:58:44.391283 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||34361|) 00:58:44.490586 * Connecting to 127.0.0.1 (127.0.0.1) port 34361 00:58:44.567007 * Trying 127.0.0.1:34361... 00:58:44.668180 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 34361) from 127.0.0.1 port 39898 00:58:44.700292 => Send header, 8 bytes (0x8) 0000: TYPE A 00:58:44.716224 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:58:44.745371 => Send header, 6 bytes (0x6) 0000: LIST 00:58:44.777871 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 00:58:44.815935 * Maxdownload = -1 00:58:44.983306 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 00:58:45.406271 * abort upload 00:58:45.432304 <= Recv data, 0 bytes (0x0) 00:58:45.613258 * Remembering we are in dir "a/path/215/" 00:58:45.794680 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 00:58:46.106683 * Connection #0 to host 127.0.0.1:33545 left intact 00:58:47.287431 * Reusing existing ftp: connection with host 127.0.0.1 00:58:47.399136 * Request has same path as previous transfer 00:58:47.410414 => Send header, 6 bytes (0x6) 0000: EPSV 00:58:47.414918 * Connect data stream passively 00:58:47.471944 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||36007|) 00:58:47.485539 * Connecting to 127.0.0.1 (127.0.0.1) port 36007 00:58:47.490490 * Trying 127.0.0.1:36007... 00:58:47.507679 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 36007) from 127.0.0.1 port 47880 00:58:47.518938 => Send header, 6 bytes (0x6) 0000: LIST 00:58:47.528941 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 00:58:47.537812 * Maxdownload = -1 00:58:47.550588 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 00:58:47.634166 * abort upload 00:58:47.636399 <= Recv data, 0 bytes (0x0) 00:58:47.650800 * Remembering we are in dir "a/path/215/" 00:58:47.663311 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 00:58:47.692890 * Connection #0 to host 127.0.0.1:33545 left intact === End of file trace215 === Start of file valgrind215 ==220608== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind215 test 0216...[FTP upload two files to the same dir] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind216 ../src/curl -q --output log/2/curl216.out --include --trace-ascii log/2/trace216 --trace-time -T log/2/upload.216 ftp://127.0.0.1:39881/a/path/216/ -T log/2/upload.216 ftp://127.0.0.1:39881/a/path/216/%2e%2eanotherup.216 > log/2/stdout216 2> log/2/stderr216 valgrind ERROR ==220767== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 216 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind216 ../src/curl -q --output log/2/curl216.out --include --trace-ascii log/2/trace216 --trace-time -T log/2/upload.216 ftp://127.0.0.1:39881/a/path/216/ -T log/2/upload.216 ftp://127.0.0.1:39881/a/path/216/%2e%2eanotherup.216 > log/2/stdout216 2> log/2/stderr216 === End of file commands.log === Start of file ftp_server.log 00:57:56.654349 ====> Client connect 00:57:56.655331 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:57:56.662243 < "USER anonymous" 00:57:56.662543 > "331 We are happy you popped in![CR][LF]" 00:57:56.664676 < "PASS ftp@example.com" 00:57:56.664944 > "230 Welcome you silly person[CR][LF]" 00:57:56.667982 < "PWD" 00:57:56.668259 > "257 "/" is current directory[CR][LF]" 00:57:56.670220 < "EPSV" 00:57:56.670440 ====> Passive DATA channel requested by client 00:57:56.670586 DATA sockfilt for passive data channel starting... 00:57:56.718147 DATA sockfilt for passive data channel started (pid 220753) 00:57:56.719539 DATA sockfilt for passive data channel listens on port 46623 00:57:56.719882 > "229 Entering Passive Mode (|||46623|)[CR][LF]" 00:57:56.720048 Client has been notified that DATA conn will be accepted on port 46623 00:57:56.723309 Client connects to port 46623 00:57:56.723517 ====> Client established passive DATA connection on port 46623 00:57:56.724118 < "TYPE I" 00:57:56.725101 > "200 I modify TYPE as you wanted[CR][LF]" 00:57:56.725622 < "SIZE verifiedserver" 00:57:56.725914 > "213 18[CR][LF]" 00:57:56.727296 < "RETR verifiedserver" 00:57:56.729665 > "150 Binary junk (18 bytes).[CR][LF]" 00:57:56.730647 =====> Closing passive DATA connection... 00:57:56.730811 Server disconnects passive DATA connection 00:57:56.731777 Server disconnected passive DATA connection 00:57:56.731941 DATA sockfilt for passive data channel quits (pid 220753) 00:57:56.737658 DATA sockfilt for passive data channel quit (pid 220753) 00:57:56.737841 =====> Closed passive DATA connection 00:57:56.738093 > "226 File transfer complete[CR][LF]" 00:57:56.778883 < "QUIT" 00:57:56.779256 > "221 bye bye baby[CR][LF]" 00:57:56.780393 MAIN sockfilt said DISC 00:57:56.780582 ====> Client disconnected 00:57:56.780842 Awaiting input 00:58:44.347408 ====> Client connect 00:58:44.348185 FTPD: Getting commands from log/2/server.cmd 00:58:44.348530 FTPD: run test case number: 216 00:58:44.349468 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:58:45.592605 < "USER anonymous" 00:58:45.593329 > "331 We are happy you popped in![CR][LF]" 00:58:45.701033 < "PASS ftp@example.com" 00:58:45.704316 > "230 Welcome you silly person[CR][LF]" 00:58:45.784812 < "PWD" 00:58:45.785243 > "257 "/" is current directory[CR][LF]" 00:58:45.964194 < "CWD a" 00:58:45.964706 > "250 CWD command successful.[CR][LF]" 00:58:46.016078 < "CWD path" 00:58:46.021061 > "250 CWD command successful.[CR][LF]" 00:58:46.067158 < "CWD 216" 00:58:46.067621 > "250 CWD command successful.[CR][LF]" 00:58:46.137716 < "EPSV" 00:58:46.138061 ====> Passive DATA channel requested by client 00:58:46.138214 DATA sockfilt for passive data channel starting... 00:58:46.193529 DATA sockfilt for passive data channel started (pid 221774) 00:58:46.194952 DATA sockfilt for passive data channel listens on port 43043 00:58:46.195296 > "229 Entering Passive Mode (|||43043|)[CR][LF]" 00:58:46.195470 Client has been notified that DATA conn will be accepted on port 43043 00:58:46.383822 Client connects to port 43043 00:58:46.384402 ====> Client established passive DATA connection on port 43043 00:58:46.511823 < "TYPE I" 00:58:46.512260 > "200 I modify TYPE as you wanted[CR][LF]" 00:58:46.566049 < "STOR upload.216" 00:58:46.566396 STOR test number upload.216 in log/2/upload.upload.216 00:58:46.566660 > "125 Gimme gimme gimme![CR][LF]" 00:58:46.931515 > Appending 23 bytes to file 00:58:47.402014 =====> Closing passive DATA connection... 00:58:47.402299 Server knows passive DATA connection is already disconnected 00:58:47.402481 DATA sockfilt for passive data channel quits (pid 221774) 00:58:47.411047 DATA sockfilt for passive data channel quit (pid 221774) 00:58:47.411483 =====> Closed passive DATA connection 00:58:47.411720 received 23 bytes upload 00:58:47.412079 > "226 File transfer complete[CR][LF]" 00:58:49.241823 < "EPSV" 00:58:49.242161 ====> Passive DATA channel requested by client 00:58:49.242315 DATA sockfilt for passive data channel starting... 00:58:49.291595 DATA sockfilt for passive data channel started (pid 221887) 00:58:49.293051 DATA sockfilt for passive data channel listens on port 35579 00:58:49.293432 > "229 Entering Passive Mode (|||35579|)[CR][LF]" 00:58:49.293612 Client has been notified that DATA conn will be accepted on port 35579 00:58:49.321275 Client connects to port 35579 00:58:49.321900 ====> Client established passive DATA connection on port 35579 00:58:49.352173 < "STOR ..anotherup.216" 00:58:49.352526 STOR test number ..anotherup.216 in log/2/upload...anotherup.216 00:58:49.361019 > "125 Gimme gimme gimme![CR][LF]" 00:58:49.380737 > Appending 23 bytes to file 00:58:49.427428 =====> Closing passive DATA connection... 00:58:49.427827 Server knows passive DATA connection is already disconnected 00:58:49.428033 DATA sockfilt for passive data channel quits (pid 221887) 00:58:49.431683 DATA sockfilt for passive data channel quit (pid 221887) 00:58:49.431883 =====> Closed passive DATA connection 00:58:49.432089 received 23 bytes upload 00:58:49.432401 > "226 File transfer complete[CR][LF]" 00:58:49.672958 < "QUIT" 00:58:49.673406 > "221 bye bye baby[CR][LF]" 00:58:49.797025 MAIN sockfilt said DISC 00:58:49.797763 ====> Client disconnected 00:58:49.798126 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:57:57.268842 ====> Client connect 00:57:57.271430 Received DATA (on stdin) 00:57:57.271507 > 160 bytes data, server => client 00:57:57.271610 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:57:57.271700 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:57:57.271786 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:57:57.277819 < 16 bytes data, client => server 00:57:57.277904 'USER anonymous\r\n' 00:57:57.278728 Received DATA (on stdin) 00:57:57.278795 > 33 bytes data, server => client 00:57:57.278875 '331 We are happy you popped in!\r\n' 00:57:57.279180 < 22 bytes data, client => server 00:57:57.279255 'PASS ftp@example.com\r\n' 00:57:57.281135 Received DATA (on stdin) 00:57:57.281202 > 30 bytes data, server => client 00:57:57.281283 '230 Welcome you silly person\r\n' 00:57:57.281508 < 5 bytes data, client => server 00:57:57.281572 'PWD\r\n' 00:57:57.284453 Received DATA (on stdin) 00:57:57.284521 > 30 bytes data, server => client 00:57:57.284599 '257 "/" is current directory\r\n' 00:57:57.285951 < 6 bytes data, client => server 00:57:57.286015 'EPSV\r\n' 00:57:57.336505 Received DATA (on stdin) 00:57:57.336652 > 39 bytes data, server => client 00:57:57.336748 '229 Entering Passive Mode (|||46623|)\r\n' 00:57:57.339369 < 8 bytes data, client => server 00:57:57.339444 'TYPE I\r\n' 00:57:57.340617 Received DATA (on stdin) 00:57:57.340689 > 33 bytes data, server => client 00:57:57.340791 '200 I modify TYPE as you wanted\r\n' 00:57:57.341143 < 21 bytes data, client => server 00:57:57.341213 'SIZE verifiedserver\r\n' 00:57:57.342428 Received DATA (on stdin) 00:57:57.342495 > 8 bytes data, server => client 00:57:57.342563 '213 18\r\n' 00:57:57.343038 < 21 bytes data, client => server 00:57:57.343110 'RETR verifiedserver\r\n' 00:57:57.343779 Received DATA (on stdin) 00:57:57.343860 > 29 bytes data, server => client 00:57:57.343961 '150 Binary junk (18 bytes).\r\n' 00:57:57.354516 Received DATA (on stdin) 00:57:57.354597 > 28 bytes data, server => client 00:57:57.354672 '226 File transfer complete\r\n' 00:57:57.394182 < 6 bytes data, client => server 00:57:57.394313 'QUIT\r\n' 00:57:57.395692 Received DATA (on stdin) 00:57:57.395760 > 18 bytes data, server => client 00:57:57.395834 '221 bye bye baby\r\n' 00:57:57.396525 ====> Client disconnect 00:57:57.397258 Received ACKD (on stdin) 00:58:44.963238 ====> Client connect 00:58:44.970523 Received DATA (on stdin) 00:58:44.970694 > 160 bytes data, server => client 00:58:44.970804 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:58:44.970904 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:58:44.970994 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:58:46.207509 < 16 bytes data, client => server 00:58:46.207687 'USER anonymous\r\n' 00:58:46.209108 Received DATA (on stdin) 00:58:46.209185 > 33 bytes data, server => client 00:58:46.209297 '331 We are happy you popped in!\r\n' 00:58:46.316010 < 22 bytes data, client => server 00:58:46.316178 'PASS ftp@example.com\r\n' 00:58:46.317546 Received DATA (on stdin) 00:58:46.317621 > 30 bytes data, server => client 00:58:46.320703 '230 Welcome you silly person\r\n' 00:58:46.399842 < 5 bytes data, client => server 00:58:46.400000 'PWD\r\n' 00:58:46.401583 Received DATA (on stdin) 00:58:46.401661 > 30 bytes data, server => client 00:58:46.401750 '257 "/" is current directory\r\n' 00:58:46.579161 < 7 bytes data, client => server 00:58:46.579326 'CWD a\r\n' 00:58:46.583740 Received DATA (on stdin) 00:58:46.583869 > 29 bytes data, server => client 00:58:46.583960 '250 CWD command successful.\r\n' 00:58:46.631033 < 10 bytes data, client => server 00:58:46.631207 'CWD path\r\n' 00:58:46.632600 Received DATA (on stdin) 00:58:46.632677 > 29 bytes data, server => client 00:58:46.637617 '250 CWD command successful.\r\n' 00:58:46.682078 < 9 bytes data, client => server 00:58:46.682266 'CWD 216\r\n' 00:58:46.684104 Received DATA (on stdin) 00:58:46.684187 > 29 bytes data, server => client 00:58:46.684273 '250 CWD command successful.\r\n' 00:58:46.752693 < 6 bytes data, client => server 00:58:46.752880 'EPSV\r\n' 00:58:46.811370 Received DATA (on stdin) 00:58:46.811524 > 39 bytes data, server => client 00:58:46.811618 '229 Entering Passive Mode (|||43043|)\r\n' 00:58:47.124407 < 8 bytes data, client => server 00:58:47.124577 'TYPE I\r\n' 00:58:47.128333 Received DATA (on stdin) 00:58:47.128421 > 33 bytes data, server => client 00:58:47.128506 '200 I modify TYPE as you wanted\r\n' 00:58:47.181167 < 17 bytes data, client => server 00:58:47.181372 'STOR upload.216\r\n' 00:58:47.182744 Received DATA (on stdin) 00:58:47.182817 > 24 bytes data, server => client 00:58:47.182896 '125 Gimme gimme gimme!\r\n' 00:58:48.028468 Received DATA (on stdin) 00:58:48.028615 > 28 bytes data, server => client 00:58:48.028705 '226 File transfer complete\r\n' 00:58:49.856818 < 6 bytes data, client => server 00:58:49.856982 'EPSV\r\n' 00:58:49.909496 Received DATA (on stdin) 00:58:49.909651 > 39 bytes data, server => client 00:58:49.909751 '229 Entering Passive Mode (|||35579|)\r\n' 00:58:49.967093 < 22 bytes data, client => server 00:58:49.967282 'STOR ..anotherup.216\r\n' 00:58:49.968872 Received DATA (on stdin) 00:58:49.968949 > 24 bytes data, server => client 00:58:49.971515 '125 Gimme gimme gimme!\r\n' 00:58:50.048775 Received DATA (on stdin) 00:58:50.048916 > 28 bytes data, server => client 00:58:50.049004 '226 File transfer complete\r\n' 00:58:50.287860 < 6 bytes data, client => server 00:58:50.288048 'QUIT\r\n' 00:58:50.293716 Received DATA (on stdin) 00:58:50.293813 > 18 bytes data, server => client 00:58:50.293888 '221 bye bye baby\r\n' 00:58:50.412826 ====> Client disconnect 00:58:50.413696 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:57:56.325182 Running IPv4 version 00:57:56.332793 Listening on port 46623 00:57:56.333253 Wrote pid 220753 to log/2/server/ftp_sockdata.pid 00:57:56.334011 Received PING (on stdin) 00:57:56.335093 Received PORT (on stdin) 00:57:56.339208 ====> Client connect 00:57:56.346142 Received DATA (on stdin) 00:57:56.346432 > 18 bytes data, server => client 00:57:56.347464 'WE ROOLZ: 202189\r\n' 00:57:56.347706 Received DISC (on stdin) 00:57:56.347824 ====> Client forcibly disconnected 00:57:56.348333 Received QUIT (on stdin) 00:57:56.348403 quits 00:57:56.348869 ============> sockfilt quits 00:58:46.800380 Running IPv4 version 00:58:46.808015 Listening on port 43043 00:58:46.808535 Wrote pid 221774 to log/2/server/ftp_sockdata.pid 00:58:46.809287 Received PING (on stdin) 00:58:46.810398 Received PORT (on stdin) 00:58:46.999612 ====> Client connect 00:58:47.543567 < 23 bytes data, client => server 00:58:47.544050 'upload this file twice\n' 00:58:48.017095 ====> Client disconnect 00:58:48.018867 Received ACKD (on stdin) 00:58:48.019180 Received QUIT (on stdin) 00:58:48.019269 quits 00:58:48.019799 ============> sockfilt quits 00:58:49.898118 Running IPv4 version 00:58:49.905989 Listening on port 35579 00:58:49.906521 Wrote pid 221887 to log/2/server/ftp_sockdata.pid 00:58:49.907337 Received PING (on stdin) 00:58:49.908472 Received PORT (on stdin) 00:58:49.937083 ====> Client connect 00:58:49.996320 < 23 bytes data, client => server 00:58:49.996797 'upload this file twice\n' 00:58:50.042487 ====> Client disconnect 00:58:50.042898 Received ACKD (on stdin) 00:58:50.044368 Received QUIT (on stdin) 00:58:50.044482 quits 00:58:50.045062 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 216 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD a CWD path CWD 216 EPSV TYPE I STOR upload.216 EPSV STOR ..anotherup.216 QUIT === End of file server.input === Start of file stderr216 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 23 0 0 100 23 0 4 0:00:05 0:00:05 --:--:-- 5 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 23 0 0 100 23 0 33 --:--:-- --:--:-- --:--:-- 89 100 23 0 0 100 23 0 31 --:--:-- --:--:-- --:--:-- 76 === End of file stderr216 === Start of file trace216 00:58:44.037140 * Trying 127.0.0.1:39881... 00:58:44.910819 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 40836 00:58:45.134102 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 00:58:45.479491 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 00:58:45.503813 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 00:58:45.509506 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 00:58:45.514982 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 00:58:45.610052 => Send header, 16 bytes (0x10) 0000: USER anonymous 00:58:45.681762 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 00:58:45.701052 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 00:58:45.765257 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 00:58:45.783767 => Send header, 5 bytes (0x5) 0000: PWD 00:58:45.799563 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 00:58:45.834834 * Entry path is '/' 00:58:45.963106 => Send header, 7 bytes (0x7) 0000: CWD a 00:58:45.976570 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:58:46.014996 => Send header, 10 bytes (0xa) 0000: CWD path 00:58:46.057212 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:58:46.066011 => Send header, 9 bytes (0x9) 0000: CWD 216 00:58:46.100490 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 00:58:46.136635 => Send header, 6 bytes (0x6) 0000: EPSV 00:58:46.151617 * Connect data stream passively 00:58:46.197046 <= Recv headCMD (14336): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind217 ../src/curl -q --include --trace-ascii log/1/trace217 --trace-time http://test.remote.example.com.217:40641/path/2170002 --proxy http://127.0.0.1:40641 --proxytunnel -w "%{http_code} %{http_connect}\n" > log/1/stdout217 2> log/1/stderr217 er, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||43043|) 00:58:46.305184 * Connecting to 127.0.0.1 (127.0.0.1) port 43043 00:58:46.377304 * Trying 127.0.0.1:43043... 00:58:46.486425 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 43043) from 127.0.0.1 port 54908 00:58:46.508381 => Send header, 8 bytes (0x8) 0000: TYPE I 00:58:46.525936 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 00:58:46.565137 => Send header, 17 bytes (0x11) 0000: STOR upload.216 00:58:46.603565 <= Recv header, 24 bytes (0x18) 0000: 125 Gimme gimme gimme 00:58:46.950244 => Send data, 23 bytes (0x17) 0000: upload this file twice. 00:58:47.160086 * upload completely sent off: 23 bytes 00:58:47.314183 * Remembering we are in dir "a/path/216/" 00:58:47.519555 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:58:47.882172 * Connection #0 to host 127.0.0.1:39881 left intact 00:58:49.109652 * Reusing existing ftp: connection with host 127.0.0.1 00:58:49.230527 * Request has same path as previous transfer 00:58:49.240762 => Send header, 6 bytes (0x6) 0000: EPSV 00:58:49.243608 * Connect data stream passively 00:58:49.296595 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||35579|) 00:58:49.314566 * Connecting to 127.0.0.1 (127.0.0.1) port 35579 00:58:49.319493 * Trying 127.0.0.1:35579... 00:58:49.337043 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 35579) from 127.0.0.1 port 49414 00:58:49.348687 => Send header, 22 bytes (0x16) 0000: STOR ..anotherup.216 00:58:49.356845 <= Recv header, 24 bytes (0x18) 0000: 125 Gimme gimme gimme 00:58:49.382175 => Send data, 23 bytes (0x17) 0000: upload this file twice. 00:58:49.397083 * upload completely sent off: 23 bytes 00:58:49.420430 * Remembering we are in dir "a/path/216/" 00:58:49.436636 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 00:58:49.469731 * Connection #0 to host 127.0.0.1:39881 left intact === End of file trace216 === Start of file upload...anotherup.216 upload this file twice === End of file upload...anotherup.216 === Start of file upload.216 upload this file twice === End of file upload.216 === Start of file upload.upload.216 upload this file twice === End of file upload.upload.216 === Start of file valgrind216 ==220767== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind216 test 0217...[HTTP proxy CONNECT to proxy returning 405] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind217 ../src/curl -q --include --trace-ascii log/1/trace217 --trace-time http://test.remote.example.com.217:40641/path/2170002 --proxy http://127.0.0.1:40641 --proxytunnel -w "%{http_code} %{http_connect}\n" > log/1/stdout217 2> log/1/stderr217 valgrind ERROR ==220942== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 217 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind217 ../src/curl -q --include --trace-ascii log/1/trace217 --trace-time http://test.remote.example.com.217:40641/path/2170002 --proxy http://127.0.0.1:40641 --proxytunnel -w "%{http_code} %{http_connect}\n" > log/1/stdout217 2> log/1/stderr217 === End of file commands.log === Start of file http_server.log 00:58:00.279884 ====> Client connect 00:58:00.280043 accept_connection 3 returned 4 00:58:00.280120 accept_connection 3 returned 0 00:58:00.287103 Read 93 bytes 00:58:00.287201 Process 93 bytes request 00:58:00.287291 Got request: GET /verifiedserver HTTP/1.1 00:58:00.287359 Are-we-friendly question received 00:58:00.287475 Wrote request (93 bytes) input to log/1/server.input 00:58:00.287565 Identifying ourselves as friends 00:58:00.287722 Response sent (57 bytes) and written to log/1/server.response 00:58:00.287781 special request received, no persistency 00:58:00.287832 ====> Client disconnect 1 00:58:00.287909 Wrote request (13 bytes) input to log/1/server.input 00:58:48.161633 ====> Client connect 00:58:48.161768 accept_connection 3 returned 4 00:58:48.161842 accept_connection 3 returned 0 00:58:49.034719 Read 150 bytes 00:58:49.034930 Process 150 bytes request 00:58:49.035039 Received a CONNECT test.remote.example.com.217:40641 HTTP/1.1 request 00:58:49.035112 Port number: 40641, test case number: -7 00:58:49.035226 [log/1/server.cmd] cmdfile says testnum 217 00:58:49.035429 - request found to be complete (217) 00:58:49.035693 Wrote request (150 bytes) input to log/1/server.input 00:58:49.035804 Send response test217 section 00:58:49.036028 connection close instruction "swsclose" found in response 00:58:49.036182 Response sent (77 bytes) and written to log/1/server.response 00:58:49.036251 instructed to close connection after server-reply 00:58:49.036315 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 39018 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 217 === End of file server.cmd === Start of file server.input CONNECT test.remote.example.com.217:40641 HTTP/1.1 Host: test.remote.example.com.217:40641 User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 405 Method Not Allowed swsclose And you should ignore this data. === End of file server.response === Start of file stderr217 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (56) CONNECT tunnel failed, response 405 === End of file stderr217 === Start of file stdout217 HTTP/1.1 405 Method Not Allowed swsclose 000 405 === End of file stdout217 === Start of file trace217 00:58:47.204537 * Trying 127.0.0.1:40641... 00:58:48.071395 * CONNECT: no ALPN negotiated 00:58:48.123656 * allocate connect buffer 00:58:48.287401 * Establish HTTP proxy tunnel to test.remote.example.com.217:40641 00:58:48.448506 => Send header, 150 bytes (0x96) 0000: CONNECT test.remote.example.com.217:40641 HTTP/1.1 0034: Host: test.remote.example.com.217:40641 005d: User-Agent: curl/8.17.0 0076: Proxy-Connection: Keep-Alive 0094: 00:58:48.656624 <= Recv header, 42 bytes (0x2a) 0000: HTTP/1.1 405 Method Not Allowed swsclose 00:58:48.952998 <= Recv header, 2 bytes (0x2) 0000: 00:58:49.099085 * CONNECT tunnel failed, response 405 00:58:49.483292 * closing connection #0 === End of file trace217 === Start of file valgrind217 ==220942== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind217 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 225 in state 4 Runner 2 (id 185908) running test 224 in state 4 Runner 3 (id 185910) running test 219 in state 4 Runner 4 (id 185912) running test 220 in state 4 Runner 5 (id 185914) running test 222 in state 4 Runner 6 (id 185916) running test 218 in state 4 Runner 7 (id 185918) running test 221 in state 4 Runner 8 (id 185920) running test 223 in state 4 Hmmm, the tests are taCMD (1792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind219 ../src/curl -q --output log/3/curl219.out --include --trace-ascii log/3/trace219 --trace-time -x foo://127.0.0.1:47/219 http://127.0.0.1:47/219 > log/3/stdout219 2> log/3/stderr219 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind218 ../src/curl -q --output log/6/curl218.out --include --trace-ascii log/6/trace218 --trace-time -T log/6/file218 -H "Transfer-Encoding: chunked" http://127.0.0.1:38277/218 > log/6/stdout218 2> log/6/stderr218 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind220 ../src/curl -q --output log/4/curl220.out --include --trace-ascii log/4/trace220 --trace-time http://127.0.0.1:42621/220 --compressed > log/4/stdout220 2> log/4/stderr220 king a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 225 in state 4 Runner 2 (id 185908) running test 224 in state 4 Runner 3 (id 185910) running test 219 in state 4 Runner 4 (id 185912) running test 220 in state 4 Runner 5 (id 185914) running test 222 in state 4 Runner 6 (id 185916) running test 218 in state 4 Runner 7 (id 185918) running test 221 in state 4 Runner 8 (id 185920) running test 223 in state 4 test 0219...[try using proxy with unsupported scheme] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind219 ../src/curl -q --output log/3/curl219.out --include --trace-ascii log/3/trace219 --trace-time -x foo://127.0.0.1:47/219 http://127.0.0.1:47/219 > log/3/stdout219 2> log/3/stderr219 valgrind ERROR ==221179== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 219 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind219 ../src/curl -q --output log/3/curl219.out --include --trace-ascii log/3/trace219 --trace-time -x foo://127.0.0.1:47/219 http://127.0.0.1:47/219 > log/3/stdout219 2> log/3/stderr219 === End of file commands.log === Start of file server.cmd Testnum 219 === End of file server.cmd === Start of file stderr219 curl: (7) Unsupported proxy scheme for 'foo://127.0.0.1:47/219' === End of file stderr219 === Start of file trace219 00:59:11.563043 * Unsupported proxy scheme for 'foo://127.0.0.1:47/219' 00:59:11.934963 * closing connection #-1 === End of file trace219 === Start of file valgrind219 ==221179== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind219 test 0218...[HTTP PUT from a file but enforce chunked transfer-encoding] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind218 ../src/curl -q --output log/6/curl218.out --include --trace-ascii log/6/trace218 --trace-time -T log/6/file218 -H "Transfer-Encoding: chunked" http://127.0.0.1:38277/218 > log/6/stdout218 2> log/6/stderr218 valgrind ERROR ==221176== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 218 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind218 ../src/curl -q --output log/6/curl218.out --include --trace-ascii log/6/trace218 --trace-time -T log/6/file218 -H "Transfer-Encoding: chunked" http://127.0.0.1:38277/218 > log/6/stdout218 2> log/6/stderr218 === End of file commands.log === Start of file curl218.out HTTP/1.0 200 OK Server: test-server/fake Content-Type: text/html Content-Length: 6 blaha === End of file curl218.out === Start of file file218 just some tiny teeny contents === End of file file218 === Start of file http_server.log 00:58:25.656991 ====> Client connect 00:58:25.657175 accept_connection 3 returned 4 00:58:25.657251 accept_connection 3 returned 0 00:58:25.664651 Read 93 bytes 00:58:25.664766 Process 93 bytes request 00:58:25.664859 Got request: GET /verifiedserver HTTP/1.1 00:58:25.664923 Are-we-friendly question received 00:58:25.665046 Wrote request (93 bytes) input to log/6/server.input 00:58:25.665143 Identifying ourselves as friends 00:58:25.665299 Response sent (57 bytes) and written to log/6/server.response 00:58:25.665360 special request received, no persistency 00:58:25.665420 ====> Client disconnect 0 00:59:13.487143 ====> Client connect 00:59:13.487287 accept_connection 3 returned 4 00:59:13.487364 accept_connection 3 returned 0 00:59:14.865266 Read 151 bytes 00:59:14.865457 Process 151 bytes request 00:59:14.865544 Got request: PUT /218 HTTP/1.1 00:59:14.865613 Serve test number 218 part 0 00:59:14.865771 - request found to be complete (218) 00:59:14.865986 Wrote request (151 bytes) input to log/6/server.input 00:59:14.866095 Send response test218 section 00:59:14.866356 Response sent (95 bytes) and written to log/6/server.response 00:59:14.866414 => persistent connection request ended, awaits new request 00:59:16.753355 Connection closed by client 00:59:16.753547 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 58372 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 218 === End of file server.cmd === Start of file server.input PUT /218 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* Transfer-Encoding: chunked 1e just some tiny teeny contents 0 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.0 200 OK Server: test-server/fake Content-Type: text/html Content-Length: 6 blaha === End of file server.response === Start of file stderr218 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 41 0 0 0 41 0 10 --:--:-- 0:00:03 --:--:-- 15 100 47 100 6 0 41 1 8 0:00:06 0:00:04 0:00:02 13 100 47 100 6 0 41 1 8 0:00:06 0:00:04 0:00:02 12 === End of file stderr218 === Start of file trace218 00:59:13.544831 * Trying 127.0.0.1:38277... 00:59:14.445771 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 49094 00:59:14.569178 * using HTTP/1.x 00:59:15.289995 => Send header, 110 bytes (0x6e) 0000: PUT /218 HTTP/1.1 0013: Host: 127.0.0.1:38277 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Transfer-Encoding: chunked 006c: 00:59:15.382795 => Send data, 41 bytes (0x29) 0000: 1e 0004: just some tiny teeny contents. 0024: 0 0027: 00:59:15.453241 * upload completely sent off: 41 bytes 00:59:15.723058 * HTTP 1.0, assume close after body 00:59:15.744387 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.0 200 OK 00:59:16.057289 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 00:59:16.180639 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 00:59:16.216103 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 00:59:16.303405 <= Recv header, 2 bytes (0x2) 0000: 00:59:16.357707 <= Recv data, 6 bytes (0x6) 0000: blaha. 00:59:16.939215 * shutting down connection #0 === End of file trace218 === Start of file valgrind218 ==221176== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind218 test 0220...[HTTP GET gzip compressed content] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind220 ../src/curl -q --output log/4/curl220.out --include --trace-ascii log/4/trace220 --trace-time http://127.0.0.1:42621/220 --compressed > log/4/stdout220 2> log/4/stderr220 valgrind ERROR ==221453== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 220 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck -CMD (15616): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind221 ../src/curl -q --output log/7/curl221.out --include --trace-ascii log/7/trace221 --trace-time http://127.0.0.1:34897/221 --compressed > log/7/stdout221 2> log/7/stderr221 -quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind220 ../src/curl -q --output log/4/curl220.out --include --trace-ascii log/4/trace220 --trace-time http://127.0.0.1:42621/220 --compressed > log/4/stdout220 2> log/4/stderr220 === End of file commands.log === Start of file curl220.out HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: GZIP Content-Length: 44 line 1 line 2 line 3 === End of file curl220.out === Start of file http_server.log 00:58:29.322377 ====> Client connect 00:58:29.322528 accept_connection 3 returned 4 00:58:29.322600 accept_connection 3 returned 0 00:58:29.329306 Read 93 bytes 00:58:29.329394 Process 93 bytes request 00:58:29.329481 Got request: GET /verifiedserver HTTP/1.1 00:58:29.329542 Are-we-friendly question received 00:58:29.329647 Wrote request (93 bytes) input to log/4/server.input 00:58:29.329728 Identifying ourselves as friends 00:58:29.329898 Response sent (57 bytes) and written to log/4/server.response 00:58:29.329960 special request received, no persistency 00:58:29.330014 ====> Client disconnect 0 00:59:17.339989 ====> Client connect 00:59:17.340133 accept_connection 3 returned 4 00:59:17.340212 accept_connection 3 returned 0 00:59:18.350928 Read 124 bytes 00:59:18.351153 Process 124 bytes request 00:59:18.351253 Got request: GET /220 HTTP/1.1 00:59:18.351325 Serve test number 220 part 0 00:59:18.351529 - request found to be complete (220) 00:59:18.351822 Wrote request (124 bytes) input to log/4/server.input 00:59:18.351959 Send response test220 section 00:59:18.352512 Response sent (330 bytes) and written to log/4/server.response 00:59:18.352589 => persistent connection request ended, awaits new request 00:59:23.772052 Connection closed by client 00:59:23.772243 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 52650 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 220 === End of file server.cmd === Start of file server.input GET /220 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* Accept-Encoding: deflate, gzip, br, zstd === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: GZIP Content-Length: 44 ‹yž«AlalalaËÉÌKU0äRÈÑF\ †1 q` === End of file server.response === Start of file stderr220 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 44 100 44 0 0 5 0 0:00:08 0:00:08 --:--:-- 6 100 44 100 44 0 0 5 0 0:00:08 0:00:08 --:--:-- 6 === End of file stderr220 === Start of file trace220 00:59:16.392039 * Trying 127.0.0.1:42621... 00:59:17.305752 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 55348 00:59:17.427521 * using HTTP/1.x 00:59:17.773965 => Send header, 124 bytes (0x7c) 0000: GET /220 HTTP/1.1 0013: Host: 127.0.0.1:42621 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Accept-Encoding: deflate, gzip, br, zstd 007a: 00:59:18.125018 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:59:18.432886 <= Recv header, 37 bytes (0x25) 0000: Date: Mon, 29 Nov 2004 21:56:53 GMT 00:59:18.528247 <= Recv header, 117 bytes (0x75) 0000: Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/ 0040: 4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 00:59:18.555796 <= Recv header, 23 bytes (0x17) 0000: Vary: Accept-Encoding 00:59:18.611771 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=ISO-8859-1 00:59:21.681758 <= Recv header, 24 bytes (0x18) 0000: Content-Encoding: GZIP 00:59:21.719139 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 44 00:59:21.799168 <= Recv header, 2 bytes (0x2) 0000: 00:59:21.857801 <= Recv data, 45 bytes (0x2d) 0000: ....y..A..lalala....KU0.R...F\...1....q`..... 00:59:22.394846 * Excess found writing body: excess = 1, size = 44, maxdownload = 44, bytecount = 44 00:59:22.445002 * we are done reading and this is set to close, stop send 00:59:22.474103 * abort upload 00:59:22.957407 * shutting down connection #0 === End of file trace220 === Start of file valgrind220 ==221453== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind220 test 0221...[HTTP GET gzip compressed content with broken gzip header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind221 ../src/curl -q --output log/7/curl221.out --include --trace-ascii log/7/trace221 --trace-time http://127.0.0.1:34897/221 --compressed > log/7/stdout221 2> log/7/stderr221 valgrind ERROR ==221615== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 221 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind221 ../src/curl -q --output log/7/curl221.out --include --trace-ascii log/7/trace221 --trace-time http://127.0.0.1:34897/221 --compressed > log/7/stdout221 2> log/7/stderr221 === End of file commands.log === Start of file curl221.out HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: gzip Content-Length: 41 === End of file curl221.out === Start of file http_server.log 00:58:34.772729 ====> Client connect 00:58:34.772896 accept_connection 3 returned 4 00:58:34.772977 accept_connection 3 returned 0 00:58:34.780503 Read 93 bytes 00:58:34.780640 Process 93 bytes request 00:58:34.780738 Got request: GET /verifiedserver HTTP/1.1 00:58:34.780808 Are-we-friendly question received 00:58:34.780931 Wrote request (93 bytes) input to log/7/server.input 00:58:34.781028 Identifying ourselves as friends 00:58:34.781188 Response sent (57 bytes) and written to log/7/server.response 00:58:34.781253 special request received, no persistency 00:58:34.781312 ====> Client disconnect 0 00:59:21.947214 ====> Client connect 00:59:21.947374 accept_connection 3 returned 4 00:59:21.947455 accept_connection 3 returned 0 00:59:22.956502 Read 124 bytes 00:59:22.956680 Process 124 bytes request 00:59:22.956777 Got request: GET /221 HTTP/1.1 00:59:22.956851 Serve test number 221 part 0 00:59:22.957049 - request found to be complete (221) 00:59:22.957313 Wrote request (124 bytes) input to log/7/server.input 00:59:22.957422 Send response test221 section 00:59:22.957830 Response sent (326 bytes) and written to log/7/server.response 00:59:22.957895 => persistent connection request ended, awaits new request 00:59:25.07501CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind222 ../src/curl -q --output log/5/curl222.out --include --trace-ascii log/5/trace222 --trace-time http://127.0.0.1:46263/222 --compressed > log/5/stdout222 2> log/5/stderr222 7 Connection closed by client 00:59:25.075187 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 51396 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 221 === End of file server.cmd === Start of file server.input GET /221 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* Accept-Encoding: deflate, gzip, br, zstd === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: gzip Content-Length: 41 yž«AlalalaËÉÌKU0äRÈÑF\ †1 q` === End of file server.response === Start of file stderr221 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 41 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (61) Error while processing content unencoding: incorrect header check === End of file stderr221 === Start of file trace221 00:59:21.989215 * Trying 127.0.0.1:34897... 00:59:22.902125 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 48790 00:59:23.023086 * using HTTP/1.x 00:59:23.379603 => Send header, 124 bytes (0x7c) 0000: GET /221 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Accept-Encoding: deflate, gzip, br, zstd 007a: 00:59:23.727156 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:59:24.052217 <= Recv header, 37 bytes (0x25) 0000: Date: Mon, 29 Nov 2004 21:56:53 GMT 00:59:24.151372 <= Recv header, 117 bytes (0x75) 0000: Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/ 0040: 4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 00:59:24.180011 <= Recv header, 23 bytes (0x17) 0000: Vary: Accept-Encoding 00:59:24.240135 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=ISO-8859-1 00:59:24.684695 <= Recv header, 24 bytes (0x18) 0000: Content-Encoding: gzip 00:59:24.720779 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 41 00:59:24.799419 <= Recv header, 2 bytes (0x2) 0000: 00:59:24.855597 <= Recv data, 41 bytes (0x29) 0000: .y..A..lalala....KU0.R...F\...1....q`.... 00:59:24.974195 * Error while processing content unencoding: incorrect header check 00:59:25.354406 * closing connection #0 === End of file trace221 === Start of file valgrind221 ==221615== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind221 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 225 in state 4 Runner 2 (id 185908) running test 224 in state 4 Runner 3 (id 185910) running test 226 in state 4 Runner 4 (id 185912) running test 228 in state 4 Runner 5 (id 185914) running test 222 in state 4 Runner 6 (id 185916) running test 227 in state 4 Runner 7 (id 185918) running test 229 in state 4 Runner 8 (id 185920) running test 223 in state 4 test 0222...[HTTP GET deflate compressed content] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind222 ../src/curl -q --output log/5/curl222.out --include --trace-ascii log/5/trace222 --trace-time http://127.0.0.1:46263/222 --compressed > log/5/stdout222 2> log/5/stderr222 valgrind ERROR ==221771== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 222 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind222 ../src/curl -q --output log/5/curl222.out --include --trace-ascii log/5/trace222 --trace-time http://127.0.0.1:46263/222 --compressed > log/5/stdout222 2> log/5/stderr222 === End of file commands.log === Start of file curl222.out HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: deflate Content-Length: 1305 1612 1998-08-21 04:01:29 2004-10-18 02:22:23 curl curl and libcurl Command line tool and library for client-side URL transfers. curl and libcurl is a tool for transferring files using URL syntax. It supports HTTP, HTTPS, FTP, FTPS, DICT, TELNET, LDAP, FILE, and GOPHER, as well as HTTP-post, HTTP-put, cookies, FTP upload, resumed transfers, passwords, portnumbers, SSL certificates, Kerberos, and proxies. It is powered by libcurl, the client-side URL transfer library. There are bindings to libcurl for over 20 languages and environments. 5784.57 3.16 169 6594.54 13.81 105 8.50 21 183 323 Default http://freshmeat.net/projects/curl/ http://freshmeat.net/redir/curl/1612/url_homepage/ http://freshmeat.net/redir/curl/1612/url_tgz/ http://freshmeat.net/redir/curl/1612/url_bz2/ http://freshmeat.net/redir/curl/1612/url_zip/ http://freshmeat.net/redir/curl/1612/url_changelog/ http://freshmeat.net/redir/curl/1612/url_rpm/ http://freshmeat.net/redir/curl/1612/url_deb/ http://freshmeat.net/redir/curl/1612/url_osx/ http://freshmeat.net/redir/curl/1612/url_bsdport/ http://freshmeat.net/redir/curl/1612/url_cvs/ http://freshmeat.net/redir/curl/1612/url_list/ http://freshmeat.net/redir/curl/1612/url_mirror/ MIT/X Consortium License 7.12.2 176085 2004-10-18 02:22:23 Daniel Stenberg http://freshmeat.net/~bagder/ Owner 12 226 3 2 188 216 200 220 164 90 89 809 150 224 900 839 0 7464 7464 OpenSSL (Default) 0 0 7443 OpenLDAP 0 0 12351 zlib 0 0 32047 Heimdal 0 0 44532 c-ares === End of file curl222.out === Start of file http_server.log 00:58:44.687650 ====> Client connect 00:58:44.687812 accept_connection 3 returned 4 00:58:44.687889 accept_connection 3 returned 0 00:58:44.697057 Read 93 bytes 00:58:44.697156 Process 93 bytes request 00:58:44.697244 Got request: GET /verifiedserver HTTP/1.1 00:58:44.697309 Are-we-friendly question received 00:58:44.697424 Wrote request (93 bytes) input to log/5/server.input 00:58:44.697516 Identifying ourselves as friends 00:58:44.697701 Response sent (57 bytes) and written to log/5/server.response 00:58:44.697766 special request received, no persistency 00:58:44.697825 ====> Client disconnect 0 00:59:32.988004 ====> Client connect 00:59:32.988154 accept_connection 3 returned 4 00:59:32.988237 accept_connection 3 returned 0 00:59:33.950894 Read 124 bytes 00:59:33.951121 Process 124 bytes request 00:59:33.951235 Got request: GET /222 HTTP/1.1 00:59:33.951313 Serve test number 222 part 0 00:59:33.951708 - request found to be complete (222) 00:59:33.974104 Wrote request (124 bytes) input to log/5/server.input 00:59:33.974268 Send response test222 section 00:59:33.975168 Response sent (1596 bytes) and written to log/5/server.response 00:59:33.975240 => persistent connection request ended, awaits new request 00:59:37.061398 Connection closed by client 00:59:37.061594 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 54286 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 222 === End of file server.cmd === Start of file server.input GET /222 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* Accept-Encoding: deflate, gzip, br, zstd === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: deflate Content-Length: 1305 xœÜXÛnã6}7`ýÔ¶n¶9p´(rÙÍ6ÁÚºO-Ñ6IHʹ<ôÛ;”(‰±¯wƒ¾HbræœÃá I“™|zJb´!\P–žu]Ëé"’†,¢éê¬{3½ëûþhÜw»Ÿ‚Îä—‹»óÙ·ûK”qö e?¦BM¿Mg—_Pw-evjÛKNÄ:!XZ)‘ö‡$ìeÒ×<Ñw¬¡ɨ ¢[ZA¡Ê¦ÚMoN£À=v½‰mJD„%™ã("€ý¾ã÷=9ÃSÇ=õÆÛð„ Send header, 124 bytes (0x7c) 0000: GET /222 HTTP/1.1 0013: Host: 127.0.0.1:46263 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Accept-Encoding: deflate, gzip, br, zstd 007a: 00:59:34.699871 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:59:34.988152 <= Recv header, 37 bytes (0x25) 0000: Date: Mon, 29 Nov 2004 21:56:53 GMT 00:59:35.080972 <= Recv header, 117 bytes (0x75) 0000: Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/ 0040: 4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 00:59:35.108526 <= Recv header, 23 bytes (0x17) 0000: Vary: Accept-Encoding 00:59:35.164571 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=ISO-8859-1 00:59:35.587962 <= Recv header, 27 bytes (0x1b) 0000: Content-Encoding: deflate 00:59:35.623169 <= Recv header, 22 bytes (0x16) 0000: Content-Length: 1305 00:59:35.699252 <= Recv header, 2 bytes (0x2) 0000: 00:59:35.754959 <= Recv data, 1306 bytes (0x51a) 0000: x..X.n.6.}7..`....n..9p.(r...6....O.-.6.I.H..<..;.(....w...Hbr.. 0040: ...I..|zJb.!\P..u].."..,....{3....h.w............K.q...e?.B..M.M 0080: g._Pw-evj.KN.:!XZ).....$..e..<.w.......[ZA.....MoN..=v..m.JD.%.. 00c0: (".......=.9CMD (768): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind225 ../src/curl -q --output log/1/curl225.out --include --trace-ascii log/1/trace225 --trace-time ftp://bad%0auser:passwd@127.0.0.1:37481/225%0a > log/1/stdout225 2> log/1/stderr225 .S.=....... log/1/stdout225 2> log/1/stderr225 valgrind ERROR ==222178== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 225 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind225 ../src/curl -q --output log/1/curl225.out --include --trace-ascii log/1/trace225 --trace-time ftp://bad%0auser:passwd@127.0.0.1:37481/225%0a > log/1/stdout225 2> log/1/stderr225 === End of file commands.log === Start of file ftp_server.log 00:58:53.701067 ====> Client connect 00:58:53.702053 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:58:53.707519 < "USER anonymous" 00:58:53.707817 > "331 We are happy you popped in![CR][LF]" 00:58:53.711271 < "PASS ftp@example.com" 00:58:53.711531 > "230 Welcome you silly person[CR][LF]" 00:58:53.712119 < "PWD" 00:58:53.712372 > "257 "/" is current directory[CR][LF]" 00:58:53.713857 < "EPSV" 00:58:53.714055 ====> Passive DATA channel requested by client 00:58:53.714198 DATA sockfilt for passive data channel starting... 00:58:53.759816 DATA sockfilt for passive data channel started (pid 222144) 00:58:53.761317 DATA sockfilt for passive data channel listens on port 33525 00:58:53.761702 > "229 Entering Passive Mode (|||33525|)[CR][LF]" 00:58:53.761888 Client has been notified that DATA conn will be accepted on port 33525 00:58:53.764905 Client connects to port 33525 00:58:53.765133 ====> Client established passive DATA connection on port 33525 00:58:53.765801 < "TYPE I" 00:58:53.766397 > "200 I modify TYPE as you wanted[CR][LF]" 00:58:53.767438 < "SIZE verifiedserver" 00:58:53.767779 > "213 18[CR][LF]" 00:58:53.769372 < "RETR verifiedserver" 00:58:53.772119 > "150 Binary junk (18 bytes).[CR][LF]" 00:58:53.772687 =====> Closing passive DATA connection... 00:58:53.772860 Server disconnects passive DATA connection 00:58:53.774359 Server disconnected passive DATA connection 00:58:53.774542 DATA sockfilt for passive data channel quits (pid 222144) 00:58:53.778523 DATA sockfilt for passive data channel quit (pid 222144) 00:58:53.778748 =====> Closed passive DATA connection 00:58:53.779364 > "226 File transfer complete[CR][LF]" 00:58:53.824176 < "QUIT" 00:58:53.827954 > "221 bye bye baby[CR][LF]" 00:58:53.828236 MAIN sockfilt said DISC 00:58:53.828591 ====> Client disconnected 00:58:53.828890 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:58:54.316808 ====> Client connect 00:58:54.318042 Received DATA (on stdin) 00:58:54.318121 > 160 bytes data, server => client 00:58:54.318222 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:58:54.318314 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:58:54.318395 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:58:54.323008 < 16 bytes data, client => server 00:58:54.323086 'USER anonymous\r\n' 00:58:54.323894 Received DATA (on stdin) 00:58:54.323957 > 33 bytes data, server => client 00:58:54.324034 '331 We are happy you popped in!\r\n' 00:58:54.327037 < 22 bytes data, client => server 00:58:54.327126 'PASS ftp@example.com\r\n' 00:58:54.327610 Received DATA (on stdin) 00:58:54.327670 > 30 bytes data, server => client 00:58:54.327744 '230 Welcome you silly person\r\n' 00:58:54.327925 < 5 bytes data, client => server 00:58:54.327985 'PWD\r\n' 00:58:54.328459 Received DATA (on stdin) 00:58:54.328521 > 30 bytes data, server => client 00:58:54.328595 '257 "/" is current directory\r\n' 00:58:54.329641 < 6 bytes data, client => server 00:58:54.329702 'EPSV\r\n' 00:58:54.377734 Received DATA (on stdin) 00:58:54.377885 > 39 bytes data, server => client 00:58:54.377967 '229 Entering Passive Mode (|||33525|)\r\n' 00:58:54.380625 < 8 bytes data, client => server 00:58:54.380689 'TYPE I\r\n' 00:58:54.382173 Received DATA (on stdin) 00:58:54.382252 > 33 bytes data, server => client 00:58:54.382371 '200 I modify TYPE as you wanted\r\n' 00:58:54.383035 < 21 bytes data, client => server 00:58:54.383122 'SIZE verifiedserver\r\n' 00:58:54.384222 Received DATA (on stdin) 00:58:54.384302 > 8 bytes data, server => client 00:58:54.384378 '213 18\r\n' 00:58:54.384884 < 21 bytes data, client => server 00:58:54.384972 'RETR verifiedserver\r\n' 00:58:54.385771 Received DATA (on stdin) 00:58:54.385844 > 29 bytes data, server => client 00:58:54.385958 '150 Binary junk (18 bytes).\r\n' 00:58:54.395112 Received DATA (on stdin) 00:58:54.395221 > 28 bytes data, server => client 00:58:54.395337 '226 File transfer complete\r\n' 00:58:54.439091 < 6 bytes data, client => server 00:58:54.439270 'QUIT\r\n' 00:58:54.440695 Received DATA (on stdin) 00:58:54.440781 > 18 bytes data, server => client 00:58:54.440892 '221 bye bye baby\r\n' 00:58:54.443989 ====> Client disconnect 00:58:54.444562 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:58:53.364690 Running IPv4 version 00:58:53.374065 Listening on port 33525 00:58:53.374597 Wrote pid 222144 to log/1/server/ftp_sockdata.pid 00:58:53.375532 Received PING (on stdin) 00:58:53.376697 Received PORT (on stdin) 00:58:53.380856 ====> Client connect 00:58:53.389173 Received DATA (on stdin) 00:58:53.389485 > 18 bytes data, server => client 00:58:53.389888 'WE ROOLZ: 202066\r\n' 00:58:53.390151 Received DISC (on stdin) 00:58:53.390273 ====> Client forcibly disconnected 00:58:53.390835 Received QUIT (on stdin) 00:58:53.390919 quits 00:58:53.391445 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 225 === End of file server.cmd === Start of file stderr225 curl: (3) URL using bad/illegal format or missing URL === End of file stderr225 === Start of file trace225 00:59:39.376419 * closing connection #-1 === End of file trace225 === Start of file valgrind225 ==222178== error calling PR_SET_PTRACER, vgdCMD (15616): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind223 ../src/curl -q --output log/8/curl223.out --include --trace-ascii log/8/trace223 --trace-time http://127.0.0.1:39461/223 --compressed > log/8/stdout223 2> log/8/stderr223 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind224 ../src/curl -q --output log/2/curl224.out --include --trace-ascii log/2/trace224 --trace-time http://127.0.0.1:39863/224 --compressed > log/2/stdout224 2> log/2/stderr224 b might block === End of file valgrind225 test 0223...[HTTP GET deflate compressed content with broken deflate header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind223 ../src/curl -q --output log/8/curl223.out --include --trace-ascii log/8/trace223 --trace-time http://127.0.0.1:39461/223 --compressed > log/8/stdout223 2> log/8/stderr223 valgrind ERROR ==221948== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 223 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind223 ../src/curl -q --output log/8/curl223.out --include --trace-ascii log/8/trace223 --trace-time http://127.0.0.1:39461/223 --compressed > log/8/stdout223 2> log/8/stderr223 === End of file commands.log === Start of file curl223.out HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: deflate Content-Length: 1305 === End of file curl223.out === Start of file http_server.log 00:58:50.795165 ====> Client connect 00:58:50.795329 accept_connection 3 returned 4 00:58:50.795404 accept_connection 3 returned 0 00:58:50.802585 Read 93 bytes 00:58:50.802700 Process 93 bytes request 00:58:50.802790 Got request: GET /verifiedserver HTTP/1.1 00:58:50.802853 Are-we-friendly question received 00:58:50.802973 Wrote request (93 bytes) input to log/8/server.input 00:58:50.803076 Identifying ourselves as friends 00:58:50.803267 Response sent (57 bytes) and written to log/8/server.response 00:58:50.803333 special request received, no persistency 00:58:50.803392 ====> Client disconnect 0 00:59:38.702224 ====> Client connect 00:59:38.702360 accept_connection 3 returned 4 00:59:38.702438 accept_connection 3 returned 0 00:59:39.737790 Read 124 bytes 00:59:39.738018 Process 124 bytes request 00:59:39.738113 Got request: GET /223 HTTP/1.1 00:59:39.738182 Serve test number 223 part 0 00:59:39.738402 - request found to be complete (223) 00:59:39.738677 Wrote request (124 bytes) input to log/8/server.input 00:59:39.738785 Send response test223 section 00:59:39.739304 Response sent (703 bytes) and written to log/8/server.response 00:59:39.739373 => persistent connection request ended, awaits new request 00:59:41.962739 Connection closed by client 00:59:41.962909 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 60586 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 223 === End of file server.cmd === Start of file server.input GET /223 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* Accept-Encoding: deflate, gzip, br, zstd === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: deflate Content-Length: 1305 XÛnã6}7`ýÔ¶n¶9p´(rÙÍ6ÁÚºO-Ñ6IHʹ<ôÛ;”(‰±¯wƒ¾HbræœÃá I“™|zJb´!\P–žu]Ëé"’†,¢éê¬{3½ëûþhÜw»Ÿ‚Îä—‹»óÙ·ûK”qö e?¦BM¿Mg—_Pw-evjÛKNÄ:!XZ)‘ö‡$ìeÒ×<Ñw¬¡ɨ ¢[ZA¡Ê¦ÚMoN£À=v½‰mJD„%™ã("€ý¾ã÷=9ÃSÇ=õÆÛð„ Send header, 124 bytes (0x7c) 0000: GET /223 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Accept-Encoding: deflate, gzip, br, zstd 007a: 00:59:40.511659 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:59:40.831923 <= Recv header, 37 bytes (0x25) 0000: Date: Mon, 29 Nov 2004 21:56:53 GMT 00:59:40.939391 <= Recv header, 117 bytes (0x75) 0000: Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/ 0040: 4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 00:59:40.969257 <= Recv header, 23 bytes (0x17) 0000: Vary: Accept-Encoding 00:59:41.029200 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=ISO-8859-1 00:59:41.494919 <= Recv header, 27 bytes (0x1b) 0000: Content-Encoding: deflate 00:59:41.531900 <= Recv header, 22 bytes (0x16) 0000: Content-Length: 1305 00:59:41.611833 <= Recv header, 2 bytes (0x2) 0000: 00:59:41.669542 <= Recv data, 413 bytes (0x19d) 0000: X.n.6.}7..`....n..9p.(r...6....O.-.6.I.H..<..;.(....w...Hbr..... 0040: I..|zJb.!\P..u].."..,....{3....h.w............K.q...e?.B..M.Mg._ 0080: Pw-evj.KN.:!XZ).....$..e..<.w.......[ZA.....MoN..=v..m.JD.%..(". 00c0: ......=.9.S.=....... log/2/stdout224 2> log/2/stderr224 valgrind ERROR ==222141== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 224 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind224 ../src/curl -q --output log/2/curl224.out --include --trace-ascii log/2/trace224 --trace-time http://127.0.0.1:39863/224 --compressed > log/2/stdout224 2> log/2/stderr224 === End of file commands.log === Start of file curl224.out HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: gzip Content-Length: 2186 uncompressed gzip data with long gzip header === End of file curl224.out === Start of file http_server.log 00:58:53.724768 ====> Client connect 00:58:53.724924 accept_connection 3 returned 4 00:58:53.724993 accept_connection 3 returned 0 00:58:53.731139 Read 93 bytes 00:58:53.731218 Process 93 bytes request 00:58:53.731310 Got request: GET /verifiedserver HTTP/1.1 00:58:53.731371 Are-we-friendly question received 00:58:53.731476 Wrote request (93 bytes) input to log/2/server.input 00:58:53.731559 Identifying ourselves as friends 00:58:53.731702 Response sent (57 bytes) and written to log/2/server.response 00:58:53.731762 special request received, no persistency 00:58:53.731818 ====> Client disconnect 0 00:59:41.921158 ====> Client connect 00:59:41.921306 accept_connection 3 returned 4 00:59:41.921380 accept_connection 3 returned 0 00:59:42.949697 Read 124 bytes 00:59:42.949889 Process 124 bytes request 00:59:42.949989 Got request: GET /224 HTTP/1.1 00:59:42.950062 Serve test number 224 part 0 00:59:42.950393 - request found to be complete (224) 00:59:42.950687 Wrote request (124 bytes) input to log/2/server.input 00:59:42.950800 Send response test224 section 00:59:42.951442 Response sent (2474 bytes) and written to log/2/server.response 00:59:42.951516 => persistent connection request ended, awaits new request 00:59:46.119369 Connection closed by client 00:59:46.119566 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 60172 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 224 === End of file server.cmd === Start of file server.input GET /224 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* Accept-Encoding: deflate, gzip, br, zstd === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: gzip Content-Length: 2186 ‹¿¼«A0this is an extra field that must be removed_____long-filename-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxthis is a comment that must be skipped+ÍKÎÏ-(J-.NMQH¯Ê,PHI,IT(Ï,ÉPÈÉÏK‡ˆe¤&¦¤q¸PžË- === End of file server.response === Start of file stderr224 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 2186 100 2186 0 0 373 0 0:00:05 0:00:05 --:--:-- 478 100 2186 100 2186 0 0 365 0 0:00:05 0:00:05 --:--:-- 466 === End of file stderr224 === Start of file trace224 00:59:40.936657 * Trying 127.0.0.1:39863... 00:59:41.870353 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 43762 00:59:41.997130 * using HTTP/1.x 00:59:42.373141 => Send header, 124 bytes (0x7c) 0000: GET /224 HTTP/1.1 0013: Host: 127.0.0.1:39863 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Accept-Encoding: deflate, gzip, br, zstd 007a: 00:59:42.734083 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 00:59:43.058312 <= Recv header, 37 bytes (0x25) 0000: Date: Mon, 29 Nov 2004 21:56:53 GMT 00:59:43.171796 <= Recv header, 117 bytes (0x75) 0000: Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/ 0040: 4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 00:59:43.203343 <= Recv header, 23 bytes (0x17) 0000: Vary: Accept-Encoding 00:59:43.276753 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=ISO-8859-1 00:59:43.729615 <= Recv header, 24 bytes (0x18) 0000: Content-Encoding: gzip 00:59:43.787187 <= Recv header, 22 bytes (0x16) 0000: Content-Length: 2186 00:59:43.882542 <= Recv header, 2 bytes (0x2) 0000: 00:59:43.947668 <= Recv data, 2187 bytes (0x88b) 0000: .......A..0.this is an extra field that must be removed_____long 0040: -filename-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 00c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 01c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 02c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 03c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 04c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCMD (768): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind226 ../src/curl -q --output log/3/curl226.out --include --trace-ascii log/3/trace226 --trace-time ftp://127.0.0.1:37331/226%0d > log/3/stdout226 2> log/3/stderr226 x 0540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 05c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 06c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 07c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.this is a commen 0840: t that must be skipped.+.K..-(J-.NMQH..,PHI,IT(.,.P...K..e.&...q 0880: ...P..-.... 00:59:44.745642 * Excess found writing body: excess = 1, size = 2186, maxdownload = 2186, bytecount = 2186 00:59:44.790079 * we are done reading and this is set to close, stop send 00:59:44.820510 * abort upload 00:59:45.308702 * shutting down connection #0 === End of file trace224 === Start of file valgrind224 ==222141== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind224 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 231 in state 4 Runner 2 (id 185908) running test 233 in state 4 Runner 3 (id 185910) running test 226 in state 4 Runner 4 (id 185912) running test 228 in state 4 Runner 5 (id 185914) running test 230 in state 4 Runner 6 (id 185916) running test 227 in state 4 Runner 7 (id 185918) running test 229 in state 4 Runner 8 (id 185920) running test 232 in state 4 test 0226...[FTP %0d-code in URL's CWD part] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind226 ../src/curl -q --output log/3/curl226.out --include --trace-ascii log/3/trace226 --trace-time ftp://127.0.0.1:37331/226%0d > log/3/stdout226 2> log/3/stderr226 valgrind ERROR ==222455== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 226 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind226 ../src/curl -q --output log/3/curl226.out --include --trace-ascii log/3/trace226 --trace-time ftp://127.0.0.1:37331/226%0d > log/3/stdout226 2> log/3/stderr226 === End of file commands.log === Start of file ftp_server.log 00:59:15.874342 ====> Client connect 00:59:15.875396 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:59:15.885006 < "USER anonymous" 00:59:15.885388 > "331 We are happy you popped in![CR][LF]" 00:59:15.886121 < "PASS ftp@example.com" 00:59:15.886390 > "230 Welcome you silly person[CR][LF]" 00:59:15.887022 < "PWD" 00:59:15.887283 > "257 "/" is current directory[CR][LF]" 00:59:15.889075 < "EPSV" 00:59:15.889287 ====> Passive DATA channel requested by client 00:59:15.889432 DATA sockfilt for passive data channel starting... 00:59:15.933272 DATA sockfilt for passive data channel started (pid 222443) 00:59:15.934398 DATA sockfilt for passive data channel listens on port 33361 00:59:15.934778 > "229 Entering Passive Mode (|||33361|)[CR][LF]" 00:59:15.934954 Client has been notified that DATA conn will be accepted on port 33361 00:59:15.937478 Client connects to port 33361 00:59:15.937718 ====> Client established passive DATA connection on port 33361 00:59:15.938377 < "TYPE I" 00:59:15.938685 > "200 I modify TYPE as you wanted[CR][LF]" 00:59:15.939481 < "SIZE verifiedserver" 00:59:15.939790 > "213 18[CR][LF]" 00:59:15.944613 < "RETR verifiedserver" 00:59:15.944933 > "150 Binary junk (18 bytes).[CR][LF]" 00:59:15.945459 =====> Closing passive DATA connection... 00:59:15.945618 Server disconnects passive DATA connection 00:59:15.946164 Server disconnected passive DATA connection 00:59:15.946324 DATA sockfilt for passive data channel quits (pid 222443) 00:59:15.953863 DATA sockfilt for passive data channel quit (pid 222443) 00:59:15.954061 =====> Closed passive DATA connection 00:59:15.954326 > "226 File transfer complete[CR][LF]" 00:59:15.995711 < "QUIT" 00:59:15.996088 > "221 bye bye baby[CR][LF]" 00:59:16.001031 MAIN sockfilt said DISC 00:59:16.001439 ====> Client disconnected 00:59:16.001753 Awaiting input 01:00:02.845224 ====> Client connect 01:00:02.845968 FTPD: Getting commands from log/3/server.cmd 01:00:02.846306 FTPD: run test case number: 226 01:00:02.847710 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:00:04.142966 < "USER anonymous" 01:00:04.147644 > "331 We are happy you popped in![CR][LF]" 01:00:04.250193 < "PASS ftp@example.com" 01:00:04.250636 > "230 Welcome you silly person[CR][LF]" 01:00:04.342569 < "PWD" 01:00:04.347672 > "257 "/" is current directory[CR][LF]" 01:00:05.092539 MAIN sockfilt said DISC 01:00:05.093081 ====> Client disconnected 01:00:05.093379 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:59:15.489009 ====> Client connect 00:59:15.493661 Received DATA (on stdin) 00:59:15.493778 > 160 bytes data, server => client 00:59:15.493880 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:59:15.493974 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:59:15.494058 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:59:15.497562 < 16 bytes data, client => server 00:59:15.497655 'USER anonymous\r\n' 00:59:15.501417 Received DATA (on stdin) 00:59:15.501498 > 33 bytes data, server => client 00:59:15.501579 '331 We are happy you popped in!\r\n' 00:59:15.501838 < 22 bytes data, client => server 00:59:15.501910 'PASS ftp@example.com\r\n' 00:59:15.502423 Received DATA (on stdin) 00:59:15.502484 > 30 bytes data, server => client 00:59:15.502560 '230 Welcome you silly person\r\n' 00:59:15.502764 < 5 bytes data, client => server 00:59:15.502824 'PWD\r\n' 00:59:15.503329 Received DATA (on stdin) 00:59:15.503389 > 30 bytes data, server => client 00:59:15.503464 '257 "/" is current directory\r\n' 00:59:15.504804 < 6 bytes data, client => server 00:59:15.504871 'EPSV\r\n' 00:59:15.550789 Received DATA (on stdin) 00:59:15.550935 > 39 bytes data, server => client 00:59:15.551029 '229 Entering Passive Mode (|||33361|)\r\n' 00:59:15.553258 < 8 bytes data, client => server 00:59:15.553329 'TYPE I\r\n' 00:59:15.554707 Received DATA (on stdin) 00:59:15.554779 > 33 bytes data, server => client 00:59:15.554861 '200 I modify TYPE as you wanted\r\n' 00:59:15.555211 < 21 bytes data, client => server 00:59:15.555281 'SIZE verifiedserver\r\n' 00:59:15.555834 Received DATA (on stdin) 00:59:15.555897 > 8 bytes data, server => client 00:59:15.555961 '213 18\r\n' 00:59:15.556358 < 21 bytes data, client => server 00:59:15.556432 'RETR verifiedserver\r\n' 00:59:15.560978 Received DATA (on stdin) 00:59:15.561052 > 29 bytes data, server => client 00:59:15.561131 '150 Binary junk (18 bytes).\r\n' 00:59:15.570369 Received DATA (on stdin) 00:59:15.570459 > 28 bytes data, server => client 00:59:15.570539 '226 File transfer complete\r\n' 00:59:15.612378 < 6 bytes data, client => server 00:59:15.612507 'QUIT\r\n' 00:59:15.612583 Received DATA (on stdin) 00:59:15.612644 > 18 bytes data, server => client 00:59:15.612716 '221 bye bye baby\r\n' 00:59:15.616988 ====> Client disconnect 00:59:15.617369 Received ACKD (on stdin) 01:00:02.460904 ====> Client connect 01:00:02.463034 Received DATA (on stdin) 01:00:02.463CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind227 ../src/curl -q --output log/6/curl227.out --include --trace-ascii log/6/trace227 --trace-time ftp://127.0.0.1:39413/227 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" > log/6/stdout227 2> log/6/stderr227 128 > 160 bytes data, server => client 01:00:02.463255 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:00:02.463356 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:00:02.463445 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:00:03.757658 < 16 bytes data, client => server 01:00:03.757850 'USER anonymous\r\n' 01:00:03.759336 Received DATA (on stdin) 01:00:03.759414 > 33 bytes data, server => client 01:00:03.759526 '331 We are happy you popped in!\r\n' 01:00:03.866846 < 22 bytes data, client => server 01:00:03.867031 'PASS ftp@example.com\r\n' 01:00:03.867121 Received DATA (on stdin) 01:00:03.867198 > 30 bytes data, server => client 01:00:03.867285 '230 Welcome you silly person\r\n' 01:00:03.957700 < 5 bytes data, client => server 01:00:03.957881 'PWD\r\n' 01:00:03.958969 Received DATA (on stdin) 01:00:03.959053 > 30 bytes data, server => client 01:00:03.963967 '257 "/" is current directory\r\n' 01:00:04.708199 ====> Client disconnect 01:00:04.709563 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:59:15.540215 Running IPv4 version 00:59:15.547793 Listening on port 33361 00:59:15.548241 Wrote pid 222443 to log/3/server/ftp_sockdata.pid 00:59:15.548993 Received PING (on stdin) 00:59:15.549871 Received PORT (on stdin) 00:59:15.553441 ====> Client connect 00:59:15.561238 Received DATA (on stdin) 00:59:15.561541 > 18 bytes data, server => client 00:59:15.561889 'WE ROOLZ: 202504\r\n' 00:59:15.562119 Received DISC (on stdin) 00:59:15.562232 ====> Client forcibly disconnected 00:59:15.566993 Received QUIT (on stdin) 00:59:15.567081 quits 00:59:15.567582 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 226 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD === End of file server.input === Start of file stderr226 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 curl: (3) path contains control characters === End of file stderr226 === Start of file trace226 01:00:02.535229 * Trying 127.0.0.1:37331... 01:00:03.412906 * Established connection to 127.0.0.1 (127.0.0.1 port 37331) from 127.0.0.1 port 35392 01:00:03.663694 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:00:04.013882 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:00:04.045143 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:00:04.052219 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:00:04.057291 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:00:04.162687 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:00:04.228520 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:00:04.250533 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:00:04.321495 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:00:04.341311 => Send header, 5 bytes (0x5) 0000: PWD 01:00:04.357940 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:00:04.394573 * Entry path is '/' 01:00:04.523224 * path contains control characters 01:00:04.866837 * shutting down connection #0 === End of file trace226 === Start of file valgrind226 ==222455== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind226 test 0227...[FTP with quote ops] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind227 ../src/curl -q --output log/6/curl227.out --include --trace-ascii log/6/trace227 --trace-time ftp://127.0.0.1:39413/227 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" > log/6/stdout227 2> log/6/stderr227 valgrind ERROR ==222621== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 227 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind227 ../src/curl -q --output log/6/curl227.out --include --trace-ascii log/6/trace227 --trace-time ftp://127.0.0.1:39413/227 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" > log/6/stdout227 2> log/6/stderr227 === End of file commands.log === Start of file curl227.out data to see that FTP works so does it? === End of file curl227.out === Start of file ftp_server.log 00:59:20.812821 ====> Client connect 00:59:20.813877 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:59:20.823424 < "USER anonymous" 00:59:20.823919 > "331 We are happy you popped in![CR][LF]" 00:59:20.824943 < "PASS ftp@example.com" 00:59:20.825457 > "230 Welcome you silly person[CR][LF]" 00:59:20.826129 < "PWD" 00:59:20.826549 > "257 "/" is current directory[CR][LF]" 00:59:20.828573 < "EPSV" 00:59:20.828780 ====> Passive DATA channel requested by client 00:59:20.828924 DATA sockfilt for passive data channel starting... 00:59:20.867564 DATA sockfilt for passive data channel started (pid 222612) 00:59:20.868588 DATA sockfilt for passive data channel listens on port 33241 00:59:20.868922 > "229 Entering Passive Mode (|||33241|)[CR][LF]" 00:59:20.869087 Client has been notified that DATA conn will be accepted on port 33241 00:59:20.871961 Client connects to port 33241 00:59:20.872164 ====> Client established passive DATA connection on port 33241 00:59:20.872797 < "TYPE I" 00:59:20.873074 > "200 I modify TYPE as you wanted[CR][LF]" 00:59:20.874213 < "SIZE verifiedserver" 00:59:20.874770 > "213 18[CR][LF]" 00:59:20.875511 < "RETR verifiedserver" 00:59:20.876093 > "150 Binary junk (18 bytes).[CR][LF]" 00:59:20.876611 =====> Closing passive DATA connection... 00:59:20.876774 Server disconnects passive DATA connection 00:59:20.877239 Server disconnected passive DATA connection 00:59:20.877399 DATA sockfilt for passive data channel quits (pid 222612) 00:59:20.881118 DATA sockfilt for passive data channel quit (pid 222612) 00:59:20.881302 =====> Closed passive DATA connection 00:59:20.881825 > "226 File transfer complete[CR][LF]" 00:59:20.925160 < "QUIT" 00:59:20.925788 > "221 bye bye baby[CR][LF]" 00:59:20.926239 MAIN sockfilt said DISC 00:59:20.926551 ====> Client disconnected 00:59:20.926812 Awaiting input 01:00:08.244352 ====> Client connect 01:00:08.245113 FTPD: Getting commands from log/6/server.cmd 01:00:08.245889 FTPD: set custom reply for EPSV command 01:00:08.246312 FTPD: set custom reply for FAIL command 01:00:08.246561 FTPD: run test case number: 227 01:00:08.251279 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:00:09.539644 < "USER anonymous" 01:00:09.540358 > "331 We are happy you popped in![CR][LF]" 01:00:09.654455 < "PASS ftp@example.com" 01:00:09.654858 > "230 Welcome you silly person[CR][LF]" 01:00:09.747492 < "PWD" 01:00:09.750993 > "257 "/" is current directory[CR][LF]" 01:00:09.962137 < "NOOP 1" 01:00:09.962604 > "200 Yes, I'm very good at doing nothing.[CR][LF]" 01:00:10.021244 < "FAIL" 01:00:10.021686 > "500 this might not be a failure![CR][LF]" 01:00:10.105573 < "EPSV" 01:00:10.110535 > "500 no such command[CR][LF]" 01:00:10.207048 < "PASV" 01:00:10.207385 ====> Passive DATA channel requested by client 01:00:10.207539 DATA sockfilt for passive data channel starting... 01:00:10.258283 DATA sockfilt for passive data channel started (pid 223811) 01:00:10.259456 DATA sockfilt for passive data channel listens on port 37719 01:00:10.264324 > "227 Entering Passive Mode (127,0,0,1,147,87)[CR][LF]" 01:00:10.264542 Client has been notified that DATA conn will be accepted on port 37719 01:00:10.498011 Client connects to port 37719 01:00:10.498578 ====> Client established passive DATA connection on port 37719 01:00:10.607879 < "TYPE I" 01:00:10.608305 > "200 I modify TYPE as you wanted[CR][LF]" 01:00:10.646970 < "NOOP 2" 01:00:10.647350 > "200 Yes, I'm very good at doing nothing.[CR][LF]" 01:00:10.680088 < "FAIL HARD" 01:00:10.680815 > "500 this might not be a failure![CR][LF]" 01:00:10.708201 < "SIZE 227" 01:00:10.714322 > "213 51[CR][LF]" 01:00:10.773128 < "RETR 227" 01:00:10.777663 > "150 Binary data connection for 227 () (51 bytes).[CR][LF]" 01:00:10.778430 =====> Closing passive DATA connection... 01:00:10.778601 Server disconnects passive DATA connection 01:00:10.781166 Server disconnected passive DATA connection 01:00:10.781369 DATA sockfilt for passive data channel quits (pid 223811) 01:00:10.784278 DATA sockfilt for passive data channel quit (pid 223811) 01:00:10.784468 =====> Closed passive DATA connection 01:00:10.785060 > "226 File transfer complete[CR][LF]" 01:00:11.757047 < "NOOP 3" 01:00:11.757802 > "200 Yes, I'm very good at doing nothing.[CR][LF]" 01:00:12.781800 < "QUIT" 01:00:12.782255 > "221 bye bye baby[CR][LF]" 01:00:12.907679 MAIN sockfilt said DISC 01:00:12.908230 ====> Client disconnected 01:00:12.908558 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:59:20.428553 ====> Client connect 00:59:20.429797 Received DATA (on stdin) 00:59:20.429887 > 160 bytes data, server => client 00:59:20.430009 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:59:20.430125 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:59:20.430221 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:59:20.437779 < 16 bytes data, client => server 00:59:20.437869 'USER anonymous\r\n' 00:59:20.439778 Received DATA (on stdin) 00:59:20.439852 > 33 bytes data, server => client 00:59:20.440211 '331 We are happy you popped in!\r\n' 00:59:20.440498 < 22 bytes data, client => server 00:59:20.440583 'PASS ftp@example.com\r\n' 00:59:20.441227 Received DATA (on stdin) 00:59:20.441293 > 30 bytes data, server => client 00:59:20.441393 '230 Welcome you silly person\r\n' 00:59:20.441611 < 5 bytes data, client => server 00:59:20.441674 'PWD\r\n' 00:59:20.442435 Received DATA (on stdin) 00:59:20.442503 > 30 bytes data, server => client 00:59:20.442823 '257 "/" is current directory\r\n' 00:59:20.444157 < 6 bytes data, client => server 00:59:20.444237 'EPSV\r\n' 00:59:20.485384 Received DATA (on stdin) 00:59:20.485516 > 39 bytes data, server => client 00:59:20.485623 '229 Entering Passive Mode (|||33241|)\r\n' 00:59:20.487759 < 8 bytes data, client => server 00:59:20.487834 'TYPE I\r\n' 00:59:20.489340 Received DATA (on stdin) 00:59:20.489409 > 33 bytes data, server => client 00:59:20.489489 '200 I modify TYPE as you wanted\r\n' 00:59:20.489821 < 21 bytes data, client => server 00:59:20.489894 'SIZE verifiedserver\r\n' 00:59:20.490560 Received DATA (on stdin) 00:59:20.490631 > 8 bytes data, server => client 00:59:20.490718 '213 18\r\n' 00:59:20.491108 < 21 bytes data, client => server 00:59:20.491182 'RETR verifiedserver\r\n' 00:59:20.491851 Received DATA (on stdin) 00:59:20.491924 > 29 bytes data, server => client 00:59:20.492032 '150 Binary junk (18 bytes).\r\n' 00:59:20.497587 Received DATA (on stdin) 00:59:20.497670 > 28 bytes data, server => client 00:59:20.497767 '226 File transfer complete\r\n' 00:59:20.540390 < 6 bytes data, client => server 00:59:20.540513 'QUIT\r\n' 00:59:20.541516 Received DATA (on stdin) 00:59:20.541593 > 18 bytes data, server => client 00:59:20.541702 '221 bye bye baby\r\n' 00:59:20.542217 ====> Client disconnect 00:59:20.542491 Received ACKD (on stdin) 01:00:07.858164 ====> Client connect 01:00:07.866899 Received DATA (on stdin) 01:00:07.867041 > 160 bytes data, server => client 01:00:07.867539 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:00:07.867648 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:00:07.867735 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:00:09.154348 < 16 bytes data, client => server 01:00:09.154529 'USER anonymous\r\n' 01:00:09.155984 Received DATA (on stdin) 01:00:09.156061 > 33 bytes data, server => client 01:00:09.156172 '331 We are happy you popped in!\r\n' 01:00:09.269310 < 22 bytes data, client => server 01:00:09.269485 'PASS ftp@example.com\r\n' 01:00:09.273565 Received DATA (on stdin) 01:00:09.273679 > 30 bytes data, server => client 01:00:09.273770 '230 Welcome you silly person\r\n' 01:00:09.362320 < 5 bytes data, client => server 01:00:09.362500 'PWD\r\n' 01:00:09.363859 Received DATA (on stdin) 01:00:09.363939 > 30 bytes data, server => client 01:00:09.367229 '257 "/" is current directory\r\n' 01:00:09.576877 < 8 bytes data, client => server 01:00:09.577075 'NOOP 1\r\n' 01:00:09.578815 Received DATA (on stdin) 01:00:09.578898 > 42 bytes data, server => client 01:00:09.579005 '200 Yes, I'm very good at doing nothing.\r\n' 01:00:09.636040 < 6 bytes data, client => server 01:00:09.636227 'FAIL\r\n' 01:00:09.640226 Received DATA (on stdin) 01:00:09.640322 > 34 bytes data, server => client 01:00:09.640407 '500 this might not be a failure!\r\n' 01:00:09.720370 < 6 bytes data, client => server 01:00:09.720572 'EPSV\r\n' 01:00:09.721915 Received DATA (on stdin) 01:00:09.721988 > 21 bytes data, server => client 01:00:09.726234 '500 no such command\r\n' 01:00:09.821887 < 6 bytes data, client => server 01:00:09.822075 'PASV\r\n' 01:00:09.875871 Received DATA (on stdin) 01:00:09.876004 > 46 bytes data, server => client 01:00:09.876121 '227 Entering Passive Mode (127,0,0,1,147,87)\r\n' 01:00:10.224492 < 8 bytes data, client => server 01:00:10.224629 'TYPE I\r\n' 01:00:10.224701 Received DATA (on stdin) 01:00:10.224762 > 33 bytes data, server => client 01:00:10.224839 '200 I modify TYPE as you wanted\r\n' 01:00:10.266876 < 8 bytes data, client => server 01:00:10.267001 'NOOP 2\r\n' 01:00:10.267069 Received DATA (on stdin) 01:00:10.267125 > 42 bytes data, server => client 01:00:10.267208 '200 Yes, I'm very good at doing nothing.\r\n' 01:00:10.295167 < 11 bytes data, client => server 01:00:10.295278 'FAIL HARD\r\n' 01:00:10.296441 Received DATA (on stdin) 01:00:10.296508 > 34 bytes data, server => client 01:00:10.296613 '500 this might not be a failure!\r\n' 01:00:10.323134 < 10 bytes data, client => server 01:00:10.323284 'SIZE 227\r\n' 01:00:10.326385 Received DATA (on stdin) 01:00:10.326466 > 8 bytes data, server => client 01:00:10.330605 '213 51\r\n' 01:00:10.388023 < 10 bytes data, client => server 01:00:10.388189 'RETR 227\r\n' 01:00:10.390248 Received DATA (on stdin) 01:00:10.390326 > 51 bytes data, server => client 01:00:10.396942 '150 Binary data connection for 227 () (51 bytes).\r\n' 01:00:10.400668 Received DATA (on stdin) 01:00:10.400755 > 28 bytes data, server => client 01:00:10.400859 '226 File transfer complete\r\n' 01:00:11.371824 < 8 bytes data, client => server 01:00:11.372022 'NOOP 3\r\n' 01:00:11.373386 Received DATA (on stdin) 01:00:11.373464 > 42 bytes data, server => client 01:00:11.373586 '200 Yes, I'm very good at doing nothing.\r\n' 01:00:12.395815 < 6 bytes data, client => server 01:00:12.395994 'QUIT\r\n' 01:00:12.398156 Received DATA (on stdin) 01:00:12.398248 > 18 bytes data, server => client 01:00:12.398343 '221 bye bye baby\r\n' 01:00:12.521906 ====> Client disconnect 01:00:12.524194 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:59:20.475128 Running IPv4 version 00:59:20.482199 Listening on port 33241 00:59:20.482609 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind228 ../src/curl -q --output log/4/curl228.out --include --trace-ascii log/4/trace228 --trace-time ftp://127.0.0.1:38207/228 --ftp-account "one count" > log/4/stdout228 2> log/4/stderr228 Wrote pid 222612 to log/6/server/ftp_sockdata.pid 00:59:20.483314 Received PING (on stdin) 00:59:20.484071 Received PORT (on stdin) 00:59:20.487925 ====> Client connect 00:59:20.492382 Received DATA (on stdin) 00:59:20.492641 > 18 bytes data, server => client 00:59:20.492976 'WE ROOLZ: 201819\r\n' 00:59:20.493190 Received DISC (on stdin) 00:59:20.493294 ====> Client forcibly disconnected 00:59:20.494180 Received QUIT (on stdin) 00:59:20.494269 quits 00:59:20.494777 ============> sockfilt quits 01:00:10.865817 Running IPv4 version 01:00:10.872594 Listening on port 37719 01:00:10.873068 Wrote pid 223811 to log/6/server/ftp_sockdata.pid 01:00:10.873750 Received PING (on stdin) 01:00:10.874770 Received PORT (on stdin) 01:00:11.113654 ====> Client connect 01:00:11.394786 Received DATA (on stdin) 01:00:11.395144 > 5 bytes data, server => client 01:00:11.395463 'data\n' 01:00:11.395752 Received DATA (on stdin) 01:00:11.395816 > 7 bytes data, server => client 01:00:11.395879 ' to\n' 01:00:11.395970 Received DATA (on stdin) 01:00:11.396031 > 10 bytes data, server => client 01:00:11.396095 ' see\n' 01:00:11.396183 Received DATA (on stdin) 01:00:11.396245 > 9 bytes data, server => client 01:00:11.396308 'that FTP\n' 01:00:11.396383 Received DATA (on stdin) 01:00:11.396442 > 6 bytes data, server => client 01:00:11.396504 'works\n' 01:00:11.396580 Received DATA (on stdin) 01:00:11.396644 > 14 bytes data, server => client 01:00:11.396711 ' so does it?\n' 01:00:11.396786 Received DISC (on stdin) 01:00:11.396918 ====> Client forcibly disconnected 01:00:11.397520 Received QUIT (on stdin) 01:00:11.397606 quits 01:00:11.398058 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPSV 500 no such command REPLY FAIL 500 this might not be a failure Testnum 227 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD NOOP 1 FAIL EPSV PASV TYPE I NOOP 2 FAIL HARD SIZE 227 RETR 227 NOOP 3 QUIT === End of file server.input === Start of file stderr227 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 51 100 51 0 0 9 0 0:00:05 0:00:05 --:--:-- 12 100 51 100 51 0 0 9 0 0:00:05 0:00:05 --:--:-- 14 === End of file stderr227 === Start of file trace227 01:00:07.926770 * Trying 127.0.0.1:39413... 01:00:08.818035 * Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 58160 01:00:09.070486 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:00:09.416340 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:00:09.443647 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:00:09.450360 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:00:09.455690 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:00:09.560901 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:00:09.634173 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:00:09.656994 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:00:09.726741 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:00:09.748178 => Send header, 5 bytes (0x5) 0000: PWD 01:00:09.765477 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:00:09.803417 * Entry path is '/' 01:00:09.922337 * Request has same path as previous transfer 01:00:09.963353 => Send header, 8 bytes (0x8) 0000: NOOP 1 01:00:09.977762 <= Recv header, 42 bytes (0x2a) 0000: 200 Yes, I'm very good at doing nothing. 01:00:10.022032 => Send header, 6 bytes (0x6) 0000: FAIL 01:00:10.063767 <= Recv header, 34 bytes (0x22) 0000: 500 this might not be a failure 01:00:10.106244 => Send header, 6 bytes (0x6) 0000: EPSV 01:00:10.121611 * Connect data stream passively 01:00:10.154760 <= Recv header, 21 bytes (0x15) 0000: 500 no such command 01:00:10.183431 * Failed EPSV attempt. Disabling EPSV 01:00:10.205948 => Send header, 6 bytes (0x6) 0000: PASV 01:00:10.261817 <= Recv header, 46 bytes (0x2e) 0000: 227 Entering Passive Mode (127,0,0,1,147,87) 01:00:10.300152 * Skip 127.0.0.1 for data connection, reuse 127.0.0.1 instead 01:00:10.387887 * Connecting to 127.0.0.1 (127.0.0.1) port 37719 01:00:10.488154 * Trying 127.0.0.1:37719... 01:00:10.575977 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 37719) from 127.0.0.1 port 51050 01:00:10.609128 => Send header, 8 bytes (0x8) 0000: TYPE I 01:00:10.627209 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:00:10.647688 => Send header, 8 bytes (0x8) 0000: NOOP 2 01:00:10.670300 <= Recv header, 42 bytes (0x2a) 0000: 200 Yes, I'm very good at doing nothing. 01:00:10.681196 => Send header, 11 bytes (0xb) 0000: FAIL HARD 01:00:10.690207 <= Recv header, 34 bytes (0x22) 0000: 500 this might not be a failure 01:00:10.710710 => Send header, 10 bytes (0xa) 0000: SIZE 227 01:00:10.724833 <= Recv header, 8 bytes (0x8) 0000: 213 51 01:00:10.774590 => Send header, 10 bytes (0xa) 0000: RETR 227 01:00:10.791294 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 227 () (51 bytes). 01:00:10.833987 * Maxdownload = -1 01:00:10.844274 * Getting file with size: 51 01:00:10.991059 <= Recv data, 51 bytes (0x33) 0000: data. to. see.that FTP.works. so does it?. 01:00:11.300496 * abort upload 01:00:11.326458 <= Recv data, 0 bytes (0x0) 01:00:11.524292 * Remembering we are in dir "" 01:00:11.707322 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:00:11.755958 => Send header, 8 bytes (0x8) 0000: NOOP 3 01:00:11.771287 <= Recv header, 42 bytes (0x2a) 0000: 200 Yes, I'm very good at doing nothing. 01:00:12.041586 * Connection #0 to host 127.0.0.1:39413 left intact === End of file trace227 === Start of file valgrind227 ==222621== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind227 test 0228...[FTP RETR with ACCT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind228 ../src/curl -q --output log/4/curl228.out --include --trace-ascii log/4/trace228 --trace-time ftp://127.0.0.1:38207/228 --ftp-account "one count" > log/4/stdout228 2> log/4/stderr228 valgrind ERROR ==222801== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 228 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind228 ../src/curl -q --output log/4/curl228.out --include --trace-ascii log/4/trace228 --trace-time ftp://127.0.0.1:38207/228 --ftp-account "one count" > log/4/stdout228 2> log/4/stderr228 === End of file commands.log === Start of file curl228.out data to see that FTP works so does it? === End of file curl228.out === Start of file ftp_server.log 00:59:26.992880 ====> Client connect 00:59:26.993913 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:59:27.002025 < "USER anonymous" 00:59:27.002558 > "331 We are happy you popped in![CR][LF]" 00:59:27.003673 < "PASS ftp@example.com" 00:59:27.003927 > "230 Welcome you silly person[CR][LF]" 00:59:27.005084 < "PWD" 00:59:27.005359 > "257 "/" is current directory[CR][LF]" 00:59:27.008098 < "EPSV" 00:59:27.008327 ====> Passive DATA channel requested by client 00:59:27.008477 DATA sockfilt for passive data channel starting... 00:59:27.054496 DATA sockfilt for passive data channel started (pid 222795) 00:59:27.055722 DATA sockfilt for passive data channel listens on port 41823 00:59:27.058786 > "229 Entering Passive Mode (|||41823|)[CR][LF]" 00:59:27.058983 Client has been notified that DATA conn will be accepted on port 41823 00:59:27.059626 Client connects to port 41823 00:59:27.059828 ====> Client established passive DATA connection on port 41823 00:59:27.060451 < "TYPE I" 00:59:27.060996 > "200 I modify TYPE as you wanted[CR][LF]" 00:59:27.061978 < "SIZE verifiedserver" 00:59:27.062284 > "213 18[CR][LF]" 00:59:27.063673 < "RETR verifiedserver" 00:59:27.064107 > "150 Binary junk (18 bytes).[CR][LF]" 00:59:27.066642 =====> Closing passive DATA connection... 00:59:27.066805 Server disconnects passive DATA connection 00:59:27.068020 Server disconnected passive DATA connection 00:59:27.068219 DATA sockfilt for passive data channel quits (pid 222795) 00:59:27.071551 DATA sockfilt for passive data channel quit (pid 222795) 00:59:27.071730 =====> Closed passive DATA connection 00:59:27.072260 > "226 File transfer complete[CR][LF]" 00:59:27.122082 < "QUIT" 00:59:27.122412 > "221 bye bye baby[CR][LF]" 00:59:27.123508 MAIN sockfilt said DISC 00:59:27.123807 ====> Client disconnected 00:59:27.124064 Awaiting input 01:00:14.307668 ====> Client connect 01:00:14.308410 FTPD: Getting commands from log/4/server.cmd 01:00:14.309178 FTPD: set custom reply for PASS command 01:00:14.309586 FTPD: set custom reply for ACCT command 01:00:14.309835 FTPD: run test case number: 228 01:00:14.314566 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:00:15.555920 < "USER anonymous" 01:00:15.561004 > "331 We are happy you popped in![CR][LF]" 01:00:15.674841 < "PASS ftp@example.com" 01:00:15.675319 > "332 please provide account name[CR][LF]" 01:00:15.757126 < "ACCT one count" 01:00:15.757537 > "230 thank you[CR][LF]" 01:00:15.792218 < "PWD" 01:00:15.792667 > "257 "/" is current directory[CR][LF]" 01:00:16.002245 < "EPSV" 01:00:16.002590 ====> Passive DATA channel requested by client 01:00:16.002741 DATA sockfilt for passive data channel starting... 01:00:16.091579 DATA sockfilt for passive data channel started (pid 223940) 01:00:16.093089 DATA sockfilt for passive data channel listens on port 45567 01:00:16.093895 > "229 Entering Passive Mode (|||45567|)[CR][LF]" 01:00:16.094079 Client has been notified that DATA conn will be accepted on port 45567 01:00:16.294324 Client connects to port 45567 01:00:16.294879 ====> Client established passive DATA connection on port 45567 01:00:16.423724 < "TYPE I" 01:00:16.424153 > "200 I modify TYPE as you wanted[CR][LF]" 01:00:16.486964 < "SIZE 228" 01:00:16.491276 > "213 51[CR][LF]" 01:00:16.577721 < "RETR 228" 01:00:16.581189 > "150 Binary data connection for 228 () (51 bytes).[CR][LF]" 01:00:16.582008 =====> Closing passive DATA connection... 01:00:16.582173 Server disconnects passive DATA connection 01:00:16.584643 Server disconnected passive DATA connection 01:00:16.584853 DATA sockfilt for passive data channel quits (pid 223940) 01:00:16.589026 DATA sockfilt for passive data channel quit (pid 223940) 01:00:16.589301 =====> Closed passive DATA connection 01:00:16.589968 > "226 File transfer complete[CR][LF]" 01:00:18.643300 < "QUIT" 01:00:18.647661 > "221 bye bye baby[CR][LF]" 01:00:18.783715 MAIN sockfilt said DISC 01:00:18.784231 ====> Client disconnected 01:00:18.784534 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:59:26.608566 ====> Client connect 00:59:26.609835 Received DATA (on stdin) 00:59:26.609923 > 160 bytes data, server => client 00:59:26.610030 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:59:26.610126 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:59:26.610211 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:59:26.616857 < 16 bytes data, client => server 00:59:26.616968 'USER anonymous\r\n' 00:59:26.618400 Received DATA (on stdin) 00:59:26.618476 > 33 bytes data, server => client 00:59:26.618849 '331 We are happy you popped in!\r\n' 00:59:26.619155 < 22 bytes data, client => server 00:59:26.619235 'PASS ftp@example.com\r\n' 00:59:26.620180 Received DATA (on stdin) 00:59:26.620248 > 30 bytes data, server => client 00:59:26.620352 '230 Welcome you silly person\r\n' 00:59:26.620591 < 5 bytes data, client => server 00:59:26.620656 'PWD\r\n' 00:59:26.621604 Received DATA (on stdin) 00:59:26.621668 > 30 bytes data, server => client 00:59:26.621748 '257 "/" is current directory\r\n' 00:59:26.623634 < 6 bytes data, client => server 00:59:26.623709 'EPSV\r\n' 00:59:26.672058 Received DATA (on stdin) 00:59:26.672194 > 39 bytes data, server => client 00:59:26.672304 '229 Entering Passive Mode (|||41823|)\r\n' 00:59:26.675293 < 8 bytes data, client => server 00:59:26.675373 'TYPE I\r\n' 00:59:26.676738 Received DATA (on stdin) 00:59:26.676807 > 33 bytes data, server => client 00:59:26.676910 '200 I modify TYPE as you wanted\r\n' 00:59:26.677550 < 21 bytes data, client => server 00:59:26.677626 'SIZE verifiedserver\r\n' 00:59:26.678630 Received DATA (on stdin) 00:59:26.678695 > 8 bytes data, server => client 00:59:26.678761 '213 18\r\n' 00:59:26.679191 < 21 bytes data, client => server 00:59:26.679267 'RETR verifiedserver\r\n' 00:59:26.679983 Received DATA (on stdin) 00:59:26.680049 > 29 bytes data, server => client 00:59:26.680316 '150 Binary junk (18 bytes).\r\n' 00:59:26.688000 Received DATA (on stdin) 00:59:26.688083 > 28 bytes data, server => client 00:59:26.688184 '226 File transfer complete\r\n' 00:59:26.737351 < 6 bytes data, client => server 00:59:26.737467 'QUIT\r\n' 00:59:26.738793 Received DATA (on stdin) 00:59:26.738861 > 18 bytes data, server => client 00:59:26.738933 '221 bye bye baby\r\n' 00:59:26.739472 ====> Client disconnect 00:59:26.739742 Received ACKD (on stdin) 01:00:13.922340 ====> Client connect 01:00:13.930212 Received DATA (on stdin) 01:00:13.930325 > 160 bytes data, server => client 01:00:13.930831 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:00:13.930938 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:00:13.931033 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:00:15.170426 < 16 bytes data, client => server 01:00:15.170682 'USER anonymous\r\n' 01:00:15.172274 Received DATA (on stdin) 01:00:15.172355 > 33 bytes data, server => client 01:00:15.177259 '331 We are happy you popped in!\r\n' 01:00:15.289501 < 22 bytes data, client => server 01:00:15.289686 'PASS ftp@example.com\r\n' 01:00:15.291506 Received DATA (on stdin) 01:00:15.291591 > 33 bytes data, server => client 01:00:15.291693 '332 please provide account name\r\n' 01:00:15.373705 < 16 bytes data, client => server 01:00:15.373856 'ACCT one count\r\n' 01:00:15.373941 Received DATA (on stdin) 01:00:15.374008 > 15 bytes data, server => client 01:00:15.374081 '230 thank you\r\n' 01:00:15.405146 < 5 bytes data, client => server 01:00:15.405330 'PWD\r\n' 01:00:15.408843 Received DATA (on stdin) 01:00:15.408946 > 30 bytes data, server => client 01:00:15.409033 '257 "/" is current directory\r\n' 01:00:15.616944 < 6 bytes data, client => server 01:00:15.617148 'EPSV\r\n' 01:00:15.709357 Received DATA (on stdin) 01:00:15.709509 > 39 bytes data, server => client 01:00:15.709639 '229 Entering Passive Mode (|||45567|)\r\n' 01:00:16.038474 < 8 bytes data, client => server 01:00:16.038667 'TYPE I\r\n' 01:00:16.043545 Received DATA (on stdin) 01:00:16.043661 > 33 bytes data, server => client 01:00:16.043752 '200 I modify TYPE as you wanted\r\n' 01:00:16.101738 < 10 bytes data, client => server 01:00:16.101946 'SIZE 228\r\n' 01:00:16.106874 Received DATA (on stdin) 01:00:16.106972 > 8 bytes data, server => clieCMD (2816): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind229 ../src/curl -q --output log/7/curl229.out --include --trace-ascii log/7/trace229 --trace-time ftp://127.0.0.1:45353/229 --ftp-account "one count" > log/7/stdout229 2> log/7/stderr229 nt 01:00:16.107070 '213 51\r\n' 01:00:16.192503 < 10 bytes data, client => server 01:00:16.192695 'RETR 228\r\n' 01:00:16.195047 Received DATA (on stdin) 01:00:16.195149 > 51 bytes data, server => client 01:00:16.196926 '150 Binary data connection for 228 () (51 bytes).\r\n' 01:00:16.205514 Received DATA (on stdin) 01:00:16.205638 > 28 bytes data, server => client 01:00:16.205745 '226 File transfer complete\r\n' 01:00:18.258137 < 6 bytes data, client => server 01:00:18.258286 'QUIT\r\n' 01:00:18.259627 Received DATA (on stdin) 01:00:18.259704 > 18 bytes data, server => client 01:00:18.263905 '221 bye bye baby\r\n' 01:00:18.399327 ====> Client disconnect 01:00:18.400184 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:59:27.661404 Running IPv4 version 00:59:27.668966 Listening on port 41823 00:59:27.669428 Wrote pid 222795 to log/4/server/ftp_sockdata.pid 00:59:27.670180 Received PING (on stdin) 00:59:27.671104 Received PORT (on stdin) 00:59:27.675528 ====> Client connect 00:59:27.683045 Received DATA (on stdin) 00:59:27.683335 > 18 bytes data, server => client 00:59:27.683707 'WE ROOLZ: 201673\r\n' 00:59:27.683947 Received DISC (on stdin) 00:59:27.684514 ====> Client forcibly disconnected 00:59:27.684679 Received QUIT (on stdin) 00:59:27.684750 quits 00:59:27.685242 ============> sockfilt quits 01:00:16.686826 Running IPv4 version 01:00:16.705674 Listening on port 45567 01:00:16.706229 Wrote pid 223940 to log/4/server/ftp_sockdata.pid 01:00:16.707133 Received PING (on stdin) 01:00:16.708305 Received PORT (on stdin) 01:00:16.909693 ====> Client connect 01:00:17.198340 Received DATA (on stdin) 01:00:17.198703 > 5 bytes data, server => client 01:00:17.199048 'data\n' 01:00:17.199332 Received DATA (on stdin) 01:00:17.199403 > 7 bytes data, server => client 01:00:17.199475 ' to\n' 01:00:17.199573 Received DATA (on stdin) 01:00:17.199641 > 10 bytes data, server => client 01:00:17.199712 ' see\n' 01:00:17.199804 Received DATA (on stdin) 01:00:17.199869 > 9 bytes data, server => client 01:00:17.199937 'that FTP\n' 01:00:17.200018 Received DATA (on stdin) 01:00:17.200079 > 6 bytes data, server => client 01:00:17.200147 'works\n' 01:00:17.200247 Received DATA (on stdin) 01:00:17.200313 > 14 bytes data, server => client 01:00:17.200387 ' so does it?\n' 01:00:17.200471 Received DISC (on stdin) 01:00:17.201062 ====> Client forcibly disconnected 01:00:17.201219 Received QUIT (on stdin) 01:00:17.201294 quits 01:00:17.201797 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASS 332 please provide account name REPLY ACCT 230 thank you Testnum 228 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com ACCT one count PWD EPSV TYPE I SIZE 228 RETR 228 QUIT === End of file server.input === Start of file stderr228 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 51 100 51 0 0 9 0 0:00:05 0:00:05 --:--:-- 12 === End of file stderr228 === Start of file trace228 01:00:13.999714 * Trying 127.0.0.1:38207... 01:00:14.855765 * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 43986 01:00:15.088958 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:00:15.434098 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:00:15.461165 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:00:15.467886 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:00:15.472960 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:00:15.575146 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:00:15.647541 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:00:15.674842 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:00:15.741896 <= Recv header, 33 bytes (0x21) 0000: 332 please provide account name 01:00:15.756175 => Send header, 16 bytes (0x10) 0000: ACCT one count 01:00:15.771669 <= Recv header, 15 bytes (0xf) 0000: 230 thank you 01:00:15.789772 => Send header, 5 bytes (0x5) 0000: PWD 01:00:15.799872 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:00:15.837804 * Entry path is '/' 01:00:15.944633 * Request has same path as previous transfer 01:00:15.998536 => Send header, 6 bytes (0x6) 0000: EPSV 01:00:16.017090 * Connect data stream passively 01:00:16.096998 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||45567|) 01:00:16.215621 * Connecting to 127.0.0.1 (127.0.0.1) port 45567 01:00:16.286728 * Trying 127.0.0.1:45567... 01:00:16.388271 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 45567) from 127.0.0.1 port 56132 01:00:16.422614 => Send header, 8 bytes (0x8) 0000: TYPE I 01:00:16.444150 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:00:16.485869 => Send header, 10 bytes (0xa) 0000: SIZE 228 01:00:16.525318 <= Recv header, 8 bytes (0x8) 0000: 213 51 01:00:16.576636 => Send header, 10 bytes (0xa) 0000: RETR 228 01:00:16.593250 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 228 () (51 bytes). 01:00:16.634349 * Maxdownload = -1 01:00:16.645527 * Getting file with size: 51 01:00:16.786901 <= Recv data, 51 bytes (0x33) 0000: data. to. see.that FTP.works. so does it?. 01:00:17.109422 * abort upload 01:00:17.136210 <= Recv data, 0 bytes (0x0) 01:00:17.308839 * Remembering we are in dir "" 01:00:17.525408 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:00:17.841230 * Connection #0 to host 127.0.0.1:38207 left intact === End of file trace228 === Start of file valgrind228 ==222801== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind228 test 0229...[FTP RETR with bad ACCT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind229 ../src/curl -q --output log/7/curl229.out --include --trace-ascii log/7/trace229 --trace-time ftp://127.0.0.1:45353/229 --ftp-account "one count" > log/7/stdout229 2> log/7/stderr229 valgrind ERROR ==222957== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 229 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind229 ../src/curl -q --output log/7/curl229.out --include --trace-ascii log/7/trace229 --trace-time ftp://127.0.0.1:45353/229 --ftp-account "one count" > log/7/stdout229 2> log/7/stderr229 === End of file commands.log === Start of file ftp_server.log 00:59:29.607668 ====> Client connect 00:59:29.608640 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 00:59:29.615819 < "USER anonymous" 00:59:29.616165 > "331 We are happy you popped in![CR][LF]" 00:59:29.621344 < "PASS ftp@example.com" 00:59:29.621649 > "230 Welcome you silly person[CR][LF]" 00:59:29.622391 < "PWD" 00:59:29.622665 > "257 "/" is current directory[CR][LF]" 00:59:29.624597 < "EPSV" 00:59:29.624805 ====> Passive DATA channel requested by client 00:59:29.624962 DATA sockfilt for passive data channel starting... 00:59:29.666547 DATA sockfilt for passive data channel started (pid 222951) 00:59:29.667726 DATA sockfilt for passive data channel listens on port 42841 00:59:29.668129 > "229 Entering Passive Mode (|||42841|)[CR][LF]" 00:59:29.668312 Client has been notified that DATA conn will be accepted on port 42841 00:59:29.674263 Client connects to port 42841 00:59:29.674527 ====> Client established passive DATA connection on port 42841 00:59:29.675196 < "TYPE I" 00:59:29.675494 > "200 I modify TYPE as you wanted[CR][LF]" 00:59:29.676410 < "SIZE verifiedserver" 00:59:29.676729 > "213 18[CR][LF]" 00:59:29.677664 < "RETR verifiedserver" 00:59:29.677985 > "150 Binary junk (18 bytes).[CR][LF]" 00:59:29.678532 =====> Closing passive DATA connection... 00:59:29.678693 Server disconnects passive DATA connection 00:59:29.684271 Server disconnected passive DATA connection 00:59:29.684485 DATA sockfilt for passive data channel quits (pid 222951) 00:59:29.688661 DATA sockfilt for passive data channel quit (pid 222951) 00:59:29.688840 =====> Closed passive DATA connection 00:59:29.689109 > "226 File transfer complete[CR][LF]" 00:59:29.733858 < "QUIT" 00:59:29.734262 > "221 bye bye baby[CR][LF]" 00:59:29.737979 MAIN sockfilt said DISC 00:59:29.738190 ====> Client disconnected 00:59:29.738463 Awaiting input 01:00:16.524655 ====> Client connect 01:00:16.525403 FTPD: Getting commands from log/7/server.cmd 01:00:16.526182 FTPD: set custom reply for PASS command 01:00:16.526642 FTPD: set custom reply for ACCT command 01:00:16.526887 FTPD: run test case number: 229 01:00:16.531212 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:00:17.908698 < "USER anonymous" 01:00:17.909132 > "331 We are happy you popped in![CR][LF]" 01:00:18.038565 < "PASS ftp@example.com" 01:00:18.039002 > "332 please provide account name[CR][LF]" 01:00:18.129041 < "ACCT one count" 01:00:18.134315 > "532 bluah![CR][LF]" 01:00:18.635722 MAIN sockfilt said DISC 01:00:18.636234 ====> Client disconnected 01:00:18.636532 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 00:59:29.221097 ====> Client connect 00:59:29.226969 Received DATA (on stdin) 00:59:29.227083 > 160 bytes data, server => client 00:59:29.227206 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 00:59:29.227318 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 00:59:29.227416 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 00:59:29.231158 < 16 bytes data, client => server 00:59:29.231251 'USER anonymous\r\n' 00:59:29.232159 Received DATA (on stdin) 00:59:29.232238 > 33 bytes data, server => client 00:59:29.232335 '331 We are happy you popped in!\r\n' 00:59:29.232608 < 22 bytes data, client => server 00:59:29.232695 'PASS ftp@example.com\r\n' 00:59:29.237648 Received DATA (on stdin) 00:59:29.237738 > 30 bytes data, server => client 00:59:29.237837 '230 Welcome you silly person\r\n' 00:59:29.238097 < 5 bytes data, client => server 00:59:29.238175 'PWD\r\n' 00:59:29.238673 Received DATA (on stdin) 00:59:29.238752 > 30 bytes data, server => client 00:59:29.238847 '257 "/" is current directory\r\n' 00:59:29.240282 < 6 bytes data, client => server 00:59:29.240368 'EPSV\r\n' 00:59:29.284100 Received DATA (on stdin) 00:59:29.284270 > 39 bytes data, server => client 00:59:29.284377 '229 Entering Passive Mode (|||42841|)\r\n' 00:59:29.286978 < 8 bytes data, client => server 00:59:29.287072 'TYPE I\r\n' 00:59:29.291489 Received DATA (on stdin) 00:59:29.291579 > 33 bytes data, server => client 00:59:29.291679 '200 I modify TYPE as you wanted\r\n' 00:59:29.292095 < 21 bytes data, client => server 00:59:29.292187 'SIZE verifiedserver\r\n' 00:59:29.292740 Received DATA (on stdin) 00:59:29.292819 > 8 bytes data, server => client 00:59:29.292898 '213 18\r\n' 00:59:29.293354 < 21 bytes data, client => server 00:59:29.293444 'RETR verifiedserver\r\n' 00:59:29.293991 Received DATA (on stdin) 00:59:29.294075 > 29 bytes data, server => client 00:59:29.294169 '150 Binary junk (18 bytes).\r\n' 00:59:29.305108 Received DATA (on stdin) 00:59:29.305223 > 28 bytes data, server => client 00:59:29.305319 '226 File transfer complete\r\n' 00:59:29.350521 < 6 bytes data, client => server 00:59:29.350641 'QUIT\r\n' 00:59:29.350722 Received DATA (on stdin) 00:59:29.350795 > 18 bytes data, server => client 00:59:29.350878 '221 bye bye baby\r\n' 00:59:29.353909 ====> Client disconnect 00:59:29.354692 Received ACKD (on stdin) 01:00:16.140326 ====> Client connect 01:00:16.147061 Received DATA (on stdin) 01:00:16.147194 > 160 bytes data, server => client 01:00:16.147323 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:00:16.147437 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:00:16.147530 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:00:17.523431 < 16 bytes data, client => server 01:00:17.523683 'USER anonymous\r\n' 01:00:17.525030 Received DATA (on stdin) 01:00:17.525116 > 33 bytes data, server => client 01:00:17.525220 '331 We are happy you popped in!\r\n' 01:00:17.651592 < 22 bytes data, client => server 01:00:17.651783 'PASS ftp@example.com\r\n' 01:00:17.654900 Received DATA (on stdin) 01:00:17.655020 > 33 bytes data, server => client 01:00:17.655134 '332 please provide account name\r\n' 01:00:17.743592 < 16 bytes data, client => server 01:00:17.743793 'ACCT one count\r\n' 01:00:17.745361 Received DATA (on stdin) 01:00:17.745438 > 12 bytes data, server => client 01:00:17.750548 '532 bluah!\r\n' 01:00:18.251363 ====> Client disconnect 01:00:18.252688 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 00:59:29.273087 Running IPv4 version 00:59:29.280959 Listening on port 42841 00:59:29.281442 Wrote pid 222951 to log/7/server/ftp_sockdata.pid 00:59:29.282203 Received PING (on stdin) 00:59:29.283129 Received PORT (on stdin) 00:59:29.286911 ====> Client connect 00:59:29.294277 Received DATA (on stdin) 00:59:29.294578 > 18 bytes data, server => client 00:59:29.294940 'WE ROOLZ: 202639\r\n' 00:59:29.295198 Received DISC (on stdin) 00:59:29.295319 ====> Client forcibly disconnected 00:59:29.301673 Received QUIT (on stdin) 00:59:29.301765 quits 00:59:29.302278 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASS 332 please provide account name REPLY ACCT 532 bluah Testnum 229 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com ACCT one count === End of file server.input === Start of file stderr229 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 curl: (11) ACCT rejected by server: 532 === End of file stderr229 === Start of file trace229 01:00:16.212464 * Trying 127.0.0.1:45353... 01:00:17.111185 * Established connection to 127.0.0.1 (127.0.0.1 port 45353) from 127.0.0.1 port 38774 01:00:17.363376 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:00:17.780027 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:00:17.809499 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:00:17.817136 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:00:17.822657 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:00:17.930261 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:00:18.012174 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:00:18.036958 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:00:18.111596 <= Recv header, 33 bytes (0x21) 0000: 332 please provide account name 01:00:18.126668 => Send header, 16 bytes (0x10) 0000: ACCT one count 01:00:18.142523 <= Recv heaCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind231 ../src/curl -q --output log/1/curl231.out --trace-ascii log/1/trace231 --trace-time file://localhost/build/curl/src/build-curl/tests/log/1/test231.txt -C 10 > log/1/stdout231 2> log/1/stderr231 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind230 ../src/curl -q --output log/5/curl230.out --include --trace-ascii log/5/trace230 --trace-time http://127.0.0.1:46263/230 --compressed > log/5/stdout230 2> log/5/stderr230 der, 12 bytes (0xc) 0000: 532 bluah 01:00:18.177649 * ACCT rejected by server: 532 01:00:18.512713 * closing connection #0 === End of file trace229 === Start of file valgrind229 ==222957== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind229 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 231 in state 4 Runner 2 (id 185908) running test 233 in state 4 Runner 3 (id 185910) running test 234 in state 4 Runner 4 (id 185912) running test 236 in state 4 Runner 5 (id 185914) running test 230 in state 4 Runner 6 (id 185916) running test 235 in state 4 Runner 7 (id 185918) running test 237 in state 4 Runner 8 (id 185920) running test 232 in state 4 test 0231...[file:// with resume] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind231 ../src/curl -q --output log/1/curl231.out --trace-ascii log/1/trace231 --trace-time file://localhost/build/curl/src/build-curl/tests/log/1/test231.txt -C 10 > log/1/stdout231 2> log/1/stderr231 valgrind ERROR ==223177== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 231 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind231 ../src/curl -q --output log/1/curl231.out --trace-ascii log/1/trace231 --trace-time file://localhost/build/curl/src/build-curl/tests/log/1/test231.txt -C 10 > log/1/stdout231 2> log/1/stderr231 === End of file commands.log === Start of file curl231.out B01234567 C01234567 === End of file curl231.out === Start of file server.cmd Testnum 231 === End of file server.cmd === Start of file stderr231 ** Resuming transfer from byte position 10 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 20 100 20 0 0 10 0 0:00:02 0:00:01 0:00:01 17 100 20 100 20 0 0 9 0 0:00:02 0:00:02 --:--:-- 15 === End of file stderr231 === Start of file test231.txt A01234567 B01234567 C01234567 === End of file test231.txt === Start of file trace231 01:00:29.660091 <= Recv data, 20 bytes (0x14) 0000: B01234567.C01234567. 01:00:30.415031 * shutting down connection #0 === End of file trace231 === Start of file valgrind231 ==223177== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind231 test 0230...[HTTP GET multiply compressed content] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind230 ../src/curl -q --output log/5/curl230.out --include --trace-ascii log/5/trace230 --trace-time http://127.0.0.1:46263/230 --compressed > log/5/stdout230 2> log/5/stderr230 valgrind ERROR ==223131== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 230 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind230 ../src/curl -q --output log/5/curl230.out --include --trace-ascii log/5/trace230 --trace-time http://127.0.0.1:46263/230 --compressed > log/5/stdout230 2> log/5/stderr230 === End of file commands.log === Start of file curl230.out HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: deflate, identity, gzip Content-Length: 1328 1612 1998-08-21 04:01:29 2004-10-18 02:22:23 curl curl and libcurl Command line tool and library for client-side URL transfers. curl and libcurl is a tool for transferring files using URL syntax. It supports HTTP, HTTPS, FTP, FTPS, DICT, TELNET, LDAP, FILE, and GOPHER, as well as HTTP-post, HTTP-put, cookies, FTP upload, resumed transfers, passwords, portnumbers, SSL certificates, Kerberos, and proxies. It is powered by libcurl, the client-side URL transfer library. There are bindings to libcurl for over 20 languages and environments. 5784.57 3.16 169 6594.54 13.81 105 8.50 21 183 323 Default http://freshmeat.net/projects/curl/ http://freshmeat.net/redir/curl/1612/url_homepage/ http://freshmeat.net/redir/curl/1612/url_tgz/ http://freshmeat.net/redir/curl/1612/url_bz2/ http://freshmeat.net/redir/curl/1612/url_zip/ http://freshmeat.net/redir/curl/1612/url_changelog/ http://freshmeat.net/redir/curl/1612/url_rpm/ http://freshmeat.net/redir/curl/1612/url_deb/ http://freshmeat.net/redir/curl/1612/url_osx/ http://freshmeat.net/redir/curl/1612/url_bsdport/ http://freshmeat.net/redir/curl/1612/url_cvs/ http://freshmeat.net/redir/curl/1612/url_list/ http://freshmeat.net/redir/curl/1612/url_mirror/ MIT/X Consortium License 7.12.2 176085 2004-10-18 02:22:23 Daniel Stenberg http://freshmeat.net/~bagder/ Owner 12 226 3 2 188 216 200 220 164 90 89 809 150 224 900 839 0 7464 7464 OpenSSL (Default) 0 0 7443 OpenLDAP 0 0 12351 zlib 0 0 32047 Heimdal 0 0 44532 c-ares === End of file curl230.out === Start of file http_server.log 00:59:40.942964 ====> Client connect 00:59:40.943131 accept_connection 3 returned 4 00:59:40.943209 accept_connection 3 returned 0 00:59:40.949803 Read 93 bytes 00:59:40.949898 Process 93 bytes request 00:59:40.949991 Got request: GET /verifiedserver HTTP/1.1 00:59:40.950058 Are-we-friendly question received 00:59:40.950172 Wrote request (93 bytes) input to log/5/server.input 00:59:40.950273 Identifying ourselves as friends 00:59:40.950461 Response sent (57 bytes) and written to log/5/server.response 00:59:40.950526 special request received, no persistency 00:59:40.950587 ====> Client disconnect 0 01:00:29.158120 ====> Client connect 01:00:29.158269 accept_connection 3 returned 4 01:00:29.158349 accept_connection 3 returned 0 01:00:30.165859 Read 124 bytes 01:00:30.166075 Process 124 bytes request 01:00:30.166172 Got request: GET /230 HTTP/1.1 01:00:30.166245 Serve test number 230 part 0 01:00:30.166609 - request found to be complete (230) 01:00:30.167031 Wrote request (124 bytes) input to log/5/server.input 01:00:30.167147 Send response test230 section 01:00:30.167849 Response sent (1635 bytes) and written to log/5/server.response 01:00:30.167921 => persistent connection request ended, awaits new request 01:00:33.685143 Connection closed by client 01:00:33.685353 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 36844 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 230 === End of file server.cmd === Start of file server.input GET /230 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* Accept-Encoding: deflate, gzip, br, zstd === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: deflate, identity, gzip Content-Length: 1328 ‹úeúYæúxœÜXÛnã6}7`ýÔ¶n¶9p´(rÙÍ6ÁÚºO-Ñ6IHʹ<ôÛ;”(‰±¯wƒ¾HbræœÃá I“™|zJb´!\P–žu]Ëé"’†,¢éê¬{3½ëûþhÜw»Ÿ‚Îä—‹»óÙ·ûK”qö e?¦BM¿Mg—_Pw-evjÛKNÄ:!XZ)‘ö‡$ìeÒ×<Ñw¬¡ɨ ¢[ZA¡Ê¦ÚMoN£À=v½‰mJD„%™ã("€ý¾ã÷=9ÃSÇ=õÆÛð„ Send header, 124 bytes (0x7c) 0000: GET /230 HTTP/1.1 0013: Host: 127.0.0.1:46263 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Accept-Encoding: deflate, gzip, br, zstd 007a: 01:00:30.933699 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:00:31.238706 <= Recv header, 37 bytes (0x25) 0000: Date: Mon, 29 Nov 2004 21:56:53 GMT 01:00:31.341537 <= Recv header, 117 bytes (0x75) 0000: Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/ 0040: 4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 01:00:31.370804 <= Recv header, 23 bytes (0x17) 0000: Vary: Accept-Encoding 01:00:31.430261 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=ISO-8859-1 01:00:31.891667 <= Recv header, 43 bytes (0x2b) 0000: Content-Encoding: deflate, identity, gzip 01:00:31.938339 <= Recv header, 22 bytes (0x16) 0000: Content-Length: 1328 01:00:32.020387 <= Recv header, 2 bytes (0x2) 0000: 01:00:32.083203 <= Recv data, 1329 bytes (0x531) 0000: .....e.Y.......x..X.n.6.}7..`....n..9p.(r...6....O.-.6.I.H..<..; 0040: .(....w...Hbr.....I..|zJb.!\P..u].."..,....{3....h.w............ 0080: K.q...e?.B..M.Mg._Pw-evj.KN.:!XZ).....$..e..<.w.......[ZA.....Mo 00c0: N..=v..m.JD.%..(".......=.9.S.=....... log/8/stdout232 2> log/8/stderr232 ....n...&2x2.C....Nm| 0480: F.9#g]NBx.(.zI.......QC.r.$.{..O...;];....E.~....T...v..._.m...Z 04c0: %..i........../i.Ogl8xg.....'...#...z.......s.'...5.I......p4... 0500: ...O}.3y2,....+.t.......3..c.........8..l(v1..... 01:00:33.264590 * Excess found writing body: excess = 1, size = 1328, maxdownload = 1328, bytecount = 1328 01:00:33.313093 * we are done reading and this is set to close, stop send 01:00:33.342626 * abort upload 01:00:33.867043 * shutting down connection #0 === End of file trace230 === Start of file valgrind230 ==223131== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind230 test 0232...[HTTP GET deflate raw-compressed content] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind232 ../src/curl -q --output log/8/curl232.out --include --trace-ascii log/8/trace232 --trace-time http://127.0.0.1:39461/232 --compressed > log/8/stdout232 2> log/8/stderr232 valgrind ERROR ==223406== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 232 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind232 ../src/curl -q --output log/8/curl232.out --include --trace-ascii log/8/trace232 --trace-time http://127.0.0.1:39461/232 --compressed > log/8/stdout232 2> log/8/stderr232 === End of file commands.log === Start of file curl232.out HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: deflate Content-Length: 1287 1612 1998-08-21 04:01:29 2004-10-18 02:22:23 curl curl and libcurl Command line tool and library for client-side URL transfers. curl and libcurl is a tool for transferring files using URL syntax. It supports HTTP, HTTPS, FTP, FTPS, DICT, TELNET, LDAP, FILE, and GOPHER, as well as HTTP-post, HTTP-put, cookies, FTP upload, resumed transfers, passwords, portnumbers, SSL certificates, Kerberos, and proxies. It is powered by libcurl, the client-side URL transfer library. There are bindings to libcurl for over 20 languages and environments. 5784.57 3.16 169 6594.54 13.81 105 8.50 21 183 323 Default http://freshmeat.net/projects/curl/ http://freshmeat.net/redir/curl/1612/url_homepage/ http://freshmeat.net/redir/curl/1612/url_tgz/ http://freshmeat.net/redir/curl/1612/url_bz2/ http://freshmeat.net/redir/curl/1612/url_zip/ http://freshmeat.net/redir/curl/1612/url_changelog/ http://freshmeat.net/redir/curl/1612/url_rpm/ http://freshmeat.net/redir/curl/1612/url_deb/ http://freshmeat.net/redir/curl/1612/url_osx/ http://freshmeat.net/redir/curl/1612/url_bsdport/ http://freshmeat.net/redir/curl/1612/url_cvs/ http://freshmeat.net/redir/curl/1612/url_list/ http://freshmeat.net/redir/curl/1612/url_mirror/ MIT/X Consortium License 7.12.2 176085 2004-10-18 02:22:23 Daniel Stenberg http://freshmeat.net/~bagder/ Owner 12 226 3 2 188 216 200 220 164 90 89 809 150 224 900 839 0 7464 7464 OpenSSL (Default) 0 0 7443 OpenLDAP 0 0 12351 zlib 0 0 32047 Heimdal 0 0 44532 c-ares === End of file curl232.out === Start of file http_server.log 00:59:45.955223 ====> Client connect 00:59:45.955377 accept_connection 3 returned 4 00:59:45.955451 accept_connection 3 returned 0 00:59:45.962426 Read 93 bytes 00:59:45.962514 Process 93 bytes request 00:59:45.962602 Got request: GET /verifiedserver HTTP/1.1 00:59:45.962666 Are-we-friendly question received 00:59:45.962773 Wrote request (93 bytes) input to log/8/server.input 00:59:45.962862 Identifying ourselves as friends 00:59:45.963015 Response sent (57 bytes) and written to log/8/server.response 00:59:45.963075 special request received, no persistency 00:59:45.963129 ====> Client disconnect 0 01:00:34.327636 ====> Client connect 01:00:34.327784 accept_connection 3 returned 4 01:00:34.327867 accept_connection 3 returned 0 01:00:35.396929 Read 124 bytes 01:00:35.397137 Process 124 bytes request 01:00:35.397231 Got request: GET /232 HTTP/1.1 01:00:35.397298 Serve test number 232 part 0 01:00:35.397666 - request found to be complete (232) 01:00:35.398045 Wrote request (124 bytes) input to log/8/server.input 01:00:35.398153 Send response testCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind233 ../src/curl -q --output log/2/curl233.out --include --trace-ascii log/2/trace233 --trace-time http://first.host.it.is/we/want/that/page/233 -x 127.0.0.1:39863 --user iam:myself --proxy-user testing:this --location > log/2/stdout233 2> log/2/stderr233 232 section 01:00:35.398816 Response sent (1578 bytes) and written to log/8/server.response 01:00:35.398881 => persistent connection request ended, awaits new request 01:00:38.453202 Connection closed by client 01:00:38.453411 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 50370 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 232 === End of file server.cmd === Start of file server.input GET /232 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* Accept-Encoding: deflate, gzip, br, zstd === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: deflate Content-Length: 1287 ÝXÛnã6}7`ýÔ¶n¶9p´(rÙÍ6ÁÚºO-Ñ6IHʹ<ôÛ;”(‰±¯wƒ¾HbræœÃá I“™|zJb´!\P–žu]Ëé"’†,¢éê¬{3½ëûþhÜw»Ÿ‚Îä—‹»óÙ·ûK”qö e?¦BM¿Mg—_Pw-evjÛKNÄ:!XZ)‘ö‡$ìeÒ×<Ñw¬¡ɨ ¢[ZA¡Ê¦ÚMoN£À=v½‰mJD„%™ã("€ý¾ã÷=9ÃSÇ=õÆÛð„ Send header, 124 bytes (0x7c) 0000: GET /232 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Accept-Encoding: deflate, gzip, br, zstd 007a: 01:00:36.167685 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:00:36.482872 <= Recv header, 37 bytes (0x25) 0000: Date: Mon, 29 Nov 2004 21:56:53 GMT 01:00:36.573106 <= Recv header, 117 bytes (0x75) 0000: Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/ 0040: 4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 01:00:36.598910 <= Recv header, 23 bytes (0x17) 0000: Vary: Accept-Encoding 01:00:36.653039 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=ISO-8859-1 01:00:37.069750 <= Recv header, 27 bytes (0x1b) 0000: Content-Encoding: deflate 01:00:37.105744 <= Recv header, 22 bytes (0x16) 0000: Content-Length: 1287 01:00:37.180653 <= Recv header, 2 bytes (0x2) 0000: 01:00:37.234238 <= Recv data, 1288 bytes (0x508) 0000: .X.n.6.}7..`....n..9p.(r...6....O.-.6.I.H..<..;.(....w...Hbr.... 0040: .I..|zJb.!\P..u].."..,....{3....h.w............K.q...e?.B..M.Mg. 0080: _Pw-evj.KN.:!XZ).....$..e..<.w.......[ZA.....MoN..=v..m.JD.%..(" 00c0: .......=.9.S.=....... log/2/stdout233 2> log/2/stderr233 valgrind ERROR ==223565== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 233 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind233 ../src/curl -q --output log/2/curl233.out --include --trace-ascii log/2/trace233 --trace-time http://first.host.it.is/we/want/that/page/233 -x 127.0.0.1:39863 --user iam:myself --proxy-user testing:this --location > log/2/stdout233 2> log/2/stderr233 === End of file commands.log === Start of file curl233.out HTTP/1.1 302 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Location: http://goto.second.host.now/2330002 Content-Length: 8 Connection: close HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file curl233.out === Start of file http_server.log 00:59:49.966826 ====> Client connect 00:59:49.966992 accept_connection 3 returned 4 00:59:49.967066 accept_connection 3 returned 0 00:59:49.974096 Read 93 bytes 00:59:49.974190 Process 93 bytes request 00:59:49.974278 Got request: GET /verifiedserver HTTP/1.1 00:59:49.974343 Are-we-friendly question received 00:59:49.974459 Wrote request (93 bytes) input to log/2/server.input 00:59:49.974548 Identifying ourselves as friends 00:59:49.974706 Response sent (57 bytes) and written to log/2/server.response 00:59:49.974770 special request received, no persistency 00:59:49.974827 ====> Client disconnect 0 01:00:37.762776 ====> Client connect 01:00:37.762905 accept_connection 3 returned 4 01:00:37.762981 accept_connection 3 returned 0 01:00:39.012816 Read 238 bytes 01:00:39.012979 Process 238 bytes request 01:00:39.013084 Got request: GET http://first.host.it.is/we/want/that/page/233 HTTP/1.1 01:00:39.013153 Serve test number 233 part 0 01:00:39.013384 - request found to be complete (233) 01:00:39.036006 Wrote request (238 bytes) input to log/2/server.input 01:00:39.036171 Send response test233 section 01:00:39.036473 connection close instruction "swsclose" found in response 01:00:39.036796 Response sent (221 bytes) and written to log/2/server.response 01:00:39.036886 instructed to close connection after server-reply 01:00:39.036963 ====> Client disconnect 0 01:00:41.424072 ====> Client connect 01:00:41.426840 accept_connection 3 returned 4 01:00:41.426926 accept_connection 3 returned 0 01:00:41.507748 Read 193 bytes 01:00:41.507937 Process 193 bytes request 01:00:41.508028 Got request: GET http://goto.second.host.now/2330002 HTTP/1.1 01:00:41.508093 Serve test number 233 part 2 01:00:41.508268 - request found to be complete (233) 01:00:41.508480 Wrote request (193 bytes) input to log/2/server.input 01:00:41.508569 Send response test233 section 01:00:41.508814 connection close instruction "swsclose" found in response 01:00:41.509014 Response sent (157 bytes) and written to log/2/server.response 01:00:41.509081 instructed to close connection after server-reply 01:00:41.509143 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 35454 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 233 === End of file server.cmd === Start of file server.input GET http://first.host.it.is/we/want/that/page/233 HTTP/1.1 Host: first.host.it.is Proxy-Authorization: Basic dGVzdGluZzp0aGlz Authorization: Basic aWFtOm15c2VsZg== User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://goto.second.host.now/2330002 HTTP/1.1 Host: goto.second.host.now Proxy-Authorization: Basic dGVzdGluZzp0aGlz User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 302 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Location: http://goto.second.host.now/2330002 Content-Length: 8 Connection: close contents HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file server.response === Start of file stderr233 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 8 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 100 9 100 9 0 0 1 0 0:00:09 0:00:06 0:00:03 23 === End of file stderr233 === Start of file trace233 01:00:36.846315 * Trying 127.0.0.1:39863... 01:00:37.720521 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 49672 01:00:37.866788 * using HTTP/1.x 01:00:37.996505 * Proxy auth using Basic with user 'testing' 01:00:38.033637 * Server auth using Basic with user 'iam' 01:00:38.436656 => Send header, 238 bytes (0xee) 0000: GET http://first.host.it.is/we/want/that/page/233 HTTP/1.1 003c: Host: first.host.it.is 0054: Proxy-Authorization: Basic dGVzdGluZzp0aGlz 0081: Authorization: Basic aWFtOm15c2VsZg== 00a8: User-Agent: curl/8.17.0 00c1: Accept: */* 00ce: Proxy-Connection: Keep-Alive 00ec: 01:00:38.815634 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 302 OK. 01:00:39.153438 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:00:39.274600 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 01:00:39.350253 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:00:39.354764 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:00:39.406710 <= Recv header, 46 bytes (0x2e) 0000: Location: http://goto.second.host.now/2330002. 01:00:39.432425 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 8. 01:00:39.481192 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:00:39.575453 <= Recv header, 1 bytes (0x1) 0000: . 01:00:39.832338 * Request completely sent off 01:00:40.115104 * shutting down connection #0 01:00:40.606022 * Issue another request to this URL: 'http://goto.second.host.now/2330002' 01:00:40.763656 * Hostname 127.0.0.1 was found in DNS cache 01:00:40.802655 * Trying 127.0.0.1:39863... 01:00:40.837015 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 49674 01:00:40.842922 * using HTTP/1.x 01:00:40.858751 * Proxy auth using Basic with user 'testing' 01:00:40.893449 => Send header, 193 bytes (0xc1) 0000: GET http://goto.second.host.now/2330002 HTTP/1.1 0032: Host: goto.second.host.now 004e: Proxy-Authorization: Basic dGVzdGluZzp0aGlz 007b: User-Agent: curl/8.17.0 0094: Accept: */* 00a1: Proxy-Connection: Keep-Alive 00bf: 01:00:40.938066 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:00:40.944178 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:00:40.950893 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 01:00:40.957752 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:00:40.961691 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:00:40.966206 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 9. 01:00:40.981211 <= Recv header, 1 bytes (0x1) 0000: . 01:00:41.001555 <= Recv data, 9 bytes (0x9) 0000: contents. 01:00:41.233093 * Connection #1 to host 127.0.0.1:39863 left intact === End of file trace233 === Start of file valgrind233 ==223565== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind233 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/2/server/http_ipv6_server.pid" --logfile "log/2/http_ipv6_server.log" --logdir "log/2" --portfile log/2/server/http_ipv6_server.port --config log/2/server.cmd --ipv6 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP-IPv6 server is on PID 224837 port 36225 * pid http-ipv6 => 224837 224837 prechecked ./server/servers resolve --ipv6 ip6-localhost test 0241 SKIPPED: Resolving IPv6 'ip6-localhost' didn't work Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 238 in state 4 Runner 2 (id 185908) running test 242 in state 4 Runner 3 (id 185910) runCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind234 ../src/curl -q --output log/3/curl234.out --include --trace-ascii log/3/trace234 --trace-time http://first.host.it.is/we/want/that/page/234 -x 127.0.0.1:46853 --user iam:myself --proxy-user testing:this --location-trusted > log/3/stdout234 2> log/3/stderr234 ning test 234 in state 4 Runner 4 (id 185912) running test 236 in state 4 Runner 5 (id 185914) running test 239 in state 4 Runner 6 (id 185916) running test 235 in state 4 Runner 7 (id 185918) running test 237 in state 4 Runner 8 (id 185920) running test 240 in state 4 test 0234...[HTTP, proxy, site+proxy auth and Location: to new host location-trusted] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind234 ../src/curl -q --output log/3/curl234.out --include --trace-ascii log/3/trace234 --trace-time http://first.host.it.is/we/want/that/page/234 -x 127.0.0.1:46853 --user iam:myself --proxy-user testing:this --location-trusted > log/3/stdout234 2> log/3/stderr234 valgrind ERROR ==223763== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 234 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind234 ../src/curl -q --output log/3/curl234.out --include --trace-ascii log/3/trace234 --trace-time http://first.host.it.is/we/want/that/page/234 -x 127.0.0.1:46853 --user iam:myself --proxy-user testing:this --location-trusted > log/3/stdout234 2> log/3/stderr234 === End of file commands.log === Start of file curl234.out HTTP/1.1 302 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Location: http://goto.second.host.now/2340002 Content-Length: 8 Connection: close HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file curl234.out === Start of file http_server.log 01:00:08.614924 ====> Client connect 01:00:08.615088 accept_connection 3 returned 4 01:00:08.615165 accept_connection 3 returned 0 01:00:08.622305 Read 93 bytes 01:00:08.622437 Process 93 bytes request 01:00:08.622525 Got request: GET /verifiedserver HTTP/1.1 01:00:08.622592 Are-we-friendly question received 01:00:08.622715 Wrote request (93 bytes) input to log/3/server.input 01:00:08.622809 Identifying ourselves as friends 01:00:08.622967 Response sent (57 bytes) and written to log/3/server.response 01:00:08.623030 special request received, no persistency 01:00:08.623087 ====> Client disconnect 0 01:00:56.767651 ====> Client connect 01:00:56.767788 accept_connection 3 returned 4 01:00:56.767863 accept_connection 3 returned 0 01:00:57.888334 Read 238 bytes 01:00:57.888513 Process 238 bytes request 01:00:57.888599 Got request: GET http://first.host.it.is/we/want/that/page/234 HTTP/1.1 01:00:57.888665 Serve test number 234 part 0 01:00:57.888888 - request found to be complete (234) 01:00:57.889165 Wrote request (238 bytes) input to log/3/server.input 01:00:57.889267 Send response test234 section 01:00:57.889493 connection close instruction "swsclose" found in response 01:00:57.889664 Response sent (221 bytes) and written to log/3/server.response 01:00:57.889726 instructed to close connection after server-reply 01:00:57.889784 ====> Client disconnect 0 01:01:00.058430 ====> Client connect 01:01:00.058569 accept_connection 3 returned 4 01:01:00.058648 accept_connection 3 returned 0 01:01:00.138092 Read 232 bytes 01:01:00.138297 Process 232 bytes request 01:01:00.138393 Got request: GET http://goto.second.host.now/2340002 HTTP/1.1 01:01:00.138463 Serve test number 234 part 2 01:01:00.138672 - request found to be complete (234) 01:01:00.138903 Wrote request (232 bytes) input to log/3/server.input 01:01:00.138991 Send response test234 section 01:01:00.139235 connection close instruction "swsclose" found in response 01:01:00.139393 Response sent (157 bytes) and written to log/3/server.response 01:01:00.139459 instructed to close connection after server-reply 01:01:00.139519 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 47982 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 234 === End of file server.cmd === Start of file server.input GET http://first.host.it.is/we/want/that/page/234 HTTP/1.1 Host: first.host.it.is Proxy-Authorization: Basic dGVzdGluZzp0aGlz Authorization: Basic aWFtOm15c2VsZg== User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://goto.second.host.now/2340002 HTTP/1.1 Host: goto.second.host.now Proxy-Authorization: Basic dGVzdGluZzp0aGlz Authorization: Basic aWFtOm15c2VsZg== User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 302 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Location: http://goto.second.host.now/2340002 Content-Length: 8 Connection: close contents HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file server.response === Start of file stderr234 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 8 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 9 100 9 0 0 1 0 0:00:09 0:00:06 0:00:03 22 === End of file stderr234 === Start of file trace234 01:00:56.852546 * Trying 127.0.0.1:46853... 01:00:57.686404 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 53822 01:00:57.808239 * using HTTP/1.x 01:00:57.930961 * Proxy auth using Basic with user 'testing' 01:00:57.966622 * Server auth using Basic with user 'iam' 01:00:58.309540 => Send header, 238 bytes (0xee) 0000: GET http://first.host.it.is/we/want/that/page/234 HTTP/1.1 003c: Host: first.host.it.is 0054: Proxy-Authorization: Basic dGVzdGluZzp0aGlz 0081: Authorization: Basic aWFtOm15c2VsZg== 00a8: User-Agent: curl/8.17.0 00c1: Accept: */* 00ce: Proxy-Connection: Keep-Alive 00ec: 01:00:58.660453 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 302 OK. 01:00:58.966281 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:00:59.065381 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 01:00:59.129680 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:00:59.135138 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:00:59.179843 <= Recv header, 46 bytes (0x2e) 0000: Location: http://goto.second.host.now/2340002. 01:00:59.206566 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 8. 01:00:59.250598 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:00:59.335312 <= Recv header, 1 bytes (0x1) 0000: . 01:00:59.571861 * Request completely sent off 01:00:59.811977 * shutting down connection #0 01:01:00.232796 * Issue another request to this URL: 'http://goto.second.host.now/2340002' 01:01:00.396974 * Hostname 127.0.0.1 was found in DNS cache 01:01:00.436877 * Trying 127.0.0.1:46853.CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind235 ../src/curl -q --output log/6/curl235.out --include --trace-ascii log/6/trace235 --trace-time ftp://127.0.0.1:39413/235 -T log/6/upload235 -C - > log/6/stdout235 2> log/6/stderr235 .. 01:01:00.471827 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 53824 01:01:00.477932 * using HTTP/1.x 01:01:00.493582 * Proxy auth using Basic with user 'testing' 01:01:00.499946 * Server auth using Basic with user 'iam' 01:01:00.525525 => Send header, 232 bytes (0xe8) 0000: GET http://goto.second.host.now/2340002 HTTP/1.1 0032: Host: goto.second.host.now 004e: Proxy-Authorization: Basic dGVzdGluZzp0aGlz 007b: Authorization: Basic aWFtOm15c2VsZg== 00a2: User-Agent: curl/8.17.0 00bb: Accept: */* 00c8: Proxy-Connection: Keep-Alive 00e6: 01:01:00.573735 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:01:00.580620 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:01:00.587647 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 01:01:00.594872 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:01:00.599148 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:01:00.603939 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 9. 01:01:00.619308 <= Recv header, 1 bytes (0x1) 0000: . 01:01:00.640163 <= Recv data, 9 bytes (0x9) 0000: contents. 01:01:00.873163 * Connection #1 to host 127.0.0.1:46853 left intact === End of file trace234 === Start of file valgrind234 ==223763== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind234 test 0235...[FTP resumed upload but no file present remotely] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind235 ../src/curl -q --output log/6/curl235.out --include --trace-ascii log/6/trace235 --trace-time ftp://127.0.0.1:39413/235 -T log/6/upload235 -C - > log/6/stdout235 2> log/6/stderr235 valgrind ERROR ==223949== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 235 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind235 ../src/curl -q --output log/6/curl235.out --include --trace-ascii log/6/trace235 --trace-time ftp://127.0.0.1:39413/235 -T log/6/upload235 -C - > log/6/stdout235 2> log/6/stderr235 === End of file commands.log === Start of file ftp_server.log 01:00:16.094576 ====> Client connect 01:00:16.095578 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:00:16.102807 < "USER anonymous" 01:00:16.103625 > "331 We are happy you popped in![CR][LF]" 01:00:16.104340 < "PASS ftp@example.com" 01:00:16.104852 > "230 Welcome you silly person[CR][LF]" 01:00:16.105720 < "PWD" 01:00:16.105998 > "257 "/" is current directory[CR][LF]" 01:00:16.108730 < "EPSV" 01:00:16.108938 ====> Passive DATA channel requested by client 01:00:16.109079 DATA sockfilt for passive data channel starting... 01:00:16.150656 DATA sockfilt for passive data channel started (pid 223943) 01:00:16.152065 DATA sockfilt for passive data channel listens on port 42645 01:00:16.152818 > "229 Entering Passive Mode (|||42645|)[CR][LF]" 01:00:16.152985 Client has been notified that DATA conn will be accepted on port 42645 01:00:16.155834 Client connects to port 42645 01:00:16.156056 ====> Client established passive DATA connection on port 42645 01:00:16.156968 < "TYPE I" 01:00:16.157555 > "200 I modify TYPE as you wanted[CR][LF]" 01:00:16.158269 < "SIZE verifiedserver" 01:00:16.158746 > "213 18[CR][LF]" 01:00:16.159823 < "RETR verifiedserver" 01:00:16.160377 > "150 Binary junk (18 bytes).[CR][LF]" 01:00:16.160928 =====> Closing passive DATA connection... 01:00:16.162074 Server disconnects passive DATA connection 01:00:16.162382 Server disconnected passive DATA connection 01:00:16.162547 DATA sockfilt for passive data channel quits (pid 223943) 01:00:16.166001 DATA sockfilt for passive data channel quit (pid 223943) 01:00:16.166240 =====> Closed passive DATA connection 01:00:16.166831 > "226 File transfer complete[CR][LF]" 01:00:16.209745 < "QUIT" 01:00:16.211028 > "221 bye bye baby[CR][LF]" 01:00:16.211257 MAIN sockfilt said DISC 01:00:16.211449 ====> Client disconnected 01:00:16.211723 Awaiting input 01:01:03.829794 ====> Client connect 01:01:03.830548 FTPD: Getting commands from log/6/server.cmd 01:01:03.831335 FTPD: set custom reply for SIZE command 01:01:03.831613 FTPD: run test case number: 235 01:01:03.832493 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:01:05.128517 < "USER anonymous" 01:01:05.128939 > "331 We are happy you popped in![CR][LF]" 01:01:05.234694 < "PASS ftp@example.com" 01:01:05.235127 > "230 Welcome you silly person[CR][LF]" 01:01:05.324932 < "PWD" 01:01:05.325392 > "257 "/" is current directory[CR][LF]" 01:01:05.555862 < "EPSV" 01:01:05.556218 ====> Passive DATA channel requested by client 01:01:05.556378 DATA sockfilt for passive data channel starting... 01:01:05.624569 DATA sockfilt for passive data channel started (pid 225125) 01:01:05.626128 DATA sockfilt for passive data channel listens on port 34271 01:01:05.626943 > "229 Entering Passive Mode (|||34271|)[CR][LF]" 01:01:05.627188 Client has been notified that DATA conn will be accepted on port 34271 01:01:05.867656 Client connects to port 34271 01:01:05.868221 ====> Client established passive DATA connection on port 34271 01:01:05.977683 < "TYPE I" 01:01:05.978140 > "200 I modify TYPE as you wanted[CR][LF]" 01:01:06.028166 < "SIZE 235" 01:01:06.031023 > "500 command not understood[CR][LF]" 01:01:06.092966 < "STOR 235" 01:01:06.093325 STOR test number 235 in log/6/upload.235 01:01:06.093632 > "125 Gimme gimme gimme![CR][LF]" 01:01:06.382612 > Appending 61 bytes to file 01:01:06.823911 =====> Closing passive DATA connection... 01:01:06.824234 Server knows passive DATA connection is already disconnected 01:01:06.824457 DATA sockfilt for passive data channel quits (pid 225125) 01:01:06.837654 DATA sockfilt for passive data channel quit (pid 225125) 01:01:06.837945 =====> Closed passive DATA connection 01:01:06.838151 received 61 bytes upload 01:01:06.838476 > "226 File transfer complete[CR][LF]" 01:01:08.033561 < "QUIT" 01:01:08.034252 > "221 bye bye baby[CR][LF]" 01:01:08.160399 MAIN sockfilt said DISC 01:01:08.161063 ====> Client disconnected 01:01:08.161359 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:00:15.710236 ====> Client connect 01:00:15.711790 Received DATA (on stdin) 01:00:15.711873 > 160 bytes data, server => client 01:00:15.711992 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:00:15.712102 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:00:15.712201 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:00:15.717090 < 16 bytes data, client => server 01:00:15.717187 'USER anonymous\r\n' 01:00:15.719058 Received DATA (on stdin) 01:00:15.719127 > 33 bytes data, server => client 01:00:15.719227 '331 We are happy you popped in!\r\n' 01:00:15.719809 < 22 bytes data, client => server 01:00:15.719885 'PASS ftp@example.com\r\n' 01:00:15.720520 Received DATA (on stdin) 01:00:15.720589 > 30 bytes data, server => client 01:00:15.720685 '230 Welcome you silly person\r\n' 01:00:15.721214 < 5 bytes data, client => server 01:00:15.721280 'PWD\r\n' 01:00:15.722150 Received DATA (on stdin) 01:00:15.722218 > 30 bytes data, server => client 01:00:15.722299 '257 "/" is current directory\r\n' 01:00:15.724184 < 6 bytes data, client => server 01:00:15.724264 'EPSV\r\n' 01:00:15.768311 Received DATA (on stdin) 01:00:15.768446 > 39 bytes data, server => client 01:00:15.768558 '229 Entering Passive Mode (|||42645|)\r\n' 01:00:15.772326 < 8 bytes data, client => server 01:00:15.772406 'TYPE I\r\n' 01:00:15.773183 Received DATA (on stdin) 01:00:15.773258 > 33 bytes data, server => client 01:00:15.773369 '200 I modify TYPE as you wanted\r\n' 01:00:15.773731 < 21 bytes data, client => server 01:00:15.773811 'SIZE verifiedserver\r\n' 01:00:15.774514 Received DATA (on stdin) 01:00:15.774584 > 8 bytes data, server => client 01:00:15.774907 '213 18\r\n' 01:00:15.775305 < 21 bytes data, client => server 01:00:15.775381 'RETR verifiedserver\r\n' 01:00:15.776044 Received DATA (on stdin) 01:00:15.776110 > 29 bytes data, server => client 01:00:15.776213 '150 Binary junk (18 bytes).\r\n' 01:00:15.782434 Received DATA (on stdin) 01:00:15.782539 > 28 bytes data, server => client 01:00:15.782647 '226 File transfer complete\r\n' 01:00:15.824635 < 6 bytes data, client => server 01:00:15.824798 'QUIT\r\n' 01:00:15.826048 Received DATA (on stdin) 01:00:15.826117 > 18 bytes data, server => client 01:00:15.826211 '221 bye bye baby\r\n' 01:00:15.826820 ====> Client disconnect 01:00:15.830253 Received ACKD (on stdin) 01:01:03.445361 ====> Client connect 01:01:03.450120 Received DATA (on stdin) 01:01:03.450230 > 160 bytes data, server => client 01:01:03.450334 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:01:03.450430 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:01:03.450515 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:01:04.742835 < 16 bytes data, client => server 01:01:04.742997 'USER anonymous\r\n' 01:01:04.744752 Received DATA (on stdin) 01:01:04.744843 > 33 bytes data, server => client 01:01:04.744947 '331 We are happy you popped in!\r\n' 01:01:04.849616 < 22 bytes data, client => server 01:01:04.849810 'PASS ftp@example.com\r\n' 01:01:04.850933 Received DATA (on stdin) 01:01:04.851023 > 30 bytes data, server => client 01:01:04.851125 '230 Welcome you silly person\r\n' 01:01:04.939893 < 5 bytes data, client => server 01:01:04.940074 'PWD\r\n' 01:01:04.941201 Received DATA (on stdin) 01:01:04.941286 > 30 bytes data, server => client 01:01:04.941387 '257 "/" is current directory\r\n' 01:01:05.170461 < 6 bytes data, client => server 01:01:05.170669 'EPSV\r\n' 01:01:05.242411 Received DATA (on stdin) 01:01:05.242597 > 39 bytes data, server => client 01:01:05.243401 '229 Entering Passive Mode (|||34271|)\r\n' 01:01:05.592219 < 8 bytes data, client => server 01:01:05.592471 'TYPE I\r\n' 01:01:05.596775 Received DATA (on stdin) 01:01:05.596876 > 33 bytes data, server => client 01:01:05.596981 '200 I modify TYPE as you wanted\r\n' 01:01:05.642810 < 10 bytes data, client => server 01:01:05.642996 'SIZE 235\r\n' 01:01:05.644434 Received DATA (on stdin) 01:01:05.644526 > 28 bytes data, server => client 01:01:05.647208 '500 command not understood\r\n' 01:01:05.707532 < 10 bytes data, client => server 01:01:05.707762 'STOR 235\r\n' 01:01:05.713457 Received DATA (on stdin) 01:01:05.713571 > 24 bytes data, server => client 01:01:05.713663 '125 Gimme gimme gimme!\r\n' 01:01:06.454610 Received DATA (on stdin) 01:01:06.454757 > 28 bytes data, server => client 01:01:06.454860 '226 File transfer complete\r\n' 01:01:07.648350 < 6 bytes data, client => server 01:01:07.648517 'QUIT\r\n' 01:01:07.649779 Received DATA (on stdin) 01:01:07.649851 > 18 bytes data, server => client 01:01:07.649945 '221 bye bye baby\r\n' 01:01:07.775950 ====> Client disconnect 01:01:07.776767 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:00:16.757298 Running IPv4 version 01:00:16.765038 Listening on port 42645 01:00:16.765503 Wrote pid 223943 to log/6/server/ftp_sockdata.pid 01:00:16.766262 Received PING (on stdin) 01:00:16.767330 Received PORT (on stdin) 01:00:16.771624 ====> Client connect 01:00:16.777054 Received DATA (on stdin) 01:00:16.777364 > 18 bytes data, server => client 01:00:16.777741 'WE ROOLZ: 201819\r\n' 01:00:16.778223 Received DISC (on stdin) 01:00:16.778737 ====> Client forcibly disconnected 01:00:16.778907 Received QUIT (on stdin) 01:00:16.778979 quits 01:00:16.779467 ============> sockfilt quits 01:01:05.230332 Running IPv4 version 01:01:05.238601 Listening on port 34271 01:01:05.239156 Wrote pid 225125 to log/6/server/ftp_sockdata.pid 01:01:05.240048 Received PING (on stdin) 01:01:05.241273 Received PORT (on stdin) 01:01:05.482780 ====> Client connect 01:01:05.996976 < 61 bytes data, client => server 01:01:05.997479 'this is the *****crap******** that we're gonna upload\n\nworx' 01:01:05.997596 '?\n' 01:01:06.438628 ====> Client disconnect 01:01:06.443465 Received ACKD (on stdin) 01:01:06.443790 Received QUIT (on stdin) 01:01:06.443894 quits 01:01:06.444452 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY SIZE 500 command not understood Testnum 235 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE 235 STOR 235 QUIT === End of file server.input === Start of file stderr235 ** Resuming transfer from byte position -1 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 61 0 0 100 61 0 12 0:00:05 0:00:04 0:00:01 16 100 61 0 0 100 61 0 11 0:00:05 0:00:05 --:--:-- 14 === End of file stderr235 === Start of file trace235 01:01:03.521129 * Trying 127.0.0.1:39413... 01:01:04.388228 * Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 39752 01:01:04.649122 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:01:05.008248 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:01:05.035279 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:01:05.041826 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:01:05.046790 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:01:05.148537 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:01:05.214743 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:01:05.236507 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:01:05.305904 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:01:05.325705 => Send header, 5 bytes (0x5) 0000: PWD 01:01:05.341608 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:01:05.376147 * Entry path is '/' 01:01:05.496918 * Request has same path as previous transfer 01:01:05.554658 => Send header, 6 bytes (0x6) 0000: EPSV 01:01:05.582211 * Connect data stream passively 01:01:05.647341 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||34271|) 01:01:05.779371 * Connecting to 127.0.0.1 (127.0.0.1) port 34271 01:01:05.860014 * Trying 127.0.0.1:34271... 01:01:05.958539 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 34271) from 127.0.0.1 port 40808 01:01:05.976442 => Send header, 8 bytes (0x8) 0000: TYPE I 01:01:05.991220 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:01:06.027022 => Send header, 10 bytes (0xa) 0000: SIZE 235 01:01:06.062929 <= Recv header, 28 bytes (0x1c) 0000: 500 command not understood 01:01:06.091748 => Send header, 10 bytes (0xa) 0000: STOR 235 01:01:06.105134 <= Recv header, 24 bytes (0x18) 0000: 125 Gimme gimme gimme 01:01:06.397048 => Send data, 61 bytes (0x3d) 0000: this is the *****crap******** that we're gonna upload..worx?. 01:01:06.586939 * upload completely sent off: 61 bytes 01:01:06.747578 * Remembering we are in dir "" 01:01:06.925584 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:01:07.244573 * Connection #0 to host 127.0.0.1:39413 left intact === End of file trace235 === Start of file upload.235 this isCMD (3584): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind237 ../src/curl -q --output log/7/curl237.out --include --trace-ascii log/7/trace237 --trace-time ftp://127.0.0.1:45353/237 --disable-epsv > log/7/stdout237 2> log/7/stderr237 the *****crap******** that we're gonna upload worx? === End of file upload.235 === Start of file upload235 this is the *****crap******** that we're gonna upload worx? === End of file upload235 === Start of file valgrind235 ==223949== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind235 test 0237...[FTP getting bad host in 227-response to PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind237 ../src/curl -q --output log/7/curl237.out --include --trace-ascii log/7/trace237 --trace-time ftp://127.0.0.1:45353/237 --disable-epsv > log/7/stdout237 2> log/7/stderr237 valgrind ERROR ==224193== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 237 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind237 ../src/curl -q --output log/7/curl237.out --include --trace-ascii log/7/trace237 --trace-time ftp://127.0.0.1:45353/237 --disable-epsv > log/7/stdout237 2> log/7/stderr237 === End of file commands.log === Start of file ftp_server.log 01:00:22.541123 ====> Client connect 01:00:22.542067 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:00:22.551425 < "USER anonymous" 01:00:22.552709 > "331 We are happy you popped in![CR][LF]" 01:00:22.553652 < "PASS ftp@example.com" 01:00:22.553897 > "230 Welcome you silly person[CR][LF]" 01:00:22.555041 < "PWD" 01:00:22.555441 > "257 "/" is current directory[CR][LF]" 01:00:22.557863 < "EPSV" 01:00:22.558067 ====> Passive DATA channel requested by client 01:00:22.558205 DATA sockfilt for passive data channel starting... 01:00:22.598950 DATA sockfilt for passive data channel started (pid 224162) 01:00:22.600307 DATA sockfilt for passive data channel listens on port 45121 01:00:22.600759 > "229 Entering Passive Mode (|||45121|)[CR][LF]" 01:00:22.600943 Client has been notified that DATA conn will be accepted on port 45121 01:00:22.604421 Client connects to port 45121 01:00:22.604755 ====> Client established passive DATA connection on port 45121 01:00:22.605442 < "TYPE I" 01:00:22.605992 > "200 I modify TYPE as you wanted[CR][LF]" 01:00:22.606931 < "SIZE verifiedserver" 01:00:22.607229 > "213 18[CR][LF]" 01:00:22.608572 < "RETR verifiedserver" 01:00:22.610868 > "150 Binary junk (18 bytes).[CR][LF]" 01:00:22.611393 =====> Closing passive DATA connection... 01:00:22.611544 Server disconnects passive DATA connection 01:00:22.612708 Server disconnected passive DATA connection 01:00:22.612865 DATA sockfilt for passive data channel quits (pid 224162) 01:00:22.617303 DATA sockfilt for passive data channel quit (pid 224162) 01:00:22.617507 =====> Closed passive DATA connection 01:00:22.617782 > "226 File transfer complete[CR][LF]" 01:00:22.658342 < "QUIT" 01:00:22.658697 > "221 bye bye baby[CR][LF]" 01:00:22.664259 MAIN sockfilt said DISC 01:00:22.664472 ====> Client disconnected 01:00:22.664722 Awaiting input 01:01:09.634489 ====> Client connect 01:01:09.635265 FTPD: Getting commands from log/7/server.cmd 01:01:09.636062 FTPD: set custom reply for PASV command 01:01:09.636330 FTPD: run test case number: 237 01:01:09.637248 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:01:10.954909 < "USER anonymous" 01:01:10.955371 > "331 We are happy you popped in![CR][LF]" 01:01:11.088441 < "PASS ftp@example.com" 01:01:11.088868 > "230 Welcome you silly person[CR][LF]" 01:01:11.187607 < "PWD" 01:01:11.188078 > "257 "/" is current directory[CR][LF]" 01:01:11.397857 < "PASV" 01:01:11.398322 > "227 Entering Passive Mode (1216,256,2,127,127,127)[CR][LF]" 01:01:12.113652 MAIN sockfilt said DISC 01:01:12.114315 ====> Client disconnected 01:01:12.114639 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:00:22.156703 ====> Client connect 01:00:22.158252 Received DATA (on stdin) 01:00:22.158335 > 160 bytes data, server => client 01:00:22.158432 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:00:22.158522 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:00:22.158600 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:00:22.166522 < 16 bytes data, client => server 01:00:22.166619 'USER anonymous\r\n' 01:00:22.167653 Received DATA (on stdin) 01:00:22.167723 > 33 bytes data, server => client 01:00:22.168883 '331 We are happy you popped in!\r\n' 01:00:22.169136 < 22 bytes data, client => server 01:00:22.169209 'PASS ftp@example.com\r\n' 01:00:22.170094 Received DATA (on stdin) 01:00:22.170157 > 30 bytes data, server => client 01:00:22.170274 '230 Welcome you silly person\r\n' 01:00:22.170554 < 5 bytes data, client => server 01:00:22.170615 'PWD\r\n' 01:00:22.171219 Received DATA (on stdin) 01:00:22.171284 > 30 bytes data, server => client 01:00:22.171589 '257 "/" is current directory\r\n' 01:00:22.173365 < 6 bytes data, client => server 01:00:22.173429 'EPSV\r\n' 01:00:22.217126 Received DATA (on stdin) 01:00:22.217269 > 39 bytes data, server => client 01:00:22.217356 '229 Entering Passive Mode (|||45121|)\r\n' 01:00:22.220149 < 8 bytes data, client => server 01:00:22.220248 'TYPE I\r\n' 01:00:22.221636 Received DATA (on stdin) 01:00:22.221702 > 33 bytes data, server => client 01:00:22.221800 '200 I modify TYPE as you wanted\r\n' 01:00:22.222424 < 21 bytes data, client => server 01:00:22.222496 'SIZE verifiedserver\r\n' 01:00:22.223463 Received DATA (on stdin) 01:00:22.223535 > 8 bytes data, server => client 01:00:22.223599 '213 18\r\n' 01:00:22.224006 < 21 bytes data, client => server 01:00:22.224079 'RETR verifiedserver\r\n' 01:00:22.224768 Received DATA (on stdin) 01:00:22.224830 > 29 bytes data, server => client 01:00:22.224921 '150 Binary junk (18 bytes).\r\n' 01:00:22.233693 Received DATA (on stdin) 01:00:22.233787 > 28 bytes data, server => client 01:00:22.233866 '226 File transfer complete\r\n' 01:00:22.273596 < 6 bytes data, client => server 01:00:22.273724 'QUIT\r\n' 01:00:22.274596 Received DATA (on stdin) 01:00:22.274662 > 18 bytes data, server => client 01:00:22.274732 '221 bye bye baby\r\n' 01:00:22.275238 ====> Client disconnect 01:00:22.280844 Received ACKD (on stdin) 01:01:09.250004 ====> Client connect 01:01:09.253334 Received DATA (on stdin) 01:01:09.253452 > 160 bytes data, server => client 01:01:09.253567 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:01:09.253676 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:01:09.253769 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:01:10.565631 < 16 bytes data, client => server 01:01:10.565826 'USER anonymous\r\n' 01:01:10.571461 Received DATA (on stdin) 01:01:10.571555 > 33 bytes data, server => client 01:01:10.571645 '331 We are happy you popped in!\r\n' 01:01:10.699329 < 22 bytes data, client => server 01:01:10.699475 'PASS ftp@example.com\r\n' 01:01:10.704949 Received DATA (on stdin) 01:01:10.705045 > 30 bytes data, server => client 01:01:10.705130 '230 Welcome you silly person\r\n' 01:01:10.802693 < 5 bytes data, client => server 01:01:10.802881 'PWD\r\n' 01:01:10.804153 Received DATA (on stdin) 01:01:10.804236 > 30 bytes data, server => client 01:01:10.804320 '257 "/" is current directory\r\n' 01:01:11.012547 < 6 bytes data, client => server 01:01:11.012712 'PASV\r\n' 01:01:11.016786 Received DATA (on stdin) 01:01:11.016898 > 52 bytes data, server => client 01:01:11.017004 '227 Entering Passive Mode (1216,256,2,127,127,127)\r\n' 01:01:11.729191 ====> Client disconnect 01:01:11.730007 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:0CMD (6400): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind236 ../src/curl -q --output log/4/curl236.out --include --trace-ascii log/4/trace236 --trace-time ftp://127.0.0.1:38207/236 -T log/4/file236.txt -C - > log/4/stdout236 2> log/4/stderr236 0:22.205855 Running IPv4 version 01:00:22.213282 Listening on port 45121 01:00:22.213790 Wrote pid 224162 to log/7/server/ftp_sockdata.pid 01:00:22.214533 Received PING (on stdin) 01:00:22.215614 Received PORT (on stdin) 01:00:22.219935 ====> Client connect 01:00:22.227672 Received DATA (on stdin) 01:00:22.227973 > 18 bytes data, server => client 01:00:22.228318 'WE ROOLZ: 202639\r\n' 01:00:22.228546 Received DISC (on stdin) 01:00:22.230206 ====> Client forcibly disconnected 01:00:22.230377 Received QUIT (on stdin) 01:00:22.230449 quits 01:00:22.230933 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASV 227 Entering Passive Mode (1216,256,2,127,127,127) Testnum 237 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD PASV === End of file server.input === Start of file stderr237 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (14) Couldn't interpret the 227-response === End of file stderr237 === Start of file trace237 01:01:09.285035 * Trying 127.0.0.1:45353... 01:01:10.207560 * Established connection to 127.0.0.1 (127.0.0.1 port 45353) from 127.0.0.1 port 49346 01:01:10.464480 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:01:10.823630 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:01:10.851049 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:01:10.859476 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:01:10.865085 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:01:10.974000 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:01:11.057647 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:01:11.084751 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:01:11.156049 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:01:11.186432 => Send header, 5 bytes (0x5) 0000: PWD 01:01:11.204296 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:01:11.240629 * Entry path is '/' 01:01:11.345222 * Request has same path as previous transfer 01:01:11.396765 => Send header, 6 bytes (0x6) 0000: PASV 01:01:11.432844 * Connect data stream passively 01:01:11.442642 <= Recv header, 52 bytes (0x34) 0000: 227 Entering Passive Mode (1216,256,2,127,127,127) 01:01:11.540334 * Couldn't interpret the 227-response 01:01:11.887149 * shutting down connection #0 === End of file trace237 === Start of file valgrind237 ==224193== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind237 test 0236...[FTP resume upload but denied access to remote file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind236 ../src/curl -q --output log/4/curl236.out --include --trace-ascii log/4/trace236 --trace-time ftp://127.0.0.1:38207/236 -T log/4/file236.txt -C - > log/4/stdout236 2> log/4/stderr236 valgrind ERROR ==224165== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 236 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind236 ../src/curl -q --output log/4/curl236.out --include --trace-ascii log/4/trace236 --trace-time ftp://127.0.0.1:38207/236 -T log/4/file236.txt -C - > log/4/stdout236 2> log/4/stderr236 === End of file commands.log === Start of file file236.txt Test data === End of file file236.txt === Start of file ftp_server.log 01:00:22.054837 ====> Client connect 01:00:22.055825 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:00:22.064557 < "USER anonymous" 01:00:22.064895 > "331 We are happy you popped in![CR][LF]" 01:00:22.067166 < "PASS ftp@example.com" 01:00:22.067464 > "230 Welcome you silly person[CR][LF]" 01:00:22.068643 < "PWD" 01:00:22.068900 > "257 "/" is current directory[CR][LF]" 01:00:22.071913 < "EPSV" 01:00:22.072210 ====> Passive DATA channel requested by client 01:00:22.072356 DATA sockfilt for passive data channel starting... 01:00:22.111207 DATA sockfilt for passive data channel started (pid 224138) 01:00:22.112661 DATA sockfilt for passive data channel listens on port 41739 01:00:22.115672 > "229 Entering Passive Mode (|||41739|)[CR][LF]" 01:00:22.115864 Client has been notified that DATA conn will be accepted on port 41739 01:00:22.116088 Client connects to port 41739 01:00:22.116273 ====> Client established passive DATA connection on port 41739 01:00:22.117048 < "TYPE I" 01:00:22.117560 > "200 I modify TYPE as you wanted[CR][LF]" 01:00:22.118566 < "SIZE verifiedserver" 01:00:22.119239 > "213 18[CR][LF]" 01:00:22.120256 < "RETR verifiedserver" 01:00:22.120554 > "150 Binary junk (18 bytes).[CR][LF]" 01:00:22.121167 =====> Closing passive DATA connection... 01:00:22.121350 Server disconnects passive DATA connection 01:00:22.127605 Server disconnected passive DATA connection 01:00:22.127839 DATA sockfilt for passive data channel quits (pid 224138) 01:00:22.130851 DATA sockfilt for passive data channel quit (pid 224138) 01:00:22.131089 =====> Closed passive DATA connection 01:00:22.131409 > "226 File transfer complete[CR][LF]" 01:00:22.182646 < "QUIT" 01:00:22.183076 > "221 bye bye baby[CR][LF]" 01:00:22.187687 MAIN sockfilt said DISC 01:00:22.187919 ====> Client disconnected 01:00:22.188203 Awaiting input 01:01:09.316726 ====> Client connect 01:01:09.317495 FTPD: Getting commands from log/4/server.cmd 01:01:09.318314 FTPD: set custom reply for SIZE command 01:01:09.318765 FTPD: set custom reply for APPE command 01:01:09.319182 FTPD: set custom reply for STOR command 01:01:09.319572 FTPD: set custom reply for SIZE command 01:01:09.319826 FTPD: run test case number: 236 01:01:09.328128 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:01:10.588615 < "USER anonymous" 01:01:10.589043 > "331 We are happy you popped in![CR][LF]" 01:01:10.704922 < "PASS ftp@example.com" 01:01:10.705676 > "230 Welcome you silly person[CR][LF]" 01:01:10.796314 < "PWD" 01:01:10.797162 > "257 "/" is current directory[CR][LF]" 01:01:11.008848 < "EPSV" 01:01:11.009196 ====> Passive DATA channel requested by client 01:01:11.009355 DATA sockfilt for passive data channel starting... 01:01:11.077711 DATA sockfilt for passive data channel started (pid 225271) 01:01:11.078901 DATA sockfilt for passive data channel listens on port 35303 01:01:11.079271 > "229 Entering Passive Mode (|||35303|)[CR][LF]" 01:01:11.079457 Client has been notified that DATA conn will be accepted on port 35303 01:01:11.301323 Client connects to port 35303 01:01:11.301927 ====> Client established passive DATA connection on port 35303 01:01:11.401427 < "TYPE I" 01:01:11.401864 > "200 I modify TYPE as you wanted[CR][LF]" 01:01:11.462442 < "SIZE 236" 01:01:11.467737 > "500 command not understood[CR][LF]" 01:01:11.532046 < "STOR 236" 01:01:11.532453 > "550 I said: access to this file is very much denied[CR][LF]" 01:01:12.817760 < "QUIT" 01:01:12.818215 > "221 bye bye baby[CR][LF]" 01:01:13.046120 MAIN sockfilt said DISC 01:01:13.046673 ====> Client disconnected 01:01:13.050023 DATA sockfilt for passive data channel killed now 01:01:13.050248 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:00:21.670405 ====> Client connect 01:00:21.671667 Received DATA (on stdin) 01:00:21.671744 > 160 bytes data, server => client 01:00:21.671850 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:00:21.671960 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:00:21.672062 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:00:21.679780 < 16 bytes data, client => server 01:00:21.679896 'USER anonymous\r\n' 01:00:21.680805 Received DATA (on stdin) 01:00:21.680889 > 33 bytes data, server => client 01:00:21.680985 '331 We are happy you popped in!\r\n' 01:00:21.681338 < 22 bytes data, client => server 01:00:21.681439 'PASS ftp@example.com\r\n' 01:00:21.683631 Received DATA (on stdin) 01:00:21.683713 > 30 bytes data, server => client 01:00:21.683790 '230 Welcome you silly person\r\n' 01:00:21.684068 < 5 bytes data, client => server 01:00:21.684131 'PWD\r\n' 01:00:21.685033 Received DATA (on stdin) 01:00:21.685096 > 30 bytes data, server => client 01:00:21.685171 '257 "/" is current directory\r\n' 01:00:21.687114 < 6 bytes data, client => server 01:00:21.687205 'EPSV\r\n' 01:00:21.728892 Received DATA (on stdin) 01:00:21.729036 > 39 bytes data, server => client 01:00:21.729145 '229 Entering Passive Mode (|||41739|)\r\n' 01:00:21.732452 < 8 bytes data, client => server 01:00:21.732528 'TYPE I\r\n' 01:00:21.733223 Received DATA (on stdin) 01:00:21.733287 > 33 bytes data, server => client 01:00:21.733384 '200 I modify TYPE as you wanted\r\n' 01:00:21.734032 < 21 bytes data, client => server 01:00:21.734113 'SIZE verifiedserver\r\n' 01:00:21.734793 Received DATA (on stdin) 01:00:21.734859 > 8 bytes data, server => client 01:00:21.735064 '213 18\r\n' 01:00:21.735732 < 21 bytes data, client => server 01:00:21.735809 'RETR verifiedserver\r\n' 01:00:21.738861 Received DATA (on stdin) 01:00:21.738947 > 29 bytes data, server => client 01:00:21.739029 '150 Binary junk (18 bytes).\r\n' 01:00:21.747290 Received DATA (on stdin) 01:00:21.747396 > 28 bytes data, server => client 01:00:21.747471 '226 File transfer complete\r\n' 01:00:21.797621 < 6 bytes data, client => server 01:00:21.797793 'QUIT\r\n' 01:00:21.798962 Received DATA (on stdin) 01:00:21.799037 > 18 bytes data, server => client 01:00:21.799111 '221 bye bye baby\r\n' 01:00:21.803521 ====> Client disconnect 01:00:21.806849 Received ACKD (on stdin) 01:01:08.932266 ====> Client connect 01:01:08.940110 Received DATA (on stdin) 01:01:08.940240 > 160 bytes data, server => client 01:01:08.943494 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:01:08.943615 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:01:08.943704 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:01:10.203180 < 16 bytes data, client => server 01:01:10.203364 'USER anonymous\r\n' 01:01:10.205127 Received DATA (on stdin) 01:01:10.205209 > 33 bytes data, server => client 01:01:10.205310 '331 We are happy you popped in!\r\n' 01:01:10.319542 < 22 bytes data, client => server 01:01:10.319728 'PASS ftp@example.com\r\n' 01:01:10.321163 Received DATA (on stdin) 01:01:10.321244 > 30 bytes data, server => client 01:01:10.321360 '230 Welcome you silly person\r\n' 01:01:10.410976 < 5 bytes data, client => server 01:01:10.411168 'PWD\r\n' 01:01:10.412723 Received DATA (on stdin) 01:01:10.412809 > 30 bytes data, server => client 01:01:10.412903 '257 "/" is current directory\r\n' 01:01:10.623454 < 6 bytes data, client => server 01:01:10.623656 'EPSV\r\n' 01:01:10.695576 Received DATA (on stdin) 01:01:10.695728 > 39 bytes data, server => client 01:01:10.695834 '229 Entering Passive Mode (|||35303|)\r\n' 01:01:11.016091 < 8 bytes data, client => server 01:01:11.016245 'TYPE I\r\n' 01:01:11.020100 Received DATA (on stdin) 01:01:11.020191 > 33 bytes data, server => client 01:01:11.020284 '200 I modify TYPE as you wanted\r\n' 01:01:11.077076 < 10 bytes data, client => server 01:01:11.077254 'SIZE 236\r\n' 01:01:11.078723 Received DATA (on stdin) 01:01:11.078807 > 28 bytes data, server => client 01:01:11.084045 '500 command not understood\r\n' 01:01:11.146759 < 10 bytes data, client => server 01:01:11.146948 'STOR 236\r\n' 01:01:11.148519 Received DATA (on stdin) 01:01:11.148594 > 53 bytes data, server => client 01:01:11.148690 '550 I said: access to this file is very much denied\r\n' 01:01:12.432382 < 6 bytes data, client => server 01:01:12.432568 'QUIT\r\n' 01:01:12.434321 Received DATA (on stdin) 01:01:12.434407 > 18 bytes data, server => client 01:01:12.434486 '221 bye bye baby\r\n' 01:01:12.661650 ====> Client disconnect 01:01:12.663438 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:00:22.719062 Running IPv4 version 01:00:22.725639 Listening on port 41739 01:00:22.726060 Wrote pid 224138 to log/4/server/ftp_sockdata.pid 01:00:22.726770 Received PING (on stdin) 01:00:22.727933 Received PORT (on stdin) 01:00:22.731411 ====> Client connect 01:00:22.737623 Received DATA (on stdin) 01:00:22.737942 > 18 bytes data, server => client 01:00:22.738321 'WE ROOLZ: 201673\r\n' 01:00:22.738570 Received DISC (on stdin) 01:00:22.738685 ====> Client forcibly disconnected 01:00:22.744010 Received QUIT (on stdin) 01:00:22.744094 quits 01:00:22.744567 ============> sockfilt quits 01:01:11.681557 Running IPv4 version 01:01:11.689081 Listening on port 35303 01:01:11.689568 Wrote pid 225271 to log/4/server/ftp_sockdata.pid 01:01:11.690328 Received PING (on stdin) 01:01:11.694099 Received PORT (on stdin) 01:01:11.916889 ====> Client connect 01:01:12.352472 ====> Client disconnect === End of file ftp_sockdata.log === Start of file server.cmd REPLY SIZE 550 access to this file is very much denied REPLY APPE 550 I said: access to this file is very much denied REPLY STOR 550 I said: access to this file is very much denied REPLY SIZE 500 command not understood Testnum 236 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE 236 STOR 236 QUIT === End of file server.input === Start of file stderr236 ** Resuming transfer from byte position -1 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (25) Failed FTP upload: 550 === End of file stderr236 === Start of file trace236 01:01:08.995629 * Trying 127.0.0.1:38207... 01:01:09.875445 * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 57360 01:01:10.112724 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:01:10.462821 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:01:10.491035 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:01:10.498692 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:01:10.504051 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:01:10.607893 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:01:10.684086 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:01:10.705012 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:01:10.774756 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:01:10.795225 => Send header, 5 bytes (0x5) 0000: PWD 01:01:10.812746 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:01:10.851412 * Entry path is '/' 01:01:10.954773 * Request has same path as previous transfer 01:01:11.007740 => Send header, 6 bytes (0x6) 0000: EPSV 01:01:11.027348 * Connect data stream passiveCMD (3328): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind238 ../src/curl -q --output log/1/curl238.out --include --trace-ascii log/1/trace238 --trace-time ftp://127.0.0.1:37481/238 > log/1/stdout238 2> log/1/stderr238 ly 01:01:11.103749 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||35303|) 01:01:11.231161 * Connecting to 127.0.0.1 (127.0.0.1) port 35303 01:01:11.294025 * Trying 127.0.0.1:35303... 01:01:11.382173 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 35303) from 127.0.0.1 port 47386 01:01:11.400346 => Send header, 8 bytes (0x8) 0000: TYPE I 01:01:11.418467 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:01:11.461341 => Send header, 10 bytes (0xa) 0000: SIZE 236 01:01:11.504979 <= Recv header, 28 bytes (0x1c) 0000: 500 command not understood 01:01:11.531001 => Send header, 10 bytes (0xa) 0000: STOR 236 01:01:11.543861 <= Recv header, 53 bytes (0x35) 0000: 550 I said: access to this file is very much denied 01:01:11.582550 * Failed FTP upload: 550 01:01:11.661500 * Remembering we are in dir "" 01:01:11.820249 * Uploaded unaligned file size (0 out of 10 bytes) 01:01:12.046022 * Connection #0 to host 127.0.0.1:38207 left intact === End of file trace236 === Start of file valgrind236 ==224165== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind236 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 238 in state 4 Runner 2 (id 185908) running test 242 in state 4 Runner 3 (id 185910) running test 243 in state 4 Runner 4 (id 185912) running test 246 in state 4 Runner 5 (id 185914) running test 239 in state 4 Runner 6 (id 185916) running test 244 in state 4 Runner 7 (id 185918) running test 245 in state 4 Runner 8 (id 185920) running test 240 in state 4 test 0238...[FTP getting bad port in response to EPSV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind238 ../src/curl -q --output log/1/curl238.out --include --trace-ascii log/1/trace238 --trace-time ftp://127.0.0.1:37481/238 > log/1/stdout238 2> log/1/stderr238 valgrind ERROR ==224454== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 238 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind238 ../src/curl -q --output log/1/curl238.out --include --trace-ascii log/1/trace238 --trace-time ftp://127.0.0.1:37481/238 > log/1/stdout238 2> log/1/stderr238 === End of file commands.log === Start of file ftp_server.log 01:00:34.366933 ====> Client connect 01:00:34.368488 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:00:34.375405 < "USER anonymous" 01:00:34.380979 > "331 We are happy you popped in![CR][LF]" 01:00:34.382091 < "PASS ftp@example.com" 01:00:34.382372 > "230 Welcome you silly person[CR][LF]" 01:00:34.383393 < "PWD" 01:00:34.383658 > "257 "/" is current directory[CR][LF]" 01:00:34.385862 < "EPSV" 01:00:34.386060 ====> Passive DATA channel requested by client 01:00:34.386203 DATA sockfilt for passive data channel starting... 01:00:34.426057 DATA sockfilt for passive data channel started (pid 224448) 01:00:34.427302 DATA sockfilt for passive data channel listens on port 39279 01:00:34.427682 > "229 Entering Passive Mode (|||39279|)[CR][LF]" 01:00:34.427861 Client has been notified that DATA conn will be accepted on port 39279 01:00:34.430519 Client connects to port 39279 01:00:34.430733 ====> Client established passive DATA connection on port 39279 01:00:34.431377 < "TYPE I" 01:00:34.431655 > "200 I modify TYPE as you wanted[CR][LF]" 01:00:34.432502 < "SIZE verifiedserver" 01:00:34.432799 > "213 18[CR][LF]" 01:00:34.433679 < "RETR verifiedserver" 01:00:34.433963 > "150 Binary junk (18 bytes).[CR][LF]" 01:00:34.436365 =====> Closing passive DATA connection... 01:00:34.436540 Server disconnects passive DATA connection 01:00:34.437915 Server disconnected passive DATA connection 01:00:34.438087 DATA sockfilt for passive data channel quits (pid 224448) 01:00:34.441122 DATA sockfilt for passive data channel quit (pid 224448) 01:00:34.441289 =====> Closed passive DATA connection 01:00:34.441544 > "226 File transfer complete[CR][LF]" 01:00:34.481921 < "QUIT" 01:00:34.482272 > "221 bye bye baby[CR][LF]" 01:00:34.487607 MAIN sockfilt said DISC 01:00:34.487806 ====> Client disconnected 01:00:34.488067 Awaiting input 01:01:21.824806 ====> Client connect 01:01:21.825655 FTPD: Getting commands from log/1/server.cmd 01:01:21.826491 FTPD: set custom reply for EPSV command 01:01:21.826785 FTPD: run test case number: 238 01:01:21.827850 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:01:23.117328 < "USER anonymous" 01:01:23.117772 > "331 We are happy you popped in![CR][LF]" 01:01:23.223005 < "PASS ftp@example.com" 01:01:23.223756 > "230 Welcome you silly person[CR][LF]" 01:01:23.313628 < "PWD" 01:01:23.314402 > "257 "/" is current directory[CR][LF]" 01:01:23.521589 < "EPSV" 01:01:23.524321 > "229 Entering Passive Mode (|||1000000|)[CR][LF]" 01:01:24.678970 < "QUIT" 01:01:24.679709 > "221 bye bye baby[CR][LF]" 01:01:24.910586 MAIN sockfilt said DISC 01:01:24.911110 ====> Client disconnected 01:01:24.911416 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:00:34.982465 ====> Client connect 01:00:34.983759 Received DATA (on stdin) 01:00:34.983847 > 160 bytes data, server => client 01:00:34.983979 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:00:34.984081 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:00:34.984167 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:00:34.990425 < 16 bytes data, client => server 01:00:34.990531 'USER anonymous\r\n' 01:00:34.991636 Received DATA (on stdin) 01:00:34.991710 > 33 bytes data, server => client 01:00:34.997180 '331 We are happy you popped in!\r\n' 01:00:34.997472 < 22 bytes data, client => server 01:00:34.997552 'PASS ftp@example.com\r\n' 01:00:34.998505 Received DATA (on stdin) 01:00:34.998572 > 30 bytes data, server => client 01:00:34.998652 '230 Welcome you silly person\r\n' 01:00:34.998872 < 5 bytes data, client => server 01:00:34.998934 'PWD\r\n' 01:00:34.999772 Received DATA (on stdin) 01:00:34.999837 > 30 bytes data, server => client 01:00:34.999916 '257 "/" is current directory\r\n' 01:00:35.001332 < 6 bytes data, client => server 01:00:35.001404 'EPSV\r\n' 01:00:35.043539 Received DATA (on stdin) 01:00:35.043710 > 39 bytes data, server => client 01:00:35.043805 '229 Entering Passive Mode (|||39279|)\r\n' 01:00:35.046103 < 8 bytes data, client => server 01:00:35.046180 'TYPE I\r\n' 01:00:35.047541 Received DATA (on stdin) 01:00:35.047615 > 33 bytes data, server => client 01:00:35.047695 '200 I modify TYPE as you wanted\r\n' 01:00:35.048042 < 21 bytes data, client => server 01:00:35.048116 'SIZE verifiedserver\r\n' 01:00:35.048699 Received DATA (on stdin) 01:00:35.048766 > 8 bytes data, server => client 01:00:35.048834 '213 18\r\n' 01:00:35.049247 < 21 bytes data, client => server 01:00:35.049321 'RETR verifiedserver\r\n' 01:00:35.049861 Received DATA (on stdin) 01:00:35.049922 > 29 bytes data, server => client 01:00:35.049998 '150 Binary junk (18 bytes).\r\n' 01:00:35.057436 Received DATA (on stdin) 01:00:35.057534 > 28 bytes data, server => client 01:00:35.057617 '226 File transfer complete\r\n' 01:00:35.097063 < 6 bytes data, client => server 01:00:35.097190 'QUIT\r\n' 01:00:35.098157 Received DATA (on stdin) 01:00:35.098225 > 18 bytes data, server => client 01:00:35.098297 '221 bye bye baby\r\n' 01:00:35.098826 ====> Client disconnect 01:00:35.103738 Received ACKD (on stdin) 01:01:22.440106 ====> Client connect 01:01:22.443593 Received DATA (CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind239 ../src/curl -q --output log/5/curl239.out --include --trace-ascii log/5/trace239 --trace-time http://127.0.0.1:46263/239 --proxy http://127.0.0.1:46263 --proxy-user testuser:testpass --proxy-ntlm -d "postit" > log/5/stdout239 2> log/5/stderr239 on stdin) 01:01:22.443707 > 160 bytes data, server => client 01:01:22.443817 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:01:22.443920 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:01:22.444011 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:01:23.732149 < 16 bytes data, client => server 01:01:23.732352 'USER anonymous\r\n' 01:01:23.736744 Received DATA (on stdin) 01:01:23.736842 > 33 bytes data, server => client 01:01:23.736935 '331 We are happy you popped in!\r\n' 01:01:23.837708 < 22 bytes data, client => server 01:01:23.837885 'PASS ftp@example.com\r\n' 01:01:23.839234 Received DATA (on stdin) 01:01:23.839313 > 30 bytes data, server => client 01:01:23.839418 '230 Welcome you silly person\r\n' 01:01:23.928307 < 5 bytes data, client => server 01:01:23.928498 'PWD\r\n' 01:01:23.929859 Received DATA (on stdin) 01:01:23.929938 > 30 bytes data, server => client 01:01:23.930046 '257 "/" is current directory\r\n' 01:01:24.136244 < 6 bytes data, client => server 01:01:24.136443 'EPSV\r\n' 01:01:24.137789 Received DATA (on stdin) 01:01:24.137872 > 41 bytes data, server => client 01:01:24.140439 '229 Entering Passive Mode (|||1000000|)\r\n' 01:01:25.293636 < 6 bytes data, client => server 01:01:25.293827 'QUIT\r\n' 01:01:25.295179 Received DATA (on stdin) 01:01:25.295260 > 18 bytes data, server => client 01:01:25.295362 '221 bye bye baby\r\n' 01:01:25.526110 ====> Client disconnect 01:01:25.530066 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:00:34.032844 Running IPv4 version 01:00:34.040252 Listening on port 39279 01:00:34.040706 Wrote pid 224448 to log/1/server/ftp_sockdata.pid 01:00:34.041446 Received PING (on stdin) 01:00:34.042529 Received PORT (on stdin) 01:00:34.046287 ====> Client connect 01:00:34.052652 Received DATA (on stdin) 01:00:34.052941 > 18 bytes data, server => client 01:00:34.053297 'WE ROOLZ: 202066\r\n' 01:00:34.053539 Received DISC (on stdin) 01:00:34.053655 ====> Client forcibly disconnected 01:00:34.054179 Received QUIT (on stdin) 01:00:34.054253 quits 01:00:34.054728 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPSV 229 Entering Passive Mode (|||1000000|) Testnum 238 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV QUIT === End of file server.input === Start of file stderr238 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (13) Illegal port number in EPSV reply === End of file stderr238 === Start of file trace238 01:01:21.503818 * Trying 127.0.0.1:37481... 01:01:22.391438 * Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 127.0.0.1 port 52420 01:01:22.645879 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:01:22.989019 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:01:23.018314 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:01:23.028423 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:01:23.033590 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:01:23.136615 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:01:23.201260 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:01:23.223093 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:01:23.293319 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:01:23.312526 => Send header, 5 bytes (0x5) 0000: PWD 01:01:23.328055 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:01:23.364188 * Entry path is '/' 01:01:23.469112 * Request has same path as previous transfer 01:01:23.520489 => Send header, 6 bytes (0x6) 0000: EPSV 01:01:23.534770 * Connect data stream passively 01:01:23.543821 <= Recv header, 41 bytes (0x29) 0000: 229 Entering Passive Mode (|||1000000|) 01:01:23.619811 * Illegal port number in EPSV reply 01:01:23.971404 * Connection #0 to host 127.0.0.1:37481 left intact === End of file trace238 === Start of file valgrind238 ==224454== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind238 test 0239...[HTTP proxy-auth NTLM and then POST] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind239 ../src/curl -q --output log/5/curl239.out --include --trace-ascii log/5/trace239 --trace-time http://127.0.0.1:46263/239 --proxy http://127.0.0.1:46263 --proxy-user testuser:testpass --proxy-ntlm -d "postit" > log/5/stdout239 2> log/5/stderr239 valgrind ERROR ==224607== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 239 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind239 ../src/curl -q --output log/5/curl239.out --include --trace-ascii log/5/trace239 --trace-time http://127.0.0.1:46263/239 --proxy http://127.0.0.1:46263 --proxy-user testuser:testpass --proxy-ntlm -d "postit" > log/5/stdout239 2> log/5/stderr239 === End of file commands.log === Start of file curl239.out HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 34 HTTP/1.1 200 Things are fine in proxy land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. === End of file curl239.out === Start of file http_server.log 01:00:37.544107 ====> Client connect 01:00:37.544274 accept_connection 3 returned 4 01:00:37.544349 accept_connection 3 returned 0 01:00:37.550976 Read 93 bytes 01:00:37.551070 Process 93 bytes request 01:00:37.551155 Got request: GET /verifiedserver HTTP/1.1 01:00:37.551217 Are-we-friendly question received 01:00:37.551326 Wrote request (93 bytes) input to log/5/server.input 01:00:37.551410 Identifying ourselves as friends 01:00:37.551581 Response sent (57 bytes) and written to log/5/server.response 01:00:37.551640 special request received, no persistency 01:00:37.551694 ====> Client disconnect 0 01:01:25.771986 ====> Client connect 01:01:25.772136 accept_connection 3 returned 4 01:01:25.772217 accept_connection 3 returned 0 01:01:27.025826 Read 275 bytes 01:01:27.026037 Process 275 bytes request 01:01:27.026138 Got request: POST http://127.0.0.1:46263/239 HTTP/1.1 01:01:27.026213 Serve test number 239 part 0 01:01:27.026445 - request found to be complete (239) 01:01:27.026636 Found Content-Length: 0 in the request 01:01:27.026735 Received NTLM type-1, sending back data 1001 01:01:27.026901 Wrote request (275 bytes) input to log/5/server.input 01:01:27.027019 Send response test239 section 01:01:27.027521 Response sent (356 bytes) and written to log/5/server.response 01:01:27.027593 => persistent connection request ended, awaits new request 01:01:30.378262 Read 413 bytes 01:01:30.378470 Process 413 bytes request 01:01:30.378579 Got request: POST http://127.0.0.1:46263/239 HTTP/1.1 01:01:30.378666 Serve test number 239 part 0 01:01:30.378916 - request found to be complete (239) 01:01:30.379129 Found Content-Length: 6 in the request 01:01:30.379249 Received NTLM type-3, sending back data 1002 01:01:30.379344 Expecting 6 POSTed bytes 01:CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind240 ../src/curl -q --output log/8/curl240.out --include --trace-ascii log/8/trace240 --trace-time -g "http://[::1]:38751/240" > log/8/stdout240 2> log/8/stderr240 01:30.379462 Wrote request (413 bytes) input to log/5/server.input 01:01:30.379562 Send response test239 section 01:01:30.379827 connection close instruction "swsclose" found in response 01:01:30.383406 Response sent (189 bytes) and written to log/5/server.response 01:01:30.383483 instructed to close connection after server-reply 01:01:30.383545 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 45598 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 239 === End of file server.cmd === Start of file server.input POST http://127.0.0.1:46263/239 HTTP/1.1 Host: 127.0.0.1:46263 Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive Content-Length: 0 Content-Type: application/x-www-form-urlencoded POST http://127.0.0.1:46263/239 HTTP/1.1 Host: 127.0.0.1:46263 Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive Content-Length: 6 Content-Type: application/x-www-form-urlencoded postit === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 34 Hey you, authenticate or go away HTTP/1.1 200 Things are fine in proxy land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. === End of file server.response === Start of file stderr239 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 34 100 34 0 0 6 0 0:00:05 0:00:04 0:00:01 9 100 34 100 34 0 0 6 0 0:00:05 0:00:05 --:--:-- 9 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 6 0 0 0 6 0 0 --:--:-- 0:00:06 --:--:-- 5 100 48 100 42 0 6 5 0 0:00:08 0:00:07 0:00:01 37 === End of file stderr239 === Start of file trace239 01:01:25.841831 * Trying 127.0.0.1:46263... 01:01:26.718029 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 59484 01:01:26.844904 * using HTTP/1.x 01:01:27.021353 * Proxy auth using NTLM with user 'testuser' 01:01:27.448160 => Send header, 275 bytes (0x113) 0000: POST http://127.0.0.1:46263/239 HTTP/1.1 002a: Host: 127.0.0.1:46263 0041: Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAA 0081: AAAAA= 0089: User-Agent: curl/8.17.0 00a2: Accept: */* 00af: Proxy-Connection: Keep-Alive 00cd: Content-Length: 0 00e0: Content-Type: application/x-www-form-urlencoded 0111: 01:01:27.821130 <= Recv header, 57 bytes (0x39) 0000: HTTP/1.1 407 Authorization Required to proxy me my dear 01:01:28.389330 <= Recv header, 243 bytes (0xf3) 0000: Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVD 0040: gyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQ 0080: ASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGU 00c0: AdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== 01:01:28.524191 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 34 01:01:28.635539 * Ignoring the response-body 01:01:28.652361 * setting size while ignoring 01:01:28.666960 <= Recv header, 2 bytes (0x2) 0000: 01:01:29.199462 * Connection #0 to host 127.0.0.1:46263 left intact 01:01:29.331482 * Issue another request to this URL: 'http://127.0.0.1:46263/239' 01:01:29.744048 * Reusing existing http: connection with proxy 127.0.0.1 01:01:30.604459 * Proxy auth using NTLM with user 'testuser' 01:01:30.769396 => Send header, 407 bytes (0x197) 0000: POST http://127.0.0.1:46263/239 HTTP/1.1 002a: Host: 127.0.0.1:46263 0041: Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAA 0081: AAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw 00c1: 47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1 0101: NUQVRJT04= 010d: User-Agent: curl/8.17.0 0126: Accept: */* 0133: Proxy-Connection: Keep-Alive 0151: Content-Length: 6 0164: Content-Type: application/x-www-form-urlencoded 0195: 01:01:30.816552 => Send data, 6 bytes (0x6) 0000: postit 01:01:30.859860 * upload completely sent off: 6 bytes 01:01:30.895576 <= Recv header, 53 bytes (0x35) 0000: HTTP/1.1 200 Things are fine in proxy land swsclose 01:01:30.919675 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 01:01:30.941384 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 01:01:30.949858 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 42 01:01:30.967342 <= Recv header, 2 bytes (0x2) 0000: 01:01:30.977958 <= Recv data, 42 bytes (0x2a) 0000: Contents of that page you requested, sir.. 01:01:31.093585 * Connection #0 to host 127.0.0.1:46263 left intact === End of file trace239 === Start of file valgrind239 ==224607== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind239 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/8/server/http_ipv6_server.pid" --logfile "log/8/http_ipv6_server.log" --logdir "log/8" --portfile log/8/server/http_ipv6_server.port --config log/8/server.cmd --ipv6 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP-IPv6 server is on PID 224738 port 38751 * pid http-ipv6 => 224738 224738 test 0240...[HTTP-IPv6 GET] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind240 ../src/curl -q --output log/8/curl240.out --include --trace-ascii log/8/trace240 --trace-time -g "http://[::1]:38751/240" > log/8/stdout240 2> log/8/stderr240 valgrind ERROR ==224747== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 240 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind240 ../src/curl -q --output log/8/curl240.out --include --trace-ascii log/8/trace240 --trace-time -g "http://[::1]:38751/240" > log/8/stdout240 2> log/8/stderr240 === End of file commands.log === Start of file curl240.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl240.out === Start of file http_ipv6_server.log 01:00:42.249106 Running HTTP IPv6 version on port 38751 01:00:42.255681 Wrote pid 224738 to log/8/server/http_ipv6_server.pid 01:00:42.255958 Wrote port 38751 to log/8/server/http_ipv6CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind242 ../src/curl -q --output log/2/curl242.out --include --trace-ascii log/2/trace242 --trace-time -g "http://foobar:barfoo@[::1]:36225/242" > log/2/stdout242 2> log/2/stderr242 _server.port 01:01:30.271941 ====> Client connect 01:01:30.272163 accept_connection 3 returned 4 01:01:30.272389 accept_connection 3 returned 0 01:01:31.323658 Read 78 bytes 01:01:31.324473 Process 78 bytes request 01:01:31.326401 Got request: GET /240 HTTP/1.1 01:01:31.330080 Serve test number 240 part 0 01:01:31.332533 - request found to be complete (240) 01:01:31.337205 Wrote request (78 bytes) input to log/8/server.input 01:01:31.337741 Send response test240 section 01:01:31.339756 Response sent (256 bytes) and written to log/8/server.response 01:01:31.339953 => persistent connection request ended, awaits new request 01:01:33.214541 Connection closed by client 01:01:33.214822 ====> Client disconnect 0 === End of file http_ipv6_server.log === Start of file server.cmd Testnum 240 === End of file server.cmd === Start of file server.input GET /240 HTTP/1.1 Host: [::1]:38751 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr240 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr240 === Start of file trace240 01:01:30.284330 * Trying [::1]:38751... 01:01:31.266819 * Established connection to ::1 (::1 port 38751) from ::1 port 55946 01:01:31.387695 * using HTTP/1.x 01:01:31.742367 => Send header, 78 bytes (0x4e) 0000: GET /240 HTTP/1.1 0013: Host: [::1]:38751 0026: User-Agent: curl/8.17.0 003f: Accept: */* 004c: 01:01:32.090991 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:01:32.402228 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:01:32.509044 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:01:32.534424 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:01:32.542182 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:01:32.549420 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:01:32.579101 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:01:32.633362 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:01:32.665588 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:01:32.670144 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:01:32.745207 <= Recv header, 1 bytes (0x1) 0000: . 01:01:32.800724 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:01:32.907316 * we are done reading and this is set to close, stop send 01:01:32.936677 * abort upload 01:01:33.398776 * shutting down connection #0 === End of file trace240 === Start of file valgrind240 ==224747== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind240 test 0242...[HTTP-IPv6 GET with username+password in URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind242 ../src/curl -q --output log/2/curl242.out --include --trace-ascii log/2/trace242 --trace-time -g "http://foobar:barfoo@[::1]:36225/242" > log/2/stdout242 2> log/2/stderr242 valgrind ERROR ==224927== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 242 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind242 ../src/curl -q --output log/2/curl242.out --include --trace-ascii log/2/trace242 --trace-time -g "http://foobar:barfoo@[::1]:36225/242" > log/2/stdout242 2> log/2/stderr242 === End of file commands.log === Start of file curl242.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Connection: close hello === End of file curl242.out === Start of file http_ipv6_server.log 01:00:47.643377 ====> Client connect 01:00:47.643639 accept_connection 3 returned 4 01:00:47.643828 accept_connection 3 returned 0 01:00:47.653303 Read 89 bytes 01:00:47.653952 Process 89 bytes request 01:00:47.655679 Got request: GET /verifiedserver HTTP/1.1 01:00:47.655984 Are-we-friendly question received 01:00:47.656446 Wrote request (89 bytes) input to log/2/server.input 01:00:47.656861 Identifying ourselves as friends 01:00:47.657560 Response sent (57 bytes) and written to log/2/server.response 01:00:47.657725 special request received, no persistency 01:00:47.657809 ====> Client disconnect 0 01:01:35.171015 ====> Client connect 01:01:35.171163 accept_connection 3 returned 4 01:01:35.171242 accept_connection 3 returned 0 01:01:36.275047 Read 121 bytes 01:01:36.275280 Process 121 bytes request 01:01:36.275382 Got request: GET /242 HTTP/1.1 01:01:36.275585 Serve test number 242 part 0 01:01:36.278720 - request found to be complete (242) 01:01:36.279736 Wrote request (121 bytes) input to log/2/server.input 01:01:36.279957 Send response test242 section 01:01:36.287494 Response sent (95 bytes) and written to log/2/server.response 01:01:36.287604 => persistent connection request ended, awaits new request 01:01:38.222772 Connection closed by client 01:01:38.223037 ====> Client disconnect 0 === End of file http_ipv6_server.log === Start of file http_ipv6_verify.log * Trying [::1]:36225... * Established connection to ::1 (::1 port 36225) from ::1 port 51922 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: [::1]:36225 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host ::1:36225 left intact === End of file http_ipv6_verify.log === Start of file http_ipv6_verify.out WE ROOLZ: 224837 === End of file http_ipv6_verify.out === Start of file server.cmd Testnum 242 === End of file server.cmd === Start of file server.input GET /242 HTTP/1.1 Host: [::1]:36225 Authorization: Basic Zm9vYmFyOmJhcmZvbw== User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 224837 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Connection: close hello === End of file server.response === Start of file stderr242 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr242 === Start of file trace242 01:01:34.211112 * Trying [::1]:36225... 01:01:35.153516 * Established connection to ::1 (::1 port 36225) from ::1 port 33974 01:01:35.268532 * using HTTP/1.x 01:01:35.399964 * Server auth using Basic with user 'foobar' 01:01:35.695796 => Send header, 121 bytes (0x79) 0000: GET /242 HTTP/1.1 0013: Host: [::1]:36225 0026: Authorization: Basic Zm9vYmFyOmJhcmZvbw== 0051: User-Agent: curl/8.17.0 006a: Accept: */* 0077: 01:01:36.056873 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:01:36.395554 <= Recv headeCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind243 ../src/curl -q --output log/3/curl243.out --include --trace-ascii log/3/trace243 --trace-time http://127.0.0.1:46853/243 --proxy http://127.0.0.1:46853 --proxy-user testuser:testpass --proxy-anyauth -d "postit" > log/3/stdout243 2> log/3/stderr243 r, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:01:36.522073 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:01:36.597745 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:01:36.691697 <= Recv header, 1 bytes (0x1) 0000: . 01:01:36.752988 <= Recv data, 6 bytes (0x6) 0000: hello. 01:01:36.879210 * we are done reading and this is set to close, stop send 01:01:36.909741 * abort upload 01:01:37.406034 * shutting down connection #0 === End of file trace242 === Start of file valgrind242 ==224927== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind242 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 247 in state 4 Runner 2 (id 185908) running test 250 in state 4 Runner 3 (id 185910) running test 243 in state 4 Runner 4 (id 185912) running test 246 in state 4 Runner 5 (id 185914) running test 248 in state 4 Runner 6 (id 185916) running test 244 in state 4 Runner 7 (id 185918) running test 245 in state 4 Runner 8 (id 185920) running test 249 in state 4 test 0243...[HTTP POST with --proxy-anyauth, picking NTLM] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind243 ../src/curl -q --output log/3/curl243.out --include --trace-ascii log/3/trace243 --trace-time http://127.0.0.1:46853/243 --proxy http://127.0.0.1:46853 --proxy-user testuser:testpass --proxy-anyauth -d "postit" > log/3/stdout243 2> log/3/stderr243 valgrind ERROR ==225107== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 243 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind243 ../src/curl -q --output log/3/curl243.out --include --trace-ascii log/3/trace243 --trace-time http://127.0.0.1:46853/243 --proxy http://127.0.0.1:46853 --proxy-user testuser:testpass --proxy-anyauth -d "postit" > log/3/stdout243 2> log/3/stderr243 === End of file commands.log === Start of file curl243.out HTTP/1.1 407 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Proxy-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" Proxy-Authenticate: Basic realm="gimme all yer s3cr3ts" Proxy-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Connection: close HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 34 HTTP/1.1 200 Things are fine in proxy land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. === End of file curl243.out === Start of file http_server.log 01:01:04.177534 ====> Client connect 01:01:04.177699 accept_connection 3 returned 4 01:01:04.177774 accept_connection 3 returned 0 01:01:04.184843 Read 93 bytes 01:01:04.184947 Process 93 bytes request 01:01:04.185036 Got request: GET /verifiedserver HTTP/1.1 01:01:04.185100 Are-we-friendly question received 01:01:04.185216 Wrote request (93 bytes) input to log/3/server.input 01:01:04.185311 Identifying ourselves as friends 01:01:04.185471 Response sent (57 bytes) and written to log/3/server.response 01:01:04.185535 special request received, no persistency 01:01:04.185592 ====> Client disconnect 0 01:01:51.994961 ====> Client connect 01:01:51.995106 accept_connection 3 returned 4 01:01:51.995183 accept_connection 3 returned 0 01:01:53.208446 Read 209 bytes 01:01:53.208641 Process 209 bytes request 01:01:53.208731 Got request: POST http://127.0.0.1:46853/243 HTTP/1.1 01:01:53.208798 Serve test number 243 part 0 01:01:53.209018 - request found to be complete (243) 01:01:53.209210 Found Content-Length: 6 in the request 01:01:53.209369 Wrote request (209 bytes) input to log/3/server.input 01:01:53.209471 Send response test243 section 01:01:53.209728 connection close instruction "swsclose" found in response 01:01:53.209917 Response sent (325 bytes) and written to log/3/server.response 01:01:53.209980 instructed to close connection after server-reply 01:01:53.210051 ====> Client disconnect 0 01:01:55.496480 ====> Client connect 01:01:55.496619 accept_connection 3 returned 4 01:01:55.496714 accept_connection 3 returned 0 01:01:55.708513 Read 275 bytes 01:01:55.708723 Process 275 bytes request 01:01:55.708830 Got request: POST http://127.0.0.1:46853/243 HTTP/1.1 01:01:55.708909 Serve test number 243 part 0 01:01:55.709162 - request found to be complete (243) 01:01:55.709373 Found Content-Length: 0 in the request 01:01:55.709453 Received NTLM type-1, sending back data 1001 01:01:55.709549 Wrote request (275 bytes) input to log/3/server.input 01:01:55.709642 Send response test243 section 01:01:55.710119 Response sent (356 bytes) and written to log/3/server.response 01:01:55.710189 => persistent connection request ended, awaits new request 01:01:57.255223 Read 413 bytes 01:01:57.255421 Process 413 bytes request 01:01:57.255516 Got request: POST http://127.0.0.1:46853/243 HTTP/1.1 01:01:57.255586 Serve test number 243 part 0 01:01:57.255809 - request found to be complete (243) 01:01:57.256007 Found Content-Length: 6 in the request 01:01:57.256081 Received NTLM type-3, sending back data 1002 01:01:57.256166 Expecting 6 POSTed bytes 01:01:57.256268 Wrote request (413 bytes) input to log/3/server.input 01:01:57.256352 Send response test243 section 01:01:57.256623 connection close instruction "swsclose" found in response 01:01:57.256846 Response sent (189 bytes) and written to log/3/server.response 01:01:57.256909 instructed to close connection after server-reply 01:01:57.256966 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 47822 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 243 === End of file server.cmd === Start of file server.input POST http://127.0.0.1:46853/243 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive Content-Length: 6 Content-Type: application/x-www-form-urlencoded postitPOST http://127.0.0.1:46853/243 HTTP/1.1 Host: 127.0.0.1:46853 Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive Content-Length: 0 Content-Type: application/x-www-form-urlencoded POST http://127.0.0.1:46853/243 HTTP/1.1 Host: 127.0.0.1:46853 Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive Content-Length: 6 Content-Type: application/x-www-form-urlencoded postit === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 407 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Proxy-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" Proxy-Authenticate: Basic realm="gimme all yer s3cr3ts" Proxy-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Connection: close This is not the real page HTTP/1.1 407 AuthorizatiCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind244 ../src/curl -q --output log/6/curl244.out --include --trace-ascii log/6/trace244 --trace-time --ftp-method nocwd ftp://127.0.0.1:39413/fir%23t/th%69rd/244/ > log/6/stdout244 2> log/6/stderr244 on Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 34 Hey you, authenticate or go away HTTP/1.1 200 Things are fine in proxy land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. === End of file server.response === Start of file stderr243 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 6 0 0 100 6 0 1 0:00:06 0:00:03 0:00:03 2 100 6 0 0 100 6 0 1 0:00:06 0:00:04 0:00:02 1 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 34 100 34 0 0 5 0 0:00:06 0:00:06 --:--:-- 54 100 34 100 34 0 0 5 0 0:00:06 0:00:06 --:--:-- 50 100 6 0 0 0 6 0 0 --:--:-- 0:00:07 --:--:-- 0 100 48 100 42 0 6 5 0 0:00:08 0:00:07 0:00:01 242 === End of file stderr243 === Start of file trace243 01:01:52.075038 * Trying 127.0.0.1:46853... 01:01:52.923796 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 43290 01:01:53.029451 * using HTTP/1.x 01:01:53.632726 => Send header, 203 bytes (0xcb) 0000: POST http://127.0.0.1:46853/243 HTTP/1.1 002a: Host: 127.0.0.1:46853 0041: User-Agent: curl/8.17.0 005a: Accept: */* 0067: Proxy-Connection: Keep-Alive 0085: Content-Length: 6 0098: Content-Type: application/x-www-form-urlencoded 00c9: 01:01:53.733237 => Send data, 6 bytes (0x6) 0000: postit 01:01:53.810057 * upload completely sent off: 6 bytes 01:01:54.076906 <= Recv header, 46 bytes (0x2e) 0000: HTTP/1.1 407 Authorization Required swsclose 01:01:54.369061 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 01:01:54.538275 <= Recv header, 62 bytes (0x3e) 0000: Proxy-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" 01:01:54.569315 <= Recv header, 57 bytes (0x39) 0000: Proxy-Authenticate: Basic realm="gimme all yer s3cr3ts" 01:01:54.582186 <= Recv header, 26 bytes (0x1a) 0000: Proxy-Authenticate: NTLM 01:01:54.605604 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 01:01:54.644858 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:01:54.724083 * Need to rewind upload for next request 01:01:54.779977 <= Recv header, 2 bytes (0x2) 0000: 01:01:55.188214 * shutting down connection #0 01:01:55.671628 * Issue another request to this URL: 'http://127.0.0.1:46853/243' 01:01:55.833306 * Hostname 127.0.0.1 was found in DNS cache 01:01:55.873906 * Trying 127.0.0.1:46853... 01:01:55.912304 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 43304 01:01:55.918851 * using HTTP/1.x 01:01:56.031020 * Proxy auth using NTLM with user 'testuser' 01:01:56.100487 => Send header, 275 bytes (0x113) 0000: POST http://127.0.0.1:46853/243 HTTP/1.1 002a: Host: 127.0.0.1:46853 0041: Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAA 0081: AAAAA= 0089: User-Agent: curl/8.17.0 00a2: Accept: */* 00af: Proxy-Connection: Keep-Alive 00cd: Content-Length: 0 00e0: Content-Type: application/x-www-form-urlencoded 0111: 01:01:56.165090 <= Recv header, 57 bytes (0x39) 0000: HTTP/1.1 407 Authorization Required to proxy me my dear 01:01:56.290718 <= Recv header, 243 bytes (0xf3) 0000: Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVD 0040: gyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQ 0080: ASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGU 00c0: AdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== 01:01:56.340613 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 34 01:01:56.371389 * Ignoring the response-body 01:01:56.388370 * setting size while ignoring 01:01:56.396201 <= Recv header, 2 bytes (0x2) 0000: 01:01:56.579074 * Connection #1 to host 127.0.0.1:46853 left intact 01:01:56.592171 * Issue another request to this URL: 'http://127.0.0.1:46853/243' 01:01:56.759863 * Reusing existing http: connection with proxy 127.0.0.1 01:01:57.617961 * Proxy auth using NTLM with user 'testuser' 01:01:57.641757 => Send header, 407 bytes (0x197) 0000: POST http://127.0.0.1:46853/243 HTTP/1.1 002a: Host: 127.0.0.1:46853 0041: Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAA 0081: AAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw 00c1: 47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1 0101: NUQVRJT04= 010d: User-Agent: curl/8.17.0 0126: Accept: */* 0133: Proxy-Connection: Keep-Alive 0151: Content-Length: 6 0164: Content-Type: application/x-www-form-urlencoded 0195: 01:01:57.685299 => Send data, 6 bytes (0x6) 0000: postit 01:01:57.690386 * upload completely sent off: 6 bytes 01:01:57.713475 <= Recv header, 53 bytes (0x35) 0000: HTTP/1.1 200 Things are fine in proxy land swsclose 01:01:57.726357 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 01:01:57.734913 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 01:01:57.742514 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 42 01:01:57.759389 <= Recv header, 2 bytes (0x2) 0000: 01:01:57.770061 <= Recv data, 42 bytes (0x2a) 0000: Contents of that page you requested, sir.. 01:01:57.883562 * Connection #1 to host 127.0.0.1:46853 left intact === End of file trace243 === Start of file valgrind243 ==225107== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind243 test 0244...[FTP dir listing with nocwd and URL encoded path] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind244 ../src/curl -q --output log/6/curl244.out --include --trace-ascii log/6/trace244 --trace-time --ftp-method nocwd ftp://127.0.0.1:39413/fir%23t/th%69rd/244/ > log/6/stdout244 2> log/6/stderr244 valgrind ERROR ==225290== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 244 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind244 ../src/curl -q --output log/6/curl244.out --include --trace-ascii log/6/trace244 --trace-time --ftp-method nocwd ftp://127.0.0.1:39413/fir%23t/th%69rd/244/ > log/6/stdout244 2> log/6/stderr244 === End of file commands.log === Start of file curl244.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl244.out === Start of file ftp_server.log 01:01:11.437189 ====> Client connect 01:01:11.441060 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:01:11.446237 < "USER anonymous" 01:01:11.446802 > "331 We are happy you popped in![CR][LF]" 01:01:11.447434 < "PASS ftp@example.com" 01:01:11.450954 > "230 Welcome you silly person[CR][LF]" 01:01:11.451582 < "PWD" 01:01:11.451826 > "257 "/" is current directory[CR][LF]" 01:01:11.453660 < "EPSV" 01:01:11.453848 ====> Passive DATA channel requested by client 01:01:11.453978 DATA sockfilt for passive data channel starting... 01:01:11.495816 DATA sockfilt for passive data channel started (pid 225284) 01:01:11.496944 DATA sockfilt for passive data channel listens on port 38531 01:01:11.497685 > "229 Entering Passive Mode (|||38531|)[CR][LF]" 01:01:11.497859 Client has been notified that DATA conn will be accepted on port 38531 01:01:11.500131 Client connects to port 38531 01:01:11.500377 ====> Client established passive DATA connection on port 38531 01:01:11.501042 < "TYPE I" 01:01:11.501332 > "200 I modify TYPE as you wanted[CR][LF]" 01:01:11.502686 < "SIZE verifiedserver" 01:01:11.503815 > "213 18[CR][LF]" 01:01:11.504336 < "RETR verifiedserver" 01:01:11.506770 > "150 Binary junk (18 bytes).[CR][LF]" 01:01:11.507301 =====> Closing passive DATA connection... 01:01:11.507454 Server disconnects passive DATA connection 01:01:11.508771 Server disconnected passive DATA connection 01:01:11.508940 DATA sockfilt for passive data channel quits (pid 225284) 01:01:11.515866 DATA sockfilt for passive data channel quit (pid 225284) 01:01:11.516102 =====> Closed passive DATA connection 01:01:11.516393 > "226 File transfer complete[CR][LF]" 01:01:11.556606 < "QUIT" 01:01:11.557955 > "221 bye bye baby[CR][LF]" 01:01:11.558193 MAIN sockfilt said DISC 01:01:11.558384 ====> Client disconnected 01:01:11.558662 Awaiting input 01:01:59.058665 ====> Client connect 01:01:59.059402 FTPD: Getting commands from log/6/server.cmd 01:01:59.059748 FTPD: run test case number: 244 01:01:59.061353 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:02:00.347961 < "USER anonymous" 01:02:00.348791 > "331 We are happy you popped in![CR][LF]" 01:02:00.460864 < "PASS ftp@example.com" 01:02:00.461671 > "230 Welcome you silly person[CR][LF]" 01:02:00.557010 < "PWD" 01:02:00.557752 > "257 "/" is current directory[CR][LF]" 01:02:00.786270 < "EPSV" 01:02:00.786612 ====> Passive DATA channel requested by client 01:02:00.786761 DATA sockfilt for passive data channel starting... 01:02:00.863459 DATA sockfilt for passive data channel started (pid 226442) 01:02:00.868345 DATA sockfilt for passive data channel listens on port 40137 01:02:00.871037 > "229 Entering Passive Mode (|||40137|)[CR][LF]" 01:02:00.871324 Client has been notified that DATA conn will be accepted on port 40137 01:02:01.083370 Client connects to port 40137 01:02:01.084002 ====> Client established passive DATA connection on port 40137 01:02:01.208492 < "TYPE A" 01:02:01.208919 > "200 I modify TYPE as you wanted[CR][LF]" 01:02:01.268702 < "LIST fir#t/third/244" 01:02:01.269120 > "150 here comes a directory[CR][LF]" 01:02:01.269315 pass LIST data on data connection 01:02:01.270476 send total 20 as data 01:02:01.274281 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 01:02:01.274516 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 01:02:01.274732 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 01:02:01.274948 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 01:02:01.275167 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 01:02:01.275375 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 01:02:01.275586 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 01:02:01.275813 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 01:02:01.276018 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 01:02:01.276217 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 01:02:01.276721 =====> Closing passive DATA connection... 01:02:01.276882 Server disconnects passive DATA connection 01:02:01.284260 Server disconnected passive DATA connection 01:02:01.284473 DATA sockfilt for passive data channel quits (pid 226442) 01:02:01.291254 DATA sockfilt for passive data channel quit (pid 226442) 01:02:01.291433 =====> Closed passive DATA connection 01:02:01.291720 > "226 ASCII transfer complete[CR][LF]" 01:02:03.438386 < "QUIT" 01:02:03.438826 > "221 bye bye baby[CR][LF]" 01:02:03.574332 MAIN sockfilt said DISC 01:02:03.574849 ====> Client disconnected 01:02:03.575171 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:01:11.052692 ====> Client connect 01:01:11.053890 Received DATA (on stdin) 01:01:11.053972 > 160 bytes data, server => client 01:01:11.057226 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:01:11.057329 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:01:11.057407 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:01:11.061421 < 16 bytes data, client => server 01:01:11.061521 'USER anonymous\r\n' 01:01:11.062366 Received DATA (on stdin) 01:01:11.062431 > 33 bytes data, server => client 01:01:11.062524 '331 We are happy you popped in!\r\n' 01:01:11.062781 < 22 bytes data, client => server 01:01:11.062850 'PASS ftp@example.com\r\n' 01:01:11.063525 Received DATA (on stdin) 01:01:11.063588 > 30 bytes data, server => client 01:01:11.066865 '230 Welcome you silly person\r\n' 01:01:11.067126 < 5 bytes data, client => server 01:01:11.067196 'PWD\r\n' 01:01:11.067657 Received DATA (on stdin) 01:01:11.067726 > 30 bytes data, server => client 01:01:11.067808 '257 "/" is current directory\r\n' 01:01:11.069211 < 6 bytes data, client => server 01:01:11.069282 'EPSV\r\n' 01:01:11.113087 Received DATA (on stdin) 01:01:11.113224 > 39 bytes data, server => client 01:01:11.113335 '229 Entering Passive Mode (|||38531|)\r\n' 01:01:11.115624 < 8 bytes data, client => server 01:01:11.115702 'TYPE I\r\n' 01:01:11.117399 Received DATA (on stdin) 01:01:11.117476 > 33 bytes data, server => client 01:01:11.117574 '200 I modify TYPE as you wanted\r\n' 01:01:11.117949 < 21 bytes data, client => server 01:01:11.118027 'SIZE verifiedserver\r\n' 01:01:11.118837 Received DATA (on stdin) 01:01:11.118910 > 8 bytes data, server => client 01:01:11.118997 '213 18\r\n' 01:01:11.119422 < 21 bytes data, client => server 01:01:11.119498 'RETR verifiedserver\r\n' 01:01:11.120465 Received DATA (on stdin) 01:01:11.120538 > 29 bytes data, server => client 01:01:11.120639 '150 Binary junk (18 bytes).\r\n' 01:01:11.132481 Received DATA (on stdin) 01:01:11.132598 > 28 bytes data, server => client 01:01:11.132689 '226 File transfer complete\r\n' 01:01:11.171400 < 6 bytes data, client => server 01:01:11.171548 'QUIT\r\n' 01:01:11.172828 Received DATA (on stdin) 01:01:11.172906 > 18 bytes data, server => client 01:01:11.173013 '221 bye bye baby\r\n' 01:01:11.173661 ====> Client disconnect 01:01:11.180106 Received ACKD (on stdin) 01:01:58.674120 ====> Client connect 01:01:58.676436 Received DATA (on stdin) 01:01:58.676534 > 160 bytes data, server => client 01:01:58.676687 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:01:58.676800 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:01:58.676895 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:01:59.962220 < 16 bytes data, client => server 01:01:59.962432 'USER anonymous\r\n' 01:01:59.964129 Received DATA (on stdin) 01:01:59.964218 > 33 bytes data, server => client 01:01:59.964346 '331 We are happy you popped in!\r\n' 01:02:00.075472 < 22 bytes data, client => server 01:02:00.075663 'PASS ftp@example.com\r\n' 01:02:00.077051 Received DATA (on stdin) 01:02:00.077135 > 30 bytes data, server => client 01:02:00.077247 '230 Welcome you silly person\r\n' 01:02:00.171693 < 5 bytes data, client => server 01:02:00.171860 'PWD\r\n' 01:02:00.173159 Received DATA (on stdin) 01:02:00.173236 > 30 bytes data, server => client 01:02:00.173343 '257 "/" is current directory\r\n' 01:02:00.400857 < 6 bytes data, client => server 01:02:00.401039 'EPSV\r\n' 01:02:00.484622 Received DATA (on stdin) 01:02:00.484775 > 39 bytes data, server => client 01:02:00.486733 '229 Entering Passive Mode (|||40137|)\r\n' 01:02:00.820876 < 8 bytes data, client => server 01:02:00.821078 'TYPE A\r\n' 01:02:00.826592 Received DATA (on stdin) 01:02:00.826723 > 33 bytes data, server => client 01:02:00.826813 '200 I modify TYPE as you wanted\r\n' 01:02:00.883530 < 22 bytes data, client => server 01:02:00.883717 'LIST fir#t/third/244\r\n' 01:02:00.884839 Received DATA (on stdin) 01:02:00.884916 > 28 bytes data, server => client 01:02:00.884997 '150 here comes a directory\r\n' 01:02:00.907431 Received DATA (on stdin) 01:02:00.907574 > 29 bytes data, server => client 01:02:00.907659 '226 ASCII transfer complete\r\n' 01:02:03.053035 < 6 bytes data, client => server 01:02:03.053227 'QUIT\r\n' 01:02:03.054517 Received DATA (on stdin) 01:02:03.054602 > 18 bytes data, server => client 01:02:03.054688 '221 bye bye baby\r\n' 01:02:03.187501 ====> Client disconnect 01:02:03.190603 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:01:11.102285 Running IPv4 version 01:01:11.110051 Listening on port 38531 01:01:11.110528 Wrote pid 225284 to log/6/server/ftp_sockdata.pid 01:01:11.111311 Received PING (on stdin) 01:01:11.112167 Received PORT (on stdin) 01:01:11.115821 ====> Client connect 01:01:11.123511 Received DATA (on stdin) 01:01:11.123858 > 18 bytes data, server => client 01:01:11.124264 'WE ROOLZ: 201819\r\n' 01:01:11.124506 Received DISC (on stdin) 01:01:11.125023 ====> Client forcibly disconnected 01:01:11.125197 Received QUIT (on stdin) 01:01:11.125270 quits 01:01:11.125781 ============> sockfilt quits 01:02:00.459685 Running IPv4 version 01:02:00.477666 Listening on port 40137 01:02:00.478153 Wrote pid 226442 to log/6/server/ftp_sockdata.pid 01:02:00.478862 Received PING (on stdin) 01:02:00.483328 Received PORT (on stdin) 01:02:00.698080 ====> Client connect 01:02:00.886469 Received DATA (on stdin) 01:02:00.886857 > 10 bytes data, server => client 01:02:00.893081 'total 20\r\n' 01:02:00.893370 Received DATA (on stdin) 01:02:00.893449 > 57 bytes data, server => client 01:02:00.893554 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 01:02:00.893654 Received DATA (on stdin) 01:02:00.893722 > 58 bytes data, server => client 01:02:00.893825 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 01:02:00.893910 Received DATA (on stdin) 01:02:00.893978 > 61 bytes data, server => client 01:02:00.894099 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 01:02:00.894177 '\n' 01:02:00.894263 Received DATA (on stdin) 01:02:00.894331 > 62 bytes data, server => client 01:02:00.894438 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 01:02:00.894502 '\n' 01:02:00.894586 Received DATA (on stdin) 01:02:00.894653 > 70 bytes data, server => client 01:02:00.894756 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 01:02:00.894824 'usr/bin\r\n' 01:02:00.894909 Received DATA (on stdin) 01:02:00.894977 > 59 bytes data, server => client 01:02:00.895082 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 01:02:00.895170 Received DATA (on stdin) 01:02:00.895237 > 69 bytes data, server => client 01:02:00.895344 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 01:02:00.895415 'd.html\r\n' 01:02:00.895513 Received DATA (on stdin) 01:02:00.895581 > 59 bytes data, server => client 01:02:00.895687 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 01:02:00.895774 Received DATA (on stdin) 01:02:00.895842 > 59 bytes data, server => client 01:02:00.895947 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 01:02:00.896034 Received DATA (on stdin) 01:02:00.896101 > 59 bytes data, server => client 01:02:00.896204 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 01:02:00.896286 Received DISC (on stdin) 01:02:00.900480 ====> Client forcibly disconnected 01:02:00.900656 Received QUIT (on stdin) 01:02:00.900733 quits 01:02:00.901264 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 244 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE A LIST fir#t/third/244 QUIT === End of file server.input === Start of file stderr244 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 623 0 623 0 0 113 0 --:--:-- 0:00:05 --:--:-- 145 === End of file stderr244 === Start of file trace244 01:01:58.744695 * Trying 127.0.0.1:39413... 01:01:59.621874 * Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 59782 01:01:59.871218 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:02:00.219783 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:02:00.251493 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:02:00.259102 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:02:00.264356 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:02:00.367071 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:02:00.439935 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:02:00.461034 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:02:00.536365 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:02:00.555975 => Send header, 5 bytes (0x5) 0000: PWD 01:02:00.572830 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:02:00.608443 * Entry path is '/' 01:02:00.722327 * Request has same path as previous transfer 01:02:00.785181 => Send header, 6 bytes (0x6) 0000: EPSV 01:02:00.800493 * Connect data stream passively 01:02:00.883886 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||40137|) 01:02:01.002978 * Connecting to 127.0.0.1 (127.0.0.1) port 40137 01:02:01.074890 * Trying 127.0.0.1:40137... 01:02:01.173896 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 40137) from 127.0.0.1 port 36940 01:02:01.205231 => Send header, 8 bytes (0x8) 0000: TYPE A 01:02:01.226945 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:02:01.271329 => Send header, 22 bytes (0x16) 0000: LIST fir#t/third/244 01:02:01.313154 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 01:02:01.348974 * Maxdownload = -1 01:02:01.527928 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 01:02:01.946292 * abort upload 01:02:01.969646 <= Recv data, 0 bytes (0x0) 01:02:02.141265 * Remembering we are in dir "" 01:02:02.344193 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 01:02:02.666181 * Connection #0 to host 127.0.0.1:39413 left intact === End of file trace244 === Start ofCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind246 ../src/curl -q --output log/4/curl246.out --include --trace-ascii log/4/trace246 --trace-time http://127.0.0.1:42621/246 -u auser:apasswd --digest -d "junkelijunk" > log/4/stdout246 2> log/4/stderr246 file valgrind244 ==225290== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind244 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 247 in state 4 Runner 2 (id 185908) running test 250 in state 4 Runner 3 (id 185910) running test 251 in state 4 Runner 4 (id 185912) running test 246 in state 4 Runner 5 (id 185914) running test 248 in state 4 Runner 6 (id 185916) running test 252 in state 4 Runner 7 (id 185918) running test 245 in state 4 Runner 8 (id 185920) running test 249 in state 4 test 0246...[HTTP POST --digest with server doing a 100 before 401 response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind246 ../src/curl -q --output log/4/curl246.out --include --trace-ascii log/4/trace246 --trace-time http://127.0.0.1:42621/246 -u auser:apasswd --digest -d "junkelijunk" > log/4/stdout246 2> log/4/stderr246 valgrind ERROR ==225507== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 246 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind246 ../src/curl -q --output log/4/curl246.out --include --trace-ascii log/4/trace246 --trace-time http://127.0.0.1:42621/246 -u auser:apasswd --digest -d "junkelijunk" > log/4/stdout246 2> log/4/stderr246 === End of file commands.log === Start of file curl246.out HTTP/1.1 100 Continue Server: Microsoft-IIS/5.0 Date: Sun, 03 Apr 2005 14:57:45 GMT X-Powered-By: ASP.NET HTTP/1.1 401 authentication please Server: Microsoft-IIS/6.0 WWW-Authenticate: Digest realm="testrealm", nonce="1053604144" Content-Type: text/html; charset=iso-8859-1 Content-Length: 0 HTTP/1.1 200 A OK Server: Microsoft-IIS/6.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 3 ok === End of file curl246.out === Start of file http_server.log 01:01:16.986281 ====> Client connect 01:01:16.986433 accept_connection 3 returned 4 01:01:16.986513 accept_connection 3 returned 0 01:01:16.992621 Read 93 bytes 01:01:16.992722 Process 93 bytes request 01:01:16.992814 Got request: GET /verifiedserver HTTP/1.1 01:01:16.992881 Are-we-friendly question received 01:01:16.993001 Wrote request (93 bytes) input to log/4/server.input 01:01:16.993088 Identifying ourselves as friends 01:01:16.993259 Response sent (57 bytes) and written to log/4/server.response 01:01:16.993321 special request received, no persistency 01:01:16.993377 ====> Client disconnect 0 01:02:04.509775 ====> Client connect 01:02:04.509923 accept_connection 3 returned 4 01:02:04.510021 accept_connection 3 returned 0 01:02:05.569328 Read 151 bytes 01:02:05.569534 Process 151 bytes request 01:02:05.569622 Got request: POST /246 HTTP/1.1 01:02:05.569687 Serve test number 246 part 0 01:02:05.569877 - request found to be complete (246) 01:02:05.570134 Found Content-Length: 0 in the request 01:02:05.570406 Wrote request (151 bytes) input to log/4/server.input 01:02:05.570513 Send response test246 section 01:02:05.570940 Response sent (305 bytes) and written to log/4/server.response 01:02:05.571002 => persistent connection request ended, awaits new request 01:02:14.364401 Read 299 bytes 01:02:14.364601 Process 299 bytes request 01:02:14.364694 Got request: POST /246 HTTP/1.1 01:02:14.364761 Serve test number 246 part 0 01:02:14.364961 - request found to be complete (246) 01:02:14.365136 Found Content-Length: 11 in the request 01:02:14.365249 Received Digest request, sending back data 1000 01:02:14.365352 Wrote request (299 bytes) input to log/4/server.input 01:02:14.365437 Send response test246 section 01:02:14.365777 Response sent (115 bytes) and written to log/4/server.response 01:02:14.365841 => persistent connection request ended, awaits new request 01:02:15.485258 Connection closed by client 01:02:15.485467 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 51266 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 246 === End of file server.cmd === Start of file server.input POST /246 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* Content-Length: 0 Content-Type: application/x-www-form-urlencoded POST /246 HTTP/1.1 Host: 127.0.0.1:42621 Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/246", response="761e6fc9a760c39d587092e8d840e740" User-Agent: curl/8.17.0 Accept: */* Content-Length: 11 Content-Type: application/x-www-form-urlencoded junkelijunk === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 100 Continue Server: Microsoft-IIS/5.0 Date: Sun, 03 Apr 2005 14:57:45 GMT X-Powered-By: ASP.NET HTTP/1.1 401 authentication please Server: Microsoft-IIS/6.0 WWW-Authenticate: Digest realm="testrealm", nonce="1053604144" Content-Type: text/html; charset=iso-8859-1 Content-Length: 0 HTTP/1.1 200 A OK Server: Microsoft-IIS/6.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 3 ok === End of file server.response === Start of file stderr246 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 11 0 0 0 11 0 0 --:--:-- 0:00:12 --:--:-- 0 100 14 0 3 0 11 0 0 --:--:-- 0:00:12 --:--:-- 14 === End of file stderr246 === Start of file trace246 01:02:03.568105 * Trying 127.0.0.1:42621... 01:02:04.457746 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 55984 01:02:04.590632 * using HTTP/1.x 01:02:04.686050 * Server auth using Digest with user 'auser' 01:02:04.991170 => Send header, 151 bytes (0x97) 0000: POST /246 HTTP/1.1 0014: Host: 127.0.0.1:42621 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: Content-Length: 0 0064: Content-Type: application/x-www-form-urlencoded 0095: 01:02:05.317479 <= Recv header, 23 bytes (0x17) 0000: HTTP/1.1 100 Continue 01:02:05.627987 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 01:02:05.710359 <= Recv header, 37 bytes (0x25) 0000: Date: Sun, 03 Apr 2005 14:57:45 GMT 01:02:05.727881 <= Recv header, 23 bytes (0x17) 0000: X-Powered-By: ASP.NET 01:02:05.754989 <= Recv header, 2 bytes (0x2) 0000: 01:02:05.793348 <= Recv header, 36 bytes (0x24) 0000: HTTP/1.1 401 authentication please 01:02:05.806395 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/6.0 01:02:05.999791 <= Recv header, 64 bytes (0x40) 0000: WWW-Authenticate: Digest realm="testrealm", nonce="1053604144" 01:02:06.033511 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 01:02:06.062923 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 0 01:02:06.159362 * Ignoring the response-body 01:02:06.175998 * setting size while ignoring 01:02:06.186154 <= Recv header, 2 bytes (0x2) 0000: 01:02:06.675114 * Connection #0 to host 127.0.0.1:4262CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind245 ../src/curl -q --output log/7/curl245.out --include --trace-ascii log/7/trace245 --trace-time http://127.0.0.1:34897/245 -u auser:apasswd --digest -d "junkelijunk" > log/7/stdout245 2> log/7/stderr245 1 left intact 01:02:06.789077 * Issue another request to this URL: 'http://127.0.0.1:42621/246' 01:02:07.189700 * Reusing existing http: connection with host 127.0.0.1 01:02:13.574375 * Server auth using Digest with user 'auser' 01:02:13.755478 => Send header, 288 bytes (0x120) 0000: POST /246 HTTP/1.1 0014: Host: 127.0.0.1:42621 002b: Authorization: Digest username="auser", realm="testrealm", nonce 006b: ="1053604144", uri="/246", response="761e6fc9a760c39d587092e8d84 00ab: 0e740" 00b3: User-Agent: curl/8.17.0 00cc: Accept: */* 00d9: Content-Length: 11 00ed: Content-Type: application/x-www-form-urlencoded 011e: 01:02:13.798640 => Send data, 11 bytes (0xb) 0000: junkelijunk 01:02:13.846048 * upload completely sent off: 11 bytes 01:02:13.885464 <= Recv header, 19 bytes (0x13) 0000: HTTP/1.1 200 A OK 01:02:13.896724 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/6.0 01:02:13.904826 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 01:02:13.912351 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 3 01:02:13.932959 <= Recv header, 2 bytes (0x2) 0000: 01:02:13.957988 <= Recv data, 3 bytes (0x3) 0000: ok. 01:02:14.087431 * Connection #0 to host 127.0.0.1:42621 left intact === End of file trace246 === Start of file valgrind246 ==225507== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind246 test 0245...[HTTP POST --digest] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind245 ../src/curl -q --output log/7/curl245.out --include --trace-ascii log/7/trace245 --trace-time http://127.0.0.1:34897/245 -u auser:apasswd --digest -d "junkelijunk" > log/7/stdout245 2> log/7/stderr245 valgrind ERROR ==225486== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 245 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind245 ../src/curl -q --output log/7/curl245.out --include --trace-ascii log/7/trace245 --trace-time http://127.0.0.1:34897/245 -u auser:apasswd --digest -d "junkelijunk" > log/7/stdout245 2> log/7/stderr245 === End of file commands.log === Start of file curl245.out HTTP/1.1 401 authentication please Server: Microsoft-IIS/6.0 WWW-Authenticate: Digest realm="testrealm", nonce="1053604144" Content-Type: text/html; charset=iso-8859-1 Content-Length: 0 HTTP/1.1 200 A OK Server: Microsoft-IIS/6.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 3 ok === End of file curl245.out === Start of file http_server.log 01:01:15.674142 ====> Client connect 01:01:15.674304 accept_connection 3 returned 4 01:01:15.674378 accept_connection 3 returned 0 01:01:15.681294 Read 93 bytes 01:01:15.681406 Process 93 bytes request 01:01:15.681495 Got request: GET /verifiedserver HTTP/1.1 01:01:15.681558 Are-we-friendly question received 01:01:15.681673 Wrote request (93 bytes) input to log/7/server.input 01:01:15.681763 Identifying ourselves as friends 01:01:15.681916 Response sent (57 bytes) and written to log/7/server.response 01:01:15.681979 special request received, no persistency 01:01:15.682034 ====> Client disconnect 0 01:02:03.789751 ====> Client connect 01:02:03.789894 accept_connection 3 returned 4 01:02:03.789979 accept_connection 3 returned 0 01:02:04.899403 Read 151 bytes 01:02:04.899586 Process 151 bytes request 01:02:04.899678 Got request: POST /245 HTTP/1.1 01:02:04.899745 Serve test number 245 part 0 01:02:04.899934 - request found to be complete (245) 01:02:04.900130 Found Content-Length: 0 in the request 01:02:04.900288 Wrote request (151 bytes) input to log/7/server.input 01:02:04.900387 Send response test245 section 01:02:04.900710 Response sent (193 bytes) and written to log/7/server.response 01:02:04.900772 => persistent connection request ended, awaits new request 01:02:13.946183 Read 299 bytes 01:02:13.946370 Process 299 bytes request 01:02:13.946464 Got request: POST /245 HTTP/1.1 01:02:13.946533 Serve test number 245 part 0 01:02:13.946742 - request found to be complete (245) 01:02:13.946921 Found Content-Length: 11 in the request 01:02:13.946994 Received Digest request, sending back data 1000 01:02:13.947086 Wrote request (299 bytes) input to log/7/server.input 01:02:13.947173 Send response test245 section 01:02:13.947525 Response sent (115 bytes) and written to log/7/server.response 01:02:13.947592 => persistent connection request ended, awaits new request 01:02:15.097748 Connection closed by client 01:02:15.097951 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 58054 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 245 === End of file server.cmd === Start of file server.input POST /245 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* Content-Length: 0 Content-Type: application/x-www-form-urlencoded POST /245 HTTP/1.1 Host: 127.0.0.1:34897 Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/245", response="379a439b1737ba257c1d2f103914b18b" User-Agent: curl/8.17.0 Accept: */* Content-Length: 11 Content-Type: application/x-www-form-urlencoded junkelijunk === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 401 authentication please Server: Microsoft-IIS/6.0 WWW-Authenticate: Digest realm="testrealm", nonce="1053604144" Content-Type: text/html; charset=iso-8859-1 Content-Length: 0 HTTP/1.1 200 A OK Server: Microsoft-IIS/6.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 3 ok === End of file server.response === Start of file stderr245 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 11 0 0 0 11 0 0 --:--:-- 0:00:12 --:--:-- 1 100 14 0 3 0 11 0 0 --:--:-- 0:00:12 --:--:-- 1 === End of file stderr245 === Start of file trace245 01:02:03.843646 * Trying 127.0.0.1:34897... 01:02:04.762740 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 60604 01:02:04.906726 * using HTTP/1.x 01:02:05.001365 * Server auth using Digest with user 'auser' 01:02:05.322070 => Send header, 151 bytes (0x97) 0000: POST /245 HTTP/1.1 0014: Host: 127.0.0.1:34897 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: Content-Length: 0 0064: Content-Type: application/x-www-form-urlencoded 0095: 01:02:05.673241 <= Recv header, 36 bytes (0x24) 0000: HTTP/1.1 401 authentication please 01:02:05.974514 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/6.0 01:02:06.234400 <= Recv header, 64 bytes (0x40) 0000: WWW-Authenticate: Digest realm="testrealm", nonce="1053604144" 01:02:06.275819 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=isoCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind247 ../src/curl -q --output log/1/curl247.out --include --trace-ascii log/1/trace247 --trace-time ftp://127.0.0.1:37481/247 -T log/1/test247.txt -z "apr 1 2005 08:00:00" > log/1/stdout247 2> log/1/stderr247 -8859-1 01:02:06.303379 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 0 01:02:06.411672 * Ignoring the response-body 01:02:06.436281 * setting size while ignoring 01:02:06.451357 <= Recv header, 2 bytes (0x2) 0000: 01:02:06.943251 * Connection #0 to host 127.0.0.1:34897 left intact 01:02:07.074338 * Issue another request to this URL: 'http://127.0.0.1:34897/245' 01:02:07.411032 * Reusing existing http: connection with host 127.0.0.1 01:02:14.159292 * Server auth using Digest with user 'auser' 01:02:14.338927 => Send header, 288 bytes (0x120) 0000: POST /245 HTTP/1.1 0014: Host: 127.0.0.1:34897 002b: Authorization: Digest username="auser", realm="testrealm", nonce 006b: ="1053604144", uri="/245", response="379a439b1737ba257c1d2f10391 00ab: 4b18b" 00b3: User-Agent: curl/8.17.0 00cc: Accept: */* 00d9: Content-Length: 11 00ed: Content-Type: application/x-www-form-urlencoded 011e: 01:02:14.379782 => Send data, 11 bytes (0xb) 0000: junkelijunk 01:02:14.443315 * upload completely sent off: 11 bytes 01:02:14.487323 <= Recv header, 19 bytes (0x13) 0000: HTTP/1.1 200 A OK 01:02:14.498485 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/6.0 01:02:14.508302 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 01:02:14.515942 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 3 01:02:14.536591 <= Recv header, 2 bytes (0x2) 0000: 01:02:14.560979 <= Recv data, 3 bytes (0x3) 0000: ok. 01:02:14.688410 * Connection #0 to host 127.0.0.1:34897 left intact === End of file trace245 === Start of file valgrind245 ==225486== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind245 test 0247...[FTP upload time condition evaluates TRUE => skip upload] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind247 ../src/curl -q --output log/1/curl247.out --include --trace-ascii log/1/trace247 --trace-time ftp://127.0.0.1:37481/247 -T log/1/test247.txt -z "apr 1 2005 08:00:00" > log/1/stdout247 2> log/1/stderr247 valgrind ERROR ==225779== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 247 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind247 ../src/curl -q --output log/1/curl247.out --include --trace-ascii log/1/trace247 --trace-time ftp://127.0.0.1:37481/247 -T log/1/test247.txt -z "apr 1 2005 08:00:00" > log/1/stdout247 2> log/1/stderr247 === End of file commands.log === Start of file ftp_server.log 01:01:28.238472 ====> Client connect 01:01:28.239964 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:01:28.246218 < "USER anonymous" 01:01:28.247561 > "331 We are happy you popped in![CR][LF]" 01:01:28.248400 < "PASS ftp@example.com" 01:01:28.248928 > "230 Welcome you silly person[CR][LF]" 01:01:28.249720 < "PWD" 01:01:28.250106 > "257 "/" is current directory[CR][LF]" 01:01:28.252622 < "EPSV" 01:01:28.252833 ====> Passive DATA channel requested by client 01:01:28.252972 DATA sockfilt for passive data channel starting... 01:01:28.296593 DATA sockfilt for passive data channel started (pid 225770) 01:01:28.298017 DATA sockfilt for passive data channel listens on port 41781 01:01:28.298384 > "229 Entering Passive Mode (|||41781|)[CR][LF]" 01:01:28.298551 Client has been notified that DATA conn will be accepted on port 41781 01:01:28.301934 Client connects to port 41781 01:01:28.302216 ====> Client established passive DATA connection on port 41781 01:01:28.302854 < "TYPE I" 01:01:28.303987 > "200 I modify TYPE as you wanted[CR][LF]" 01:01:28.304522 < "SIZE verifiedserver" 01:01:28.305608 > "213 18[CR][LF]" 01:01:28.306148 < "RETR verifiedserver" 01:01:28.308918 > "150 Binary junk (18 bytes).[CR][LF]" 01:01:28.309572 =====> Closing passive DATA connection... 01:01:28.309737 Server disconnects passive DATA connection 01:01:28.311234 Server disconnected passive DATA connection 01:01:28.311409 DATA sockfilt for passive data channel quits (pid 225770) 01:01:28.319417 DATA sockfilt for passive data channel quit (pid 225770) 01:01:28.319859 =====> Closed passive DATA connection 01:01:28.320191 > "226 File transfer complete[CR][LF]" 01:01:28.356401 < "QUIT" 01:01:28.356803 > "221 bye bye baby[CR][LF]" 01:01:28.357844 MAIN sockfilt said DISC 01:01:28.360898 ====> Client disconnected 01:01:28.361161 Awaiting input 01:02:15.866021 ====> Client connect 01:02:15.866769 FTPD: Getting commands from log/1/server.cmd 01:02:15.867130 FTPD: run test case number: 247 01:02:15.868094 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:02:17.174826 < "USER anonymous" 01:02:17.177641 > "331 We are happy you popped in![CR][LF]" 01:02:17.285115 < "PASS ftp@example.com" 01:02:17.285856 > "230 Welcome you silly person[CR][LF]" 01:02:17.378293 < "PWD" 01:02:17.378744 > "257 "/" is current directory[CR][LF]" 01:02:17.581866 < "MDTM 247" 01:02:17.587647 > "213 20030409102659[CR][LF]" 01:02:18.866565 < "QUIT" 01:02:18.867296 > "221 bye bye baby[CR][LF]" 01:02:19.093632 MAIN sockfilt said DISC 01:02:19.094313 ====> Client disconnected 01:02:19.094635 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:01:28.853933 ====> Client connect 01:01:28.855150 Received DATA (on stdin) 01:01:28.855227 > 160 bytes data, server => client 01:01:28.855359 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:01:28.855459 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:01:28.855546 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:01:28.861137 < 16 bytes data, client => server 01:01:28.861256 'USER anonymous\r\n' 01:01:28.862338 Received DATA (on stdin) 01:01:28.862402 > 33 bytes data, server => client 01:01:28.863242 '331 We are happy you popped in!\r\n' 01:01:28.863767 < 22 bytes data, client => server 01:01:28.863842 'PASS ftp@example.com\r\n' 01:01:28.864429 Received DATA (on stdin) 01:01:28.864488 > 30 bytes data, server => client 01:01:28.864638 '230 Welcome you silly person\r\n' 01:01:28.865058 < 5 bytes data, client => server 01:01:28.865120 'PWD\r\n' 01:01:28.865764 Received DATA (on stdin) 01:01:28.865826 > 30 bytes data, server => client 01:01:28.866129 '257 "/" is current directory\r\n' 01:01:28.867971 < 6 bytes data, client => server 01:01:28.868045 'EPSV\r\n' 01:01:28.914635 Received DATA (on stdin) 01:01:28.914779 > 39 bytes data, server => client 01:01:28.914871 '229 Entering Passive Mode (|||41781|)\r\n' 01:01:28.917583 < 8 bytes data, client => server 01:01:28.917662 'TYPE I\r\n' 01:01:28.918935 Received DATA (on stdin) 01:01:28.919010 > 33 bytes data, server => client 01:01:28.919120 '200 I modify TYPE as you wanted\r\n' 01:01:28.919508 < 21 bytes data, client => server 01:01:28.919585 'SIZE verifiedserver\r\n' 01:01:28.920643 Received DATA (on stdin) 01:01:28.920716 > 8 bytes data, server => client 01:01:28.920805 '213 18\r\n' 01:01:28.921249 < 21 bytes data, client => server 01:01:28.921324 'RETR verifiedserver\r\n' 01:01:28.922376 Received DATA (on stdin) 01:01:28.922447 > 29 bytes data, server => client 01:01:28.922549 '150 Binary junk (18 bytes).\r\n' 01:01:28.936268 Received DATA (on stdin) 01:01:28.936413 > 28 bytes data, server => client 01:01:28.936497 '226 File transfer complete\r\n' 01:01:28.971559 < 6 bytes data, client => server 01:01:28.971720 'QUIT\r\n' 01:01:28.972854 Received DATA (on stdin) 01:01:28.972924 > 18 bytes data, server => client 01:01:28.972999 '221 bye bye baby\r\n' 01:01:28.973575 ====> Client disconnect 01:01:28.973862 Received ACKD (on stdin) 01:02:16.481453 ====> CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind248 ../src/curl -q --output log/5/curl248.out --include --trace-ascii log/5/trace248 --trace-time ftp://127.0.0.1:33729/248 -T log/5/test248.txt -z "apr 1 2005 08:00:00" > log/5/stdout248 2> log/5/stderr248 Client connect 01:02:16.486654 Received DATA (on stdin) 01:02:16.486771 > 160 bytes data, server => client 01:02:16.486880 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:02:16.486985 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:02:16.487079 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:02:17.789328 < 16 bytes data, client => server 01:02:17.789520 'USER anonymous\r\n' 01:02:17.790922 Received DATA (on stdin) 01:02:17.791005 > 33 bytes data, server => client 01:02:17.793649 '331 We are happy you popped in!\r\n' 01:02:17.899713 < 22 bytes data, client => server 01:02:17.899895 'PASS ftp@example.com\r\n' 01:02:17.901231 Received DATA (on stdin) 01:02:17.901310 > 30 bytes data, server => client 01:02:17.901414 '230 Welcome you silly person\r\n' 01:02:17.992877 < 5 bytes data, client => server 01:02:17.993075 'PWD\r\n' 01:02:17.999973 Received DATA (on stdin) 01:02:18.000089 > 30 bytes data, server => client 01:02:18.000173 '257 "/" is current directory\r\n' 01:02:18.196369 < 10 bytes data, client => server 01:02:18.196556 'MDTM 247\r\n' 01:02:18.199850 Received DATA (on stdin) 01:02:18.199954 > 20 bytes data, server => client 01:02:18.203753 '213 20030409102659\r\n' 01:02:19.481156 < 6 bytes data, client => server 01:02:19.481332 'QUIT\r\n' 01:02:19.482662 Received DATA (on stdin) 01:02:19.482740 > 18 bytes data, server => client 01:02:19.482841 '221 bye bye baby\r\n' 01:02:19.709063 ====> Client disconnect 01:02:19.709855 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:01:28.903483 Running IPv4 version 01:01:28.910816 Listening on port 41781 01:01:28.911291 Wrote pid 225770 to log/1/server/ftp_sockdata.pid 01:01:28.912060 Received PING (on stdin) 01:01:28.913161 Received PORT (on stdin) 01:01:28.917399 ====> Client connect 01:01:28.925766 Received DATA (on stdin) 01:01:28.926111 > 18 bytes data, server => client 01:01:28.926481 'WE ROOLZ: 202066\r\n' 01:01:28.926746 Received DISC (on stdin) 01:01:28.926866 ====> Client forcibly disconnected 01:01:28.930075 Received QUIT (on stdin) 01:01:28.930207 quits 01:01:28.930774 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 247 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD MDTM 247 QUIT === End of file server.input === Start of file stderr247 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr247 === Start of file test247.txt data to see that FTP works so does it? === End of file test247.txt === Start of file trace247 01:02:15.543367 * Trying 127.0.0.1:37481... 01:02:16.440327 * Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 127.0.0.1 port 39850 01:02:16.691322 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:02:17.046079 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:02:17.075877 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:02:17.082833 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:02:17.088217 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:02:17.194334 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:02:17.263628 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:02:17.285281 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:02:17.357123 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:02:17.377250 => Send header, 5 bytes (0x5) 0000: PWD 01:02:17.404791 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:02:17.443111 * Entry path is '/' 01:02:17.544772 * Request has same path as previous transfer 01:02:17.580706 => Send header, 10 bytes (0xa) 0000: MDTM 247 01:02:17.594504 <= Recv header, 20 bytes (0x14) 0000: 213 20030409102659 01:02:17.692892 * The requested document is not new enough 01:02:17.835826 * Remembering we are in dir "" 01:02:18.117996 * Connection #0 to host 127.0.0.1:37481 left intact === End of file trace247 === Start of file valgrind247 ==225779== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind247 test 0248...[FTP upload time condition evaluates FALSE => upload anyway] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind248 ../src/curl -q --output log/5/curl248.out --include --trace-ascii log/5/trace248 --trace-time ftp://127.0.0.1:33729/248 -T log/5/test248.txt -z "apr 1 2005 08:00:00" > log/5/stdout248 2> log/5/stderr248 valgrind ERROR ==225955== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 248 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind248 ../src/curl -q --output log/5/curl248.out --include --trace-ascii log/5/trace248 --trace-time ftp://127.0.0.1:33729/248 -T log/5/test248.txt -z "apr 1 2005 08:00:00" > log/5/stdout248 2> log/5/stderr248 === End of file commands.log === Start of file ftp_server.log 01:01:34.990988 ====> Client connect 01:01:34.991990 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:01:34.997615 < "USER anonymous" 01:01:34.997915 > "331 We are happy you popped in![CR][LF]" 01:01:34.998963 < "PASS ftp@example.com" 01:01:34.999200 > "230 Welcome you silly person[CR][LF]" 01:01:35.000274 < "PWD" 01:01:35.000761 > "257 "/" is current directory[CR][LF]" 01:01:35.003061 < "EPSV" 01:01:35.003251 ====> Passive DATA channel requested by client 01:01:35.003386 DATA sockfilt for passive data channel starting... 01:01:35.043849 DATA sockfilt for passive data channel started (pid 225949) 01:01:35.045177 DATA sockfilt for passive data channel listens on port 40065 01:01:35.045516 > "229 Entering Passive Mode (|||40065|)[CR][LF]" 01:01:35.045675 Client has been notified that DATA conn will be accepted on port 40065 01:01:35.048575 Client connects to port 40065 01:01:35.048774 ====> Client established passive DATA connection on port 40065 01:01:35.049356 < "TYPE I" 01:01:35.049616 > "200 I modify TYPE as you wanted[CR][LF]" 01:01:35.050754 < "SIZE verifiedserver" 01:01:35.051786 > "213 18[CR][LF]" 01:01:35.052426 < "RETR verifiedserver" 01:01:35.054655 > "150 Binary junk (18 bytes).[CR][LF]" 01:01:35.055145 =====> Closing passive DATA connection... 01:01:35.055296 Server disconnects passive DATA connection 01:01:35.057875 Server disconnected passive DATA connection 01:01:35.058035 DATA sockfilt for passive data channel quits (pid 225949) 01:01:35.060919 DATA sockfilt for passive data channel quit (pid 225949) 01:01:35.061075 =====> Closed passive DATA connection 01:01:35.061306 > "226 File transfer complete[CR][LF]" 01:01:35.101441 < "QUIT" 01:01:35.101969 > "221 bye bye baby[CR][LF]" 01:01:35.102809 MAIN sockfilt said DISC 01:01:35.103093 ====> Client disconnected 01:01:35.103335 Awaiting input 01:02:23.067261 ====> Client connect 01:02:23.068019 FTPD: Getting commands from log/5/server.cmd 01:02:23.068356 FTPD: run test case number: 248 01:02:23.069960 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:02:24.334984 < "USER anonymous" 01:02:24.335543 > "331 We are happy you popped in![CR][LF]" 01:02:24.469343 < "PASS ftp@example.com" 01:02:24.469935 > "230 Welcome you silly person[CR][LF]" 01:02:24.575355 < "PWD" 01:02:24.576183 > "257 "/" is current directory[CR][LF]" 01:02:24.781016 < "MDTM 248" 01:02:24.783185 > "213 20050409102659[CR][LF]" 01:02:24.910015 < "EPSV" 01:02:24.910354 ====> Passive DATA channel requested by client 01:02:24.910515 DATA sockfilt for passive data channel starting... 01:02:24.957343 DATA sockfilt for passive data channel started (pid 227067) 01:02:24.958640 DATA sockfilt for passive data channel listens on port 35551 01:02:24.959446 > "229 Entering Passive Mode (|||35551|)[CR][LF]" 01:02:24.959637 Client has been notified that DATA conn will be accepted on port 35551 01:02:25.160981 Client connects to port 35551 01:02:25.161561 ====> Client established passive DATA connection on port 35551 01:02:25.273423 < "TYPE I" 01:02:25.274048 > "200 I modify TYPE as you wanted[CR][LF]" 01:02:25.325157 < "STOR 248" 01:02:25.325564 STOR test number 248 in log/5/upload.248 01:02:25.327511 > "125 Gimme gimme gimme![CR][LF]" 01:02:25.642461 > Appending 51 bytes to file 01:02:26.050844 =====> Closing passive DATA connection... 01:02:26.051124 Server knows passive DATA connection is already disconnected 01:02:26.051297 DATA sockfilt for passive data channel quits (pid 227067) 01:02:26.054722 DATA sockfilt for passive data channel quit (pid 227067) 01:02:26.054890 =====> Closed passive DATA connection 01:02:26.055072 received 51 bytes upload 01:02:26.055366 > "226 File transfer complete[CR][LF]" 01:02:27.241874 < "QUIT" 01:02:27.247656 > "221 bye bye baby[CR][LF]" 01:02:27.367421 MAIN sockfilt said DISC 01:02:27.367947 ====> Client disconnected 01:02:27.368270 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:01:35.603528 ====> Client connect 01:01:35.607672 Received DATA (on stdin) 01:01:35.607759 > 160 bytes data, server => client 01:01:35.607859 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:01:35.607949 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:01:35.608029 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:01:35.612913 < 16 bytes data, client => server 01:01:35.613001 'USER anonymous\r\n' 01:01:35.613925 Received DATA (on stdin) 01:01:35.613994 > 33 bytes data, server => client 01:01:35.614071 '331 We are happy you popped in!\r\n' 01:01:35.614319 < 22 bytes data, client => server 01:01:35.614390 'PASS ftp@example.com\r\n' 01:01:35.615256 Received DATA (on stdin) 01:01:35.615317 > 30 bytes data, server => client 01:01:35.615392 '230 Welcome you silly person\r\n' 01:01:35.615663 < 5 bytes data, client => server 01:01:35.615723 'PWD\r\n' 01:01:35.616307 Received DATA (on stdin) 01:01:35.616369 > 30 bytes data, server => client 01:01:35.616460 '257 "/" is current directory\r\n' 01:01:35.618435 < 6 bytes data, client => server 01:01:35.618504 'EPSV\r\n' 01:01:35.661714 Received DATA (on stdin) 01:01:35.661848 > 39 bytes data, server => client 01:01:35.661934 '229 Entering Passive Mode (|||40065|)\r\n' 01:01:35.664019 < 8 bytes data, client => server 01:01:35.664093 'TYPE I\r\n' 01:01:35.665621 Received DATA (on stdin) 01:01:35.665685 > 33 bytes data, server => client 01:01:35.665763 '200 I modify TYPE as you wanted\r\n' 01:01:35.666127 < 21 bytes data, client => server 01:01:35.666197 'SIZE verifiedserver\r\n' 01:01:35.666837 Received DATA (on stdin) 01:01:35.666903 > 8 bytes data, server => client 01:01:35.666983 '213 18\r\n' 01:01:35.667796 < 21 bytes data, client => server 01:01:35.667867 'RETR verifiedserver\r\n' 01:01:35.668481 Received DATA (on stdin) 01:01:35.668543 > 29 bytes data, server => client 01:01:35.668635 '150 Binary junk (18 bytes).\r\n' 01:01:35.679880 Received DATA (on stdin) 01:01:35.679960 > 28 bytes data, server => client 01:01:35.680044 '226 File transfer complete\r\n' 01:01:35.716582 < 6 bytes data, client => server 01:01:35.716672 'QUIT\r\n' 01:01:35.717509 Received DATA (on stdin) 01:01:35.717572 > 18 bytes data, server => client 01:01:35.717659 '221 bye bye baby\r\n' 01:01:35.718537 ====> Client disconnect 01:01:35.718797 Received ACKD (on stdin) 01:02:23.682673 ====> Client connect 01:02:23.685011 Received DATA (on stdin) 01:02:23.685101 > 160 bytes data, server => client 01:02:23.685231 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:02:23.685339 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:02:23.685445 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:02:24.949213 < 16 bytes data, client => server 01:02:24.949423 'USER anonymous\r\n' 01:02:24.953291 Received DATA (on stdin) 01:02:24.953403 > 33 bytes data, server => client 01:02:24.953509 '331 We are happy you popped in!\r\n' 01:02:25.083714 < 22 bytes data, client => server 01:02:25.083940 'PASS ftp@example.com\r\n' 01:02:25.089964 Received DATA (on stdin) 01:02:25.090088 > 30 bytes data, server => client 01:02:25.090190 '230 Welcome you silly person\r\n' 01:02:25.189916 < 5 bytes data, client => server 01:02:25.190089 'PWD\r\n' 01:02:25.191496 Received DATA (on stdin) 01:02:25.191579 > 30 bytes data, server => client 01:02:25.191698 '257 "/" is current directory\r\n' 01:02:25.395589 < 10 bytes data, client => server 01:02:25.395762 'MDTM 248\r\n' 01:02:25.398856 Received DATA (on stdin) 01:02:25.398962 > 20 bytes data, server => client 01:02:25.399043 '213 20050409102659\r\n' 01:02:25.524570 < 6 bytes data, client => server 01:02:25.524754 'EPSV\r\n' 01:02:25.574667 Received DATA (on stdin) 01:02:25.574807 > 39 bytes data, server => client 01:02:25.574925 '229 Entering Passive Mode (|||35551|)\r\n' 01:02:25.887858 < 8 bytes data, client => server 01:02:25.888053 'TYPE I\r\n' 01:02:25.889529 Received DATA (on stdin) 01:02:25.889615 > 33 bytes data, server => client 01:02:25.891695 '200 I modify TYPE as you wanted\r\n' 01:02:25.939678 < 10 bytes data, client => server 01:02:25.939873 'STOR 248\r\n' 01:02:25.941508 Received DATA (on stdin) 01:02:25.941583 > 24 bytes data, server => client 01:02:25.943639 '125 Gimme gimme gimme!\r\n' 01:02:26.673293 Received DATA (on stdin) 01:02:26.673430 > 28 bytes data, server => client 01:02:26.673509 '226 File transfer complete\r\n' 01:02:27.856367 < 6 bytes data, client => server 01:02:27.856523 'QUIT\r\n' 01:02:27.857954 Received DATA (on stdin) 01:02:27.858034 > 18 bytes data, server => client 01:02:27.863675 '221 bye bye baby\r\n' 01:02:27.982846 ====> Client disconnect 01:02:27.984170 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:01:35.651292 Running IPv4 version 01:01:35.658246 Listening on port 40065 01:01:35.658672 Wrote pid 225949 to log/5/server/ftp_sockdata.pid 01:01:35.659369 Received PING (on stdin) 01:01:35.660379 Received PORT (on stdin) 01:01:35.664246 ====> Client connect 01:01:35.671278 Received DATA (on stdin) 01:01:35.671545 > 18 bytes data, server => client 01:01:35.671871 'WE ROOLZ: 202313\r\n' 01:01:35.673391 Received DISC (on stdin) 01:01:35.673518 ====> Client forcibly disconnected 01:01:35.674041 Received QUIT (on stdin) 01:01:35.674110 quits 01:01:35.674566 ============> sockfilt quits 01:02:24.563428 Running IPv4 version 01:02:24.571241 Listening on port 35551 01:02:24.571752 Wrote pid 227067 to log/5/server/ftp_sockdata.pid 01:02:24.572519 Received PING (on stdin) 01:02:24.573589 Received PORT (on stdin) 01:02:24.774115 ====> Client connect 01:02:25.256851 < 51 bytes data, client => server 01:02:25.257389 'data\n to\n see\nthat FTP\nworks\n so does it?\n' 01:02:25.665578 ====> Client disconnect 01:02:25.667238 Received ACKD (on stdin) 01:02:25.667500 Received QUIT (on stdin) 01:02:25.667584 quits 01:02:25.668080 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 248 === End of file server.cmd === Start of file server.input USER CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind249 ../src/curl -q --output log/8/curl249.out --include --trace-ascii log/8/trace249 --trace-time http://127.0.0.1:39461/249 -z "dec 12 12:00:00 1999 GMT" > log/8/stdout249 2> log/8/stderr249 anonymous PASS ftp@example.com PWD MDTM 248 EPSV TYPE I STOR 248 QUIT === End of file server.input === Start of file stderr248 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 51 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 51 0 0 100 51 0 9 0:00:05 0:00:05 --:--:-- 12 === End of file stderr248 === Start of file test248.txt data to see that FTP works so does it? === End of file test248.txt === Start of file trace248 01:02:22.797726 * Trying 127.0.0.1:33729... 01:02:23.538251 * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 58122 01:02:23.804596 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:02:24.185895 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:02:24.218511 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:02:24.226203 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:02:24.232165 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:02:24.359837 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:02:24.447231 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:02:24.469491 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:02:24.547351 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:02:24.574309 => Send header, 5 bytes (0x5) 0000: PWD 01:02:24.592614 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:02:24.636949 * Entry path is '/' 01:02:24.746917 * Request has same path as previous transfer 01:02:24.780275 => Send header, 10 bytes (0xa) 0000: MDTM 248 01:02:24.794351 <= Recv header, 20 bytes (0x14) 0000: 213 20050409102659 01:02:24.913040 => Send header, 6 bytes (0x6) 0000: EPSV 01:02:24.930665 * Connect data stream passively 01:02:24.970463 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||35551|) 01:02:25.081313 * Connecting to 127.0.0.1 (127.0.0.1) port 35551 01:02:25.152497 * Trying 127.0.0.1:35551... 01:02:25.251392 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 35551) from 127.0.0.1 port 37640 01:02:25.272245 => Send header, 8 bytes (0x8) 0000: TYPE I 01:02:25.288291 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:02:25.324029 => Send header, 10 bytes (0xa) 0000: STOR 248 01:02:25.354715 <= Recv header, 24 bytes (0x18) 0000: 125 Gimme gimme gimme 01:02:25.655666 => Send data, 51 bytes (0x33) 0000: data. to. see.that FTP.works. so does it?. 01:02:25.840579 * upload completely sent off: 51 bytes 01:02:25.970722 * Remembering we are in dir "" 01:02:26.150774 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:02:26.464071 * Connection #0 to host 127.0.0.1:33729 left intact === End of file trace248 === Start of file upload.248 data to see that FTP works so does it? === End of file upload.248 === Start of file valgrind248 ==225955== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind248 test 0249...[HTTP 304 response with "illegal" Content-Length: header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind249 ../src/curl -q --output log/8/curl249.out --include --trace-ascii log/8/trace249 --trace-time http://127.0.0.1:39461/249 -z "dec 12 12:00:00 1999 GMT" > log/8/stdout249 2> log/8/stderr249 valgrind ERROR ==226122== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 249 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind249 ../src/curl -q --output log/8/curl249.out --include --trace-ascii log/8/trace249 --trace-time http://127.0.0.1:39461/249 -z "dec 12 12:00:00 1999 GMT" > log/8/stdout249 2> log/8/stderr249 === End of file commands.log === Start of file curl249.out HTTP/1.1 304 Not Modified swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 1910 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 677777 Connection: close Content-Type: text/html === End of file curl249.out === Start of file http_server.log 01:01:37.091007 ====> Client connect 01:01:37.091160 accept_connection 3 returned 4 01:01:37.091233 accept_connection 3 returned 0 01:01:37.097998 Read 93 bytes 01:01:37.098088 Process 93 bytes request 01:01:37.098171 Got request: GET /verifiedserver HTTP/1.1 01:01:37.098232 Are-we-friendly question received 01:01:37.098334 Wrote request (93 bytes) input to log/8/server.input 01:01:37.098420 Identifying ourselves as friends 01:01:37.098567 Response sent (57 bytes) and written to log/8/server.response 01:01:37.098627 special request received, no persistency 01:01:37.098679 ====> Client disconnect 0 01:02:24.998625 ====> Client connect 01:02:24.998770 accept_connection 3 returned 4 01:02:24.998847 accept_connection 3 returned 0 01:02:26.023518 Read 132 bytes 01:02:26.023719 Process 132 bytes request 01:02:26.023812 Got request: GET /249 HTTP/1.1 01:02:26.023881 Serve test number 249 part 0 01:02:26.024050 - request found to be complete (249) 01:02:26.024289 Wrote request (132 bytes) input to log/8/server.input 01:02:26.024414 Send response test249 section 01:02:26.024644 connection close instruction "swsclose" found in response 01:02:26.024839 Response sent (255 bytes) and written to log/8/server.response 01:02:26.024906 instructed to close connection after server-reply 01:02:26.024967 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 35260 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 249 === End of file server.cmd === Start of file server.input GET /249 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* If-Modified-Since: Sun, 12 Dec 1999 12:00:00 GMT === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 304 Not Modified swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 1910 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 677777 Connection: close Content-Type: text/html === End of file server.response === Start of file stderr249 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr249 === Start of file trace249 01:02:25.060632 * Trying 127.0.0.1:39461... 01:02:25.943699 * Established connection to 127.0.0.1 (12CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind250 ../src/curl -q --output log/2/curl250.out --include --trace log/2/trace250 --trace-time ftp://127.0.0.1:39881/ > log/2/stdout250 2> log/2/stderr250 7.0.0.1 port 39461) from 127.0.0.1 port 60798 01:02:26.056491 * using HTTP/1.x 01:02:26.447852 => Send header, 132 bytes (0x84) 0000: GET /249 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: If-Modified-Since: Sun, 12 Dec 1999 12:00:00 GMT 0082: 01:02:26.802008 <= Recv header, 35 bytes (0x23) 0000: HTTP/1.1 304 Not Modified swsclose. 01:02:27.102409 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:02:27.206847 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:02:27.228567 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 1910 12:10:00 GMT. 01:02:27.236157 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:02:27.243246 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:02:27.257907 <= Recv header, 23 bytes (0x17) 0000: Content-Length: 677777. 01:02:27.303433 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:02:27.337303 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:02:27.426918 <= Recv header, 1 bytes (0x1) 0000: . 01:02:27.510064 * we are done reading and this is set to close, stop send 01:02:27.539629 * abort upload 01:02:27.999505 * shutting down connection #0 === End of file trace249 === Start of file valgrind249 ==226122== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind249 test 0250...[FTP dir list PASV with slow response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind250 ../src/curl -q --output log/2/curl250.out --include --trace log/2/trace250 --trace-time ftp://127.0.0.1:39881/ > log/2/stdout250 2> log/2/stderr250 valgrind ERROR ==226293== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 250 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind250 ../src/curl -q --output log/2/curl250.out --include --trace log/2/trace250 --trace-time ftp://127.0.0.1:39881/ > log/2/stdout250 2> log/2/stderr250 === End of file commands.log === Start of file curl250.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl250.out === Start of file ftp_server.log 01:01:41.544237 ====> Client connect 01:01:41.545660 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:01:41.552337 < "USER anonymous" 01:01:41.552628 > "331 We are happy you popped in![CR][LF]" 01:01:41.553628 < "PASS ftp@example.com" 01:01:41.554099 > "230 Welcome you silly person[CR][LF]" 01:01:41.554725 < "PWD" 01:01:41.554979 > "257 "/" is current directory[CR][LF]" 01:01:41.559353 < "EPSV" 01:01:41.559547 ====> Passive DATA channel requested by client 01:01:41.559679 DATA sockfilt for passive data channel starting... 01:01:41.598047 DATA sockfilt for passive data channel started (pid 226287) 01:01:41.599182 DATA sockfilt for passive data channel listens on port 45189 01:01:41.600979 > "229 Entering Passive Mode (|||45189|)[CR][LF]" 01:01:41.601153 Client has been notified that DATA conn will be accepted on port 45189 01:01:41.602749 Client connects to port 45189 01:01:41.602949 ====> Client established passive DATA connection on port 45189 01:01:41.603534 < "TYPE I" 01:01:41.604685 > "200 I modify TYPE as you wanted[CR][LF]" 01:01:41.605181 < "SIZE verifiedserver" 01:01:41.606221 > "213 18[CR][LF]" 01:01:41.606699 < "RETR verifiedserver" 01:01:41.608973 > "150 Binary junk (18 bytes).[CR][LF]" 01:01:41.609506 =====> Closing passive DATA connection... 01:01:41.609660 Server disconnects passive DATA connection 01:01:41.614308 Server disconnected passive DATA connection 01:01:41.614479 DATA sockfilt for passive data channel quits (pid 226287) 01:01:41.617407 DATA sockfilt for passive data channel quit (pid 226287) 01:01:41.617566 =====> Closed passive DATA connection 01:01:41.617805 > "226 File transfer complete[CR][LF]" 01:01:41.658873 < "QUIT" 01:01:41.659509 > "221 bye bye baby[CR][LF]" 01:01:41.660994 MAIN sockfilt said DISC 01:01:41.661306 ====> Client disconnected 01:01:41.661574 Awaiting input 01:02:29.020381 ====> Client connect 01:02:29.021150 FTPD: Getting commands from log/2/server.cmd 01:02:29.021423 FTPD: send response with 5ms delay between each byte 01:02:29.021716 FTPD: run test case number: 250 01:02:29.923355 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:02:30.470639 < "USER anonymous" 01:02:30.669535 > "331 We are happy you popped in![CR][LF]" 01:02:30.732214 < "PASS ftp@example.com" 01:02:30.904394 > "230 Welcome you silly person[CR][LF]" 01:02:30.928618 < "PWD" 01:02:31.095848 > "257 "/" is current directory[CR][LF]" 01:02:31.285592 < "EPSV" 01:02:31.285983 ====> Passive DATA channel requested by client 01:02:31.286214 DATA sockfilt for passive data channel starting... 01:02:31.339327 DATA sockfilt for passive data channel started (pid 227183) 01:02:31.341608 DATA sockfilt for passive data channel listens on port 33857 01:02:31.561848 > "229 Entering Passive Mode (|||33857|)[CR][LF]" 01:02:31.562282 Client has been notified that DATA conn will be accepted on port 33857 01:02:31.774520 Client connects to port 33857 01:02:31.775160 ====> Client established passive DATA connection on port 33857 01:02:31.895132 < "TYPE A" 01:02:32.084995 > "200 I modify TYPE as you wanted[CR][LF]" 01:02:32.132001 < "LIST" 01:02:32.282816 > "150 here comes a directory[CR][LF]" 01:02:32.283257 pass LIST data on data connection 01:02:32.284701 send total 20 as data 01:02:32.336195 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 01:02:32.656837 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 01:02:32.954961 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 01:02:33.307958 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 01:02:33.654665 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 01:02:34.045199 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 01:02:34.380676 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 01:02:34.764963 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 01:02:35.096138 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 01:02:35.399466 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 01:02:35.704192 =====> Closing passive DATA connection... 01:02:35.704454 Server disconnects passive DATA connection 01:02:35.707597 Server disconnected passive DATA connection 01:02:35.707777 DATA sockfilt for passive data channel quits (pid 227183) 01:02:35.711093 DATA sockfilt for passive data channel quit (pid 227183) 01:02:35.711267 =====> Closed passive DATA connection 01:02:35.861431 > "226 ASCII transfer complete[CR][LF]" 01:02:37.221899 < "QUIT" 01:02:37.324579 > "221 bye bye baby[CR][LF]" 01:02:37.344466 MAIN sockfilt said DISC 01:02:37.344984 ====> Client disconnected 01:02:37.345292 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:01:42.159641 ====> Client connect 01:01:42.160877 Received DATA (on stdin) 01:01:42.160952 > 160 bytes data, server => client 01:01:42.161066 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:01:42.161155 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:01:42.161238 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:01:42.167372 < 16 bytes data, client => server 01:01:42.167452 'USER anonymous\r\n' 01:01:42.168622 Received DATA (on stdin) 01:01:42.168684 > 33 bytes data, server => client 01:01:42.168759 '331 We are happy you popped in!\r\n' 01:01:42.168989 < 22 bytes data, client => server 01:01:42.169056 'PASS ftp@example.com\r\n' 01:01:42.169631 Received DATA (on stdin) 01:01:42.169693 > 30 bytes data, server => client 01:01:42.169787 '230 Welcome you silly person\r\n' 01:01:42.169986 < 5 bytes data, client => server 01:01:42.170056 'PWD\r\n' 01:01:42.173362 Received DATA (on stdin) 01:01:42.173427 > 30 bytes data, server => client 01:01:42.173498 '257 "/" is current directory\r\n' 01:01:42.174733 < 6 bytes data, client => server 01:01:42.174791 'EPSV\r\n' 01:01:42.215258 Received DATA (on stdin) 01:01:42.215394 > 39 bytes data, server => client 01:01:42.215502 '229 Entering Passive Mode (|||45189|)\r\n' 01:01:42.218195 < 8 bytes data, client => server 01:01:42.218267 'TYPE I\r\n' 01:01:42.219557 Received DATA (on stdin) 01:01:42.219620 > 33 bytes data, server => client 01:01:42.219854 '200 I modify TYPE as you wanted\r\n' 01:01:42.220210 < 21 bytes data, client => server 01:01:42.220286 'SIZE verifiedserver\r\n' 01:01:42.221246 Received DATA (on stdin) 01:01:42.221312 > 8 bytes data, server => client 01:01:42.221391 '213 18\r\n' 01:01:42.221848 < 21 bytes data, client => server 01:01:42.221920 'RETR verifiedserver\r\n' 01:01:42.222746 Received DATA (on stdin) 01:01:42.222809 > 29 bytes data, server => client 01:01:42.222902 '150 Binary junk (18 bytes).\r\n' 01:01:42.233792 Received DATA (on stdin) 01:01:42.233873 > 28 bytes data, server => client 01:01:42.233950 '226 File transfer complete\r\n' 01:01:42.274021 < 6 bytes data, client => server 01:01:42.274173 'QUIT\r\n' 01:01:42.275022 Received DATA (on stdin) 01:01:42.275087 > 18 bytes data, server => client 01:01:42.275173 '221 bye bye baby\r\n' 01:01:42.276703 ====> Client disconnect 01:01:42.276991 Received ACKD (on stdin) 01:02:29.635785 ====> Client connect 01:02:29.643296 Received DATA (on stdin) 01:02:29.643445 > 1 bytes data, server => client 01:02:29.643564 '2' 01:02:29.649367 Received DATA (on stdin) 01:02:29.649455 > 1 bytes data, server => client 01:02:29.649550 '2' 01:02:29.654854 Received DATA (on stdin) 01:02:29.654934 > 1 bytes data, server => client 01:02:29.655028 '0' 01:02:29.660255 Received DATA (on stdin) 01:02:29.660334 > 1 bytes data, server => client 01:02:29.660421 '-' 01:02:29.665636 Received DATA (on stdin) 01:02:29.665714 > 1 bytes data, server => client 01:02:29.665802 ' ' 01:02:29.671020 Received DATA (on stdin) 01:02:29.671099 > 1 bytes data, server => client 01:02:29.671187 ' ' 01:02:29.676419 Received DATA (on stdin) 01:02:29.676504 > 1 bytes data, server => client 01:02:29.676605 ' ' 01:02:29.681841 Received DATA (on stdin) 01:02:29.681925 > 1 bytes data, server => client 01:02:29.682016 ' ' 01:02:29.687224 Received DATA (on stdin) 01:02:29.687306 > 1 bytes data, server => client 01:02:29.687423 ' ' 01:02:29.693268 Received DATA (on stdin) 01:02:29.693354 > 1 bytes data, server => client 01:02:29.693420 ' ' 01:02:29.700004 Received DATA (on stdin) 01:02:29.700093 > 1 bytes data, server => client 01:02:29.700167 ' ' 01:02:29.705112 Received DATA (on stdin) 01:02:29.705188 > 1 bytes data, server => client 01:02:29.705254 ' ' 01:02:29.710239 Received DATA (on stdin) 01:02:29.710324 > 1 bytes data, server => client 01:02:29.710396 '_' 01:02:29.715328 Received DATA (on stdin) 01:02:29.715409 > 1 bytes data, server => client 01:02:29.715496 ' ' 01:02:29.720703 Received DATA (on stdin) 01:02:29.720789 > 1 bytes data, server => client 01:02:29.720891 ' ' 01:02:29.726132 Received DATA (on stdin) 01:02:29.726222 > 1 bytes data, server => client 01:02:29.726332 ' ' 01:02:29.731556 Received DATA (on stdin) 01:02:29.731636 > 1 bytes data, server => client 01:02:29.731722 '_' 01:02:29.736926 Received DATA (on stdin) 01:02:29.737013 > 1 bytes data, server => client 01:02:29.737117 ' ' 01:02:29.742228 Received DATA (on stdin) 01:02:29.742303 > 1 bytes data, server => client 01:02:29.742366 '_' 01:02:29.750004 Received DATA (on stdin) 01:02:29.750090 > 1 bytes data, server => client 01:02:29.750158 '_' 01:02:29.755110 Received DATA (on stdin) 01:02:29.755186 > 1 bytes data, server => client 01:02:29.755252 '_' 01:02:29.760215 Received DATA (on stdin) 01:02:29.760290 > 1 bytes data, server => client 01:02:29.760352 '_' 01:02:29.765303 Received DATA (on stdin) 01:02:29.765377 > 1 bytes data, server => client 01:02:29.765458 ' ' 01:02:29.770640 Received DATA (on stdin) 01:02:29.770713 > 1 bytes data, server => client 01:02:29.770805 ' ' 01:02:29.775905 Received DATA (on stdin) 01:02:29.775989 > 1 bytes data, server => client 01:02:29.776075 '_' 01:02:29.783323 Received DATA (on stdin) 01:02:29.783403 > 1 bytes data, server => client 01:02:29.783471 ' ' 01:02:29.788429 Received DATA (on stdin) 01:02:29.788515 > 1 bytes data, server => client 01:02:29.788587 ' ' 01:02:29.793514 Received DATA (on stdin) 01:02:29.793589 > 1 bytes data, server => client 01:02:29.793672 ' ' 01:02:29.798855 Received DATA (on stdin) 01:02:29.798932 > 1 bytes data, server => client 01:02:29.799018 ' ' 01:02:29.804198 Received DATA (on stdin) 01:02:29.804270 > 1 bytes data, server => client 01:02:29.804351 ' ' 01:02:29.809530 Received DATA (on stdin) 01:02:29.809608 > 1 bytes data, server => client 01:02:29.809705 '\r' 01:02:29.814914 Received DATA (on stdin) 01:02:29.814999 > 1 bytes data, server => client 01:02:29.815085 '\n' 01:02:29.820289 Received DATA (on stdin) 01:02:29.820373 > 1 bytes data, server => client 01:02:29.823352 '2' 01:02:29.825639 Received DATA (on stdin) 01:02:29.825710 > 1 bytes data, server => client 01:02:29.826667 '2' 01:02:29.831893 Received DATA (on stdin) 01:02:29.831975 > 1 bytes data, server => client 01:02:29.832062 '0' 01:02:29.837271 Received DATA (on stdin) 01:02:29.837354 > 1 bytes data, server => client 01:02:29.837441 '-' 01:02:29.842635 Received DATA (on stdin) 01:02:29.842714 > 1 bytes data, server => client 01:02:29.842797 ' ' 01:02:29.847986 Received DATA (on stdin) 01:02:29.848067 > 1 bytes data, server => client 01:02:29.848150 ' ' 01:02:29.853306 Received DATA (on stdin) 01:02:29.853384 > 1 bytes data, server => client 01:02:29.853478 ' ' 01:02:29.858587 Received DATA (on stdin) 01:02:29.858669 > 1 bytes data, server => client 01:02:29.860022 ' ' 01:02:29.865144 Received DATA (on stdin) 01:02:29.865224 > 1 bytes data, server => client 01:02:29.865288 '_' 01:02:29.870234 Received DATA (on stdin) 01:02:29.870311 > 1 bytes data, server => client 01:02:29.870393 '_' 01:02:29.875583 Received DATA (on stdin) 01:02:29.875661 > 1 bytes data, server => client 01:02:29.875755 '_' 01:02:29.880848 Received DATA (on stdin) 01:02:29.880922 > 1 bytes data, server => client 01:02:29.883297 '|' 01:02:29.888438 Received DATA (on stdin) 01:02:29.888514 > 1 bytes data, server => client 01:02:29.888576 ' ' 01:02:29.893570 Received DATA (on stdin) 01:02:29.893657 > 1 bytes data, server => client 01:02:29.893721 '|' 01:02:29.898663 Received DATA (on stdin) 01:02:29.898747 > 1 bytes data, server => client 01:02:29.898836 ' ' 01:02:29.904042 Received DATA (on stdin) 01:02:29.904134 > 1 bytes data, server => client 01:02:29.904225 '|' 01:02:29.909425 Received DATA (on stdin) 01:02:29.909509 > 1 bytes data, server => client 01:02:29.909595 ' ' 01:02:29.914794 Received DATA (on stdin) 01:02:29.914884 > 1 bytes data, server => client 01:02:29.914994 '|' 01:02:29.920093 Received DATA (on stdin) 01:02:29.920172 > 1 bytes data, server => client 01:02:29.920257 ' ' 01:02:29.928401 Received DATA (on stdin) 01:02:29.928489 > 1 bytes data, server => client 01:02:29.928552 ' ' 01:02:29.933511 Received DATA (on stdin) 01:02:29.933590 > 1 bytes data, server => client 01:02:29.933677 '_' 01:02:29.938629 Received DATA (on stdin) 01:02:29.938706 > 1 bytes data, server => client 01:02:29.938769 ' ' 01:02:29.943718 Received DATA (on stdin) 01:02:29.943795 > 1 bytes data, server => client 01:02:29.943879 '\' 01:02:29.949063 Received DATA (on stdin) 01:02:29.949139 > 1 bytes data, server => client 01:02:29.949222 '|' 01:02:29.954405 Received DATA (on stdin) 01:02:29.954480 > 1 bytes data, server => client 01:02:29.954560 ' ' 01:02:29.959746 Received DATA (on stdin) 01:02:29.959830 > 1 bytes data, server => client 01:02:29.959937 '|' 01:02:29.965029 Received DATA (on stdin) 01:02:29.965113 > 1 bytes data, server => client 01:02:29.966625 ' ' 01:02:29.971757 Received DATA (on stdin) 01:02:29.971844 > 1 bytes data, server => client 01:02:29.971906 ' ' 01:02:29.976848 Received DATA (on stdin) 01:02:29.976925 > 1 bytes data, server => client 01:02:29.977007 ' ' 01:02:29.982195 Received DATA (on stdin) 01:02:29.982272 > 1 bytes data, server => client 01:02:29.982358 ' ' 01:02:29.987544 Received DATA (on stdin) 01:02:29.987626 > 1 bytes data, server => client 01:02:29.990018 '\r' 01:02:29.995129 Received DATA (on stdin) 01:02:29.995206 > 1 bytes data, server => client 01:02:29.995273 '\n' 01:02:30.000242 Received DATA (on stdin) 01:02:30.000332 > 1 bytes data, server => client 01:02:30.000397 '2' 01:02:30.005344 Received DATA (on stdin) 01:02:30.005424 > 1 bytes data, server => client 01:02:30.005509 '2' 01:02:30.010699 Received DATA (on stdin) 01:02:30.010787 > 1 bytes data, server => client 01:02:30.010883 '0' 01:02:30.016093 Received DATA (on stdin) 01:02:30.016180 > 1 bytes data, server => client 01:02:30.016268 '-' 01:02:30.021461 Received DATA (on stdin) 01:02:30.021538 > 1 bytes data, server => client 01:02:30.021623 ' ' 01:02:30.026824 Received DATA (on stdin) 01:02:30.026914 > 1 bytes data, server => client 01:02:30.026998 ' ' 01:02:30.032186 Received DATA (on stdin) 01:02:30.032265 > 1 bytes data, server => client 01:02:30.033327 ' ' 01:02:30.038458 Received DATA (on stdin) 01:02:30.038546 > 1 bytes data, server => client 01:02:30.038610 '/' 01:02:30.043583 Received DATA (on stdin) 01:02:30.043672 > 1 bytes data, server => client 01:02:30.043744 ' ' 01:02:30.048703 Received DATA (on stdin) 01:02:30.048784 > 1 bytes data, server => client 01:02:30.048851 '_' 01:02:30.053797 Received DATA (on stdin) 01:02:30.053880 > 1 bytes data, server => client 01:02:30.053980 '_' 01:02:30.059933 Received DATA (on stdin) 01:02:30.060011 > 1 bytes data, server => client 01:02:30.060076 '|' 01:02:30.066661 Received DATA (on stdin) 01:02:30.066745 > 1 bytes data, server => client 01:02:30.066809 ' ' 01:02:30.071766 Received DATA (on stdin) 01:02:30.071844 > 1 bytes data, server => client 01:02:30.071905 '|' 01:02:30.076875 Received DATA (on stdin) 01:02:30.076956 > 1 bytes data, server => client 01:02:30.077025 ' ' 01:02:30.081966 Received DATA (on stdin) 01:02:30.082043 > 1 bytes data, server => client 01:02:30.082127 '|' 01:02:30.087334 Received DATA (on stdin) 01:02:30.087412 > 1 bytes data, server => client 01:02:30.087501 ' ' 01:02:30.092692 Received DATA (on stdin) 01:02:30.092775 > 1 bytes data, server => client 01:02:30.092869 '|' 01:02:30.098078 Received DATA (on stdin) 01:02:30.098166 > 1 bytes data, server => client 01:02:30.098257 ' ' 01:02:30.103451 Received DATA (on stdin) 01:02:30.103529 > 1 bytes data, server => client 01:02:30.103617 '|' 01:02:30.111728 Received DATA (on stdin) 01:02:30.111813 > 1 bytes data, server => client 01:02:30.111877 '_' 01:02:30.116837 Received DATA (on stdin) 01:02:30.116922 > 1 bytes data, server => client 01:02:30.116993 ')' 01:02:30.121947 Received DATA (on stdin) 01:02:30.122023 > 1 bytes data, server => client 01:02:30.122088 ' ' 01:02:30.127034 Received DATA (on stdin) 01:02:30.127109 > 1 bytes data, server => client 01:02:30.127192 '|' 01:02:30.132373 Received DATA (on stdin) 01:02:30.132447 > 1 bytes data, server => client 01:02:30.132527 ' ' 01:02:30.137717 Received DATA (on stdin) 01:02:30.137794 > 1 bytes data, server => client 01:02:30.137875 '|' 01:02:30.143090 Received DATA (on stdin) 01:02:30.143171 > 1 bytes data, server => client 01:02:30.143278 ' ' 01:02:30.148385 Received DATA (on stdin) 01:02:30.148460 > 1 bytes data, server => client 01:02:30.149967 ' ' 01:02:30.155079 Received DATA (on stdin) 01:02:30.155158 > 1 bytes data, server => client 01:02:30.155225 ' ' 01:02:30.160163 Received DATA (on stdin) 01:02:30.160238 > 1 bytes data, server => client 01:02:30.160319 ' ' 01:02:30.165499 Received DATA (on stdin) 01:02:30.165573 > 1 bytes data, server => client 01:02:30.165657 '\r' 01:02:30.170849 Received DATA (on stdin) 01:02:30.170931 > 1 bytes data, server => client 01:02:30.171017 '\n' 01:02:30.178416 Received DATA (on stdin) 01:02:30.178495 > 1 bytes data, server => client 01:02:30.178562 '2' 01:02:30.183522 Received DATA (on stdin) 01:02:30.183598 > 1 bytes data, server => client 01:02:30.183662 '2' 01:02:30.188628 Received DATA (on stdin) 01:02:30.188703 > 1 bytes data, server => client 01:02:30.188767 '0' 01:02:30.193715 Received DATA (on stdin) 01:02:30.193789 > 1 bytes data, server => client 01:02:30.193874 '-' 01:02:30.199056 Received DATA (on stdin) 01:02:30.199134 > 1 bytes data, server => client 01:02:30.199220 ' ' 01:02:30.204411 Received DATA (on stdin) 01:02:30.204489 > 1 bytes data, server => client 01:02:30.204584 ' ' 01:02:30.209678 Received DATA (on stdin) 01:02:30.209751 > 1 bytes data, server => client 01:02:30.213290 '|' 01:02:30.218401 Received DATA (on stdin) 01:02:30.218489 > 1 bytes data, server => client 01:02:30.218554 ' ' 01:02:30.223510 Received DATA (on stdin) 01:02:30.223587 > 1 bytes data, server => client 01:02:30.223652 '(' 01:02:30.228609 Received DATA (on stdin) 01:02:30.228690 > 1 bytes data, server => client 01:02:30.228776 '_' 01:02:30.233966 Received DATA (on stdin) 01:02:30.234053 > 1 bytes data, server => client 01:02:30.234148 '_' 01:02:30.239349 Received DATA (on stdin) 01:02:30.239428 > 1 bytes data, server => client 01:02:30.239514 '|' 01:02:30.244713 Received DATA (on stdin) 01:02:30.244800 > 1 bytes data, server => client 01:02:30.244895 ' ' 01:02:30.250098 Received DATA (on stdin) 01:02:30.250180 > 1 bytes data, server => client 01:02:30.250270 '|' 01:02:30.255467 Received DATA (on stdin) 01:02:30.255549 > 1 bytes data, server => client 01:02:30.255643 '_' 01:02:30.260831 Received DATA (on stdin) 01:02:30.260910 > 1 bytes data, server => client 01:02:30.260995 '|' 01:02:30.266183 Received DATA (on stdin) 01:02:30.266263 > 1 bytes data, server => client 01:02:30.266346 ' ' 01:02:30.271536 Received DATA (on stdin) 01:02:30.271617 > 1 bytes data, server => client 01:02:30.271705 '|' 01:02:30.279996 Received DATA (on stdin) 01:02:30.280076 > 1 bytes data, server => client 01:02:30.280144 ' ' 01:02:30.285183 Received DATA (on stdin) 01:02:30.285282 > 1 bytes data, server => client 01:02:30.285345 ' ' 01:02:30.291784 Received DATA (on stdin) 01:02:30.291865 > 1 bytes data, server => client 01:02:30.291930 '_' 01:02:30.296878 Received DATA (on stdin) 01:02:30.296963 > 1 bytes data, server => client 01:02:30.297057 ' ' 01:02:30.303755 Received DATA (on stdin) 01:02:30.303843 > 1 bytes data, server => client 01:02:30.303926 '{' 01:02:30.309112 Received DATA (on stdin) 01:02:30.309190 > 1 bytes data, server => client 01:02:30.309285 '|' 01:02:30.314386 Received DATA (on stdin) 01:02:30.314473 > 1 bytes data, server => client 01:02:30.314566 ' ' 01:02:30.321758 Received DATA (on stdin) 01:02:30.321854 > 1 bytes data, server => client 01:02:30.321917 '|' 01:02:30.326908 Received DATA (on stdin) 01:02:30.327018 > 1 bytes data, server => client 01:02:30.327086 '_' 01:02:30.332002 Received DATA (on stdin) 01:02:30.332081 > 1 bytes data, server => client 01:02:30.332167 '_' 01:02:30.337354 Received DATA (on stdin) 01:02:30.337430 > 1 bytes data, server => client 01:02:30.337512 '_' 01:02:30.342699 Received DATA (on stdin) 01:02:30.342777 > 1 bytes data, server => client 01:02:30.342864 ' ' 01:02:30.348046 Received DATA (on stdin) 01:02:30.348120 > 1 bytes data, server => client 01:02:30.348203 '\r' 01:02:30.353390 Received DATA (on stdin) 01:02:30.353483 > 1 bytes data, server => client 01:02:30.356628 '\n' 01:02:30.361741 Received DATA (on stdin) 01:02:30.361818 > 1 bytes data, server => client 01:02:30.361878 '2' 01:02:30.366844 Received DATA (on stdin) 01:02:30.366918 > 1 bytes data, server => client 01:02:30.366981 '2' 01:02:30.371933 Received DATA (on stdin) 01:02:30.372010 > 1 bytes data, server => client 01:02:30.372104 '0' 01:02:30.377298 Received DATA (on stdin) 01:02:30.377379 > 1 bytes data, server => client 01:02:30.377470 ' ' 01:02:30.382659 Received DATA (on stdin) 01:02:30.382733 > 1 bytes data, server => client 01:02:30.382816 ' ' 01:02:30.388004 Received DATA (on stdin) 01:02:30.388085 > 1 bytes data, server => client 01:02:30.388176 ' ' 01:02:30.393361 Received DATA (on stdin) 01:02:30.393433 > 1 bytes data, server => client 01:02:30.393526 ' ' 01:02:30.398616 Received DATA (on stdin) 01:02:30.398689 > 1 bytes data, server => client 01:02:30.398770 '\' 01:02:30.406668 Received DATA (on stdin) 01:02:30.406754 > 1 bytes data, server => client 01:02:30.406820 '_' 01:02:30.411775 Received DATA (on stdin) 01:02:30.411856 > 1 bytes data, server => client 01:02:30.411928 '_' 01:02:30.416881 Received DATA (on stdin) 01:02:30.416960 > 1 bytes data, server => client 01:02:30.417025 '_' 01:02:30.421978 Received DATA (on stdin) 01:02:30.422056 > 1 bytes data, server => client 01:02:30.422139 '|' 01:02:30.427333 Received DATA (on stdin) 01:02:30.427419 > 1 bytes data, server => client 01:02:30.427515 '\' 01:02:30.432744 Received DATA (on stdin) 01:02:30.432839 > 1 bytes data, server => client 01:02:30.432927 '_' 01:02:30.439998 Received DATA (on stdin) 01:02:30.440085 > 1 bytes data, server => client 01:02:30.440158 '_' 01:02:30.445101 Received DATA (on stdin) 01:02:30.445174 > 1 bytes data, server => client 01:02:30.445237 '_' 01:02:30.450190 Received DATA (on stdin) 01:02:30.450308 > 1 bytes data, server => client 01:02:30.450395 '/' 01:02:30.455593 Received DATA (on stdin) 01:02:30.455672 > 1 bytes data, server => client 01:02:30.455761 '|' 01:02:30.460946 Received DATA (on stdin) 01:02:30.461022 > 1 bytes data, server => client 01:02:30.461119 '_' 01:02:30.466208 Received DATA (on stdin) 01:02:30.466283 > 1 bytes data, server => client 01:02:30.466369 '|' 01:02:30.475048 Received DATA (on stdin) 01:02:30.475127 > 1 bytes data, server => client 01:02:30.475194 ' ' 01:02:30.480150 Received DATA (on stdin) 01:02:30.480223 > 1 bytes data, server => client 01:02:30.480285 '\' 01:02:30.485257 Received DATA (on stdin) 01:02:30.485339 > 1 bytes data, server => client 01:02:30.485411 '_' 01:02:30.490341 Received DATA (on stdin) 01:02:30.490415 > 1 bytes data, server => client 01:02:30.490500 '\' 01:02:30.495683 Received DATA (on stdin) 01:02:30.495759 > 1 bytes data, server => client 01:02:30.495844 '_' 01:02:30.501031 Received DATA (on stdin) 01:02:30.501108 > 1 bytes data, server => client 01:02:30.501191 '_' 01:02:30.506377 Received DATA (on stdin) 01:02:30.506453 > 1 bytes data, server => client 01:02:30.506536 '_' 01:02:30.511760 Received DATA (on stdin) 01:02:30.511848 > 1 bytes data, server => client 01:02:30.511934 '_' 01:02:30.517129 Received DATA (on stdin) 01:02:30.517208 > 1 bytes data, server => client 01:02:30.517316 '_' 01:02:30.522408 Received DATA (on stdin) 01:02:30.522484 > 1 bytes data, server => client 01:02:30.522566 '|' 01:02:30.528392 Received DATA (on stdin) 01:02:30.528477 > 1 bytes data, server => client 01:02:30.528551 '\r' 01:02:30.533479 Received DATA (on stdin) 01:02:30.533558 > 1 bytes data, server => client 01:02:30.533645 '\n' 01:02:31.085007 < 16 bytes data, client => server 01:02:31.085199 'USER anonymous\r\n' 01:02:31.089954 Received DATA (on stdin) 01:02:31.090047 > 1 bytes data, server => client 01:02:31.090122 '3' 01:02:31.093335 Received DATA (on stdin) 01:02:31.093419 > 1 bytes data, server => client 01:02:31.093490 '3' 01:02:31.098423 Received DATA (on stdin) 01:02:31.098506 > 1 bytes data, server => client 01:02:31.098599 '1' 01:02:31.103807 Received DATA (on stdin) 01:02:31.103890 > 1 bytes data, server => client 01:02:31.104001 ' ' 01:02:31.109211 Received DATA (on stdin) 01:02:31.109294 > 1 bytes data, server => client 01:02:31.109388 'W' 01:02:31.115035 Received DATA (on stdin) 01:02:31.115120 > 1 bytes data, server => client 01:02:31.115226 'e' 01:02:31.123351 Received DATA (on stdin) 01:02:31.123445 > 1 bytes data, server => client 01:02:31.123518 ' ' 01:02:31.128460 Received DATA (on stdin) 01:02:31.128542 > 1 bytes data, server => client 01:02:31.128615 'a' 01:02:31.133587 Received DATA (on stdin) 01:02:31.133675 > 1 bytes data, server => client 01:02:31.133748 'r' 01:02:31.138678 Received DATA (on stdin) 01:02:31.138761 > 1 bytes data, server => client 01:02:31.138856 'e' 01:02:31.144066 Received DATA (on stdin) 01:02:31.144141 > 1 bytes data, server => client 01:02:31.144227 ' ' 01:02:31.149445 Received DATA (on stdin) 01:02:31.149532 > 1 bytes data, server => client 01:02:31.149627 'h' 01:02:31.154848 Received DATA (on stdin) 01:02:31.154932 > 1 bytes data, server => client 01:02:31.155023 'a' 01:02:31.160238 Received DATA (on stdin) 01:02:31.160315 > 1 bytes data, server => client 01:02:31.160403 'p' 01:02:31.165622 Received DATA (on stdin) 01:02:31.165709 > 1 bytes data, server => client 01:02:31.165804 'p' 01:02:31.171028 Received DATA (on stdin) 01:02:31.171111 > 1 bytes data, server => client 01:02:31.173260 'y' 01:02:31.176306 Received DATA (on stdin) 01:02:31.176375 > 1 bytes data, server => client 01:02:31.179969 ' ' 01:02:31.185107 Received DATA (on stdin) 01:02:31.185193 > 1 bytes data, server => client 01:02:31.185258 'y' 01:02:31.190238 Received DATA (on stdin) 01:02:31.190327 > 1 bytes data, server => client 01:02:31.190401 'o' 01:02:31.195332 Received DATA (on stdin) 01:02:31.195418 > 1 bytes data, server => client 01:02:31.196609 'u' 01:02:31.201809 Received DATA (on stdin) 01:02:31.201887 > 1 bytes data, server => client 01:02:31.201971 ' ' 01:02:31.207185 Received DATA (on stdin) 01:02:31.207273 > 1 bytes data, server => client 01:02:31.207360 'p' 01:02:31.212565 Received DATA (on stdin) 01:02:31.212652 > 1 bytes data, server => client 01:02:31.212762 'o' 01:02:31.217863 Received DATA (on stdin) 01:02:31.217942 > 1 bytes data, server => client 01:02:31.218028 'p' 01:02:31.226673 Received DATA (on stdin) 01:02:31.226764 > 1 bytes data, server => client 01:02:31.226837 'p' 01:02:31.231784 Received DATA (on stdin) 01:02:31.231863 > 1 bytes data, server => client 01:02:31.231930 'e' 01:02:31.236896 Received DATA (on stdin) 01:02:31.236983 > 1 bytes data, server => client 01:02:31.237068 'd' 01:02:31.243695 Received DATA (on stdin) 01:02:31.243786 > 1 bytes data, server => client 01:02:31.243872 ' ' 01:02:31.250553 Received DATA (on stdin) 01:02:31.250633 > 1 bytes data, server => client 01:02:31.250717 'i' 01:02:31.257317 Received DATA (on stdin) 01:02:31.257400 > 1 bytes data, server => client 01:02:31.257487 'n' 01:02:31.264104 Received DATA (on stdin) 01:02:31.264193 > 1 bytes data, server => client 01:02:31.264287 '!' 01:02:31.270973 Received DATA (on stdin) 01:02:31.271071 > 1 bytes data, server => client 01:02:31.271159 '\r' 01:02:31.277744 Received DATA (on stdin) 01:02:31.277821 > 1 bytes data, server => client 01:02:31.277904 '\n' 01:02:31.346719 < 22 bytes data, client => server 01:02:31.346898 'PASS ftp@example.com\r\n' 01:02:31.348384 Received DATA (on stdin) 01:02:31.348455 > 1 bytes data, server => client 01:02:31.349968 '2' 01:02:31.355105 Received DATA (on stdin) 01:02:31.355190 > 1 bytes data, server => client 01:02:31.355256 '3' 01:02:31.363267 Received DATA (on stdin) 01:02:31.363348 > 1 bytes data, server => client 01:02:31.363413 '0' 01:02:31.365337 Received DATA (on stdin) 01:02:31.365408 > 1 bytes data, server => client 01:02:31.365471 ' ' 01:02:31.370448 Received DATA (on stdin) 01:02:31.370528 > 1 bytes data, server => client 01:02:31.370593 'W' 01:02:31.375570 Received DATA (on stdin) 01:02:31.375647 > 1 bytes data, server => client 01:02:31.375734 'e' 01:02:31.382279 Received DATA (on stdin) 01:02:31.382364 > 1 bytes data, server => client 01:02:31.382448 'l' 01:02:31.389065 Received DATA (on stdin) 01:02:31.389151 > 1 bytes data, server => client 01:02:31.389234 'c' 01:02:31.395841 Received DATA (on stdin) 01:02:31.395928 > 1 bytes data, server => client 01:02:31.396027 'o' 01:02:31.402641 Received DATA (on stdin) 01:02:31.402732 > 1 bytes data, server => client 01:02:31.402824 'm' 01:02:31.409537 Received DATA (on stdin) 01:02:31.409623 > 1 bytes data, server => client 01:02:31.409710 'e' 01:02:31.416378 Received DATA (on stdin) 01:02:31.416457 > 1 bytes data, server => client 01:02:31.416541 ' ' 01:02:31.423183 Received DATA (on stdin) 01:02:31.423272 > 1 bytes data, server => client 01:02:31.423358 'y' 01:02:31.429916 Received DATA (on stdin) 01:02:31.430009 > 1 bytes data, server => client 01:02:31.430095 'o' 01:02:31.436718 Received DATA (on stdin) 01:02:31.436810 > 1 bytes data, server => client 01:02:31.436918 'u' 01:02:31.442031 Received DATA (on stdin) 01:02:31.442108 > 1 bytes data, server => client 01:02:31.442172 ' ' 01:02:31.447151 Received DATA (on stdin) 01:02:31.447227 > 1 bytes data, server => client 01:02:31.447292 's' 01:02:31.452252 Received DATA (on stdin) 01:02:31.452330 > 1 bytes data, server => client 01:02:31.452394 'i' 01:02:31.457371 Received DATA (on stdin) 01:02:31.457449 > 1 bytes data, server => client 01:02:31.457513 'l' 01:02:31.462484 Received DATA (on stdin) 01:02:31.462562 > 1 bytes data, server => client 01:02:31.462627 'l' 01:02:31.467594 Received DATA (on stdin) 01:02:31.467678 > 1 bytes data, server => client 01:02:31.467749 'y' 01:02:31.472701 Received DATA (on stdin) 01:02:31.472776 > 1 bytes data, server => client 01:02:31.472839 ' ' 01:02:31.477810 Received DATA (on stdin) 01:02:31.477889 > 1 bytes data, server => client 01:02:31.477952 'p' 01:02:31.482923 Received DATA (on stdin) 01:02:31.483009 > 1 bytes data, server => client 01:02:31.483078 'e' 01:02:31.488030 Received DATA (on stdin) 01:02:31.488105 > 1 bytes data, server => client 01:02:31.488167 'r' 01:02:31.493137 Received DATA (on stdin) 01:02:31.493215 > 1 bytes data, server => client 01:02:31.493302 's' 01:02:31.498251 Received DATA (on stdin) 01:02:31.498336 > 1 bytes data, server => client 01:02:31.498402 'o' 01:02:31.503323 Received DATA (on stdin) 01:02:31.503403 > 1 bytes data, server => client 01:02:31.503469 'n' 01:02:31.508430 Received DATA (on stdin) 01:02:31.508506 > 1 bytes data, server => client 01:02:31.508569 '\r' 01:02:31.513544 Received DATA (on stdin) 01:02:31.513622 > 1 bytes data, server => client 01:02:31.513684 '\n' 01:02:31.543266 < 5 bytes data, client => server 01:02:31.543401 'PWD\r\n' 01:02:31.544840 Received DATA (on stdin) 01:02:31.544917 > 1 bytes data, server => client 01:02:31.546664 '2' 01:02:31.551826 Received DATA (on stdin) 01:02:31.551911 > 1 bytes data, server => client 01:02:31.551985 '5' 01:02:31.556959 Received DATA (on stdin) 01:02:31.557039 > 1 bytes data, server => client 01:02:31.557125 '7' 01:02:31.562314 Received DATA (on stdin) 01:02:31.562391 > 1 bytes data, server => client 01:02:31.562477 ' ' 01:02:31.567658 Received DATA (on stdin) 01:02:31.567730 > 1 bytes data, server => client 01:02:31.567821 '"' 01:02:31.573020 Received DATA (on stdin) 01:02:31.573099 > 1 bytes data, server => client 01:02:31.573187 '/' 01:02:31.578370 Received DATA (on stdin) 01:02:31.578450 > 1 bytes data, server => client 01:02:31.578544 '"' 01:02:31.583724 Received DATA (on stdin) 01:02:31.583798 > 1 bytes data, server => client 01:02:31.583889 ' ' 01:02:31.588993 Received DATA (on stdin) 01:02:31.589070 > 1 bytes data, server => client 01:02:31.589145 'i' 01:02:31.594103 Received DATA (on stdin) 01:02:31.594180 > 1 bytes data, server => client 01:02:31.594242 's' 01:02:31.599220 Received DATA (on stdin) 01:02:31.599302 > 1 bytes data, server => client 01:02:31.599365 ' ' 01:02:31.604333 Received DATA (on stdin) 01:02:31.604410 > 1 bytes data, server => client 01:02:31.604470 'c' 01:02:31.609433 Received DATA (on stdin) 01:02:31.609502 > 1 bytes data, server => client 01:02:31.609560 'u' 01:02:31.614530 Received DATA (on stdin) 01:02:31.614599 > 1 bytes data, server => client 01:02:31.614672 'r' 01:02:31.619643 Received DATA (on stdin) 01:02:31.619721 > 1 bytes data, server => client 01:02:31.619781 'r' 01:02:31.624736 Received DATA (on stdin) 01:02:31.624815 > 1 bytes data, server => client 01:02:31.624895 'e' 01:02:31.631403 Received DATA (on stdin) 01:02:31.631493 > 1 bytes data, server => client 01:02:31.631586 'n' 01:02:31.638218 Received DATA (on stdin) 01:02:31.638302 > 1 bytes data, server => client 01:02:31.639068 't' 01:02:31.647492 Received DATA (on stdin) 01:02:31.647577 > 1 bytes data, server => client 01:02:31.647638 ' ' 01:02:31.652619 Received DATA (on stdin) 01:02:31.652698 > 1 bytes data, server => client 01:02:31.652758 'd' 01:02:31.657734 Received DATA (on stdin) 01:02:31.657810 > 1 bytes data, server => client 01:02:31.657870 'i' 01:02:31.662843 Received DATA (on stdin) 01:02:31.662914 > 1 bytes data, server => client 01:02:31.662973 'r' 01:02:31.667947 Received DATA (on stdin) 01:02:31.668019 > 1 bytes data, server => client 01:02:31.668078 'e' 01:02:31.673056 Received DATA (on stdin) 01:02:31.673126 > 1 bytes data, server => client 01:02:31.673185 'c' 01:02:31.678173 Received DATA (on stdin) 01:02:31.678242 > 1 bytes data, server => client 01:02:31.678301 't' 01:02:31.683285 Received DATA (on stdin) 01:02:31.683357 > 1 bytes data, server => client 01:02:31.683416 'o' 01:02:31.688394 Received DATA (on stdin) 01:02:31.688463 > 1 bytes data, server => client 01:02:31.688522 'r' 01:02:31.693511 Received DATA (on stdin) 01:02:31.693588 > 1 bytes data, server => client 01:02:31.693649 'y' 01:02:31.698622 Received DATA (on stdin) 01:02:31.698698 > 1 bytes data, server => client 01:02:31.698763 '\r' 01:02:31.706299 Received DATA (on stdin) 01:02:31.706387 > 1 bytes data, server => client 01:02:31.706459 '\n' 01:02:31.899998 < 6 bytes data, client => server 01:02:31.900203 'EPSV\r\n' 01:02:31.957910 Received DATA (on stdin) 01:02:31.958084 > 1 bytes data, server => client 01:02:31.958154 '2' 01:02:31.963032 Received DATA (on stdin) 01:02:31.963121 > 1 bytes data, server => client 01:02:31.963192 '2' 01:02:31.973267 Received DATA (on stdin) 01:02:31.973377 > 1 bytes data, server => client 01:02:31.973456 '9' 01:02:31.975120 Received DATA (on stdin) 01:02:31.975194 > 1 bytes data, server => client 01:02:31.975264 ' ' 01:02:31.980224 Received DATA (on stdin) 01:02:31.980306 > 1 bytes data, server => client 01:02:31.980377 'E' 01:02:31.985332 Received DATA (on stdin) 01:02:31.985416 > 1 bytes data, server => client 01:02:31.985486 'n' 01:02:31.990446 Received DATA (on stdin) 01:02:31.990533 > 1 bytes data, server => client 01:02:31.990604 't' 01:02:31.995579 Received DATA (on stdin) 01:02:31.995667 > 1 bytes data, server => client 01:02:31.995738 'e' 01:02:32.000687 Received DATA (on stdin) 01:02:32.000780 > 1 bytes data, server => client 01:02:32.000852 'r' 01:02:32.005876 Received DATA (on stdin) 01:02:32.005959 > 1 bytes data, server => client 01:02:32.006030 'i' 01:02:32.011000 Received DATA (on stdin) 01:02:32.011081 > 1 bytes data, server => client 01:02:32.011147 'n' 01:02:32.016144 Received DATA (on stdin) 01:02:32.016223 > 1 bytes data, server => client 01:02:32.016286 'g' 01:02:32.026333 Received DATA (on stdin) 01:02:32.026491 > 1 bytes data, server => client 01:02:32.026556 ' ' 01:02:32.026836 Received DATA (on stdin) 01:02:32.026901 > 1 bytes data, server => client 01:02:32.026963 'P' 01:02:32.031965 Received DATA (on stdin) 01:02:32.032063 > 1 bytes data, server => client 01:02:32.032153 'a' 01:02:32.037408 Received DATA (on stdin) 01:02:32.037518 > 1 bytes data, server => client 01:02:32.037614 's' 01:02:32.042870 Received DATA (on stdin) 01:02:32.042956 > 1 bytes data, server => client 01:02:32.043043 's' 01:02:32.048266 Received DATA (on stdin) 01:02:32.048361 > 1 bytes data, server => client 01:02:32.049596 'i' 01:02:32.054728 Received DATA (on stdin) 01:02:32.054819 > 1 bytes data, server => client 01:02:32.054885 'v' 01:02:32.059856 Received DATA (on stdin) 01:02:32.059955 > 1 bytes data, server => client 01:02:32.060018 'e' 01:02:32.066662 Received DATA (on stdin) 01:02:32.066748 > 1 bytes data, server => client 01:02:32.066812 ' ' 01:02:32.071758 Received DATA (on stdin) 01:02:32.071837 > 1 bytes data, server => client 01:02:32.071923 'M' 01:02:32.078498 Received DATA (on stdin) 01:02:32.078592 > 1 bytes data, server => client 01:02:32.078656 'o' 01:02:32.083616 Received DATA (on stdin) 01:02:32.083697 > 1 bytes data, server => client 01:02:32.083788 'd' 01:02:32.090503 Received DATA (on stdin) 01:02:32.090582 > 1 bytes data, server => client 01:02:32.090665 'e' 01:02:32.097259 Received DATA (on stdin) 01:02:32.097344 > 1 bytes data, server => client 01:02:32.097408 ' ' 01:02:32.102358 Received DATA (on stdin) 01:02:32.102444 > 1 bytes data, server => client 01:02:32.102529 '(' 01:02:32.108448 Received DATA (on stdin) 01:02:32.108596 > 1 bytes data, server => client 01:02:32.108711 '|' 01:02:32.113872 Received DATA (on stdin) 01:02:32.113982 > 1 bytes data, server => client 01:02:32.114048 '|' 01:02:32.120041 Received DATA (on stdin) 01:02:32.120151 > 1 bytes data, server => client 01:02:32.120218 '|' 01:02:32.126793 Received DATA (on stdin) 01:02:32.127010 > 1 bytes data, server => client 01:02:32.127084 '3' 01:02:32.131897 Received DATA (on stdin) 01:02:32.131981 > 1 bytes data, server => client 01:02:32.132045 '3' 01:02:32.137011 Received DATA (on stdin) 01:02:32.137097 > 1 bytes data, server => client 01:02:32.137169 '8' 01:02:32.142127 Received DATA (on stdin) 01:02:32.142212 > 1 bytes data, server => client 01:02:32.142283 '5' 01:02:32.147242 Received DATA (on stdin) 01:02:32.147340 > 1 bytes data, server => client 01:02:32.147425 '7' 01:02:32.152662 Received DATA (on stdin) 01:02:32.152762 > 1 bytes data, server => client 01:02:32.155868 '|' 01:02:32.160980 Received DATA (on stdin) 01:02:32.161063 > 1 bytes data, server => client 01:02:32.161146 ')' 01:02:32.166678 Received DATA (on stdin) 01:02:32.166764 > 1 bytes data, server => client 01:02:32.166851 '\r' 01:02:32.172052 Received DATA (on stdin) 01:02:32.172129 > 1 bytes data, server => client 01:02:32.172213 '\n' 01:02:32.509835 < 8 bytes data, client => server 01:02:32.510045 'TYPE A\r\n' 01:02:32.511292 Received DATA (on stdin) 01:02:32.511369 > 1 bytes data, server => client 01:02:32.511435 '2' 01:02:32.516419 Received DATA (on stdin) 01:02:32.516498 > 1 bytes data, server => client 01:02:32.519960 '0' 01:02:32.525167 Received DATA (on stdin) 01:02:32.525311 > 1 bytes data, server => client 01:02:32.525378 '0' 01:02:32.530285 Received DATA (on stdin) 01:02:32.530376 > 1 bytes data, server => client 01:02:32.530442 ' ' 01:02:32.536796 Received DATA (on stdin) 01:02:32.536959 > 1 bytes data, server => client 01:02:32.537028 'I' 01:02:32.541912 Received DATA (on stdin) 01:02:32.542029 > 1 bytes data, server => client 01:02:32.542120 ' ' 01:02:32.547361 Received DATA (on stdin) 01:02:32.547444 > 1 bytes data, server => client 01:02:32.547531 'm' 01:02:32.552733 Received DATA (on stdin) 01:02:32.552810 > 1 bytes data, server => client 01:02:32.552893 'o' 01:02:32.558089 Received DATA (on stdin) 01:02:32.558166 > 1 bytes data, server => client 01:02:32.558252 'd' 01:02:32.563457 Received DATA (on stdin) 01:02:32.563535 > 1 bytes data, server => client 01:02:32.563618 'i' 01:02:32.568846 Received DATA (on stdin) 01:02:32.568924 > 1 bytes data, server => client 01:02:32.569007 'f' 01:02:32.575580 Received DATA (on stdin) 01:02:32.575655 > 1 bytes data, server => client 01:02:32.575739 'y' 01:02:32.581898 Received DATA (on stdin) 01:02:32.581971 > 1 bytes data, server => client 01:02:32.582052 ' ' 01:02:32.588630 Received DATA (on stdin) 01:02:32.588705 > 1 bytes data, server => client 01:02:32.588787 'T' 01:02:32.595334 Received DATA (on stdin) 01:02:32.595408 > 1 bytes data, server => client 01:02:32.595501 'Y' 01:02:32.600623 Received DATA (on stdin) 01:02:32.600705 > 1 bytes data, server => client 01:02:32.600770 'P' 01:02:32.605731 Received DATA (on stdin) 01:02:32.605807 > 1 bytes data, server => client 01:02:32.605871 'E' 01:02:32.610859 Received DATA (on stdin) 01:02:32.610947 > 1 bytes data, server => client 01:02:32.611032 ' ' 01:02:32.616039 Received DATA (on stdin) 01:02:32.616147 > 1 bytes data, server => client 01:02:32.616214 'a' 01:02:32.622638 Received DATA (on stdin) 01:02:32.622739 > 1 bytes data, server => client 01:02:32.622805 's' 01:02:32.626290 Received DATA (on stdin) 01:02:32.626371 > 1 bytes data, server => client 01:02:32.626435 ' ' 01:02:32.636177 Received DATA (on stdin) 01:02:32.636328 > 1 bytes data, server => client 01:02:32.636400 'y' 01:02:32.639136 Received DATA (on stdin) 01:02:32.639214 > 1 bytes data, server => client 01:02:32.639277 'o' 01:02:32.644181 Received DATA (on stdin) 01:02:32.644265 > 1 bytes data, server => client 01:02:32.644329 'u' 01:02:32.649865 Received DATA (on stdin) 01:02:32.649992 > 1 bytes data, server => client 01:02:32.650054 ' ' 01:02:32.656377 Received DATA (on stdin) 01:02:32.656532 > 1 bytes data, server => client 01:02:32.656644 'w' 01:02:32.661977 Received DATA (on stdin) 01:02:32.662056 > 1 bytes data, server => client 01:02:32.662119 'a' 01:02:32.669957 Received DATA (on stdin) 01:02:32.670032 > 1 bytes data, server => client 01:02:32.670095 'n' 01:02:32.675063 Received DATA (on stdin) 01:02:32.675136 > 1 bytes data, server => client 01:02:32.675196 't' 01:02:32.680165 Received DATA (on stdin) 01:02:32.680248 > 1 bytes data, server => client 01:02:32.680310 'e' 01:02:32.685266 Received DATA (on stdin) 01:02:32.685339 > 1 bytes data, server => client 01:02:32.685400 'd' 01:02:32.690363 Received DATA (on stdin) 01:02:32.690436 > 1 bytes data, server => client 01:02:32.690499 '\r' 01:02:32.695466 Received DATA (on stdin) 01:02:32.695537 > 1 bytes data, server => client 01:02:32.695599 '\n' 01:02:32.746659 < 6 bytes data, client => server 01:02:32.746877 'LIST\r\n' 01:02:32.748184 Received DATA (on stdin) 01:02:32.748258 > 1 bytes data, server => client 01:02:32.748321 '1' 01:02:32.753301 Received DATA (on stdin) 01:02:32.753376 > 1 bytes data, server => client 01:02:32.753438 '5' 01:02:32.758418 Received DATA (on stdin) 01:02:32.758496 > 1 bytes data, server => client 01:02:32.758561 '0' 01:02:32.763525 Received DATA (on stdin) 01:02:32.763600 > 1 bytes data, server => client 01:02:32.763663 ' ' 01:02:32.768626 Received DATA (on stdin) 01:02:32.768701 > 1 bytes data, server => client 01:02:32.768765 'h' 01:02:32.773724 Received DATA (on stdin) 01:02:32.773797 > 1 bytes data, server => client 01:02:32.773862 'e' 01:02:32.778827 Received DATA (on stdin) 01:02:32.778902 > 1 bytes data, server => client 01:02:32.778967 'r' 01:02:32.783927 Received DATA (on stdin) 01:02:32.784000 > 1 bytes data, server => client 01:02:32.784063 'e' 01:02:32.789025 Received DATA (on stdin) 01:02:32.789097 > 1 bytes data, server => client 01:02:32.789157 ' ' 01:02:32.794139 Received DATA (on stdin) 01:02:32.794218 > 1 bytes data, server => client 01:02:32.794281 'c' 01:02:32.799244 Received DATA (on stdin) 01:02:32.799319 > 1 bytes data, server => client 01:02:32.799381 'o' 01:02:32.804357 Received DATA (on stdin) 01:02:32.804432 > 1 bytes data, server => client 01:02:32.804493 'm' 01:02:32.809940 Received DATA (on stdin) 01:02:32.810027 > 1 bytes data, server => client 01:02:32.810089 'e' 01:02:32.815508 Received DATA (on stdin) 01:02:32.815598 > 1 bytes data, server => client 01:02:32.815657 's' 01:02:32.823290 Received DATA (on stdin) 01:02:32.823384 > 1 bytes data, server => client 01:02:32.823442 ' ' 01:02:32.825779 Received DATA (on stdin) 01:02:32.825853 > 1 bytes data, server => client 01:02:32.825934 'a' 01:02:32.831209 Received DATA (on stdin) 01:02:32.831354 > 1 bytes data, server => client 01:02:32.831461 ' ' 01:02:32.836659 Received DATA (on stdin) 01:02:32.836805 > 1 bytes data, server => client 01:02:32.836897 'd' 01:02:32.842126 Received DATA (on stdin) 01:02:32.842194 > 1 bytes data, server => client 01:02:32.842268 'i' 01:02:32.847451 Received DATA (on stdin) 01:02:32.847524 > 1 bytes data, server => client 01:02:32.847600 'r' 01:02:32.852778 Received DATA (on stdin) 01:02:32.852845 > 1 bytes data, server => client 01:02:32.852917 'e' 01:02:32.858107 Received DATA (on stdin) 01:02:32.858172 > 1 bytes data, server => client 01:02:32.858243 'c' 01:02:32.864963 Received DATA (on stdin) 01:02:32.865049 > 1 bytes data, server => client 01:02:32.865127 't' 01:02:32.872148 Received DATA (on stdin) 01:02:32.872230 > 1 bytes data, server => client 01:02:32.872290 'o' 01:02:32.877271 Received DATA (on stdin) 01:02:32.877341 > 1 bytes data, server => client 01:02:32.877400 'r' 01:02:32.882370 Received DATA (on stdin) 01:02:32.882436 > 1 bytes data, server => client 01:02:32.882493 'y' 01:02:32.887467 Received DATA (on stdin) 01:02:32.887536 > 1 bytes data, server => client 01:02:32.887595 '\r' 01:02:32.893316 Received DATA (on stdin) 01:02:32.893396 > 1 bytes data, server => client 01:02:32.893457 '\n' 01:02:36.327268 Received DATA (on stdin) 01:02:36.327424 > 1 bytes data, server => client 01:02:36.327500 '2' 01:02:36.333257 Received DATA (on stdin) 01:02:36.333341 > 1 bytes data, server => client 01:02:36.333409 '2' 01:02:36.337473 Received DATA (on stdin) 01:02:36.337551 > 1 bytes data, server => client 01:02:36.337617 '6' 01:02:36.342578 Received DATA (on stdin) 01:02:36.342659 > 1 bytes data, server => client 01:02:36.342730 ' ' 01:02:36.347685 Received DATA (on stdin) 01:02:36.347775 > 1 bytes data, server => client 01:02:36.347851 'A' 01:02:36.352790 Received DATA (on stdin) 01:02:36.352878 > 1 bytes data, server => client 01:02:36.352955 'S' 01:02:36.359925 Received DATA (on stdin) 01:02:36.360022 > 1 bytes data, server => client 01:02:36.360093 'C' 01:02:36.362996 Received DATA (on stdin) 01:02:36.363072 > 1 bytes data, server => client 01:02:36.363140 'I' 01:02:36.368099 Received DATA (on stdin) 01:02:36.368179 > 1 bytes data, server => client 01:02:36.368245 'I' 01:02:36.373212 Received DATA (on stdin) 01:02:36.373312 > 1 bytes data, server => client 01:02:36.373384 ' ' 01:02:36.378316 Received DATA (on stdin) 01:02:36.378395 > 1 bytes data, server => client 01:02:36.378465 't' 01:02:36.383419 Received DATA (on stdin) 01:02:36.383497 > 1 bytes data, server => client 01:02:36.383567 'r' 01:02:36.388533 Received DATA (on stdin) 01:02:36.388609 > 1 bytes data, server => client 01:02:36.388676 'a' 01:02:36.393617 Received DATA (on stdin) 01:02:36.393694 > 1 bytes data, server => client 01:02:36.393764 'n' 01:02:36.398723 Received DATA (on stdin) 01:02:36.398794 > 1 bytes data, server => client 01:02:36.398853 's' 01:02:36.406584 Received DATA (on stdin) 01:02:36.406665 > 1 bytes data, server => client 01:02:36.406733 'f' 01:02:36.408914 Received DATA (on stdin) 01:02:36.408986 > 1 bytes data, server => client 01:02:36.409054 'e' 01:02:36.414013 Received DATA (on stdin) 01:02:36.414726 > 1 bytes data, server => client 01:02:36.414797 'r' 01:02:36.419108 Received DATA (on stdin) 01:02:36.419178 > 1 bytes data, server => client 01:02:36.419246 ' ' 01:02:36.424205 Received DATA (on stdin) 01:02:36.424281 > 1 bytes data, server => client 01:02:36.424348 'c' 01:02:36.429318 Received DATA (on stdin) 01:02:36.429397 > 1 bytes data, server => client 01:02:36.429464 'o' 01:02:36.434452 Received DATA (on stdin) 01:02:36.434538 > 1 bytes data, server => client 01:02:36.434607 'm' 01:02:36.439554 Received DATA (on stdin) 01:02:36.439632 > 1 bytes data, server => client 01:02:36.439700 'p' 01:02:36.444659 Received DATA (on stdin) 01:02:36.444734 > 1 bytes data, server => client 01:02:36.444799 'l' 01:02:36.449774 Received DATA (on stdin) 01:02:36.449854 > 1 bytes data, server => client 01:02:36.449969 'e' 01:02:36.456622 Received DATA (on stdin) 01:02:36.456704 > 1 bytes data, server => client 01:02:36.456769 't' 01:02:36.461724 Received DATA (on stdin) 01:02:36.461802 > 1 bytes data, server => client 01:02:36.461869 'e' 01:02:36.466821 Received DATA (on stdin) 01:02:36.466898 > 1 bytes data, server => client 01:02:36.466963 '\r' 01:02:36.473252 Received DATA (on stdin) 01:02:36.473331 > 1 bytes data, server => client 01:02:36.473399 '\n' 01:02:37.836373 < 6 bytes data, client => server 01:02:37.836562 'QUIT\r\n' 01:02:37.838020 Received DATA (on stdin) 01:02:37.838103 > 1 bytes data, server => client 01:02:37.843282 '2' 01:02:37.848394 Received DATA (on stdin) 01:02:37.848470 > 1 bytes data, server => client 01:02:37.848534 '2' 01:02:37.853497 Received DATA (on stdin) 01:02:37.853574 > 1 bytes data, server => client 01:02:37.853641 '1' 01:02:37.858578 Received DATA (on stdin) 01:02:37.858649 > 1 bytes data, server => client 01:02:37.858731 ' ' 01:02:37.863916 Received DATA (on stdin) 01:02:37.863997 > 1 bytes data, server => client 01:02:37.864089 'b' 01:02:37.869282 Received DATA (on stdin) 01:02:37.869361 > 1 bytes data, server => client 01:02:37.869447 'y' 01:02:37.874639 Received DATA (on stdin) 01:02:37.874714 > 1 bytes data, server => client 01:02:37.874797 'e' 01:02:37.879955 Received DATA (on stdin) 01:02:37.880035 > 1 bytes data, server => client 01:02:37.880118 ' ' 01:02:37.885323 Received DATA (on stdin) 01:02:37.885401 > 1 bytes data, server => client 01:02:37.885488 'b' 01:02:37.890684 Received DATA (on stdin) 01:02:37.890759 > 1 bytes data, server => client 01:02:37.890850 'y' 01:02:37.896614 Received DATA (on stdin) 01:02:37.896691 > 1 bytes data, server => client 01:02:37.896778 'e' 01:02:37.901992 Received DATA (on stdin) 01:02:37.902071 > 1 bytes data, server => client 01:02:37.902156 ' ' 01:02:37.907361 Received DATA (on stdin) 01:02:37.907439 > 1 bytes data, server => client 01:02:37.907527 'b' 01:02:37.912724 Received DATA (on stdin) 01:02:37.912799 > 1 bytes data, server => client 01:02:37.912883 'a' 01:02:37.918075 Received DATA (on stdin) 01:02:37.918151 > 1 bytes data, server => client 01:02:37.918234 'b' 01:02:37.923437 Received DATA (on stdin) 01:02:37.923513 > 1 bytes data, server => client 01:02:37.923606 'y' 01:02:37.928702 Received DATA (on stdin) 01:02:37.928782 > 1 bytes data, server => client 01:02:37.929951 '\r' 01:02:37.935062 Received DATA (on stdin) 01:02:37.935142 > 1 bytes data, server => client 01:02:37.935205 '\n' 01:02:37.959960 ====> Client disconnect 01:02:37.960570 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:01:41.205106 Running IPv4 version 01:01:41.212205 Listening on port 45189 01:01:41.212619 Wrote pid 226287 to log/2/server/ftp_sockdata.pid 01:01:41.213326 Received PING (on stdin) 01:01:41.214322 Received PORT (on stdin) 01:01:41.218411 ====> Client connect 01:01:41.225638 Received DATA (on stdin) 01:01:41.225911 > 18 bytes data, server => client 01:01:41.226255 'WE ROOLZ: 202189\r\n' 01:01:41.226477 Received DISC (on stdin) 01:01:41.226583 ====> Client forcibly disconnected 01:01:41.230482 Received QUIT (on stdin) 01:01:41.230560 quits 01:01:41.231011 ============> sockfilt quits 01:02:31.938670 Running IPv4 version 01:02:31.949742 Listening on port 33857 01:02:31.950495 Wrote pid 227183 to log/2/server/ftp_sockdata.pid 01:02:31.954426 Received PING (on stdin) 01:02:31.956494 Received PORT (on stdin) 01:02:32.389805 ====> Client connect 01:02:32.900677 Received DATA (on stdin) 01:02:32.901076 > 1 bytes data, server => client 01:02:32.901388 't' 01:02:32.905766 Received DATA (on stdin) 01:02:32.905849 > 1 bytes data, server => client 01:02:32.905919 'o' 01:02:32.910909 Received DATA (on stdin) 01:02:32.911016 > 1 bytes data, server => client 01:02:32.911088 't' 01:02:32.916085 Received DATA (on stdin) 01:02:32.916213 > 1 bytes data, server => client 01:02:32.916283 'a' 01:02:32.921199 Received DATA (on stdin) 01:02:32.921282 > 1 bytes data, server => client 01:02:32.921353 'l' 01:02:32.926308 Received DATA (on stdin) 01:02:32.926388 > 1 bytes data, server => client 01:02:32.926455 ' ' 01:02:32.931402 Received DATA (on stdin) 01:02:32.931480 > 1 bytes data, server => client 01:02:32.931548 '2' 01:02:32.936501 Received DATA (on stdin) 01:02:32.936591 > 1 bytes data, server => client 01:02:32.936663 '0' 01:02:32.941598 Received DATA (on stdin) 01:02:32.941679 > 1 bytes data, server => client 01:02:32.941802 '\r' 01:02:32.946692 Received DATA (on stdin) 01:02:32.946771 > 1 bytes data, server => client 01:02:32.946852 '\n' 01:02:32.952456 Received DATA (on stdin) 01:02:32.952540 > 1 bytes data, server => client 01:02:32.952606 'd' 01:02:32.959050 Received DATA (on stdin) 01:02:32.959132 > 1 bytes data, server => client 01:02:32.959199 'r' 01:02:32.962671 Received DATA (on stdin) 01:02:32.962749 > 1 bytes data, server => client 01:02:32.962812 'w' 01:02:32.967777 Received DATA (on stdin) 01:02:32.967855 > 1 bytes data, server => client 01:02:32.967917 'x' 01:02:32.972917 Received DATA (on stdin) 01:02:32.973027 > 1 bytes data, server => client 01:02:32.973091 'r' 01:02:32.978031 Received DATA (on stdin) 01:02:32.978135 > 1 bytes data, server => client 01:02:32.979970 '-' 01:02:32.985077 Received DATA (on stdin) 01:02:32.985149 > 1 bytes data, server => client 01:02:32.985212 'x' 01:02:32.990160 Received DATA (on stdin) 01:02:32.990233 > 1 bytes data, server => client 01:02:32.990316 'r' 01:02:32.995495 Received DATA (on stdin) 01:02:32.995567 > 1 bytes data, server => client 01:02:32.995649 '-' 01:02:33.000824 Received DATA (on stdin) 01:02:33.000896 > 1 bytes data, server => client 01:02:33.000978 'x' 01:02:33.006160 Received DATA (on stdin) 01:02:33.006237 > 1 bytes data, server => client 01:02:33.006319 ' ' 01:02:33.011498 Received DATA (on stdin) 01:02:33.011572 > 1 bytes data, server => client 01:02:33.011664 ' ' 01:02:33.016752 Received DATA (on stdin) 01:02:33.016828 > 1 bytes data, server => client 01:02:33.019971 ' ' 01:02:33.025073 Received DATA (on stdin) 01:02:33.025145 > 1 bytes data, server => client 01:02:33.025208 '8' 01:02:33.030224 Received DATA (on stdin) 01:02:33.030329 > 1 bytes data, server => client 01:02:33.030395 ' ' 01:02:33.035418 Received DATA (on stdin) 01:02:33.035549 > 1 bytes data, server => client 01:02:33.035620 '9' 01:02:33.040528 Received DATA (on stdin) 01:02:33.040628 > 1 bytes data, server => client 01:02:33.040718 '8' 01:02:33.045911 Received DATA (on stdin) 01:02:33.045985 > 1 bytes data, server => client 01:02:33.046070 ' ' 01:02:33.051250 Received DATA (on stdin) 01:02:33.051324 > 1 bytes data, server => client 01:02:33.051406 ' ' 01:02:33.056612 Received DATA (on stdin) 01:02:33.056687 > 1 bytes data, server => client 01:02:33.059948 ' ' 01:02:33.065069 Received DATA (on stdin) 01:02:33.065145 > 1 bytes data, server => client 01:02:33.065204 ' ' 01:02:33.070150 Received DATA (on stdin) 01:02:33.070220 > 1 bytes data, server => client 01:02:33.070298 ' ' 01:02:33.075472 Received DATA (on stdin) 01:02:33.075548 > 1 bytes data, server => client 01:02:33.075642 ' ' 01:02:33.080728 Received DATA (on stdin) 01:02:33.080799 > 1 bytes data, server => client 01:02:33.080877 ' ' 01:02:33.086047 Received DATA (on stdin) 01:02:33.086119 > 1 bytes data, server => client 01:02:33.086198 '9' 01:02:33.091378 Received DATA (on stdin) 01:02:33.091449 > 1 bytes data, server => client 01:02:33.091527 '8' 01:02:33.096724 Received DATA (on stdin) 01:02:33.096814 > 1 bytes data, server => client 01:02:33.098997 ' ' 01:02:33.104172 Received DATA (on stdin) 01:02:33.104293 > 1 bytes data, server => client 01:02:33.104353 ' ' 01:02:33.109283 Received DATA (on stdin) 01:02:33.109362 > 1 bytes data, server => client 01:02:33.109422 ' ' 01:02:33.114406 Received DATA (on stdin) 01:02:33.114502 > 1 bytes data, server => client 01:02:33.114586 ' ' 01:02:33.119795 Received DATA (on stdin) 01:02:33.119878 > 1 bytes data, server => client 01:02:33.119976 ' ' 01:02:33.125158 Received DATA (on stdin) 01:02:33.125230 > 1 bytes data, server => client 01:02:33.125310 ' ' 01:02:33.130483 Received DATA (on stdin) 01:02:33.130554 > 1 bytes data, server => client 01:02:33.130643 ' ' 01:02:33.135729 Received DATA (on stdin) 01:02:33.135798 > 1 bytes data, server => client 01:02:33.135883 ' ' 01:02:33.143149 Received DATA (on stdin) 01:02:33.143220 > 1 bytes data, server => client 01:02:33.143294 ' ' 01:02:33.148255 Received DATA (on stdin) 01:02:33.148328 > 1 bytes data, server => client 01:02:33.148388 ' ' 01:02:33.153353 Received DATA (on stdin) 01:02:33.153426 > 1 bytes data, server => client 01:02:33.153485 ' ' 01:02:33.158436 Received DATA (on stdin) 01:02:33.158508 > 1 bytes data, server => client 01:02:33.158596 '5' 01:02:33.163694 Received DATA (on stdin) 01:02:33.163768 > 1 bytes data, server => client 01:02:33.163854 '1' 01:02:33.171702 Received DATA (on stdin) 01:02:33.171773 > 1 bytes data, server => client 01:02:33.171831 '2' 01:02:33.176801 Received DATA (on stdin) 01:02:33.176871 > 1 bytes data, server => client 01:02:33.176928 ' ' 01:02:33.181900 Received DATA (on stdin) 01:02:33.181979 > 1 bytes data, server => client 01:02:33.182057 'O' 01:02:33.187260 Received DATA (on stdin) 01:02:33.187347 > 1 bytes data, server => client 01:02:33.187427 'c' 01:02:33.192634 Received DATA (on stdin) 01:02:33.192728 > 1 bytes data, server => client 01:02:33.192823 't' 01:02:33.197912 Received DATA (on stdin) 01:02:33.197982 > 1 bytes data, server => client 01:02:33.198059 ' ' 01:02:33.205048 Received DATA (on stdin) 01:02:33.205120 > 1 bytes data, server => client 01:02:33.205182 '2' 01:02:33.210149 Received DATA (on stdin) 01:02:33.210219 > 1 bytes data, server => client 01:02:33.210280 '2' 01:02:33.215232 Received DATA (on stdin) 01:02:33.215302 > 1 bytes data, server => client 01:02:33.215381 ' ' 01:02:33.220554 Received DATA (on stdin) 01:02:33.220625 > 1 bytes data, server => client 01:02:33.220703 '1' 01:02:33.225875 Received DATA (on stdin) 01:02:33.225944 > 1 bytes data, server => client 01:02:33.226021 '3' 01:02:33.231193 Received DATA (on stdin) 01:02:33.231263 > 1 bytes data, server => client 01:02:33.231342 ':' 01:02:33.236522 Received DATA (on stdin) 01:02:33.236599 > 1 bytes data, server => client 01:02:33.236688 '0' 01:02:33.241782 Received DATA (on stdin) 01:02:33.241856 > 1 bytes data, server => client 01:02:33.249949 '6' 01:02:33.251986 Received DATA (on stdin) 01:02:33.252060 > 1 bytes data, server => client 01:02:33.252122 ' ' 01:02:33.259934 Received DATA (on stdin) 01:02:33.260040 > 1 bytes data, server => client 01:02:33.260108 '.' 01:02:33.262231 Received DATA (on stdin) 01:02:33.262299 > 1 bytes data, server => client 01:02:33.262361 '\r' 01:02:33.267334 Received DATA (on stdin) 01:02:33.267408 > 1 bytes data, server => client 01:02:33.267482 '\n' 01:02:33.273099 Received DATA (on stdin) 01:02:33.273171 > 1 bytes data, server => client 01:02:33.273232 'd' 01:02:33.278208 Received DATA (on stdin) 01:02:33.278280 > 1 bytes data, server => client 01:02:33.278342 'r' 01:02:33.283303 Received DATA (on stdin) 01:02:33.283378 > 1 bytes data, server => client 01:02:33.283442 'w' 01:02:33.288417 Received DATA (on stdin) 01:02:33.288497 > 1 bytes data, server => client 01:02:33.288563 'x' 01:02:33.293526 Received DATA (on stdin) 01:02:33.293608 > 1 bytes data, server => client 01:02:33.293674 'r' 01:02:33.298623 Received DATA (on stdin) 01:02:33.298698 > 1 bytes data, server => client 01:02:33.298760 '-' 01:02:33.303719 Received DATA (on stdin) 01:02:33.303795 > 1 bytes data, server => client 01:02:33.303860 'x' 01:02:33.308832 Received DATA (on stdin) 01:02:33.308906 > 1 bytes data, server => client 01:02:33.308967 'r' 01:02:33.313933 Received DATA (on stdin) 01:02:33.314006 > 1 bytes data, server => client 01:02:33.314071 '-' 01:02:33.319045 Received DATA (on stdin) 01:02:33.319122 > 1 bytes data, server => client 01:02:33.319186 'x' 01:02:33.326591 Received DATA (on stdin) 01:02:33.326667 > 1 bytes data, server => client 01:02:33.326730 ' ' 01:02:33.329246 Received DATA (on stdin) 01:02:33.329313 > 1 bytes data, server => client 01:02:33.329377 ' ' 01:02:33.334343 Received DATA (on stdin) 01:02:33.334414 > 1 bytes data, server => client 01:02:33.334474 ' ' 01:02:33.339439 Received DATA (on stdin) 01:02:33.339508 > 1 bytes data, server => client 01:02:33.339569 '8' 01:02:33.344534 Received DATA (on stdin) 01:02:33.344617 > 1 bytes data, server => client 01:02:33.344680 ' ' 01:02:33.349638 Received DATA (on stdin) 01:02:33.349710 > 1 bytes data, server => client 01:02:33.349769 '9' 01:02:33.354734 Received DATA (on stdin) 01:02:33.354807 > 1 bytes data, server => client 01:02:33.354870 '8' 01:02:33.359830 Received DATA (on stdin) 01:02:33.359903 > 1 bytes data, server => client 01:02:33.359979 ' ' 01:02:33.364924 Received DATA (on stdin) 01:02:33.364999 > 1 bytes data, server => client 01:02:33.365063 ' ' 01:02:33.370016 Received DATA (on stdin) 01:02:33.370089 > 1 bytes data, server => client 01:02:33.370153 ' ' 01:02:33.375130 Received DATA (on stdin) 01:02:33.375210 > 1 bytes data, server => client 01:02:33.375277 ' ' 01:02:33.380232 Received DATA (on stdin) 01:02:33.380307 > 1 bytes data, server => client 01:02:33.380370 ' ' 01:02:33.386591 Received DATA (on stdin) 01:02:33.386667 > 1 bytes data, server => client 01:02:33.386731 ' ' 01:02:33.390444 Received DATA (on stdin) 01:02:33.390523 > 1 bytes data, server => client 01:02:33.390588 ' ' 01:02:33.395544 Received DATA (on stdin) 01:02:33.395619 > 1 bytes data, server => client 01:02:33.395681 '9' 01:02:33.403271 Received DATA (on stdin) 01:02:33.403398 > 1 bytes data, server => client 01:02:33.403462 '8' 01:02:33.405784 Received DATA (on stdin) 01:02:33.405853 > 1 bytes data, server => client 01:02:33.405917 ' ' 01:02:33.410890 Received DATA (on stdin) 01:02:33.410966 > 1 bytes data, server => client 01:02:33.411031 ' ' 01:02:33.415984 Received DATA (on stdin) 01:02:33.416060 > 1 bytes data, server => client 01:02:33.416123 ' ' 01:02:33.421078 Received DATA (on stdin) 01:02:33.421153 > 1 bytes data, server => client 01:02:33.421215 ' ' 01:02:33.426188 Received DATA (on stdin) 01:02:33.426263 > 1 bytes data, server => client 01:02:33.426323 ' ' 01:02:33.431289 Received DATA (on stdin) 01:02:33.431362 > 1 bytes data, server => client 01:02:33.431425 ' ' 01:02:33.436392 Received DATA (on stdin) 01:02:33.436465 > 1 bytes data, server => client 01:02:33.436526 ' ' 01:02:33.441477 Received DATA (on stdin) 01:02:33.441552 > 1 bytes data, server => client 01:02:33.441616 ' ' 01:02:33.446568 Received DATA (on stdin) 01:02:33.446688 > 1 bytes data, server => client 01:02:33.446751 ' ' 01:02:33.451667 Received DATA (on stdin) 01:02:33.451736 > 1 bytes data, server => client 01:02:33.451798 ' ' 01:02:33.456757 Received DATA (on stdin) 01:02:33.456831 > 1 bytes data, server => client 01:02:33.456894 ' ' 01:02:33.463258 Received DATA (on stdin) 01:02:33.463334 > 1 bytes data, server => client 01:02:33.463394 '5' 01:02:33.466960 Received DATA (on stdin) 01:02:33.467030 > 1 bytes data, server => client 01:02:33.467092 '1' 01:02:33.472102 Received DATA (on stdin) 01:02:33.472188 > 1 bytes data, server => client 01:02:33.472253 '2' 01:02:33.477266 Received DATA (on stdin) 01:02:33.477388 > 1 bytes data, server => client 01:02:33.477461 ' ' 01:02:33.482476 Received DATA (on stdin) 01:02:33.482627 > 1 bytes data, server => client 01:02:33.482693 'O' 01:02:33.487609 Received DATA (on stdin) 01:02:33.487691 > 1 bytes data, server => client 01:02:33.487756 'c' 01:02:33.492708 Received DATA (on stdin) 01:02:33.492778 > 1 bytes data, server => client 01:02:33.492841 't' 01:02:33.497821 Received DATA (on stdin) 01:02:33.497900 > 1 bytes data, server => client 01:02:33.497963 ' ' 01:02:33.502924 Received DATA (on stdin) 01:02:33.502994 > 1 bytes data, server => client 01:02:33.503054 '2' 01:02:33.508027 Received DATA (on stdin) 01:02:33.508107 > 1 bytes data, server => client 01:02:33.508170 '2' 01:02:33.513218 Received DATA (on stdin) 01:02:33.513365 > 1 bytes data, server => client 01:02:33.513431 ' ' 01:02:33.519932 Received DATA (on stdin) 01:02:33.520018 > 1 bytes data, server => client 01:02:33.520083 '1' 01:02:33.523443 Received DATA (on stdin) 01:02:33.523511 > 1 bytes data, server => client 01:02:33.523574 '3' 01:02:33.528546 Received DATA (on stdin) 01:02:33.528617 > 1 bytes data, server => client 01:02:33.528678 ':' 01:02:33.533647 Received DATA (on stdin) 01:02:33.533721 > 1 bytes data, server => client 01:02:33.533784 '0' 01:02:33.539811 Received DATA (on stdin) 01:02:33.539888 > 1 bytes data, server => client 01:02:33.539966 '6' 01:02:33.544914 Received DATA (on stdin) 01:02:33.544984 > 1 bytes data, server => client 01:02:33.545044 ' ' 01:02:33.550044 Received DATA (on stdin) 01:02:33.550147 > 1 bytes data, server => client 01:02:33.550220 '.' 01:02:33.555136 Received DATA (on stdin) 01:02:33.555221 > 1 bytes data, server => client 01:02:33.555295 '.' 01:02:33.560268 Received DATA (on stdin) 01:02:33.560364 > 1 bytes data, server => client 01:02:33.560436 '\r' 01:02:33.565375 Received DATA (on stdin) 01:02:33.565457 > 1 bytes data, server => client 01:02:33.565528 '\n' 01:02:33.571310 Received DATA (on stdin) 01:02:33.571425 > 1 bytes data, server => client 01:02:33.571500 'd' 01:02:33.579947 Received DATA (on stdin) 01:02:33.580105 > 1 bytes data, server => client 01:02:33.580181 'r' 01:02:33.583292 Received DATA (on stdin) 01:02:33.583398 > 1 bytes data, server => client 01:02:33.583487 'w' 01:02:33.593034 Received DATA (on stdin) 01:02:33.593206 > 1 bytes data, server => client 01:02:33.593283 'x' 01:02:33.598167 Received DATA (on stdin) 01:02:33.598285 > 1 bytes data, server => client 01:02:33.598368 'r' 01:02:33.603600 Received DATA (on stdin) 01:02:33.603705 > 1 bytes data, server => client 01:02:33.603785 '-' 01:02:33.609001 Received DATA (on stdin) 01:02:33.609107 > 1 bytes data, server => client 01:02:33.609185 'x' 01:02:33.614381 Received DATA (on stdin) 01:02:33.614474 > 1 bytes data, server => client 01:02:33.614554 'r' 01:02:33.621492 Received DATA (on stdin) 01:02:33.621642 > 1 bytes data, server => client 01:02:33.621767 '-' 01:02:33.630123 Received DATA (on stdin) 01:02:33.630220 > 1 bytes data, server => client 01:02:33.630279 'x' 01:02:33.635287 Received DATA (on stdin) 01:02:33.635397 > 1 bytes data, server => client 01:02:33.635455 ' ' 01:02:33.640433 Received DATA (on stdin) 01:02:33.640551 > 1 bytes data, server => client 01:02:33.640609 ' ' 01:02:33.645519 Received DATA (on stdin) 01:02:33.645590 > 1 bytes data, server => client 01:02:33.645667 ' ' 01:02:33.650844 Received DATA (on stdin) 01:02:33.650912 > 1 bytes data, server => client 01:02:33.650986 '2' 01:02:33.658506 Received DATA (on stdin) 01:02:33.658686 > 1 bytes data, server => client 01:02:33.658758 ' ' 01:02:33.663699 Received DATA (on stdin) 01:02:33.663830 > 1 bytes data, server => client 01:02:33.663906 '9' 01:02:33.668797 Received DATA (on stdin) 01:02:33.668895 > 1 bytes data, server => client 01:02:33.669958 '8' 01:02:33.675051 Received DATA (on stdin) 01:02:33.675121 > 1 bytes data, server => client 01:02:33.675201 ' ' 01:02:33.680457 Received DATA (on stdin) 01:02:33.680637 > 1 bytes data, server => client 01:02:33.680740 ' ' 01:02:33.688435 Received DATA (on stdin) 01:02:33.688537 > 1 bytes data, server => client 01:02:33.688610 ' ' 01:02:33.693539 Received DATA (on stdin) 01:02:33.693622 > 1 bytes data, server => client 01:02:33.693694 ' ' 01:02:33.698660 Received DATA (on stdin) 01:02:33.698744 > 1 bytes data, server => client 01:02:33.698818 ' ' 01:02:33.703746 Received DATA (on stdin) 01:02:33.703824 > 1 bytes data, server => client 01:02:33.703912 ' ' 01:02:33.709102 Received DATA (on stdin) 01:02:33.709186 > 1 bytes data, server => client 01:02:33.709280 ' ' 01:02:33.714484 Received DATA (on stdin) 01:02:33.714569 > 1 bytes data, server => client 01:02:33.714665 '9' 01:02:33.719874 Received DATA (on stdin) 01:02:33.719979 > 1 bytes data, server => client 01:02:33.723287 '8' 01:02:33.728396 Received DATA (on stdin) 01:02:33.728478 > 1 bytes data, server => client 01:02:33.728552 ' ' 01:02:33.733575 Received DATA (on stdin) 01:02:33.733697 > 1 bytes data, server => client 01:02:33.733768 ' ' 01:02:33.738696 Received DATA (on stdin) 01:02:33.738806 > 1 bytes data, server => client 01:02:33.738905 ' ' 01:02:33.744149 Received DATA (on stdin) 01:02:33.744248 > 1 bytes data, server => client 01:02:33.744348 ' ' 01:02:33.749550 Received DATA (on stdin) 01:02:33.749633 > 1 bytes data, server => client 01:02:33.749727 ' ' 01:02:33.754932 Received DATA (on stdin) 01:02:33.755023 > 1 bytes data, server => client 01:02:33.755117 ' ' 01:02:33.760312 Received DATA (on stdin) 01:02:33.760393 > 1 bytes data, server => client 01:02:33.760488 ' ' 01:02:33.765696 Received DATA (on stdin) 01:02:33.765778 > 1 bytes data, server => client 01:02:33.765870 ' ' 01:02:33.771063 Received DATA (on stdin) 01:02:33.771144 > 1 bytes data, server => client 01:02:33.771237 ' ' 01:02:33.776449 Received DATA (on stdin) 01:02:33.776526 > 1 bytes data, server => client 01:02:33.776602 ' ' 01:02:33.783328 Received DATA (on stdin) 01:02:33.783409 > 1 bytes data, server => client 01:02:33.783472 ' ' 01:02:33.788426 Received DATA (on stdin) 01:02:33.788492 > 1 bytes data, server => client 01:02:33.788547 '5' 01:02:33.793527 Received DATA (on stdin) 01:02:33.793598 > 1 bytes data, server => client 01:02:33.793654 '1' 01:02:33.798676 Received DATA (on stdin) 01:02:33.798783 > 1 bytes data, server => client 01:02:33.798841 '2' 01:02:33.806675 Received DATA (on stdin) 01:02:33.806759 > 1 bytes data, server => client 01:02:33.806816 ' ' 01:02:33.811778 Received DATA (on stdin) 01:02:33.811855 > 1 bytes data, server => client 01:02:33.811913 'M' 01:02:33.816875 Received DATA (on stdin) 01:02:33.816945 > 1 bytes data, server => client 01:02:33.817005 'a' 01:02:33.821958 Received DATA (on stdin) 01:02:33.822024 > 1 bytes data, server => client 01:02:33.822097 'y' 01:02:33.830046 Received DATA (on stdin) 01:02:33.830155 > 1 bytes data, server => client 01:02:33.830216 ' ' 01:02:33.835157 Received DATA (on stdin) 01:02:33.835228 > 1 bytes data, server => client 01:02:33.835284 ' ' 01:02:33.840241 Received DATA (on stdin) 01:02:33.840308 > 1 bytes data, server => client 01:02:33.840382 '2' 01:02:33.845549 Received DATA (on stdin) 01:02:33.845614 > 1 bytes data, server => client 01:02:33.845688 ' ' 01:02:33.850879 Received DATA (on stdin) 01:02:33.850962 > 1 bytes data, server => client 01:02:33.851038 ' ' 01:02:33.856229 Received DATA (on stdin) 01:02:33.856301 > 1 bytes data, server => client 01:02:33.856375 '1' 01:02:33.861547 Received DATA (on stdin) 01:02:33.861614 > 1 bytes data, server => client 01:02:33.861687 '9' 01:02:33.868388 Received DATA (on stdin) 01:02:33.868477 > 1 bytes data, server => client 01:02:33.868535 '9' 01:02:33.873497 Received DATA (on stdin) 01:02:33.873570 > 1 bytes data, server => client 01:02:33.873628 '6' 01:02:33.878588 Received DATA (on stdin) 01:02:33.878686 > 1 bytes data, server => client 01:02:33.878773 ' ' 01:02:33.883974 Received DATA (on stdin) 01:02:33.884051 > 1 bytes data, server => client 01:02:33.884126 '.' 01:02:33.889301 Received DATA (on stdin) 01:02:33.889372 > 1 bytes data, server => client 01:02:33.889456 'N' 01:02:33.895065 Received DATA (on stdin) 01:02:33.895150 > 1 bytes data, server => client 01:02:33.895206 'e' 01:02:33.900162 Received DATA (on stdin) 01:02:33.900229 > 1 bytes data, server => client 01:02:33.900285 'X' 01:02:33.906596 Received DATA (on stdin) 01:02:33.906687 > 1 bytes data, server => client 01:02:33.906750 'T' 01:02:33.913338 Received DATA (on stdin) 01:02:33.913429 > 1 bytes data, server => client 01:02:33.913493 '\r' 01:02:33.918446 Received DATA (on stdin) 01:02:33.918521 > 1 bytes data, server => client 01:02:33.918582 '\n' 01:02:33.924217 Received DATA (on stdin) 01:02:33.924292 > 1 bytes data, server => client 01:02:33.924374 '-' 01:02:33.929581 Received DATA (on stdin) 01:02:33.929674 > 1 bytes data, server => client 01:02:33.929758 'r' 01:02:33.934963 Received DATA (on stdin) 01:02:33.935051 > 1 bytes data, server => client 01:02:33.935136 '-' 01:02:33.940332 Received DATA (on stdin) 01:02:33.940415 > 1 bytes data, server => client 01:02:33.940495 '-' 01:02:33.945690 Received DATA (on stdin) 01:02:33.945765 > 1 bytes data, server => client 01:02:33.945845 'r' 01:02:33.951057 Received DATA (on stdin) 01:02:33.951145 > 1 bytes data, server => client 01:02:33.951226 '-' 01:02:33.956418 Received DATA (on stdin) 01:02:33.956492 > 1 bytes data, server => client 01:02:33.956572 '-' 01:02:33.961762 Received DATA (on stdin) 01:02:33.961831 > 1 bytes data, server => client 01:02:33.961919 'r' 01:02:33.969742 Received DATA (on stdin) 01:02:33.969837 > 1 bytes data, server => client 01:02:33.969897 '-' 01:02:33.973304 Received DATA (on stdin) 01:02:33.973376 > 1 bytes data, server => client 01:02:33.973437 '-' 01:02:33.978413 Received DATA (on stdin) 01:02:33.978485 > 1 bytes data, server => client 01:02:33.978545 ' ' 01:02:33.983516 Received DATA (on stdin) 01:02:33.983586 > 1 bytes data, server => client 01:02:33.983645 ' ' 01:02:33.988618 Received DATA (on stdin) 01:02:33.988685 > 1 bytes data, server => client 01:02:33.988745 ' ' 01:02:33.993730 Received DATA (on stdin) 01:02:33.993801 > 1 bytes data, server => client 01:02:33.993860 '1' 01:02:33.998838 Received DATA (on stdin) 01:02:33.998907 > 1 bytes data, server => client 01:02:33.998966 ' ' 01:02:34.003965 Received DATA (on stdin) 01:02:34.004055 > 1 bytes data, server => client 01:02:34.004115 '0' 01:02:34.009100 Received DATA (on stdin) 01:02:34.009178 > 1 bytes data, server => client 01:02:34.009240 ' ' 01:02:34.014224 Received DATA (on stdin) 01:02:34.014309 > 1 bytes data, server => client 01:02:34.014371 ' ' 01:02:34.019334 Received DATA (on stdin) 01:02:34.019417 > 1 bytes data, server => client 01:02:34.019512 ' ' 01:02:34.031855 Received DATA (on stdin) 01:02:34.031972 > 1 bytes data, server => client 01:02:34.032032 ' ' 01:02:34.036998 Received DATA (on stdin) 01:02:34.037074 > 1 bytes data, server => client 01:02:34.037133 ' ' 01:02:34.042135 Received DATA (on stdin) 01:02:34.042204 > 1 bytes data, server => client 01:02:34.042262 ' ' 01:02:34.047227 Received DATA (on stdin) 01:02:34.047293 > 1 bytes data, server => client 01:02:34.047370 ' ' 01:02:34.052684 Received DATA (on stdin) 01:02:34.052751 > 1 bytes data, server => client 01:02:34.052828 ' ' 01:02:34.058011 Received DATA (on stdin) 01:02:34.058078 > 1 bytes data, server => client 01:02:34.058154 '1' 01:02:34.063307 Received DATA (on stdin) 01:02:34.063383 > 1 bytes data, server => client 01:02:34.063465 ' ' 01:02:34.068640 Received DATA (on stdin) 01:02:34.068706 > 1 bytes data, server => client 01:02:34.068785 ' ' 01:02:34.073953 Received DATA (on stdin) 01:02:34.074020 > 1 bytes data, server => client 01:02:34.074096 ' ' 01:02:34.079271 Received DATA (on stdin) 01:02:34.079335 > 1 bytes data, server => client 01:02:34.079410 ' ' 01:02:34.084594 Received DATA (on stdin) 01:02:34.084668 > 1 bytes data, server => client 01:02:34.084765 ' ' 01:02:34.089960 Received DATA (on stdin) 01:02:34.090040 > 1 bytes data, server => client 01:02:34.090127 ' ' 01:02:34.095325 Received DATA (on stdin) 01:02:34.095398 > 1 bytes data, server => client 01:02:34.095480 ' ' 01:02:34.100656 Received DATA (on stdin) 01:02:34.100725 > 1 bytes data, server => client 01:02:34.100805 ' ' 01:02:34.105977 Received DATA (on stdin) 01:02:34.106045 > 1 bytes data, server => client 01:02:34.106136 ' ' 01:02:34.113298 Received DATA (on stdin) 01:02:34.113366 > 1 bytes data, server => client 01:02:34.113427 ' ' 01:02:34.118399 Received DATA (on stdin) 01:02:34.118469 > 1 bytes data, server => client 01:02:34.118532 ' ' 01:02:34.123480 Received DATA (on stdin) 01:02:34.123548 > 1 bytes data, server => client 01:02:34.123628 ' ' 01:02:34.128800 Received DATA (on stdin) 01:02:34.128868 > 1 bytes data, server => client 01:02:34.129940 ' ' 01:02:34.135032 Received DATA (on stdin) 01:02:34.135101 > 1 bytes data, server => client 01:02:34.135181 '3' 01:02:34.140372 Received DATA (on stdin) 01:02:34.140448 > 1 bytes data, server => client 01:02:34.140531 '5' 01:02:34.145737 Received DATA (on stdin) 01:02:34.145807 > 1 bytes data, server => client 01:02:34.145881 ' ' 01:02:34.151076 Received DATA (on stdin) 01:02:34.151164 > 1 bytes data, server => client 01:02:34.153273 'J' 01:02:34.160012 Received DATA (on stdin) 01:02:34.160097 > 1 bytes data, server => client 01:02:34.160159 'u' 01:02:34.165123 Received DATA (on stdin) 01:02:34.165190 > 1 bytes data, server => client 01:02:34.165245 'l' 01:02:34.170221 Received DATA (on stdin) 01:02:34.170297 > 1 bytes data, server => client 01:02:34.170352 ' ' 01:02:34.175304 Received DATA (on stdin) 01:02:34.175367 > 1 bytes data, server => client 01:02:34.175441 '1' 01:02:34.180619 Received DATA (on stdin) 01:02:34.180686 > 1 bytes data, server => client 01:02:34.180761 '6' 01:02:34.185943 Received DATA (on stdin) 01:02:34.186014 > 1 bytes data, server => client 01:02:34.186099 ' ' 01:02:34.191194 Received DATA (on stdin) 01:02:34.191262 > 1 bytes data, server => client 01:02:34.193278 ' ' 01:02:34.198378 Received DATA (on stdin) 01:02:34.198442 > 1 bytes data, server => client 01:02:34.198500 '1' 01:02:34.203471 Received DATA (on stdin) 01:02:34.203535 > 1 bytes data, server => client 01:02:34.203592 '9' 01:02:34.208550 Received DATA (on stdin) 01:02:34.208613 > 1 bytes data, server => client 01:02:34.208685 '9' 01:02:34.213861 Received DATA (on stdin) 01:02:34.213931 > 1 bytes data, server => client 01:02:34.214017 '6' 01:02:34.219101 Received DATA (on stdin) 01:02:34.219165 > 1 bytes data, server => client 01:02:34.219756 ' ' 01:02:34.224837 Received DATA (on stdin) 01:02:34.224900 > 1 bytes data, server => client 01:02:34.226606 'R' 01:02:34.231704 Received DATA (on stdin) 01:02:34.231766 > 1 bytes data, server => client 01:02:34.231821 'E' 01:02:34.236783 Received DATA (on stdin) 01:02:34.236846 > 1 bytes data, server => client 01:02:34.236930 'A' 01:02:34.242012 Received DATA (on stdin) 01:02:34.242075 > 1 bytes data, server => client 01:02:34.243272 'D' 01:02:34.248389 Received DATA (on stdin) 01:02:34.248478 > 1 bytes data, server => client 01:02:34.248585 'M' 01:02:34.253667 Received DATA (on stdin) 01:02:34.253734 > 1 bytes data, server => client 01:02:34.253809 'E' 01:02:34.260000 Received DATA (on stdin) 01:02:34.260093 > 1 bytes data, server => client 01:02:34.260151 '\r' 01:02:34.265133 Received DATA (on stdin) 01:02:34.265224 > 1 bytes data, server => client 01:02:34.265283 '\n' 01:02:34.276022 Received DATA (on stdin) 01:02:34.276105 > 1 bytes data, server => client 01:02:34.276162 'l' 01:02:34.276317 Received DATA (on stdin) 01:02:34.276376 > 1 bytes data, server => client 01:02:34.276437 'r' 01:02:34.281438 Received DATA (on stdin) 01:02:34.281532 > 1 bytes data, server => client 01:02:34.281614 'w' 01:02:34.286843 Received DATA (on stdin) 01:02:34.286945 > 1 bytes data, server => client 01:02:34.287028 'x' 01:02:34.292219 Received DATA (on stdin) 01:02:34.292287 > 1 bytes data, server => client 01:02:34.292386 'r' 01:02:34.297565 Received DATA (on stdin) 01:02:34.297630 > 1 bytes data, server => client 01:02:34.297706 'w' 01:02:34.302882 Received DATA (on stdin) 01:02:34.302946 > 1 bytes data, server => client 01:02:34.303020 'x' 01:02:34.308184 Received DATA (on stdin) 01:02:34.308248 > 1 bytes data, server => client 01:02:34.308323 'r' 01:02:34.313501 Received DATA (on stdin) 01:02:34.313566 > 1 bytes data, server => client 01:02:34.313623 'w' 01:02:34.319952 Received DATA (on stdin) 01:02:34.320015 > 1 bytes data, server => client 01:02:34.320098 'x' 01:02:34.325180 Received DATA (on stdin) 01:02:34.325242 > 1 bytes data, server => client 01:02:34.325315 ' ' 01:02:34.333292 Received DATA (on stdin) 01:02:34.333356 > 1 bytes data, server => client 01:02:34.333414 ' ' 01:02:34.338388 Received DATA (on stdin) 01:02:34.338454 > 1 bytes data, server => client 01:02:34.338511 ' ' 01:02:34.343515 Received DATA (on stdin) 01:02:34.343603 > 1 bytes data, server => client 01:02:34.343683 '1' 01:02:34.348939 Received DATA (on stdin) 01:02:34.349041 > 1 bytes data, server => client 01:02:34.349955 ' ' 01:02:34.355186 Received DATA (on stdin) 01:02:34.355255 > 1 bytes data, server => client 01:02:34.355334 '0' 01:02:34.360581 Received DATA (on stdin) 01:02:34.360681 > 1 bytes data, server => client 01:02:34.360764 ' ' 01:02:34.365966 Received DATA (on stdin) 01:02:34.366035 > 1 bytes data, server => client 01:02:34.366113 ' ' 01:02:34.371311 Received DATA (on stdin) 01:02:34.371376 > 1 bytes data, server => client 01:02:34.371452 ' ' 01:02:34.376626 Received DATA (on stdin) 01:02:34.376690 > 1 bytes data, server => client 01:02:34.376787 ' ' 01:02:34.381875 Received DATA (on stdin) 01:02:34.381938 > 1 bytes data, server => client 01:02:34.382012 ' ' 01:02:34.387182 Received DATA (on stdin) 01:02:34.387245 > 1 bytes data, server => client 01:02:34.387319 ' ' 01:02:34.395030 Received DATA (on stdin) 01:02:34.395092 > 1 bytes data, server => client 01:02:34.395147 ' ' 01:02:34.400126 Received DATA (on stdin) 01:02:34.400192 > 1 bytes data, server => client 01:02:34.400248 ' ' 01:02:34.405222 Received DATA (on stdin) 01:02:34.405286 > 1 bytes data, server => client 01:02:34.405343 '1' 01:02:34.410315 Received DATA (on stdin) 01:02:34.410378 > 1 bytes data, server => client 01:02:34.410434 ' ' 01:02:34.416629 Received DATA (on stdin) 01:02:34.416692 > 1 bytes data, server => client 01:02:34.416749 ' ' 01:02:34.421734 Received DATA (on stdin) 01:02:34.421797 > 1 bytes data, server => client 01:02:34.421854 ' ' 01:02:34.426813 Received DATA (on stdin) 01:02:34.426877 > 1 bytes data, server => client 01:02:34.429943 ' ' 01:02:34.435040 Received DATA (on stdin) 01:02:34.435103 > 1 bytes data, server => client 01:02:34.435158 ' ' 01:02:34.440134 Received DATA (on stdin) 01:02:34.440198 > 1 bytes data, server => client 01:02:34.440253 ' ' 01:02:34.445239 Received DATA (on stdin) 01:02:34.445310 > 1 bytes data, server => client 01:02:34.445384 ' ' 01:02:34.450557 Received DATA (on stdin) 01:02:34.450620 > 1 bytes data, server => client 01:02:34.450693 ' ' 01:02:34.455854 Received DATA (on stdin) 01:02:34.455918 > 1 bytes data, server => client 01:02:34.456595 ' ' 01:02:34.461765 Received DATA (on stdin) 01:02:34.461829 > 1 bytes data, server => client 01:02:34.461902 ' ' 01:02:34.467089 Received DATA (on stdin) 01:02:34.467165 > 1 bytes data, server => client 01:02:34.467242 ' ' 01:02:34.472417 Received DATA (on stdin) 01:02:34.472485 > 1 bytes data, server => client 01:02:34.472559 ' ' 01:02:34.477729 Received DATA (on stdin) 01:02:34.477795 > 1 bytes data, server => client 01:02:34.477870 ' ' 01:02:34.483094 Received DATA (on stdin) 01:02:34.483181 > 1 bytes data, server => client 01:02:34.483284 ' ' 01:02:34.488410 Received DATA (on stdin) 01:02:34.488499 > 1 bytes data, server => client 01:02:34.489955 '7' 01:02:34.495109 Received DATA (on stdin) 01:02:34.495178 > 1 bytes data, server => client 01:02:34.495237 ' ' 01:02:34.500207 Received DATA (on stdin) 01:02:34.500271 > 1 bytes data, server => client 01:02:34.500327 'D' 01:02:34.505287 Received DATA (on stdin) 01:02:34.505369 > 1 bytes data, server => client 01:02:34.505454 'e' 01:02:34.513295 Received DATA (on stdin) 01:02:34.513363 > 1 bytes data, server => client 01:02:34.513420 'c' 01:02:34.518391 Received DATA (on stdin) 01:02:34.518454 > 1 bytes data, server => client 01:02:34.518508 ' ' 01:02:34.523483 Received DATA (on stdin) 01:02:34.523545 > 1 bytes data, server => client 01:02:34.523600 ' ' 01:02:34.528562 Received DATA (on stdin) 01:02:34.528625 > 1 bytes data, server => client 01:02:34.528699 '9' 01:02:34.533864 Received DATA (on stdin) 01:02:34.533927 > 1 bytes data, server => client 01:02:34.533998 ' ' 01:02:34.539160 Received DATA (on stdin) 01:02:34.539224 > 1 bytes data, server => client 01:02:34.539297 ' ' 01:02:34.544461 Received DATA (on stdin) 01:02:34.544526 > 1 bytes data, server => client 01:02:34.544598 '1' 01:02:34.549762 Received DATA (on stdin) 01:02:34.549827 > 1 bytes data, server => client 01:02:34.549900 '9' 01:02:34.555116 Received DATA (on stdin) 01:02:34.555195 > 1 bytes data, server => client 01:02:34.555272 '9' 01:02:34.560481 Received DATA (on stdin) 01:02:34.560564 > 1 bytes data, server => client 01:02:34.560642 '9' 01:02:34.566651 Received DATA (on stdin) 01:02:34.566722 > 1 bytes data, server => client 01:02:34.566778 ' ' 01:02:34.571747 Received DATA (on stdin) 01:02:34.571811 > 1 bytes data, server => client 01:02:34.571868 'b' 01:02:34.576846 Received DATA (on stdin) 01:02:34.576911 > 1 bytes data, server => client 01:02:34.576968 'i' 01:02:34.581926 Received DATA (on stdin) 01:02:34.581989 > 1 bytes data, server => client 01:02:34.582072 'n' 01:02:34.589920 Received DATA (on stdin) 01:02:34.589987 > 1 bytes data, server => client 01:02:34.590043 ' ' 01:02:34.593280 Received DATA (on stdin) 01:02:34.593344 > 1 bytes data, server => client 01:02:34.593418 '-' 01:02:34.598620 Received DATA (on stdin) 01:02:34.598680 > 1 bytes data, server => client 01:02:34.598750 '>' 01:02:34.603912 Received DATA (on stdin) 01:02:34.603973 > 1 bytes data, server => client 01:02:34.604043 ' ' 01:02:34.609205 Received DATA (on stdin) 01:02:34.609269 > 1 bytes data, server => client 01:02:34.609347 'u' 01:02:34.614457 Received DATA (on stdin) 01:02:34.614535 > 1 bytes data, server => client 01:02:34.616655 's' 01:02:34.621836 Received DATA (on stdin) 01:02:34.621981 > 1 bytes data, server => client 01:02:34.622041 'r' 01:02:34.626940 Received DATA (on stdin) 01:02:34.627017 > 1 bytes data, server => client 01:02:34.627100 '/' 01:02:34.632283 Received DATA (on stdin) 01:02:34.632350 > 1 bytes data, server => client 01:02:34.632428 'b' 01:02:34.637609 Received DATA (on stdin) 01:02:34.637680 > 1 bytes data, server => client 01:02:34.639947 'i' 01:02:34.645073 Received DATA (on stdin) 01:02:34.645144 > 1 bytes data, server => client 01:02:34.645203 'n' 01:02:34.650154 Received DATA (on stdin) 01:02:34.650216 > 1 bytes data, server => client 01:02:34.650289 '\r' 01:02:34.655456 Received DATA (on stdin) 01:02:34.655521 > 1 bytes data, server => client 01:02:34.655595 '\n' 01:02:34.661440 Received DATA (on stdin) 01:02:34.661506 > 1 bytes data, server => client 01:02:34.666608 'd' 01:02:34.671710 Received DATA (on stdin) 01:02:34.671777 > 1 bytes data, server => client 01:02:34.671834 'r' 01:02:34.676838 Received DATA (on stdin) 01:02:34.676918 > 1 bytes data, server => client 01:02:34.676975 '-' 01:02:34.681985 Received DATA (on stdin) 01:02:34.682091 > 1 bytes data, server => client 01:02:34.682177 'x' 01:02:34.687389 Received DATA (on stdin) 01:02:34.687462 > 1 bytes data, server => client 01:02:34.687540 'r' 01:02:34.692713 Received DATA (on stdin) 01:02:34.692778 > 1 bytes data, server => client 01:02:34.692868 '-' 01:02:34.698035 Received DATA (on stdin) 01:02:34.698100 > 1 bytes data, server => client 01:02:34.698176 'x' 01:02:34.703341 Received DATA (on stdin) 01:02:34.703406 > 1 bytes data, server => client 01:02:34.703480 'r' 01:02:34.708646 Received DATA (on stdin) 01:02:34.708710 > 1 bytes data, server => client 01:02:34.708786 '-' 01:02:34.713949 Received DATA (on stdin) 01:02:34.714028 > 1 bytes data, server => client 01:02:34.716606 'x' 01:02:34.721687 Received DATA (on stdin) 01:02:34.721751 > 1 bytes data, server => client 01:02:34.721826 ' ' 01:02:34.726991 Received DATA (on stdin) 01:02:34.727056 > 1 bytes data, server => client 01:02:34.727131 ' ' 01:02:34.732302 Received DATA (on stdin) 01:02:34.732370 > 1 bytes data, server => client 01:02:34.732446 ' ' 01:02:34.737642 Received DATA (on stdin) 01:02:34.737719 > 1 bytes data, server => client 01:02:34.737798 '2' 01:02:34.743023 Received DATA (on stdin) 01:02:34.743123 > 1 bytes data, server => client 01:02:34.743222 ' ' 01:02:34.748329 Received DATA (on stdin) 01:02:34.748397 > 1 bytes data, server => client 01:02:34.749946 '0' 01:02:34.755032 Received DATA (on stdin) 01:02:34.755099 > 1 bytes data, server => client 01:02:34.755174 ' ' 01:02:34.760345 Received DATA (on stdin) 01:02:34.760411 > 1 bytes data, server => client 01:02:34.760489 ' ' 01:02:34.765660 Received DATA (on stdin) 01:02:34.765726 > 1 bytes data, server => client 01:02:34.765810 ' ' 01:02:34.770895 Received DATA (on stdin) 01:02:34.770960 > 1 bytes data, server => client 01:02:34.771034 ' ' 01:02:34.776200 Received DATA (on stdin) 01:02:34.776264 > 1 bytes data, server => client 01:02:34.779940 ' ' 01:02:34.785052 Received DATA (on stdin) 01:02:34.785124 > 1 bytes data, server => client 01:02:34.785190 ' ' 01:02:34.790154 Received DATA (on stdin) 01:02:34.790226 > 1 bytes data, server => client 01:02:34.790291 ' ' 01:02:34.795235 Received DATA (on stdin) 01:02:34.795309 > 1 bytes data, server => client 01:02:34.795427 ' ' 01:02:34.800656 Received DATA (on stdin) 01:02:34.800764 > 1 bytes data, server => client 01:02:34.800853 '1' 01:02:34.806118 Received DATA (on stdin) 01:02:34.806242 > 1 bytes data, server => client 01:02:34.806330 ' ' 01:02:34.811573 Received DATA (on stdin) 01:02:34.811655 > 1 bytes data, server => client 01:02:34.811739 ' ' 01:02:34.816944 Received DATA (on stdin) 01:02:34.817016 > 1 bytes data, server => client 01:02:34.817097 ' ' 01:02:34.822348 Received DATA (on stdin) 01:02:34.822437 > 1 bytes data, server => client 01:02:34.822521 ' ' 01:02:34.827724 Received DATA (on stdin) 01:02:34.827799 > 1 bytes data, server => client 01:02:34.827880 ' ' 01:02:34.833068 Received DATA (on stdin) 01:02:34.833140 > 1 bytes data, server => client 01:02:34.833220 ' ' 01:02:34.841701 Received DATA (on stdin) 01:02:34.841770 > 1 bytes data, server => client 01:02:34.841831 ' ' 01:02:34.846798 Received DATA (on stdin) 01:02:34.846866 > 1 bytes data, server => client 01:02:34.846926 ' ' 01:02:34.851894 Received DATA (on stdin) 01:02:34.851960 > 1 bytes data, server => client 01:02:34.852020 ' ' 01:02:34.856974 Received DATA (on stdin) 01:02:34.857041 > 1 bytes data, server => client 01:02:34.857119 ' ' 01:02:34.862287 Received DATA (on stdin) 01:02:34.862353 > 1 bytes data, server => client 01:02:34.862429 ' ' 01:02:34.867598 Received DATA (on stdin) 01:02:34.867666 > 1 bytes data, server => client 01:02:34.867743 ' ' 01:02:34.872913 Received DATA (on stdin) 01:02:34.872979 > 1 bytes data, server => client 01:02:34.873057 '5' 01:02:34.878230 Received DATA (on stdin) 01:02:34.878297 > 1 bytes data, server => client 01:02:34.878375 '1' 01:02:34.883544 Received DATA (on stdin) 01:02:34.883610 > 1 bytes data, server => client 01:02:34.883687 '2' 01:02:34.888854 Received DATA (on stdin) 01:02:34.888920 > 1 bytes data, server => client 01:02:34.888997 ' ' 01:02:34.894169 Received DATA (on stdin) 01:02:34.894234 > 1 bytes data, server => client 01:02:34.894321 'O' 01:02:34.899960 Received DATA (on stdin) 01:02:34.900027 > 1 bytes data, server => client 01:02:34.900086 'c' 01:02:34.905040 Received DATA (on stdin) 01:02:34.905107 > 1 bytes data, server => client 01:02:34.905194 't' 01:02:34.910307 Received DATA (on stdin) 01:02:34.910390 > 1 bytes data, server => client 01:02:34.913302 ' ' 01:02:34.918444 Received DATA (on stdin) 01:02:34.918523 > 1 bytes data, server => client 01:02:34.918583 ' ' 01:02:34.923544 Received DATA (on stdin) 01:02:34.923610 > 1 bytes data, server => client 01:02:34.923683 '1' 01:02:34.928625 Received DATA (on stdin) 01:02:34.928689 > 1 bytes data, server => client 01:02:34.928765 ' ' 01:02:34.933931 Received DATA (on stdin) 01:02:34.933994 > 1 bytes data, server => client 01:02:34.934068 ' ' 01:02:34.939237 Received DATA (on stdin) 01:02:34.939300 > 1 bytes data, server => client 01:02:34.939373 '1' 01:02:34.944542 Received DATA (on stdin) 01:02:34.944606 > 1 bytes data, server => client 01:02:34.944688 '9' 01:02:34.949771 Received DATA (on stdin) 01:02:34.949834 > 1 bytes data, server => client 01:02:34.953270 '9' 01:02:34.958366 Received DATA (on stdin) 01:02:34.958429 > 1 bytes data, server => client 01:02:34.958485 '7' 01:02:34.963444 Received DATA (on stdin) 01:02:34.963508 > 1 bytes data, server => client 01:02:34.963591 ' ' 01:02:34.968675 Received DATA (on stdin) 01:02:34.968738 > 1 bytes data, server => client 01:02:34.968811 'd' 01:02:34.975051 Received DATA (on stdin) 01:02:34.975129 > 1 bytes data, server => client 01:02:34.975206 'e' 01:02:34.980383 Received DATA (on stdin) 01:02:34.980447 > 1 bytes data, server => client 01:02:34.980521 'v' 01:02:34.985686 Received DATA (on stdin) 01:02:34.985750 > 1 bytes data, server => client 01:02:34.985824 '\r' 01:02:34.990989 Received DATA (on stdin) 01:02:34.991052 > 1 bytes data, server => client 01:02:34.991136 '\n' 01:02:34.997028 Received DATA (on stdin) 01:02:34.997114 > 1 bytes data, server => client 01:02:35.003286 'd' 01:02:35.008387 Received DATA (on stdin) 01:02:35.008454 > 1 bytes data, server => client 01:02:35.008510 'r' 01:02:35.013482 Received DATA (on stdin) 01:02:35.013547 > 1 bytes data, server => client 01:02:35.013603 'w' 01:02:35.018561 Received DATA (on stdin) 01:02:35.018625 > 1 bytes data, server => client 01:02:35.018698 'x' 01:02:35.023872 Received DATA (on stdin) 01:02:35.023937 > 1 bytes data, server => client 01:02:35.024010 'r' 01:02:35.029173 Received DATA (on stdin) 01:02:35.029236 > 1 bytes data, server => client 01:02:35.029309 'w' 01:02:35.034477 Received DATA (on stdin) 01:02:35.034540 > 1 bytes data, server => client 01:02:35.034613 'x' 01:02:35.039776 Received DATA (on stdin) 01:02:35.039839 > 1 bytes data, server => client 01:02:35.039917 'r' 01:02:35.045090 Received DATA (on stdin) 01:02:35.045153 > 1 bytes data, server => client 01:02:35.045227 'w' 01:02:35.050527 Received DATA (on stdin) 01:02:35.050593 > 1 bytes data, server => client 01:02:35.050667 'x' 01:02:35.055835 Received DATA (on stdin) 01:02:35.055900 > 1 bytes data, server => client 01:02:35.055974 ' ' 01:02:35.061137 Received DATA (on stdin) 01:02:35.061200 > 1 bytes data, server => client 01:02:35.061274 ' ' 01:02:35.068355 Received DATA (on stdin) 01:02:35.068420 > 1 bytes data, server => client 01:02:35.068476 ' ' 01:02:35.073433 Received DATA (on stdin) 01:02:35.073496 > 1 bytes data, server => client 01:02:35.073570 '2' 01:02:35.078731 Received DATA (on stdin) 01:02:35.078796 > 1 bytes data, server => client 01:02:35.078869 ' ' 01:02:35.084031 Received DATA (on stdin) 01:02:35.084095 > 1 bytes data, server => client 01:02:35.084168 '9' 01:02:35.089335 Received DATA (on stdin) 01:02:35.089400 > 1 bytes data, server => client === File too long: 493 lines omitted here 01:02:35.982731 Received DATA (on stdin) 01:02:35.982798 > 1 bytes data, server => client 01:02:35.982855 ' ' 01:02:35.987828 Received DATA (on stdin) 01:02:35.987895 > 1 bytes data, server => client 01:02:35.987952 'p' 01:02:35.992934 Received DATA (on stdin) 01:02:35.993000 > 1 bytes data, server => client 01:02:35.993058 'u' 01:02:35.998034 Received DATA (on stdin) 01:02:35.998101 > 1 bytes data, server => client 01:02:35.998157 'b' 01:02:36.003131 Received DATA (on stdin) 01:02:36.003197 > 1 bytes data, server => client 01:02:36.003263 '\r' 01:02:36.009941 Received DATA (on stdin) 01:02:36.010008 > 1 bytes data, server => client 01:02:36.010065 '\n' 01:02:36.015701 Received DATA (on stdin) 01:02:36.015773 > 1 bytes data, server => client 01:02:36.015832 'd' 01:02:36.020798 Received DATA (on stdin) 01:02:36.020865 > 1 bytes data, server => client 01:02:36.020922 'r' 01:02:36.025903 Received DATA (on stdin) 01:02:36.025971 > 1 bytes data, server => client 01:02:36.026028 '-' 01:02:36.033247 Received DATA (on stdin) 01:02:36.033311 > 1 bytes data, server => client 01:02:36.033368 'x' 01:02:36.036095 Received DATA (on stdin) 01:02:36.036157 > 1 bytes data, server => client 01:02:36.036214 'r' 01:02:36.041194 Received DATA (on stdin) 01:02:36.041261 > 1 bytes data, server => client 01:02:36.041319 '-' 01:02:36.046293 Received DATA (on stdin) 01:02:36.046360 > 1 bytes data, server => client 01:02:36.046417 'x' 01:02:36.053363 Received DATA (on stdin) 01:02:36.053430 > 1 bytes data, server => client 01:02:36.053487 'r' 01:02:36.058375 Received DATA (on stdin) 01:02:36.058442 > 1 bytes data, server => client 01:02:36.058499 '-' 01:02:36.063470 Received DATA (on stdin) 01:02:36.063536 > 1 bytes data, server => client 01:02:36.063593 'x' 01:02:36.068568 Received DATA (on stdin) 01:02:36.068635 > 1 bytes data, server => client 01:02:36.068691 ' ' 01:02:36.073665 Received DATA (on stdin) 01:02:36.073731 > 1 bytes data, server => client 01:02:36.073789 ' ' 01:02:36.078762 Received DATA (on stdin) 01:02:36.078828 > 1 bytes data, server => client 01:02:36.078885 ' ' 01:02:36.083862 Received DATA (on stdin) 01:02:36.083929 > 1 bytes data, server => client 01:02:36.083986 '5' 01:02:36.088959 Received DATA (on stdin) 01:02:36.089026 > 1 bytes data, server => client 01:02:36.089083 ' ' 01:02:36.096581 Received DATA (on stdin) 01:02:36.096646 > 1 bytes data, server => client 01:02:36.096702 '0' 01:02:36.099149 Received DATA (on stdin) 01:02:36.099212 > 1 bytes data, server => client 01:02:36.099268 ' ' 01:02:36.104251 Received DATA (on stdin) 01:02:36.104317 > 1 bytes data, server => client 01:02:36.104374 ' ' 01:02:36.109347 Received DATA (on stdin) 01:02:36.109413 > 1 bytes data, server => client 01:02:36.109470 ' ' 01:02:36.114443 Received DATA (on stdin) 01:02:36.114509 > 1 bytes data, server => client 01:02:36.114566 ' ' 01:02:36.119540 Received DATA (on stdin) 01:02:36.119606 > 1 bytes data, server => client 01:02:36.119663 ' ' 01:02:36.124636 Received DATA (on stdin) 01:02:36.124702 > 1 bytes data, server => client 01:02:36.124759 ' ' 01:02:36.129733 Received DATA (on stdin) 01:02:36.129800 > 1 bytes data, server => client 01:02:36.129856 ' ' 01:02:36.134829 Received DATA (on stdin) 01:02:36.134896 > 1 bytes data, server => client 01:02:36.134952 ' ' 01:02:36.139932 Received DATA (on stdin) 01:02:36.139999 > 1 bytes data, server => client 01:02:36.140057 '1' 01:02:36.145040 Received DATA (on stdin) 01:02:36.145106 > 1 bytes data, server => client 01:02:36.145163 ' ' 01:02:36.150136 Received DATA (on stdin) 01:02:36.150201 > 1 bytes data, server => client 01:02:36.150258 ' ' 01:02:36.155240 Received DATA (on stdin) 01:02:36.155305 > 1 bytes data, server => client 01:02:36.155361 ' ' 01:02:36.163248 Received DATA (on stdin) 01:02:36.163328 > 1 bytes data, server => client 01:02:36.163385 ' ' 01:02:36.165426 Received DATA (on stdin) 01:02:36.165488 > 1 bytes data, server => client 01:02:36.165544 ' ' 01:02:36.170523 Received DATA (on stdin) 01:02:36.170589 > 1 bytes data, server => client 01:02:36.170646 ' ' 01:02:36.175621 Received DATA (on stdin) 01:02:36.175687 > 1 bytes data, server => client 01:02:36.175744 ' ' 01:02:36.180717 Received DATA (on stdin) 01:02:36.180783 > 1 bytes data, server => client 01:02:36.180840 ' ' 01:02:36.185816 Received DATA (on stdin) 01:02:36.185883 > 1 bytes data, server => client 01:02:36.185939 ' ' 01:02:36.190912 Received DATA (on stdin) 01:02:36.190979 > 1 bytes data, server => client 01:02:36.191036 ' ' 01:02:36.196010 Received DATA (on stdin) 01:02:36.196076 > 1 bytes data, server => client 01:02:36.196133 ' ' 01:02:36.201135 Received DATA (on stdin) 01:02:36.201209 > 1 bytes data, server => client 01:02:36.201266 ' ' 01:02:36.206235 Received DATA (on stdin) 01:02:36.206302 > 1 bytes data, server => client 01:02:36.206359 '5' 01:02:36.211331 Received DATA (on stdin) 01:02:36.211398 > 1 bytes data, server => client 01:02:36.211455 '1' 01:02:36.216428 Received DATA (on stdin) 01:02:36.216494 > 1 bytes data, server => client 01:02:36.216551 '2' 01:02:36.221526 Received DATA (on stdin) 01:02:36.221592 > 1 bytes data, server => client 01:02:36.221649 ' ' 01:02:36.226610 Received DATA (on stdin) 01:02:36.226677 > 1 bytes data, server => client 01:02:36.226736 'O' 01:02:36.231707 Received DATA (on stdin) 01:02:36.231773 > 1 bytes data, server => client 01:02:36.231830 'c' 01:02:36.239916 Received DATA (on stdin) 01:02:36.239981 > 1 bytes data, server => client 01:02:36.240038 't' 01:02:36.241896 Received DATA (on stdin) 01:02:36.241959 > 1 bytes data, server => client 01:02:36.242016 ' ' 01:02:36.246993 Received DATA (on stdin) 01:02:36.247060 > 1 bytes data, server => client 01:02:36.247117 ' ' 01:02:36.252089 Received DATA (on stdin) 01:02:36.252155 > 1 bytes data, server => client 01:02:36.252212 '1' 01:02:36.257185 Received DATA (on stdin) 01:02:36.257252 > 1 bytes data, server => client 01:02:36.257309 ' ' 01:02:36.262306 Received DATA (on stdin) 01:02:36.262387 > 1 bytes data, server => client 01:02:36.262451 ' ' 01:02:36.267427 Received DATA (on stdin) 01:02:36.267507 > 1 bytes data, server => client 01:02:36.267569 '1' 01:02:36.273294 Received DATA (on stdin) 01:02:36.273374 > 1 bytes data, server => client 01:02:36.273438 '9' 01:02:36.278409 Received DATA (on stdin) 01:02:36.278492 > 1 bytes data, server => client 01:02:36.278560 '9' 01:02:36.283517 Received DATA (on stdin) 01:02:36.283599 > 1 bytes data, server => client 01:02:36.283662 '7' 01:02:36.288623 Received DATA (on stdin) 01:02:36.288702 > 1 bytes data, server => client 01:02:36.288766 ' ' 01:02:36.293732 Received DATA (on stdin) 01:02:36.293817 > 1 bytes data, server => client 01:02:36.293891 'u' 01:02:36.298837 Received DATA (on stdin) 01:02:36.298913 > 1 bytes data, server => client 01:02:36.298975 's' 01:02:36.303948 Received DATA (on stdin) 01:02:36.304036 > 1 bytes data, server => client 01:02:36.304102 'r' 01:02:36.309082 Received DATA (on stdin) 01:02:36.309174 > 1 bytes data, server => client 01:02:36.309236 '\r' 01:02:36.316585 Received DATA (on stdin) 01:02:36.316671 > 1 bytes data, server => client 01:02:36.316745 '\n' 01:02:36.320320 Received DISC (on stdin) 01:02:36.320471 ====> Client forcibly disconnected 01:02:36.323640 Received QUIT (on stdin) 01:02:36.323730 quits 01:02:36.324286 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd SLOWDOWN Testnum 250 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE A LIST QUIT === End of file server.input === Start of file stderr250 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 200 0 200 0 0 30 0 --:--:-- 0:00:06 --:--:-- 47 100 378 0 378 0 0 50 0 --:--:-- 0:00:07 --:--:-- 79 100 561 0 561 0 0 66 0 --:--:-- 0:00:08 --:--:-- 115 100 623 0 623 0 0 66 0 --:--:-- 0:00:09 --:--:-- 128 === End of file stderr250 === Start of file trace250 01:02:28.702259 * Trying 127.0.0.1:39881... 01:02:29.622137 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 41806 01:02:29.878528 <= Recv header, 32 bytes (0x20) 0000: 32 32 30 2d 20 20 20 20 20 20 20 20 5f 20 20 20 220- _ 0010: 5f 20 5f 5f 5f 5f 20 20 5f 20 20 20 20 20 0d 0a _ ____ _ .. 01:02:30.259898 <= Recv header, 32 bytes (0x20) 0000: 32 32 30 2d 20 20 20 20 5f 5f 5f 7c 20 7c 20 7c 220- ___| | | 0010: 20 7c 20 20 5f 20 5c 7c 20 7c 20 20 20 20 0d 0a | _ \| | .. 01:02:30.295563 <= Recv header, 32 bytes (0x20) 0000: 32 32 30 2d 20 20 20 2f 20 5f 5f 7c 20 7c 20 7c 220- / __| | | 0010: 20 7c 20 7c 5f 29 20 7c 20 7c 20 20 20 20 0d 0a | |_) | | .. 01:02:30.308954 <= Recv header, 32 bytes (0x20) 0000: 32 32 30 2d 20 20 7c 20 28 5f 5f 7c 20 7c 5f 7c 220- | (__| |_| 0010: 20 7c 20 20 5f 20 7b 7c 20 7c 5f 5f 5f 20 0d 0a | _ {| |___ .. 01:02:30.376795 <= Recv header, 32 bytes (0x20) 0000: 32 32 30 20 20 20 20 5c 5f 5f 5f 7c 5c 5f 5f 5f 220 \___|\___ 0010: 2f 7c 5f 7c 20 5c 5f 5c 5f 5f 5f 5f 5f 7c 0d 0a /|_| \_\_____|.. 01:02:30.494408 => Send header, 16 bytes (0x10) 0000: 55 53 45 52 20 61 6e 6f 6e 79 6d 6f 75 73 0d 0a USER anonymous.. 01:02:30.663490 <= Recv header, 33 bytes (0x21) 0000: 33 33 31 20 57 65 20 61 72 65 20 68 61 70 70 79 331 We are happy 0010: 20 79 6f 75 20 70 6f 70 70 65 64 20 69 6e 21 0d you popped in!. 0020: 0a . 01:02:30.734409 => Send header, 22 bytes (0x16) 0000: 50 41 53 53 20 66 74 70 40 65 78 61 6d 70 6c 65 PASS ftp@example 0010: 2e 63 6f 6d 0d 0a .com.. 01:02:30.898969 <= Recv header, 30 bytes (0x1e) 0000: 32 33 30 20 57 65 6c 63 6f 6d 65 20 79 6f 75 20 230 Welcome you 0010: 73 69 6c 6c 79 20 70 65 72 73 6f 6e 0d 0a silly person.. 01:02:30.925861 => Send header, 5 bytes (0x5) 0000: 50 57 44 0d 0a PWD.. 01:02:31.091732 <= Recv header, 30 bytes (0x1e) 0000: 32 35 37 20 22 2f 22 20 69 73 20 63 75 72 72 65 257 "/" is curre 0010: 6e 74 20 64 69 72 65 63 74 6f 72 79 0d 0a nt directory.. 01:02:31.139447 * Entry path is '/' 01:02:31.232036 * Request has same path as previous transfer 01:02:31.283781 => Send header, 6 bytes (0x6) 0000: 45 50 53 56 0d 0a EPSV.. 01:02:31.302679 * Connect data stream passively 01:02:31.557449 <= Recv header, 39 bytes (0x27) 0000: 32 32 39 20 45 6e 74 65 72 69 6e 67 20 50 61 73 229 Entering Pas 0010: 73 69 76 65 20 4d 6f 64 65 20 28 7c 7c 7c 33 33 sive Mode (|||33 0020: 38 35 37 7c 29 0d 0a 857|).. 01:02:31.706646 * Connecting to 127.0.0.1 (127.0.0.1) port 33857 01:02:31.767867 * Trying 127.0.0.1:33857... 01:02:31.864258 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 33857) from 127.0.0.1 port 42700 01:02:31.894607 => Send header, 8 bytes (0x8) 0000: 54 59 50 45 20 41 0d 0a TYPE A.. 01:02:32.080847 <= Recv header, 33 bytes (0x21) 0000: 32 30 30 20 49 20 6d 6f 64 69 66 79 20 54 59 50 200 I modify TYP 0010: 45 20 61 73 20 79 6f 75 20 77 61 6e 74 65 64 0d E as you wanted. 0020: 0a . 01:02:32.127906 => Send header, 6 bytes (0x6) 0000: 4c 49 53 54 0d 0a LIST.. 01:02:32.278731 <= Recv header, 28 bytes (0x1c) 0000: 31 35 30 20 68 65 72 65 20 63 6f 6d 65 73 20 61 150 here comes a 0010: 20 64 69 72 65 63 74 6f 72 79 0d 0a directory.. 01:02:32.318492 * Maxdownload = -1 01:02:32.503011 <= Recv data, 31 bytes (0x1f) 0000: 74 6f 74 61 6c 20 32 30 0d 0a 64 72 77 78 72 2d total 20..drwxr- 0010: 78 72 2d 78 20 20 20 38 20 39 38 20 20 20 20 xr-x 8 98 01:02:32.672291 <= Recv data, 35 bytes (0x23) 0000: 20 20 20 39 38 20 20 20 20 20 20 20 20 20 20 20 98 0010: 35 31 32 20 4f 63 74 20 32 32 20 31 33 3a 30 36 512 Oct 22 13:06 0020: 20 2e 0d .. 01:02:32.696578 <= Recv data, 4 bytes (0x4) 0000: 0a 64 72 77 .drw 01:02:32.704475 <= Recv data, 5 bytes (0x5) 0000: 78 72 2d 78 72 xr-xr 01:02:32.713216 <= Recv data, 2 bytes (0x2) 0000: 2d 78 -x 01:02:32.719043 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:32.724587 <= Recv data, 2 bytes (0x2) 0000: 20 20 01:02:32.730463 <= Recv data, 1 bytes (0x1) 0000: 38 8 01:02:32.736153 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:32.741672 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:32.747148 <= Recv data, 1 bytes (0x1) 0000: 38 8 01:02:32.847592 <= Recv data, 17 bytes (0x11) 0000: 20 20 20 20 20 20 20 39 38 20 20 20 20 20 20 20 98 0010: 20 01:02:32.859323 <= Recv data, 3 bytes (0x3) 0000: 20 20 20 01:02:32.866092 <= Recv data, 3 bytes (0x3) 0000: 35 31 32 512 01:02:32.872819 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:32.878447 <= Recv data, 2 bytes (0x2) 0000: 4f 63 Oc 01:02:32.884152 <= Recv data, 1 bytes (0x1) 0000: 74 t 01:02:32.889740 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:32.895295 <= Recv data, 1 bytes (0x1) 0000: 32 2 01:02:32.901415 <= Recv data, 1 bytes (0x1) 0000: 32 2 01:02:32.907326 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:32.912816 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:32.925856 <= Recv data, 1 bytes (0x1) 0000: 33 3 01:02:32.931555 <= Recv data, 3 bytes (0x3) 0000: 3a 30 36 :06 01:02:32.937501 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:32.944064 <= Recv data, 1 bytes (0x1) 0000: 2e . 01:02:32.950910 <= Recv data, 1 bytes (0x1) 0000: 2e . 01:02:32.957132 <= Recv data, 2 bytes (0x2) 0000: 0d 0a .. 01:02:32.964969 <= Recv data, 1 bytes (0x1) 0000: 64 d 01:02:32.971962 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:32.978030 <= Recv data, 1 bytes (0x1) 0000: 77 w 01:02:32.984735 <= Recv data, 1 bytes (0x1) 0000: 78 x 01:02:32.990908 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:32.998280 <= Recv data, 1 bytes (0x1) 0000: 2d - 01:02:33.004442 <= Recv data, 1 bytes (0x1) 0000: 78 x 01:02:33.013067 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:33.018857 <= Recv data, 1 bytes (0x1) 0000: 2d - 01:02:33.025065 <= Recv data, 1 bytes (0x1) 0000: 78 x 01:02:33.031171 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.037017 <= Recv data, 2 bytes (0x2) 0000: 20 20 01:02:33.043062 <= Recv data, 1 bytes (0x1) 0000: 32 2 01:02:33.049331 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.055232 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:33.060848 <= Recv data, 1 bytes (0x1) 0000: 38 8 01:02:33.068478 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.074577 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.080108 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.085918 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.091409 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.096968 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.102535 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.108316 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:33.113809 <= Recv data, 1 bytes (0x1) 0000: 38 8 01:02:33.119533 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.125932 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.134741 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.140972 <= Recv data, 2 bytes (0x2) 0000: 20 20 01:02:33.147515 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.153065 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.158734 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.164507 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.170525 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.176151 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.181828 <= Recv data, 1 bytes (0x1) 0000: 35 5 01:02:33.187678 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:33.193230 <= Recv data, 1 bytes (0x1) 0000: 32 2 01:02:33.200162 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.205914 <= Recv data, 1 bytes (0x1) 0000: 4d M 01:02:33.211521 <= Recv data, 1 bytes (0x1) 0000: 61 a 01:02:33.217245 <= Recv data, 1 bytes (0x1) 0000: 79 y 01:02:33.222898 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.228519 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.234005 <= Recv data, 1 bytes (0x1) 0000: 32 2 01:02:33.239735 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.245315 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.250806 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:33.256433 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:33.263427 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:33.269159 <= Recv data, 2 bytes (0x2) 0000: 36 20 6 01:02:33.274922 <= Recv data, 1 bytes (0x1) 0000: 2e . 01:02:33.280550 <= Recv data, 1 bytes (0x1) 0000: 4e N 01:02:33.286170 <= Recv data, 1 bytes (0x1) 0000: 65 e 01:02:33.291789 <= Recv data, 1 bytes (0x1) 0000: 58 X 01:02:33.297376 <= Recv data, 1 bytes (0x1) 0000: 54 T 01:02:33.303150 <= Recv data, 1 bytes (0x1) 0000: 0d . 01:02:33.309576 <= Recv data, 1 bytes (0x1) 0000: 0a . 01:02:33.315386 <= Recv data, 1 bytes (0x1) 0000: 2d - 01:02:33.321120 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:33.328384 <= Recv data, 1 bytes (0x1) 0000: 2d - 01:02:33.334212 <= Recv data, 1 bytes (0x1) 0000: 2d - 01:02:33.339865 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:33.345459 <= Recv data, 1 bytes (0x1) 0000: 2d - 01:02:33.351167 <= Recv data, 1 bytes (0x1) 0000: 2d - 01:02:33.357259 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:33.362834 <= Recv data, 1 bytes (0x1) 0000: 2d - 01:02:33.368361 <= Recv data, 1 bytes (0x1) 0000: 2d - 01:02:33.373903 <= Recv data, 2 bytes (0x2) 0000: 20 20 01:02:33.379826 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.385383 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:33.408996 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.416926 <= Recv data, 4 bytes (0x4) 0000: 30 20 20 20 0 01:02:33.424344 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.431559 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.437634 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.443607 <= Recv data, 2 bytes (0x2) 0000: 20 20 01:02:33.449667 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:33.454767 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.459724 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.464689 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.471165 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.478670 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.484742 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.490601 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.496437 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.502323 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.508137 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.513926 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.519936 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.526505 <= Recv data, 2 bytes (0x2) 0000: 20 33 3 01:02:33.533072 <= Recv data, 1 bytes (0x1) 0000: 35 5 01:02:33.539226 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.546865 <= Recv data, 1 bytes (0x1) 0000: 4a J 01:02:33.552893 <= Recv data, 1 bytes (0x1) 0000: 75 u 01:02:33.558730 <= Recv data, 1 bytes (0x1) 0000: 6c l 01:02:33.564561 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.570562 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:33.575744 <= Recv data, 1 bytes (0x1) 0000: 36 6 01:02:33.580781 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.585785 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.591059 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:33.597147 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:33.606747 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:33.613790 <= Recv data, 2 bytes (0x2) 0000: 36 20 6 01:02:33.619730 <= Recv data, 1 bytes (0x1) 0000: 52 R 01:02:33.625709 <= Recv data, 1 bytes (0x1) 0000: 45 E 01:02:33.631397 <= Recv data, 1 bytes (0x1) 0000: 41 A 01:02:33.637174 <= Recv data, 1 bytes (0x1) 0000: 44 D 01:02:33.642857 <= Recv data, 1 bytes (0x1) 0000: 4d M 01:02:33.648770 <= Recv data, 1 bytes (0x1) 0000: 45 E 01:02:33.654739 <= Recv data, 1 bytes (0x1) 0000: 0d . 01:02:33.660391 <= Recv data, 1 bytes (0x1) 0000: 0a . 01:02:33.666428 <= Recv data, 1 bytes (0x1) 0000: 6c l 01:02:33.672839 <= Recv data, 2 bytes (0x2) 0000: 72 77 rw 01:02:33.681182 <= Recv data, 1 bytes (0x1) 0000: 78 x 01:02:33.687038 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:33.692762 <= Recv data, 1 bytes (0x1) 0000: 77 w 01:02:33.698443 <= Recv data, 1 bytes (0x1) 0000: 78 x 01:02:33.704036 <= Recv data, 2 bytes (0x2) 0000: 72 77 rw 01:02:33.709866 <= Recv data, 1 bytes (0x1) 0000: 78 x 01:02:33.715456 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.721012 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.726660 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.732618 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:33.738687 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.746694 <= Recv data, 1 bytes (0x1) 0000: 30 0 01:02:33.752765 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.758617 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.764438 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.770160 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.775896 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.781529 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.787113 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.792740 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.798340 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:33.803922 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.811016 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.816695 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.822301 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.827902 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.833564 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.839222 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.844853 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.850499 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.856212 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.861881 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.867730 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.875642 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.881954 <= Recv data, 2 bytes (0x2) 0000: 20 37 7 01:02:33.887959 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.893607 <= Recv data, 1 bytes (0x1) 0000: 44 D 01:02:33.899201 <= Recv data, 1 bytes (0x1) 0000: 65 e 01:02:33.904803 <= Recv data, 1 bytes (0x1) 0000: 63 c 01:02:33.910400 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.915980 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.921613 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:33.927193 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.932791 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.939840 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:33.945813 <= Recv data, 2 bytes (0x2) 0000: 39 39 99 01:02:33.951955 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:33.957638 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.963256 <= Recv data, 1 bytes (0x1) 0000: 62 b 01:02:33.968891 <= Recv data, 1 bytes (0x1) 0000: 69 i 01:02:33.974464 <= Recv data, 1 bytes (0x1) 0000: 6e n 01:02:33.980113 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:33.985725 <= Recv data, 1 bytes (0x1) 0000: 2d - 01:02:33.991325 <= Recv data, 1 bytes (0x1) 0000: 3e > 01:02:33.996924 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.004459 <= Recv data, 1 bytes (0x1) 0000: 75 u 01:02:34.012406 <= Recv data, 1 bytes (0x1) 0000: 73 s 01:02:34.018959 <= Recv data, 2 bytes (0x2) 0000: 72 2f r/ 01:02:34.025425 <= Recv data, 1 bytes (0x1) 0000: 62 b 01:02:34.031702 <= Recv data, 1 bytes (0x1) 0000: 69 i 01:02:34.037441 <= Recv data, 1 bytes (0x1) 0000: 6e n 01:02:34.043160 <= Recv data, 1 bytes (0x1) 0000: 0d . 01:02:34.048677 <= Recv data, 1 bytes (0x1) 0000: 0a . 01:02:34.054324 <= Recv data, 1 bytes (0x1) 0000: 64 d 01:02:34.059920 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:34.065718 <= Recv data, 1 bytes (0x1) 0000: 2d - 01:02:34.073286 <= Recv data, 1 bytes (0x1) 0000: 78 x 01:02:34.079132 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:34.084747 <= Recv data, 1 bytes (0x1) 0000: 2d - 01:02:34.090345 <= Recv data, 1 bytes (0x1) 0000: 78 x 01:02:34.095944 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:34.101540 <= Recv data, 1 bytes (0x1) 0000: 2d - 01:02:34.107098 <= Recv data, 1 bytes (0x1) 0000: 78 x 01:02:34.113179 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.118847 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.124580 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.130568 <= Recv data, 1 bytes (0x1) 0000: 32 2 01:02:34.138465 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.144279 <= Recv data, 1 bytes (0x1) 0000: 30 0 01:02:34.149883 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.155576 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.161212 <= Recv data, 2 bytes (0x2) 0000: 20 20 01:02:34.167024 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.172649 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.178244 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.183894 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.189941 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:34.196140 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.203529 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.209793 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.215670 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.221386 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.227020 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.232676 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.238319 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.243927 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.249556 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.255232 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.260939 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.267995 <= Recv data, 1 bytes (0x1) 0000: 35 5 01:02:34.273687 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:34.279277 <= Recv data, 2 bytes (0x2) 0000: 32 20 2 01:02:34.285379 <= Recv data, 1 bytes (0x1) 0000: 4f O 01:02:34.291096 <= Recv data, 1 bytes (0x1) 0000: 63 c 01:02:34.297104 <= Recv data, 1 bytes (0x1) 0000: 74 t 01:02:34.303047 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.308826 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.314438 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:34.320042 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.325644 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.332720 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:34.338455 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:34.344036 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:34.349687 <= Recv data, 1 bytes (0x1) 0000: 37 7 01:02:34.355325 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.360981 <= Recv data, 1 bytes (0x1) 0000: 64 d 01:02:34.366641 <= Recv data, 1 bytes (0x1) 0000: 65 e 01:02:34.372249 <= Recv data, 1 bytes (0x1) 0000: 76 v 01:02:34.377807 <= Recv data, 1 bytes (0x1) 0000: 0d . 01:02:34.383309 <= Recv data, 1 bytes (0x1) 0000: 0a . 01:02:34.388976 <= Recv data, 1 bytes (0x1) 0000: 64 d 01:02:34.405675 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:34.432400 <= Recv data, 2 bytes (0x2) 0000: 77 78 wx 01:02:34.438499 <= Recv data, 5 bytes (0x5) 0000: 72 77 78 72 77 rwxrw 01:02:34.445011 <= Recv data, 1 bytes (0x1) 0000: 78 x 01:02:34.450675 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.456289 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.461888 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.467525 <= Recv data, 1 bytes (0x1) 0000: 32 2 01:02:34.473144 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.478758 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:34.484402 <= Recv data, 1 bytes (0x1) 0000: 38 8 01:02:34.491382 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.497099 <= Recv data, 2 bytes (0x2) 0000: 20 20 01:02:34.502937 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.508565 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.514156 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.519760 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.525349 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:34.531011 <= Recv data, 1 bytes (0x1) 0000: 38 8 01:02:34.536825 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.543066 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.548991 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.556060 <= Recv data, 2 bytes (0x2) 0000: 20 20 01:02:34.562408 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.568745 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.574609 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.580331 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.586064 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.591731 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.597374 <= Recv data, 1 bytes (0x1) 0000: 35 5 01:02:34.603025 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:34.608664 <= Recv data, 1 bytes (0x1) 0000: 32 2 01:02:34.614609 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.622767 <= Recv data, 1 bytes (0x1) 0000: 4d M 01:02:34.629072 <= Recv data, 2 bytes (0x2) 0000: 61 79 ay 01:02:34.635307 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.641221 <= Recv data, 1 bytes (0x1) 0000: 32 2 01:02:34.647018 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:34.652721 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.658496 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:34.664151 <= Recv data, 1 bytes (0x1) 0000: 36 6 01:02:34.669793 <= Recv data, 1 bytes (0x1) 0000: 3a : 01:02:34.675438 <= Recv data, 1 bytes (0x1) 0000: 30 0 01:02:34.681123 <= Recv data, 1 bytes (0x1) 0000: 34 4 01:02:34.688225 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.694010 <= Recv data, 2 bytes (0x2) 0000: 64 6f do 01:02:34.700129 <= Recv data, 1 bytes (0x1) 0000: 77 w 01:02:34.706014 <= Recv data, 1 bytes (0x1) 0000: 6e n 01:02:34.711725 <= Recv data, 1 bytes (0x1) 0000: 6c l 01:02:34.717453 <= Recv data, 1 bytes (0x1) 0000: 6f o 01:02:34.723141 <= Recv data, 1 bytes (0x1) 0000: 61 a 01:02:34.728772 <= Recv data, 1 bytes (0x1) 0000: 64 d 01:02:34.734430 <= Recv data, 1 bytes (0x1) 0000: 2e . 01:02:34.740106 <= Recv data, 1 bytes (0x1) 0000: 68 h 01:02:34.745768 <= Recv data, 1 bytes (0x1) 0000: 74 t 01:02:34.752816 <= Recv data, 1 bytes (0x1) 0000: 6d m 01:02:34.758574 <= Recv data, 1 bytes (0x1) 0000: 6c l 01:02:34.764231 <= Recv data, 1 bytes (0x1) 0000: 0d . 01:02:34.769735 <= Recv data, 1 bytes (0x1) 0000: 0a . 01:02:34.775402 <= Recv data, 1 bytes (0x1) 0000: 64 d 01:02:34.781047 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:34.786622 <= Recv data, 1 bytes (0x1) 0000: 2d - 01:02:34.792209 <= Recv data, 1 bytes (0x1) 0000: 78 x 01:02:34.797794 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:34.803436 <= Recv data, 1 bytes (0x1) 0000: 2d - 01:02:34.809059 <= Recv data, 1 bytes (0x1) 0000: 78 x 01:02:34.816124 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:34.821875 <= Recv data, 1 bytes (0x1) 0000: 2d - 01:02:34.827472 <= Recv data, 1 bytes (0x1) 0000: 78 x 01:02:34.833088 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.838693 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.844291 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.849913 <= Recv data, 1 bytes (0x1) 0000: 32 2 01:02:34.855508 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.861088 <= Recv data, 1 bytes (0x1) 0000: 30 0 01:02:34.866681 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.872245 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.879232 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.884964 <= Recv data, 2 bytes (0x2) 0000: 20 20 01:02:34.890807 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.896461 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.902105 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.907756 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:34.913339 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.918923 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.924541 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.930174 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.935762 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.942737 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.948606 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.954192 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.959776 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.965399 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.970999 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.976569 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:34.982164 <= Recv data, 1 bytes (0x1) 0000: 35 5 01:02:34.987751 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:34.994115 <= Recv data, 1 bytes (0x1) 0000: 32 2 01:02:34.999759 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.006718 <= Recv data, 1 bytes (0x1) 0000: 4e N 01:02:35.013722 <= Recv data, 2 bytes (0x2) 0000: 6f 76 ov 01:02:35.020279 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.027014 <= Recv data, 1 bytes (0x1) 0000: 33 3 01:02:35.032701 <= Recv data, 1 bytes (0x1) 0000: 30 0 01:02:35.038839 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.044488 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.050105 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:35.055734 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:35.061358 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:35.066943 <= Recv data, 1 bytes (0x1) 0000: 35 5 01:02:35.073933 <= Recv data, 2 bytes (0x2) 0000: 20 65 e 01:02:35.079861 <= Recv data, 1 bytes (0x1) 0000: 74 t 01:02:35.085450 <= Recv data, 1 bytes (0x1) 0000: 63 c 01:02:35.091023 <= Recv data, 1 bytes (0x1) 0000: 0d . 01:02:35.096538 <= Recv data, 1 bytes (0x1) 0000: 0a . 01:02:35.102126 <= Recv data, 1 bytes (0x1) 0000: 64 d 01:02:35.107696 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:35.113277 <= Recv data, 1 bytes (0x1) 0000: 77 w 01:02:35.118868 <= Recv data, 1 bytes (0x1) 0000: 78 x 01:02:35.124461 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:35.130078 <= Recv data, 1 bytes (0x1) 0000: 77 w 01:02:35.137052 <= Recv data, 1 bytes (0x1) 0000: 78 x 01:02:35.142721 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:35.148330 <= Recv data, 1 bytes (0x1) 0000: 77 w 01:02:35.153918 <= Recv data, 2 bytes (0x2) 0000: 78 20 x 01:02:35.159727 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.165315 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.170919 <= Recv data, 1 bytes (0x1) 0000: 32 2 01:02:35.176488 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.182127 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:35.187720 <= Recv data, 1 bytes (0x1) 0000: 38 8 01:02:35.193404 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.200572 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.206360 <= Recv data, 2 bytes (0x2) 0000: 20 20 01:02:35.212228 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.217991 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.223722 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.229378 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:35.235065 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.240715 <= Recv data, 2 bytes (0x2) 0000: 20 20 01:02:35.246591 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.252324 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.257958 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.265015 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.270991 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.276725 <= Recv data, 2 bytes (0x2) 0000: 20 20 01:02:35.282630 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.288249 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.293892 <= Recv data, 1 bytes (0x1) 0000: 35 5 01:02:35.299498 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:35.305117 <= Recv data, 1 bytes (0x1) 0000: 32 2 01:02:35.310726 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.316359 <= Recv data, 1 bytes (0x1) 0000: 4f O 01:02:35.321964 <= Recv data, 1 bytes (0x1) 0000: 63 c 01:02:35.328974 <= Recv data, 2 bytes (0x2) 0000: 74 20 t 01:02:35.334934 <= Recv data, 1 bytes (0x1) 0000: 33 3 01:02:35.340537 <= Recv data, 1 bytes (0x1) 0000: 30 0 01:02:35.346148 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.351771 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:35.357380 <= Recv data, 1 bytes (0x1) 0000: 34 4 01:02:35.362992 <= Recv data, 2 bytes (0x2) 0000: 3a 33 :3 01:02:35.368788 <= Recv data, 1 bytes (0x1) 0000: 33 3 01:02:35.374342 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.379916 <= Recv data, 1 bytes (0x1) 0000: 70 p 01:02:35.385491 <= Recv data, 1 bytes (0x1) 0000: 75 u 01:02:35.401288 <= Recv data, 1 bytes (0x1) 0000: 62 b 01:02:35.407084 <= Recv data, 3 bytes (0x3) 0000: 0d 0a 64 ..d 01:02:35.434206 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:35.439898 <= Recv data, 5 bytes (0x5) 0000: 2d 78 72 2d 78 -xr-x 01:02:35.446424 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:35.452035 <= Recv data, 1 bytes (0x1) 0000: 2d - 01:02:35.458332 <= Recv data, 1 bytes (0x1) 0000: 78 x 01:02:35.463958 <= Recv data, 2 bytes (0x2) 0000: 20 20 01:02:35.469815 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.475407 <= Recv data, 1 bytes (0x1) 0000: 35 5 01:02:35.480990 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.488013 <= Recv data, 1 bytes (0x1) 0000: 30 0 01:02:35.493683 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.499295 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.504870 <= Recv data, 2 bytes (0x2) 0000: 20 20 01:02:35.510642 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.516261 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.521841 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.527438 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.533024 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:35.538624 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.544239 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.551185 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.556865 <= Recv data, 2 bytes (0x2) 0000: 20 20 01:02:35.562703 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.568305 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.573849 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.579406 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.585011 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.590653 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.596204 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.601799 <= Recv data, 2 bytes (0x2) 0000: 35 31 51 01:02:35.607588 <= Recv data, 1 bytes (0x1) 0000: 32 2 01:02:35.614469 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.620166 <= Recv data, 1 bytes (0x1) 0000: 4f O 01:02:35.625766 <= Recv data, 1 bytes (0x1) 0000: 63 c 01:02:35.631443 <= Recv data, 1 bytes (0x1) 0000: 74 t 01:02:35.637072 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.642649 <= Recv data, 2 bytes (0x2) 0000: 20 31 1 01:02:35.648534 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.654149 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.659914 <= Recv data, 1 bytes (0x1) 0000: 31 1 01:02:35.665533 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:35.671248 <= Recv data, 1 bytes (0x1) 0000: 39 9 01:02:35.678375 <= Recv data, 1 bytes (0x1) 0000: 37 7 01:02:35.684170 <= Recv data, 1 bytes (0x1) 0000: 20 01:02:35.690010 <= Recv data, 2 bytes (0x2) 0000: 75 73 us 01:02:35.696044 <= Recv data, 1 bytes (0x1) 0000: 72 r 01:02:35.701782 <= Recv data, 1 bytes (0x1) 0000: 0d . 01:02:35.707343 <= Recv data, 1 bytes (0x1) 0000: 0a . 01:02:35.855627 * abort upload 01:02:35.879116 <= Recv data, 0 bytes (0x0) 01:02:36.008636 * Remembering we are in dir "" 01CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind251 ../src/curl -q --output log/3/curl251.out --include --trace-ascii log/3/trace251 --trace-time ftp://127.0.0.1:37331/ -P 127.0.0.1 > log/3/stdout251 2> log/3/stderr251 :02:36.187870 <= Recv header, 29 bytes (0x1d) 0000: 32 32 36 20 41 53 43 49 49 20 74 72 61 6e 73 66 226 ASCII transf 0010: 65 72 20 63 6f 6d 70 6c 65 74 65 0d 0a er complete.. 01:02:36.507316 * Connection #0 to host 127.0.0.1:39881 left intact === End of file trace250 === Start of file valgrind250 ==226293== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind250 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 255 in state 4 Runner 2 (id 185908) running test 258 in state 4 Runner 3 (id 185910) running test 251 in state 4 Runner 4 (id 185912) running test 253 in state 4 Runner 5 (id 185914) running test 256 in state 4 Runner 6 (id 185916) running test 252 in state 4 Runner 7 (id 185918) running test 254 in state 4 Runner 8 (id 185920) running test 257 in state 4 test 0251...[FTP dir list, PORT with specified IP and slow response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind251 ../src/curl -q --output log/3/curl251.out --include --trace-ascii log/3/trace251 --trace-time ftp://127.0.0.1:37331/ -P 127.0.0.1 > log/3/stdout251 2> log/3/stderr251 valgrind ERROR ==226485== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 251 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind251 ../src/curl -q --output log/3/curl251.out --include --trace-ascii log/3/trace251 --trace-time ftp://127.0.0.1:37331/ -P 127.0.0.1 > log/3/stdout251 2> log/3/stderr251 === End of file commands.log === Start of file curl251.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl251.out === Start of file ftp_server.log 01:02:01.599452 ====> Client connect 01:02:01.600458 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:02:01.607965 < "USER anonymous" 01:02:01.608483 > "331 We are happy you popped in![CR][LF]" 01:02:01.609521 < "PASS ftp@example.com" 01:02:01.610023 > "230 Welcome you silly person[CR][LF]" 01:02:01.610834 < "PWD" 01:02:01.611101 > "257 "/" is current directory[CR][LF]" 01:02:01.613735 < "EPSV" 01:02:01.613940 ====> Passive DATA channel requested by client 01:02:01.614086 DATA sockfilt for passive data channel starting... 01:02:01.656931 DATA sockfilt for passive data channel started (pid 226479) 01:02:01.658312 DATA sockfilt for passive data channel listens on port 38587 01:02:01.658670 > "229 Entering Passive Mode (|||38587|)[CR][LF]" 01:02:01.658843 Client has been notified that DATA conn will be accepted on port 38587 01:02:01.661774 Client connects to port 38587 01:02:01.661982 ====> Client established passive DATA connection on port 38587 01:02:01.662578 < "TYPE I" 01:02:01.662857 > "200 I modify TYPE as you wanted[CR][LF]" 01:02:01.664137 < "SIZE verifiedserver" 01:02:01.664823 > "213 18[CR][LF]" 01:02:01.665878 < "RETR verifiedserver" 01:02:01.666182 > "150 Binary junk (18 bytes).[CR][LF]" 01:02:01.666699 =====> Closing passive DATA connection... 01:02:01.666855 Server disconnects passive DATA connection 01:02:01.674259 Server disconnected passive DATA connection 01:02:01.674485 DATA sockfilt for passive data channel quits (pid 226479) 01:02:01.677764 DATA sockfilt for passive data channel quit (pid 226479) 01:02:01.677935 =====> Closed passive DATA connection 01:02:01.678210 > "226 File transfer complete[CR][LF]" 01:02:01.719015 < "QUIT" 01:02:01.719348 > "221 bye bye baby[CR][LF]" 01:02:01.720418 MAIN sockfilt said DISC 01:02:01.720600 ====> Client disconnected 01:02:01.720848 Awaiting input 01:02:49.447148 ====> Client connect 01:02:49.447877 FTPD: Getting commands from log/3/server.cmd 01:02:49.448118 FTPD: send response with 5ms delay between each byte 01:02:49.448368 FTPD: run test case number: 251 01:02:50.322891 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:02:50.707180 < "USER anonymous" 01:02:50.893010 > "331 We are happy you popped in![CR][LF]" 01:02:50.909642 < "PASS ftp@example.com" 01:02:51.075325 > "230 Welcome you silly person[CR][LF]" 01:02:51.092134 < "PWD" 01:02:51.251050 > "257 "/" is current directory[CR][LF]" 01:02:51.951788 < "EPRT |1|127.0.0.1|44171|" 01:02:51.952168 ====> Active DATA channel requested by client 01:02:52.239459 > "200 Thanks for dropping by. We contact you later[CR][LF]" 01:02:52.239926 DATA sockfilt for active data channel starting... 01:02:52.322301 DATA sockfilt for active data channel started (pid 227658) 01:02:52.322785 ====> Active DATA channel connected to client port 44171 01:02:52.480568 < "TYPE A" 01:02:52.667738 > "200 I modify TYPE as you wanted[CR][LF]" 01:02:52.698588 < "LIST" 01:02:52.847453 > "150 here comes a directory[CR][LF]" 01:02:52.847903 pass LIST data on data connection 01:02:52.849376 send total 20 as data 01:02:52.906623 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 01:02:53.221692 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 01:02:53.524250 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 01:02:53.837787 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 01:02:54.172587 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 01:02:54.543593 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 01:02:54.853080 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 01:02:55.240540 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 01:02:55.571781 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 01:02:55.883706 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 01:02:56.203970 =====> Closing active DATA connection... 01:02:56.204238 Server disconnects active DATA connection 01:02:56.207605 Server disconnected active DATA connection 01:02:56.207804 DATA sockfilt for active data channel quits (pid 227658) 01:02:56.211196 DATA sockfilt for active data channel quit (pid 227658) 01:02:56.211374 =====> Closed active DATA connection 01:02:56.364831 > "226 ASCII transfer complete[CR][LF]" 01:02:57.628128 < "QUIT" 01:02:57.727179 > "221 bye bye baby[CR][LF]" 01:02:57.787554 MAIN sockfilt said DISC 01:02:57.794247 ====> Client disconnected 01:02:57.794758 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:02:01.214811 ====> Client connect 01:02:01.216471 Received DATA (on stdin) 01:02:01.216561 > 160 bytes data, server => client 01:02:01.216688 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:02:01.216805 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:02:01.216918 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:02:01.222704 < 16 bytes data, client => server 01:02:01.222813 'USER anonymous\r\n' 01:02:01.224030 Received DATA (on stdin) 01:02:01.224101 > 33 bytes data, server => client 01:02:01.224477 '331 We are happy you popped in!\r\n' 01:02:01.224751 < 22 bytes data, client => server 01:02:01.224835 'PASS ftp@example.com\r\n' 01:02:01.225502 Received DATA (on stdin) 01:02:01.225565 > 30 bytes data, server => client 01:02:01.225660 '230 Welcome you silly person\r\n' 01:02:01.226135 < 5 bytes data, client => server 01:02:01.226202 'PWD\r\n' 01:02:01.227111 Received DATA (on stdin) 01:02:01.227177 > 30 bytes data, server => client 01:02:01.227250 '257 "/" is current directory\r\n' 01:02:01.229001 < 6 bytes data, client => server 01:02:01.229070 'EPSV\r\n' 01:02:01.274841 Received DATA (on stdin) 01:02:01.274986 > 39 bytes data, server => client 01:02:01.275074 '229 Entering Passive Mode (|||38587|)\r\n' 01:02:01.277202 < 8 bytes data, client => server 01:02:01.277274 'TYPE I\r\n' 01:02:01.278819 Received DATA (on stdin) 01:02:01.278887 > 33 bytes data, server => client 01:02:01.278967 '200 I modify TYPE as you wanted\r\n' 01:02:01.279412 < 21 bytes data, client => server 01:02:01.279489 'SIZE verifiedserver\r\n' 01:02:01.280182 Received DATA (on stdin) 01:02:01.280252 > 8 bytes data, server => client 01:02:01.280456 '213 18\r\n' 01:02:01.281154 < 21 bytes data, client => server 01:02:01.281231 'RETR verifiedserver\r\n' 01:02:01.284138 Received DATA (on stdin) 01:02:01.284217 > 29 bytes data, server => client 01:02:01.284299 '150 Binary junk (18 bytes).\r\n' 01:02:01.294182 Received DATA (on stdin) 01:02:01.294281 > 28 bytes data, server => client 01:02:01.294362 '226 File transfer complete\r\n' 01:02:01.333928 < 6 bytes data, client => server 01:02:01.334054 'QUIT\r\n' 01:02:01.335311 Received DATA (on stdin) 01:02:01.335378 > 18 bytes data, server => client 01:02:01.335444 '221 bye bye baby\r\n' 01:02:01.336092 ====> Client disconnect 01:02:01.336781 Received ACKD (on stdin) 01:02:49.062511 ====> Client connect 01:02:49.066563 Received DATA (on stdin) 01:02:49.066660 > 1 bytes data, server => client 01:02:49.066728 '2' 01:02:49.073428 Received DATA (on stdin) 01:02:49.073497 > 1 bytes data, server => client 01:02:49.073559 '2' 01:02:49.078560 Received DATA (on stdin) 01:02:49.078626 > 1 bytes data, server => client 01:02:49.078686 '0' 01:02:49.083638 Received DATA (on stdin) 01:02:49.083706 > 1 bytes data, server => client 01:02:49.083785 '-' 01:02:49.088961 Received DATA (on stdin) 01:02:49.089027 > 1 bytes data, server => client 01:02:49.089115 ' ' 01:02:49.094195 Received DATA (on stdin) 01:02:49.094260 > 1 bytes data, server => client 01:02:49.094336 ' ' 01:02:49.099510 Received DATA (on stdin) 01:02:49.099574 > 1 bytes data, server => client 01:02:49.103254 ' ' 01:02:49.108350 Received DATA (on stdin) 01:02:49.108413 > 1 bytes data, server => client 01:02:49.108470 ' ' 01:02:49.113441 Received DATA (on stdin) 01:02:49.113505 > 1 bytes data, server => client 01:02:49.113562 ' ' 01:02:49.118519 Received DATA (on stdin) 01:02:49.118585 > 1 bytes data, server => client 01:02:49.118662 ' ' 01:02:49.123836 Received DATA (on stdin) 01:02:49.123903 > 1 bytes data, server => client 01:02:49.123980 ' ' 01:02:49.129152 Received DATA (on stdin) 01:02:49.129215 > 1 bytes data, server => client 01:02:49.129289 ' ' 01:02:49.134461 Received DATA (on stdin) 01:02:49.134524 > 1 bytes data, server => client 01:02:49.134598 '_' 01:02:49.139774 Received DATA (on stdin) 01:02:49.139842 > 1 bytes data, server => client 01:02:49.139931 ' ' 01:02:49.145185 Received DATA (on stdin) 01:02:49.145257 > 1 bytes data, server => client 01:02:49.145337 ' ' 01:02:49.150515 Received DATA (on stdin) 01:02:49.150584 > 1 bytes data, server => client 01:02:49.150683 ' ' 01:02:49.158325 Received DATA (on stdin) 01:02:49.158389 > 1 bytes data, server => client 01:02:49.158449 '_' 01:02:49.163418 Received DATA (on stdin) 01:02:49.163482 > 1 bytes data, server => client 01:02:49.163541 ' ' 01:02:49.168496 Received DATA (on stdin) 01:02:49.168560 > 1 bytes data, server => client 01:02:49.168636 '_' 01:02:49.173798 Received DATA (on stdin) 01:02:49.173863 > 1 bytes data, server => client 01:02:49.173950 '_' 01:02:49.179030 Received DATA (on stdin) 01:02:49.179093 > 1 bytes data, server => client 01:02:49.179904 '_' 01:02:49.186594 Received DATA (on stdin) 01:02:49.186657 > 1 bytes data, server => client 01:02:49.186713 '_' 01:02:49.191689 Received DATA (on stdin) 01:02:49.191754 > 1 bytes data, server => client 01:02:49.191813 ' ' 01:02:49.196766 Received DATA (on stdin) 01:02:49.196832 > 1 bytes data, server => client 01:02:49.196908 ' ' 01:02:49.202071 Received DATA (on stdin) 01:02:49.202134 > 1 bytes data, server => client 01:02:49.203239 '_' 01:02:49.208320 Received DATA (on stdin) 01:02:49.208384 > 1 bytes data, server => client 01:02:49.208460 ' ' 01:02:49.213622 Received DATA (on stdin) 01:02:49.213685 > 1 bytes data, server => client 01:02:49.213771 ' ' 01:02:49.218851 Received DATA (on stdin) 01:02:49.218915 > 1 bytes data, server => client 01:02:49.218990 ' ' 01:02:49.224992 Received DATA (on stdin) 01:02:49.225054 > 1 bytes data, server => client 01:02:49.225108 ' ' 01:02:49.230086 Received DATA (on stdin) 01:02:49.230146 > 1 bytes data, server => client 01:02:49.230200 ' ' 01:02:49.235164 Received DATA (on stdin) 01:02:49.235228 > 1 bytes data, server => client 01:02:49.235311 '\r' 01:02:49.240389 Received DATA (on stdin) 01:02:49.240451 > 1 bytes data, server => client 01:02:49.240524 '\n' 01:02:49.246555 Received DATA (on stdin) 01:02:49.246618 > 1 bytes data, server => client 01:02:49.246675 '2' 01:02:49.253260 Received DATA (on stdin) 01:02:49.253324 > 1 bytes data, server => client 01:02:49.253379 '2' 01:02:49.258364 Received DATA (on stdin) 01:02:49.258427 > 1 bytes data, server => client 01:02:49.258484 '0' 01:02:49.263456 Received DATA (on stdin) 01:02:49.263520 > 1 bytes data, server => client 01:02:49.263575 '-' 01:02:49.268533 Received DATA (on stdin) 01:02:49.268597 > 1 bytes data, server => client 01:02:49.268672 ' ' 01:02:49.273831 Received DATA (on stdin) 01:02:49.273895 > 1 bytes data, server => client 01:02:49.273968 ' ' 01:02:49.279128 Received DATA (on stdin) 01:02:49.279193 > 1 bytes data, server => client 01:02:49.279268 ' ' 01:02:49.284428 Received DATA (on stdin) 01:02:49.284493 > 1 bytes data, server => client 01:02:49.284568 ' ' 01:02:49.289730 Received DATA (on stdin) 01:02:49.289794 > 1 bytes data, server => client 01:02:49.289866 '_' 01:02:49.298343 Received DATA (on stdin) 01:02:49.298409 > 1 bytes data, server => client 01:02:49.298466 '_' 01:02:49.303430 Received DATA (on stdin) 01:02:49.303497 > 1 bytes data, server => client 01:02:49.303554 '_' 01:02:49.308528 Received DATA (on stdin) 01:02:49.308593 > 1 bytes data, server => client 01:02:49.308649 '|' 01:02:49.316551 Received DATA (on stdin) 01:02:49.316615 > 1 bytes data, server => client 01:02:49.316672 ' ' 01:02:49.318717 Received DATA (on stdin) 01:02:49.318779 > 1 bytes data, server => client 01:02:49.318834 '|' 01:02:49.323814 Received DATA (on stdin) 01:02:49.323881 > 1 bytes data, server => client 01:02:49.323938 ' ' 01:02:49.328910 Received DATA (on stdin) 01:02:49.328976 > 1 bytes data, server => client 01:02:49.329032 '|' 01:02:49.334006 Received DATA (on stdin) 01:02:49.334074 > 1 bytes data, server => client 01:02:49.334132 ' ' 01:02:49.339104 Received DATA (on stdin) 01:02:49.339171 > 1 bytes data, server => client 01:02:49.339229 '|' 01:02:49.344200 Received DATA (on stdin) 01:02:49.344266 > 1 bytes data, server => client 01:02:49.344321 ' ' 01:02:49.349298 Received DATA (on stdin) 01:02:49.349363 > 1 bytes data, server => client 01:02:49.349419 ' ' 01:02:49.354394 Received DATA (on stdin) 01:02:49.354461 > 1 bytes data, server => client 01:02:49.354535 '_' 01:02:49.359524 Received DATA (on stdin) 01:02:49.359596 > 1 bytes data, server => client 01:02:49.359653 ' ' 01:02:49.364608 Received DATA (on stdin) 01:02:49.364674 > 1 bytes data, server => client 01:02:49.364732 '\' 01:02:49.369704 Received DATA (on stdin) 01:02:49.369769 > 1 bytes data, server => client 01:02:49.369826 '|' 01:02:49.374815 Received DATA (on stdin) 01:02:49.374889 > 1 bytes data, server => client 01:02:49.374949 ' ' 01:02:49.379940 Received DATA (on stdin) 01:02:49.380015 > 1 bytes data, server => client 01:02:49.380075 '|' 01:02:49.385040 Received DATA (on stdin) 01:02:49.385109 > 1 bytes data, server => client 01:02:49.385168 ' ' 01:02:49.392842 Received DATA (on stdin) 01:02:49.392910 > 1 bytes data, server => client 01:02:49.392968 ' ' 01:02:49.395236 Received DATA (on stdin) 01:02:49.395304 > 1 bytes data, server => client 01:02:49.395363 ' ' 01:02:49.400334 Received DATA (on stdin) 01:02:49.400402 > 1 bytes data, server => client 01:02:49.400460 ' ' 01:02:49.405432 Received DATA (on stdin) 01:02:49.405499 > 1 bytes data, server => client 01:02:49.405557 '\r' 01:02:49.410529 Received DATA (on stdin) 01:02:49.410599 > 1 bytes data, server => client 01:02:49.410657 '\n' 01:02:49.415648 Received DATA (on stdin) 01:02:49.415722 > 1 bytes data, server => client 01:02:49.415778 '2' 01:02:49.420743 Received DATA (on stdin) 01:02:49.420812 > 1 bytes data, server => client 01:02:49.420870 '2' 01:02:49.425843 Received DATA (on stdin) 01:02:49.425910 > 1 bytes data, server => client 01:02:49.425966 '0' 01:02:49.430943 Received DATA (on stdin) 01:02:49.431009 > 1 bytes data, server => client 01:02:49.431065 '-' 01:02:49.436041 Received DATA (on stdin) 01:02:49.436107 > 1 bytes data, server => client 01:02:49.436164 ' ' 01:02:49.441142 Received DATA (on stdin) 01:02:49.441208 > 1 bytes data, server => client 01:02:49.441266 ' ' 01:02:49.446240 Received DATA (on stdin) 01:02:49.446308 > 1 bytes data, server => client 01:02:49.446365 ' ' 01:02:49.451357 Received DATA (on stdin) 01:02:49.451439 > 1 bytes data, server => client 01:02:49.451499 '/' 01:02:49.456449 Received DATA (on stdin) 01:02:49.456517 > 1 bytes data, server => client 01:02:49.456588 ' ' 01:02:49.461544 Received DATA (on stdin) 01:02:49.461615 > 1 bytes data, server => client 01:02:49.461675 '_' 01:02:49.466595 Received DATA (on stdin) 01:02:49.466659 > 1 bytes data, server => client 01:02:49.466716 '_' 01:02:49.471670 Received DATA (on stdin) 01:02:49.471730 > 1 bytes data, server => client 01:02:49.471801 '|' 01:02:49.476961 Received DATA (on stdin) 01:02:49.477026 > 1 bytes data, server => client 01:02:49.477101 ' ' 01:02:49.485009 Received DATA (on stdin) 01:02:49.485087 > 1 bytes data, server => client 01:02:49.485153 '|' 01:02:49.490112 Received DATA (on stdin) 01:02:49.490186 > 1 bytes data, server => client 01:02:49.490250 ' ' 01:02:49.495207 Received DATA (on stdin) 01:02:49.495275 > 1 bytes data, server => client 01:02:49.495340 '|' 01:02:49.500287 Received DATA (on stdin) 01:02:49.500354 > 1 bytes data, server => client 01:02:49.500435 ' ' 01:02:49.505603 Received DATA (on stdin) 01:02:49.505667 > 1 bytes data, server => client 01:02:49.505745 '|' 01:02:49.510913 Received DATA (on stdin) 01:02:49.510979 > 1 bytes data, server => client 01:02:49.511058 ' ' 01:02:49.516223 Received DATA (on stdin) 01:02:49.516288 > 1 bytes data, server => client 01:02:49.516365 '|' 01:02:49.521530 Received DATA (on stdin) 01:02:49.521596 > 1 bytes data, server => client 01:02:49.521673 '_' 01:02:49.526837 Received DATA (on stdin) 01:02:49.526903 > 1 bytes data, server => client 01:02:49.526980 ')' 01:02:49.532145 Received DATA (on stdin) 01:02:49.532211 > 1 bytes data, server => client 01:02:49.532296 ' ' 01:02:49.537379 Received DATA (on stdin) 01:02:49.537444 > 1 bytes data, server => client 01:02:49.537520 '|' 01:02:49.543263 Received DATA (on stdin) 01:02:49.543328 > 1 bytes data, server => client 01:02:49.543386 ' ' 01:02:49.548357 Received DATA (on stdin) 01:02:49.548422 > 1 bytes data, server => client 01:02:49.548481 '|' 01:02:49.553452 Received DATA (on stdin) 01:02:49.553518 > 1 bytes data, server => client 01:02:49.553577 ' ' 01:02:49.558548 Received DATA (on stdin) 01:02:49.558613 > 1 bytes data, server => client 01:02:49.558672 ' ' 01:02:49.563643 Received DATA (on stdin) 01:02:49.563710 > 1 bytes data, server => client 01:02:49.563769 ' ' 01:02:49.568738 Received DATA (on stdin) 01:02:49.568803 > 1 bytes data, server => client 01:02:49.568862 ' ' 01:02:49.573865 Received DATA (on stdin) 01:02:49.573940 > 1 bytes data, server => client 01:02:49.573999 '\r' 01:02:49.578955 Received DATA (on stdin) 01:02:49.579017 > 1 bytes data, server => client 01:02:49.579070 '\n' 01:02:49.586553 Received DATA (on stdin) 01:02:49.586621 > 1 bytes data, server => client 01:02:49.586679 '2' 01:02:49.589919 Received DATA (on stdin) 01:02:49.589985 > 1 bytes data, server => client 01:02:49.590061 '2' 01:02:49.595229 Received DATA (on stdin) 01:02:49.595294 > 1 bytes data, server => client 01:02:49.595370 '0' 01:02:49.600537 Received DATA (on stdin) 01:02:49.600602 > 1 bytes data, server => client 01:02:49.600679 '-' 01:02:49.605847 Received DATA (on stdin) 01:02:49.605914 > 1 bytes data, server => client 01:02:49.605991 ' ' 01:02:49.611158 Received DATA (on stdin) 01:02:49.611226 > 1 bytes data, server => client 01:02:49.611312 ' ' 01:02:49.616739 Received DATA (on stdin) 01:02:49.616810 > 1 bytes data, server => client 01:02:49.619912 '|' 01:02:49.625028 Received DATA (on stdin) 01:02:49.625105 > 1 bytes data, server => client 01:02:49.625166 ' ' 01:02:49.630189 Received DATA (on stdin) 01:02:49.630263 > 1 bytes data, server => client 01:02:49.630325 '(' 01:02:49.635275 Received DATA (on stdin) 01:02:49.635346 > 1 bytes data, server => client 01:02:49.635424 '_' 01:02:49.640598 Received DATA (on stdin) 01:02:49.640664 > 1 bytes data, server => client 01:02:49.640739 '_' 01:02:49.645905 Received DATA (on stdin) 01:02:49.645971 > 1 bytes data, server => client 01:02:49.646046 '|' 01:02:49.651213 Received DATA (on stdin) 01:02:49.651280 > 1 bytes data, server => client 01:02:49.651356 ' ' 01:02:49.656522 Received DATA (on stdin) 01:02:49.656593 > 1 bytes data, server => client 01:02:49.659905 '|' 01:02:49.665003 Received DATA (on stdin) 01:02:49.665068 > 1 bytes data, server => client 01:02:49.665125 '_' 01:02:49.670084 Received DATA (on stdin) 01:02:49.670149 > 1 bytes data, server => client 01:02:49.670224 '|' 01:02:49.675386 Received DATA (on stdin) 01:02:49.675447 > 1 bytes data, server => client 01:02:49.675527 ' ' 01:02:49.680612 Received DATA (on stdin) 01:02:49.680674 > 1 bytes data, server => client 01:02:49.683239 '|' 01:02:49.688320 Received DATA (on stdin) 01:02:49.688384 > 1 bytes data, server => client 01:02:49.688458 ' ' 01:02:49.693618 Received DATA (on stdin) 01:02:49.693683 > 1 bytes data, server => client 01:02:49.693767 ' ' 01:02:49.698848 Received DATA (on stdin) 01:02:49.698911 > 1 bytes data, server => client 01:02:49.698985 '_' 01:02:49.704981 Received DATA (on stdin) 01:02:49.705048 > 1 bytes data, server => client 01:02:49.705123 ' ' 01:02:49.710314 Received DATA (on stdin) 01:02:49.710390 > 1 bytes data, server => client 01:02:49.710467 '{' 01:02:49.715672 Received DATA (on stdin) 01:02:49.715761 > 1 bytes data, server => client 01:02:49.715842 '|' 01:02:49.721044 Received DATA (on stdin) 01:02:49.721121 > 1 bytes data, server => client 01:02:49.721214 ' ' 01:02:49.726320 Received DATA (on stdin) 01:02:49.726393 > 1 bytes data, server => client 01:02:49.729939 '|' 01:02:49.735063 Received DATA (on stdin) 01:02:49.735141 > 1 bytes data, server => client 01:02:49.735205 '_' 01:02:49.740170 Received DATA (on stdin) 01:02:49.740246 > 1 bytes data, server => client 01:02:49.740308 '_' 01:02:49.745255 Received DATA (on stdin) 01:02:49.745327 > 1 bytes data, server => client 01:02:49.745409 '_' 01:02:49.750613 Received DATA (on stdin) 01:02:49.750694 > 1 bytes data, server => client 01:02:49.750783 ' ' 01:02:49.755971 Received DATA (on stdin) 01:02:49.756047 > 1 bytes data, server => client 01:02:49.756132 '\r' 01:02:49.761310 Received DATA (on stdin) 01:02:49.761399 > 1 bytes data, server => client 01:02:49.761480 '\n' 01:02:49.766652 Received DATA (on stdin) 01:02:49.766724 > 1 bytes data, server => client 01:02:49.766802 '2' 01:02:49.771982 Received DATA (on stdin) 01:02:49.772050 > 1 bytes data, server => client 01:02:49.773244 '2' 01:02:49.778330 Received DATA (on stdin) 01:02:49.778402 > 1 bytes data, server => client 01:02:49.778480 '0' 01:02:49.783655 Received DATA (on stdin) 01:02:49.783734 > 1 bytes data, server => client 01:02:49.783821 ' ' 01:02:49.789032 Received DATA (on stdin) 01:02:49.789106 > 1 bytes data, server => client 01:02:49.789167 ' ' 01:02:49.796631 Received DATA (on stdin) 01:02:49.796724 > 1 bytes data, server => client 01:02:49.796797 ' ' 01:02:49.801732 Received DATA (on stdin) 01:02:49.801808 > 1 bytes data, server => client 01:02:49.801874 ' ' 01:02:49.806839 Received DATA (on stdin) 01:02:49.806917 > 1 bytes data, server => client 01:02:49.806982 '\' 01:02:49.811925 Received DATA (on stdin) 01:02:49.812000 > 1 bytes data, server => client 01:02:49.812085 '_' 01:02:49.817268 Received DATA (on stdin) 01:02:49.817343 > 1 bytes data, server => client 01:02:49.817430 '_' 01:02:49.822611 Received DATA (on stdin) 01:02:49.822684 > 1 bytes data, server => client 01:02:49.822764 '_' 01:02:49.827935 Received DATA (on stdin) 01:02:49.828003 > 1 bytes data, server => client 01:02:49.828082 '|' 01:02:49.833287 Received DATA (on stdin) 01:02:49.833355 > 1 bytes data, server => client 01:02:49.833436 '\' 01:02:49.838613 Received DATA (on stdin) 01:02:49.838680 > 1 bytes data, server => client 01:02:49.838768 '_' 01:02:49.843852 Received DATA (on stdin) 01:02:49.843921 > 1 bytes data, server => client 01:02:49.844008 '_' 01:02:49.849892 Received DATA (on stdin) 01:02:49.849970 > 1 bytes data, server => client 01:02:49.850026 '_' 01:02:49.856587 Received DATA (on stdin) 01:02:49.856653 > 1 bytes data, server => client 01:02:49.856708 '/' 01:02:49.863832 Received DATA (on stdin) 01:02:49.863908 > 1 bytes data, server => client 01:02:49.863964 '|' 01:02:49.866800 Received DATA (on stdin) 01:02:49.866867 > 1 bytes data, server => client 01:02:49.866921 '_' 01:02:49.873219 Received DATA (on stdin) 01:02:49.873284 > 1 bytes data, server => client 01:02:49.873338 '|' 01:02:49.877151 Received DATA (on stdin) 01:02:49.877216 > 1 bytes data, server => client 01:02:49.877270 ' ' 01:02:49.882257 Received DATA (on stdin) 01:02:49.882323 > 1 bytes data, server => client 01:02:49.882377 '\' 01:02:49.887357 Received DATA (on stdin) 01:02:49.887422 > 1 bytes data, server => client 01:02:49.887477 '_' 01:02:49.892456 Received DATA (on stdin) 01:02:49.892521 > 1 bytes data, server => client 01:02:49.892576 '\' 01:02:49.897557 Received DATA (on stdin) 01:02:49.897623 > 1 bytes data, server => client 01:02:49.897678 '_' 01:02:49.902658 Received DATA (on stdin) 01:02:49.902726 > 1 bytes data, server => client 01:02:49.902780 '_' 01:02:49.909885 Received DATA (on stdin) 01:02:49.909947 > 1 bytes data, server => client 01:02:49.910001 '_' 01:02:49.912866 Received DATA (on stdin) 01:02:49.912927 > 1 bytes data, server => client 01:02:49.912981 '_' 01:02:49.917964 Received DATA (on stdin) 01:02:49.918028 > 1 bytes data, server => client 01:02:49.918084 '_' 01:02:49.923067 Received DATA (on stdin) 01:02:49.923131 > 1 bytes data, server => client 01:02:49.923185 '|' 01:02:49.928168 Received DATA (on stdin) 01:02:49.928235 > 1 bytes data, server => client 01:02:49.928289 '\r' 01:02:49.933248 Received DATA (on stdin) 01:02:49.933314 > 1 bytes data, server => client 01:02:49.933372 '\n' 01:02:50.321676 < 16 bytes data, client => server 01:02:50.321828 'USER anonymous\r\n' 01:02:50.326563 Received DATA (on stdin) 01:02:50.326646 > 1 bytes data, server => client 01:02:50.326710 '3' 01:02:50.329651 Received DATA (on stdin) 01:02:50.329715 > 1 bytes data, server => client 01:02:50.329795 '3' 01:02:50.334992 Received DATA (on stdin) 01:02:50.335064 > 1 bytes data, server => client 01:02:50.335146 '1' 01:02:50.340334 Received DATA (on stdin) 01:02:50.340403 > 1 bytes data, server => client 01:02:50.340496 ' ' 01:02:50.345678 Received DATA (on stdin) 01:02:50.345746 > 1 bytes data, server => client 01:02:50.345833 'W' 01:02:50.350916 Received DATA (on stdin) 01:02:50.350983 > 1 bytes data, server => client 01:02:50.351061 'e' 01:02:50.356244 Received DATA (on stdin) 01:02:50.356308 > 1 bytes data, server => client 01:02:50.359909 ' ' 01:02:50.365017 Received DATA (on stdin) 01:02:50.365088 > 1 bytes data, server => client 01:02:50.365148 'a' 01:02:50.370102 Received DATA (on stdin) 01:02:50.370176 > 1 bytes data, server => client 01:02:50.370255 'r' 01:02:50.375440 Received DATA (on stdin) 01:02:50.375509 > 1 bytes data, server => client 01:02:50.375588 'e' 01:02:50.380771 Received DATA (on stdin) 01:02:50.380839 > 1 bytes data, server => client 01:02:50.380918 ' ' 01:02:50.386109 Received DATA (on stdin) 01:02:50.386181 > 1 bytes data, server => client 01:02:50.386272 'h' 01:02:50.391356 Received DATA (on stdin) 01:02:50.391424 > 1 bytes data, server => client 01:02:50.391502 'a' 01:02:50.399931 Received DATA (on stdin) 01:02:50.400001 > 1 bytes data, server => client 01:02:50.400061 'p' 01:02:50.405040 Received DATA (on stdin) 01:02:50.405115 > 1 bytes data, server => client 01:02:50.405176 'p' 01:02:50.410126 Received DATA (on stdin) 01:02:50.410200 > 1 bytes data, server => client 01:02:50.410285 'y' 01:02:50.415481 Received DATA (on stdin) 01:02:50.415558 > 1 bytes data, server => client 01:02:50.415641 ' ' 01:02:50.420829 Received DATA (on stdin) 01:02:50.420902 > 1 bytes data, server => client 01:02:50.420983 'y' 01:02:50.426184 Received DATA (on stdin) 01:02:50.426268 > 1 bytes data, server => client 01:02:50.426350 'o' 01:02:50.431539 Received DATA (on stdin) 01:02:50.431617 > 1 bytes data, server => client 01:02:50.431699 'u' 01:02:50.436885 Received DATA (on stdin) 01:02:50.436966 > 1 bytes data, server => client 01:02:50.437047 ' ' 01:02:50.442242 Received DATA (on stdin) 01:02:50.442318 > 1 bytes data, server => client 01:02:50.442399 'p' 01:02:50.447589 Received DATA (on stdin) 01:02:50.447664 > 1 bytes data, server => client 01:02:50.447755 'o' 01:02:50.452847 Received DATA (on stdin) 01:02:50.452918 > 1 bytes data, server => client 01:02:50.452998 'p' 01:02:50.458188 Received DATA (on stdin) 01:02:50.458268 > 1 bytes data, server => client 01:02:50.459913 'p' 01:02:50.465021 Received DATA (on stdin) 01:02:50.465098 > 1 bytes data, server => client 01:02:50.465159 'e' 01:02:50.470121 Received DATA (on stdin) 01:02:50.470193 > 1 bytes data, server => client 01:02:50.470253 'd' 01:02:50.475205 Received DATA (on stdin) 01:02:50.475277 > 1 bytes data, server => client 01:02:50.475357 ' ' 01:02:50.480542 Received DATA (on stdin) 01:02:50.480618 > 1 bytes data, server => client 01:02:50.480709 'i' 01:02:50.485799 Received DATA (on stdin) 01:02:50.485872 > 1 bytes data, server => client 01:02:50.485952 'n' 01:02:50.491152 Received DATA (on stdin) 01:02:50.491226 > 1 bytes data, server => client 01:02:50.493244 '!' 01:02:50.498350 Received DATA (on stdin) 01:02:50.498423 > 1 bytes data, server => client 01:02:50.498484 '\r' 01:02:50.503455 Received DATA (on stdin) 01:02:50.503532 > 1 bytes data, server => client 01:02:50.503593 '\n' 01:02:50.524196 < 22 bytes data, client => server 01:02:50.524344 'PASS ftp@example.com\r\n' 01:02:50.529902 Received DATA (on stdin) 01:02:50.530006 > 1 bytes data, server => client 01:02:50.530075 '2' 01:02:50.533351 Received DATA (on stdin) 01:02:50.533452 > 1 bytes data, server => client 01:02:50.533519 '3' 01:02:50.538513 Received DATA (on stdin) 01:02:50.538590 > 1 bytes data, server => client 01:02:50.538648 '0' 01:02:50.543659 Received DATA (on stdin) 01:02:50.543736 > 1 bytes data, server => client 01:02:50.543794 ' ' 01:02:50.548797 Received DATA (on stdin) 01:02:50.548880 > 1 bytes data, server => client 01:02:50.548944 'W' 01:02:50.553915 Received DATA (on stdin) 01:02:50.553988 > 1 bytes data, server => client 01:02:50.554052 'e' 01:02:50.559032 Received DATA (on stdin) 01:02:50.559111 > 1 bytes data, server => client 01:02:50.559175 'l' 01:02:50.564141 Received DATA (on stdin) 01:02:50.564217 > 1 bytes data, server => client 01:02:50.564280 'c' 01:02:50.569256 Received DATA (on stdin) 01:02:50.569334 > 1 bytes data, server => client 01:02:50.569398 'o' 01:02:50.574383 Received DATA (on stdin) 01:02:50.574470 > 1 bytes data, server => client 01:02:50.574536 'm' 01:02:50.579475 Received DATA (on stdin) 01:02:50.579556 > 1 bytes data, server => client 01:02:50.579641 'e' 01:02:50.584837 Received DATA (on stdin) 01:02:50.584915 > 1 bytes data, server => client 01:02:50.584999 ' ' 01:02:50.590192 Received DATA (on stdin) 01:02:50.590268 > 1 bytes data, server => client 01:02:50.590355 'y' 01:02:50.595553 Received DATA (on stdin) 01:02:50.595633 > 1 bytes data, server => client 01:02:50.595716 'o' 01:02:50.600915 Received DATA (on stdin) 01:02:50.600994 > 1 bytes data, server => client 01:02:50.601077 'u' 01:02:50.606272 Received DATA (on stdin) 01:02:50.606353 > 1 bytes data, server => client 01:02:50.606439 ' ' 01:02:50.611652 Received DATA (on stdin) 01:02:50.611737 > 1 bytes data, server => client 01:02:50.613250 's' 01:02:50.618380 Received DATA (on stdin) 01:02:50.618469 > 1 bytes data, server => client 01:02:50.618532 'i' 01:02:50.623499 Received DATA (on stdin) 01:02:50.623581 > 1 bytes data, server => client 01:02:50.623646 'l' 01:02:50.628589 Received DATA (on stdin) 01:02:50.628662 > 1 bytes data, server => client 01:02:50.628747 'l' 01:02:50.633957 Received DATA (on stdin) 01:02:50.634047 > 1 bytes data, server => client 01:02:50.634131 'y' 01:02:50.641707 Received DATA (on stdin) 01:02:50.641801 > 1 bytes data, server => client 01:02:50.641866 ' ' 01:02:50.646823 Received DATA (on stdin) 01:02:50.646901 > 1 bytes data, server => client 01:02:50.646967 'p' 01:02:50.651927 Received DATA (on stdin) 01:02:50.652004 > 1 bytes data, server => client 01:02:50.652068 'e' 01:02:50.657018 Received DATA (on stdin) 01:02:50.657095 > 1 bytes data, server => client 01:02:50.657176 'r' 01:02:50.662381 Received DATA (on stdin) 01:02:50.662459 > 1 bytes data, server => client 01:02:50.662554 's' 01:02:50.669953 Received DATA (on stdin) 01:02:50.670032 > 1 bytes data, server => client 01:02:50.670094 'o' 01:02:50.675059 Received DATA (on stdin) 01:02:50.675133 > 1 bytes data, server => client 01:02:50.675197 'n' 01:02:50.680150 Received DATA (on stdin) 01:02:50.680227 > 1 bytes data, server => client 01:02:50.680313 '\r' 01:02:50.685508 Received DATA (on stdin) 01:02:50.685584 > 1 bytes data, server => client 01:02:50.685668 '\n' 01:02:50.706904 < 5 bytes data, client => server 01:02:50.707015 'PWD\r\n' 01:02:50.708224 Received DATA (on stdin) 01:02:50.708293 > 1 bytes data, server => client 01:02:50.709926 '2' 01:02:50.715046 Received DATA (on stdin) 01:02:50.715122 > 1 bytes data, server => client 01:02:50.715186 '5' 01:02:50.720137 Received DATA (on stdin) 01:02:50.720212 > 1 bytes data, server => client 01:02:50.720828 '7' 01:02:50.726034 Received DATA (on stdin) 01:02:50.726118 > 1 bytes data, server => client 01:02:50.726198 ' ' 01:02:50.731366 Received DATA (on stdin) 01:02:50.731432 > 1 bytes data, server => client 01:02:50.731507 '"' 01:02:50.736670 Received DATA (on stdin) 01:02:50.736734 > 1 bytes data, server => client 01:02:50.736830 '/' 01:02:50.741928 Received DATA (on stdin) 01:02:50.741992 > 1 bytes data, server => client 01:02:50.742049 '"' 01:02:50.747022 Received DATA (on stdin) 01:02:50.747085 > 1 bytes data, server => client 01:02:50.747142 ' ' 01:02:50.752118 Received DATA (on stdin) 01:02:50.752181 > 1 bytes data, server => client 01:02:50.752238 'i' 01:02:50.757219 Received DATA (on stdin) 01:02:50.757287 > 1 bytes data, server => client 01:02:50.757344 's' 01:02:50.762315 Received DATA (on stdin) 01:02:50.762381 > 1 bytes data, server => client 01:02:50.762439 ' ' 01:02:50.767412 Received DATA (on stdin) 01:02:50.767478 > 1 bytes data, server => client 01:02:50.767537 'c' 01:02:50.772509 Received DATA (on stdin) 01:02:50.772575 > 1 bytes data, server => client 01:02:50.772633 'u' 01:02:50.777614 Received DATA (on stdin) 01:02:50.777686 > 1 bytes data, server => client 01:02:50.777760 'r' 01:02:50.782733 Received DATA (on stdin) 01:02:50.782803 > 1 bytes data, server => client 01:02:50.782860 'r' 01:02:50.787831 Received DATA (on stdin) 01:02:50.787898 > 1 bytes data, server => client 01:02:50.787955 'e' 01:02:50.792928 Received DATA (on stdin) 01:02:50.792994 > 1 bytes data, server => client 01:02:50.793051 'n' 01:02:50.798026 Received DATA (on stdin) 01:02:50.798095 > 1 bytes data, server => client 01:02:50.798154 't' 01:02:50.803127 Received DATA (on stdin) 01:02:50.803194 > 1 bytes data, server => client 01:02:50.803267 ' ' 01:02:50.808226 Received DATA (on stdin) 01:02:50.808293 > 1 bytes data, server => client 01:02:50.808350 'd' 01:02:50.813324 Received DATA (on stdin) 01:02:50.813392 > 1 bytes data, server => client 01:02:50.813450 'i' 01:02:50.818426 Received DATA (on stdin) 01:02:50.818500 > 1 bytes data, server => client 01:02:50.818562 'r' 01:02:50.823537 Received DATA (on stdin) 01:02:50.823644 > 1 bytes data, server => client 01:02:50.823707 'e' 01:02:50.828636 Received DATA (on stdin) 01:02:50.828707 > 1 bytes data, server => client 01:02:50.828769 'c' 01:02:50.833748 Received DATA (on stdin) 01:02:50.833829 > 1 bytes data, server => client 01:02:50.833892 't' 01:02:50.838848 Received DATA (on stdin) 01:02:50.838919 > 1 bytes data, server => client 01:02:50.838980 'o' 01:02:50.843944 Received DATA (on stdin) 01:02:50.844012 > 1 bytes data, server => client 01:02:50.844073 'r' 01:02:50.849043 Received DATA (on stdin) 01:02:50.849112 > 1 bytes data, server => client 01:02:50.849173 'y' 01:02:50.854141 Received DATA (on stdin) 01:02:50.854209 > 1 bytes data, server => client 01:02:50.854270 '\r' 01:02:50.859238 Received DATA (on stdin) 01:02:50.859307 > 1 bytes data, server => client 01:02:50.859367 '\n' 01:02:51.566562 < 26 bytes data, client => server 01:02:51.566797 'EPRT |1|127.0.0.1|44171|\r\n' 01:02:51.568225 Received DATA (on stdin) 01:02:51.568304 > 1 bytes data, server => client 01:02:51.568415 '2' 01:02:51.576610 Received DATA (on stdin) 01:02:51.576692 > 1 bytes data, server => client 01:02:51.576765 '0' 01:02:51.581714 Received DATA (on stdin) 01:02:51.581792 > 1 bytes data, server => client 01:02:51.581858 '0' 01:02:51.586796 Received DATA (on stdin) 01:02:51.586872 > 1 bytes data, server => client 01:02:51.586957 ' ' 01:02:51.592149 Received DATA (on stdin) 01:02:51.592224 > 1 bytes data, server => client 01:02:51.592307 'T' 01:02:51.597499 Received DATA (on stdin) 01:02:51.597577 > 1 bytes data, server => client 01:02:51.597663 'h' 01:02:51.602859 Received DATA (on stdin) 01:02:51.602936 > 1 bytes data, server => client 01:02:51.603021 'a' 01:02:51.608215 Received DATA (on stdin) 01:02:51.608295 > 1 bytes data, server => client 01:02:51.608381 'n' 01:02:51.613575 Received DATA (on stdin) 01:02:51.613650 > 1 bytes data, server => client 01:02:51.613736 'k' 01:02:51.619062 Received DATA (on stdin) 01:02:51.619148 > 1 bytes data, server => client 01:02:51.619242 's' 01:02:51.624470 Received DATA (on stdin) 01:02:51.624556 > 1 bytes data, server => client 01:02:51.624654 ' ' 01:02:51.629859 Received DATA (on stdin) 01:02:51.629946 > 1 bytes data, server => client 01:02:51.630053 'f' 01:02:51.635162 Received DATA (on stdin) 01:02:51.635239 > 1 bytes data, server => client 01:02:51.635310 'o' 01:02:51.643220 Received DATA (on stdin) 01:02:51.643304 > 1 bytes data, server => client 01:02:51.643375 'r' 01:02:51.646590 Received DATA (on stdin) 01:02:51.646664 > 1 bytes data, server => client 01:02:51.646750 ' ' 01:02:51.651945 Received DATA (on stdin) 01:02:51.652025 > 1 bytes data, server => client 01:02:51.652122 'd' 01:02:51.657210 Received DATA (on stdin) 01:02:51.657285 > 1 bytes data, server => client 01:02:51.659908 'r' 01:02:51.665010 Received DATA (on stdin) 01:02:51.665093 > 1 bytes data, server => client 01:02:51.665170 'o' 01:02:51.670092 Received DATA (on stdin) 01:02:51.670166 > 1 bytes data, server => client 01:02:51.670250 'p' 01:02:51.675453 Received DATA (on stdin) 01:02:51.675532 > 1 bytes data, server => client 01:02:51.675634 'p' 01:02:51.680817 Received DATA (on stdin) 01:02:51.680892 > 1 bytes data, server => client 01:02:51.680975 'i' 01:02:51.686155 Received DATA (on stdin) 01:02:51.686232 > 1 bytes data, server => client 01:02:51.686319 'n' 01:02:51.693286 Received DATA (on stdin) 01:02:51.693372 > 1 bytes data, server => client 01:02:51.693442 'g' 01:02:51.698391 Received DATA (on stdin) 01:02:51.698467 > 1 bytes data, server => client 01:02:51.698531 ' ' 01:02:51.703473 Received DATA (on stdin) 01:02:51.703547 > 1 bytes data, server => client 01:02:51.703635 'b' 01:02:51.708816 Received DATA (on stdin) 01:02:51.708886 > 1 bytes data, server => client 01:02:51.708967 'y' 01:02:51.714143 Received DATA (on stdin) 01:02:51.714215 > 1 bytes data, server => client 01:02:51.714295 '.' 01:02:51.719471 Received DATA (on stdin) 01:02:51.719543 > 1 bytes data, server => client 01:02:51.719623 ' ' 01:02:51.724798 Received DATA (on stdin) 01:02:51.724871 > 1 bytes data, server => client 01:02:51.724953 'W' 01:02:51.731668 Received DATA (on stdin) 01:02:51.731744 > 1 bytes data, server => client 01:02:51.731810 'e' 01:02:51.736767 Received DATA (on stdin) 01:02:51.736840 > 1 bytes data, server => client 01:02:51.736901 ' ' 01:02:51.741879 Received DATA (on stdin) 01:02:51.741952 > 1 bytes data, server => client 01:02:51.742013 'c' 01:02:51.746979 Received DATA (on stdin) 01:02:51.747053 > 1 bytes data, server => client 01:02:51.747120 'o' 01:02:51.752069 Received DATA (on stdin) 01:02:51.752144 > 1 bytes data, server => client 01:02:51.752234 'n' 01:02:51.757323 Received DATA (on stdin) 01:02:51.757396 > 1 bytes data, server => client 01:02:51.759909 't' 01:02:51.765012 Received DATA (on stdin) 01:02:51.765082 > 1 bytes data, server => client 01:02:51.765143 'a' 01:02:51.770119 Received DATA (on stdin) 01:02:51.770199 > 1 bytes data, server => client 01:02:51.770257 'c' 01:02:51.775203 Received DATA (on stdin) 01:02:51.775274 > 1 bytes data, server => client 01:02:51.775354 't' 01:02:51.780527 Received DATA (on stdin) 01:02:51.780598 > 1 bytes data, server => client 01:02:51.780677 ' ' 01:02:51.785851 Received DATA (on stdin) 01:02:51.785924 > 1 bytes data, server => client 01:02:51.786015 'y' 01:02:51.791103 Received DATA (on stdin) 01:02:51.791176 > 1 bytes data, server => client 01:02:51.791255 'o' 01:02:51.798330 Received DATA (on stdin) 01:02:51.798400 > 1 bytes data, server => client 01:02:51.798456 'u' 01:02:51.803430 Received DATA (on stdin) 01:02:51.803498 > 1 bytes data, server => client 01:02:51.803555 ' ' 01:02:51.808515 Received DATA (on stdin) 01:02:51.808585 > 1 bytes data, server => client 01:02:51.808663 'l' 01:02:51.813834 Received DATA (on stdin) 01:02:51.813904 > 1 bytes data, server => client 01:02:51.813982 'a' 01:02:51.819153 Received DATA (on stdin) 01:02:51.819222 > 1 bytes data, server => client 01:02:51.819309 't' 01:02:51.824400 Received DATA (on stdin) 01:02:51.824471 > 1 bytes data, server => client 01:02:51.824550 'e' 01:02:51.829722 Received DATA (on stdin) 01:02:51.829791 > 1 bytes data, server => client 01:02:51.833262 'r' 01:02:51.838350 Received DATA (on stdin) 01:02:51.838423 > 1 bytes data, server => client 01:02:51.838500 '\r' 01:02:51.845068 Received DATA (on stdin) 01:02:51.845137 > 1 bytes data, server => client 01:02:51.845213 '\n' 01:02:52.095057 < 8 bytes data, client => server 01:02:52.095236 'TYPE A\r\n' 01:02:52.099896 Received DATA (on stdin) 01:02:52.099990 > 1 bytes data, server => client 01:02:52.100065 '2' 01:02:52.103272 Received DATA (on stdin) 01:02:52.103353 > 1 bytes data, server => client 01:02:52.103442 '0' 01:02:52.108657 Received DATA (on stdin) 01:02:52.108733 > 1 bytes data, server => client 01:02:52.108817 '0' 01:02:52.114013 Received DATA (on stdin) 01:02:52.114087 > 1 bytes data, server => client 01:02:52.114180 ' ' 01:02:52.119288 Received DATA (on stdin) 01:02:52.119378 > 1 bytes data, server => client 01:02:52.119464 'I' 01:02:52.125004 Received DATA (on stdin) 01:02:52.125080 > 1 bytes data, server => client 01:02:52.125165 ' ' 01:02:52.130369 Received DATA (on stdin) 01:02:52.130466 > 1 bytes data, server => client 01:02:52.130565 'm' 01:02:52.135772 Received DATA (on stdin) 01:02:52.135847 > 1 bytes data, server => client 01:02:52.135933 'o' 01:02:52.141138 Received DATA (on stdin) 01:02:52.141217 > 1 bytes data, server => client 01:02:52.141300 'd' 01:02:52.146517 Received DATA (on stdin) 01:02:52.146611 > 1 bytes data, server => client 01:02:52.146700 'i' 01:02:52.155018 Received DATA (on stdin) 01:02:52.155107 > 1 bytes data, server => client 01:02:52.155170 'f' 01:02:52.160127 Received DATA (on stdin) 01:02:52.160205 > 1 bytes data, server => client 01:02:52.160268 'y' 01:02:52.165241 Received DATA (on stdin) 01:02:52.165328 > 1 bytes data, server => client 01:02:52.165390 ' ' 01:02:52.170334 Received DATA (on stdin) 01:02:52.170415 > 1 bytes data, server => client 01:02:52.170500 'T' 01:02:52.175706 Received DATA (on stdin) 01:02:52.175788 > 1 bytes data, server => client 01:02:52.175871 'Y' 01:02:52.181133 Received DATA (on stdin) 01:02:52.181249 > 1 bytes data, server => client 01:02:52.181347 'P' 01:02:52.186600 Received DATA (on stdin) 01:02:52.186685 > 1 bytes data, server => client 01:02:52.186775 'E' 01:02:52.191991 Received DATA (on stdin) 01:02:52.192068 > 1 bytes data, server => client 01:02:52.192152 ' ' 01:02:52.198889 Received DATA (on stdin) 01:02:52.198969 > 1 bytes data, server => client 01:02:52.199052 'a' 01:02:52.205765 Received DATA (on stdin) 01:02:52.205855 > 1 bytes data, server => client 01:02:52.205950 's' 01:02:52.212700 Received DATA (on stdin) 01:02:52.212814 > 1 bytes data, server => client 01:02:52.212903 ' ' 01:02:52.219822 Received DATA (on stdin) 01:02:52.219918 > 1 bytes data, server => client 01:02:52.220016 'y' 01:02:52.225142 Received DATA (on stdin) 01:02:52.225222 > 1 bytes data, server => client 01:02:52.225289 'o' 01:02:52.230256 Received DATA (on stdin) 01:02:52.230337 > 1 bytes data, server => client 01:02:52.230404 'u' 01:02:52.235426 Received DATA (on stdin) 01:02:52.235551 > 1 bytes data, server => client 01:02:52.235619 ' ' 01:02:52.240549 Received DATA (on stdin) 01:02:52.240636 > 1 bytes data, server => client 01:02:52.240710 'w' 01:02:52.245672 Received DATA (on stdin) 01:02:52.245754 > 1 bytes data, server => client 01:02:52.245817 'a' 01:02:52.250791 Received DATA (on stdin) 01:02:52.250879 > 1 bytes data, server => client 01:02:52.250952 'n' 01:02:52.255911 Received DATA (on stdin) 01:02:52.255995 > 1 bytes data, server => client 01:02:52.256062 't' 01:02:52.261035 Received DATA (on stdin) 01:02:52.261126 > 1 bytes data, server => client 01:02:52.261198 'e' 01:02:52.266147 Received DATA (on stdin) 01:02:52.266223 > 1 bytes data, server => client 01:02:52.266284 'd' 01:02:52.271265 Received DATA (on stdin) 01:02:52.271350 > 1 bytes data, server => client 01:02:52.271423 '\r' 01:02:52.276374 Received DATA (on stdin) 01:02:52.276450 > 1 bytes data, server => client 01:02:52.276512 '\n' 01:02:52.313260 < 6 bytes data, client => server 01:02:52.313397 'LIST\r\n' 01:02:52.314666 Received DATA (on stdin) 01:02:52.314738 > 1 bytes data, server => client 01:02:52.314822 '1' 01:02:52.320051 Received DATA (on stdin) 01:02:52.320133 > 1 bytes data, server => client 01:02:52.323251 '5' 01:02:52.328368 Received DATA (on stdin) 01:02:52.328453 > 1 bytes data, server => client 01:02:52.328543 '0' 01:02:52.333741 Received DATA (on stdin) 01:02:52.333819 > 1 bytes data, server => client 01:02:52.333905 ' ' 01:02:52.339095 Received DATA (on stdin) 01:02:52.339173 > 1 bytes data, server => client 01:02:52.339259 'h' 01:02:52.344444 Received DATA (on stdin) 01:02:52.344517 > 1 bytes data, server => client 01:02:52.344597 'e' 01:02:52.349783 Received DATA (on stdin) 01:02:52.349863 > 1 bytes data, server => client 01:02:52.349967 'r' 01:02:52.355157 Received DATA (on stdin) 01:02:52.355231 > 1 bytes data, server => client 01:02:52.355315 'e' 01:02:52.360501 Received DATA (on stdin) 01:02:52.360581 > 1 bytes data, server => client 01:02:52.360662 ' ' 01:02:52.365883 Received DATA (on stdin) 01:02:52.365962 > 1 bytes data, server => client 01:02:52.366045 'c' 01:02:52.370996 Received DATA (on stdin) 01:02:52.371084 > 1 bytes data, server => client 01:02:52.371157 'o' 01:02:52.376109 Received DATA (on stdin) 01:02:52.376190 > 1 bytes data, server => client 01:02:52.376254 'm' 01:02:52.381219 Received DATA (on stdin) 01:02:52.381297 > 1 bytes data, server => client 01:02:52.381361 'e' 01:02:52.386331 Received DATA (on stdin) 01:02:52.386412 > 1 bytes data, server => client 01:02:52.386477 's' 01:02:52.391440 Received DATA (on stdin) 01:02:52.391515 > 1 bytes data, server => client 01:02:52.391577 ' ' 01:02:52.396555 Received DATA (on stdin) 01:02:52.396633 > 1 bytes data, server => client 01:02:52.396696 'a' 01:02:52.401660 Received DATA (on stdin) 01:02:52.401730 > 1 bytes data, server => client 01:02:52.401788 ' ' 01:02:52.406760 Received DATA (on stdin) 01:02:52.406832 > 1 bytes data, server => client 01:02:52.406891 'd' 01:02:52.411880 Received DATA (on stdin) 01:02:52.411970 > 1 bytes data, server => client 01:02:52.412041 'i' 01:02:52.416987 Received DATA (on stdin) 01:02:52.417065 > 1 bytes data, server => client 01:02:52.417128 'r' 01:02:52.422100 Received DATA (on stdin) 01:02:52.422182 > 1 bytes data, server => client 01:02:52.422254 'e' 01:02:52.427211 Received DATA (on stdin) 01:02:52.427293 > 1 bytes data, server => client 01:02:52.427358 'c' 01:02:52.432320 Received DATA (on stdin) 01:02:52.432398 > 1 bytes data, server => client 01:02:52.432462 't' 01:02:52.437428 Received DATA (on stdin) 01:02:52.437505 > 1 bytes data, server => client 01:02:52.437570 'o' 01:02:52.442535 Received DATA (on stdin) 01:02:52.442612 > 1 bytes data, server => client 01:02:52.442684 'r' 01:02:52.447671 Received DATA (on stdin) 01:02:52.447748 > 1 bytes data, server => client 01:02:52.447809 'y' 01:02:52.452772 Received DATA (on stdin) 01:02:52.452854 > 1 bytes data, server => client 01:02:52.452920 '\r' 01:02:52.457905 Received DATA (on stdin) 01:02:52.457999 > 1 bytes data, server => client 01:02:52.458071 '\n' 01:02:55.832101 Received DATA (on stdin) 01:02:55.832242 > 1 bytes data, server => client 01:02:55.832304 '2' 01:02:55.832455 Received DATA (on stdin) 01:02:55.832513 > 1 bytes data, server => client 01:02:55.832566 '2' 01:02:55.837581 Received DATA (on stdin) 01:02:55.837654 > 1 bytes data, server => client 01:02:55.837709 '6' 01:02:55.842697 Received DATA (on stdin) 01:02:55.842768 > 1 bytes data, server => client 01:02:55.842826 ' ' 01:02:55.847802 Received DATA (on stdin) 01:02:55.847875 > 1 bytes data, server => client 01:02:55.847931 'A' 01:02:55.853227 Received DATA (on stdin) 01:02:55.853334 > 1 bytes data, server => client 01:02:55.853410 'S' 01:02:55.858042 Received DATA (on stdin) 01:02:55.858124 > 1 bytes data, server => client 01:02:55.858189 'C' 01:02:55.865352 Received DATA (on stdin) 01:02:55.865456 > 1 bytes data, server => client 01:02:55.865524 'I' 01:02:55.870467 Received DATA (on stdin) 01:02:55.870545 > 1 bytes data, server => client 01:02:55.870609 'I' 01:02:55.875600 Received DATA (on stdin) 01:02:55.875687 > 1 bytes data, server => client 01:02:55.875753 ' ' 01:02:55.880694 Received DATA (on stdin) 01:02:55.880778 > 1 bytes data, server => client 01:02:55.880844 't' 01:02:55.886621 Received DATA (on stdin) 01:02:55.886724 > 1 bytes data, server => client 01:02:55.886788 'r' 01:02:55.893213 Received DATA (on stdin) 01:02:55.893302 > 1 bytes data, server => client 01:02:55.893364 'a' 01:02:55.896846 Received DATA (on stdin) 01:02:55.896921 > 1 bytes data, server => client 01:02:55.896983 'n' 01:02:55.901959 Received DATA (on stdin) 01:02:55.902040 > 1 bytes data, server => client 01:02:55.902105 's' 01:02:55.907071 Received DATA (on stdin) 01:02:55.907155 > 1 bytes data, server => client 01:02:55.907221 'f' 01:02:55.912185 Received DATA (on stdin) 01:02:55.912266 > 1 bytes data, server => client 01:02:55.912329 'e' 01:02:55.917293 Received DATA (on stdin) 01:02:55.917386 > 1 bytes data, server => client 01:02:55.917453 'r' 01:02:55.922412 Received DATA (on stdin) 01:02:55.922498 > 1 bytes data, server => client 01:02:55.922567 ' ' 01:02:55.929878 Received DATA (on stdin) 01:02:55.929989 > 1 bytes data, server => client 01:02:55.930062 'c' 01:02:55.932635 Received DATA (on stdin) 01:02:55.932704 > 1 bytes data, server => client 01:02:55.932766 'o' 01:02:55.937744 Received DATA (on stdin) 01:02:55.937820 > 1 bytes data, server => client 01:02:55.937886 'm' 01:02:55.942848 Received DATA (on stdin) 01:02:55.942921 > 1 bytes data, server => client 01:02:55.942984 'p' 01:02:55.947953 Received DATA (on stdin) 01:02:55.948032 > 1 bytes data, server => client 01:02:55.948096 'l' 01:02:55.953058 Received DATA (on stdin) 01:02:55.953137 > 1 bytes data, server => client 01:02:55.953240 'e' 01:02:55.959929 Received DATA (on stdin) 01:02:55.960021 > 1 bytes data, server => client 01:02:55.960088 't' 01:02:55.965053 Received DATA (on stdin) 01:02:55.965127 > 1 bytes data, server => client 01:02:55.965188 'e' 01:02:55.970150 Received DATA (on stdin) 01:02:55.970234 > 1 bytes data, server => client 01:02:55.970300 '\r' 01:02:55.975261 Received DATA (on stdin) 01:02:55.975339 > 1 bytes data, server => client 01:02:55.975401 '\n' 01:02:57.242795 < 6 bytes data, client => server 01:02:57.243007 'QUIT\r\n' 01:02:57.244235 Received DATA (on stdin) 01:02:57.244320 > 1 bytes data, server => client 01:02:57.244395 '2' 01:02:57.249395 Received DATA (on stdin) 01:02:57.249483 > 1 bytes data, server => client 01:02:57.249548 '2' 01:02:57.254520 Received DATA (on stdin) 01:02:57.254606 > 1 bytes data, server => client 01:02:57.254672 '1' 01:02:57.259648 Received DATA (on stdin) 01:02:57.259737 > 1 bytes data, server => client 01:02:57.259806 ' ' 01:02:57.264756 Received DATA (on stdin) 01:02:57.264844 > 1 bytes data, server => client 01:02:57.264933 'b' 01:02:57.270158 Received DATA (on stdin) 01:02:57.270245 > 1 bytes data, server => client 01:02:57.270342 'y' 01:02:57.275587 Received DATA (on stdin) 01:02:57.275686 > 1 bytes data, server => client 01:02:57.275777 'e' 01:02:57.281010 Received DATA (on stdin) 01:02:57.281101 > 1 bytes data, server => client 01:02:57.281194 ' ' 01:02:57.286429 Received DATA (on stdin) 01:02:57.286534 > 1 bytes data, server => client 01:02:57.286633 'b' 01:02:57.291883 Received DATA (on stdin) 01:02:57.291992 > 1 bytes data, server => client 01:02:57.293270 'y' 01:02:57.298432 Received DATA (on stdin) 01:02:57.298528 > 1 bytes data, server => client 01:02:57.298599 'e' 01:02:57.303590 Received DATA (on stdin) 01:02:57.303690 > 1 bytes data, server => client 01:02:57.303755 ' ' 01:02:57.308748 Received DATA (on stdin) 01:02:57.308856 > 1 bytes data, server => client 01:02:57.308925 'b' 01:02:57.313869 Received DATA (on stdin) 01:02:57.313968 > 1 bytes data, server => client 01:02:57.316590 'a' 01:02:57.321743 Received DATA (on stdin) 01:02:57.321837 > 1 bytes data, server => client 01:02:57.321901 'b' 01:02:57.326878 Received DATA (on stdin) 01:02:57.326970 > 1 bytes data, server => client 01:02:57.327034 'y' 01:02:57.331982 Received DATA (on stdin) 01:02:57.332065 > 1 bytes data, server => client 01:02:57.332149 '\r' 01:02:57.337360 Received DATA (on stdin) 01:02:57.337445 > 1 bytes data, server => client 01:02:57.337532 '\n' 01:02:57.402886 ====> Client disconnect 01:02:57.403740 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:02:01.263214 Running IPv4 version 01:02:01.271110 Listening on port 38587 01:02:01.271580 Wrote pid 226479 to log/3/server/ftp_sockdata.pid 01:02:01.272353 Received PING (on stdin) 01:02:01.273407 Received PORT (on stdin) 01:02:01.277425 ====> Client connect 01:02:01.282889 Received DATA (on stdin) 01:02:01.283201 > 18 bytes data, server => client 01:02:01.283605 'WE ROOLZ: 202504\r\n' 01:02:01.283846 Received DISC (on stdin) 01:02:01.283963 ====> Client forcibly disconnected 01:02:01.290472 Received QUIT (on stdin) 01:02:01.290567 quits 01:02:01.291074 ============> sockfilt quits 01:02:52.918704 ====> Client connect 01:02:52.932929 Running IPv4 version 01:02:52.933073 Connected to port 44171 01:02:52.936858 Wrote pid 227658 to log/3/server/ftp_sockdata.pid 01:02:52.937622 Received PING (on stdin) 01:02:53.465316 Received DATA (on stdin) 01:02:53.465679 > 1 bytes data, server => client 01:02:53.465959 't' 01:02:53.473302 Received DATA (on stdin) 01:02:53.473391 > 1 bytes data, server => client 01:02:53.473458 'o' 01:02:53.478410 Received DATA (on stdin) 01:02:53.478492 > 1 bytes data, server => client 01:02:53.478560 't' 01:02:53.483545 Received DATA (on stdin) 01:02:53.483643 > 1 bytes data, server => client 01:02:53.483714 'a' 01:02:53.488641 Received DATA (on stdin) 01:02:53.488722 > 1 bytes data, server => client 01:02:53.488809 'l' 01:02:53.494024 Received DATA (on stdin) 01:02:53.494105 > 1 bytes data, server => client 01:02:53.494205 ' ' 01:02:53.499306 Received DATA (on stdin) 01:02:53.499386 > 1 bytes data, server => client 01:02:53.499476 '2' 01:02:53.506609 Received DATA (on stdin) 01:02:53.506690 > 1 bytes data, server => client 01:02:53.506755 '0' 01:02:53.511715 Received DATA (on stdin) 01:02:53.511791 > 1 bytes data, server => client 01:02:53.511913 '\r' 01:02:53.516806 Received DATA (on stdin) 01:02:53.516890 > 1 bytes data, server => client 01:02:53.517001 '\n' 01:02:53.522795 Received DATA (on stdin) 01:02:53.522879 > 1 bytes data, server => client 01:02:53.526580 'd' 01:02:53.531692 Received DATA (on stdin) 01:02:53.531777 > 1 bytes data, server => client 01:02:53.531845 'r' 01:02:53.536797 Received DATA (on stdin) 01:02:53.536878 > 1 bytes data, server => client 01:02:53.536943 'w' 01:02:53.541888 Received DATA (on stdin) 01:02:53.541969 > 1 bytes data, server => client 01:02:53.542057 'x' 01:02:53.547261 Received DATA (on stdin) 01:02:53.547343 > 1 bytes data, server => client 01:02:53.547429 'r' 01:02:53.555012 Received DATA (on stdin) 01:02:53.555099 > 1 bytes data, server => client 01:02:53.555166 '-' 01:02:53.560116 Received DATA (on stdin) 01:02:53.560200 > 1 bytes data, server => client 01:02:53.560268 'x' 01:02:53.565208 Received DATA (on stdin) 01:02:53.565294 > 1 bytes data, server => client 01:02:53.565383 'r' 01:02:53.570570 Received DATA (on stdin) 01:02:53.570654 > 1 bytes data, server => client 01:02:53.570743 '-' 01:02:53.576586 Received DATA (on stdin) 01:02:53.576672 > 1 bytes data, server => client 01:02:53.576761 'x' 01:02:53.581947 Received DATA (on stdin) 01:02:53.582030 > 1 bytes data, server => client 01:02:53.582130 ' ' 01:02:53.587224 Received DATA (on stdin) 01:02:53.587308 > 1 bytes data, server => client 01:02:53.587402 ' ' 01:02:53.593272 Received DATA (on stdin) 01:02:53.593359 > 1 bytes data, server => client 01:02:53.593426 ' ' 01:02:53.598380 Received DATA (on stdin) 01:02:53.598462 > 1 bytes data, server => client 01:02:53.598528 '8' 01:02:53.603474 Received DATA (on stdin) 01:02:53.603564 > 1 bytes data, server => client 01:02:53.606579 ' ' 01:02:53.611695 Received DATA (on stdin) 01:02:53.611775 > 1 bytes data, server => client 01:02:53.611845 '9' 01:02:53.616827 Received DATA (on stdin) 01:02:53.616929 > 1 bytes data, server => client 01:02:53.617005 '8' 01:02:53.621923 Received DATA (on stdin) 01:02:53.622014 > 1 bytes data, server => client 01:02:53.622115 ' ' 01:02:53.627347 Received DATA (on stdin) 01:02:53.627460 > 1 bytes data, server => client 01:02:53.627561 ' ' 01:02:53.632780 Received DATA (on stdin) 01:02:53.632867 > 1 bytes data, server => client 01:02:53.632969 ' ' 01:02:53.638218 Received DATA (on stdin) 01:02:53.638297 > 1 bytes data, server => client 01:02:53.638362 ' ' 01:02:53.646637 Received DATA (on stdin) 01:02:53.646748 > 1 bytes data, server => client 01:02:53.646823 ' ' 01:02:53.651760 Received DATA (on stdin) 01:02:53.651862 > 1 bytes data, server => client 01:02:53.651936 ' ' 01:02:53.656882 Received DATA (on stdin) 01:02:53.656977 > 1 bytes data, server => client 01:02:53.657051 ' ' 01:02:53.661973 Received DATA (on stdin) 01:02:53.662053 > 1 bytes data, server => client 01:02:53.662137 '9' 01:02:53.667323 Received DATA (on stdin) 01:02:53.667404 > 1 bytes data, server => client 01:02:53.667498 '8' 01:02:53.672697 Received DATA (on stdin) 01:02:53.672787 > 1 bytes data, server => client 01:02:53.673230 ' ' 01:02:53.678436 Received DATA (on stdin) 01:02:53.678527 > 1 bytes data, server => client 01:02:53.678613 ' ' 01:02:53.683804 Received DATA (on stdin) 01:02:53.683884 > 1 bytes data, server => client 01:02:53.683971 ' ' 01:02:53.689162 Received DATA (on stdin) 01:02:53.689244 > 1 bytes data, server => client 01:02:53.689327 ' ' 01:02:53.694512 Received DATA (on stdin) 01:02:53.694594 > 1 bytes data, server => client 01:02:53.694686 ' ' 01:02:53.699798 Received DATA (on stdin) 01:02:53.699886 > 1 bytes data, server => client 01:02:53.699953 ' ' 01:02:53.706609 Received DATA (on stdin) 01:02:53.706697 > 1 bytes data, server => client 01:02:53.706767 ' ' 01:02:53.711735 Received DATA (on stdin) 01:02:53.711829 > 1 bytes data, server => client 01:02:53.711901 ' ' 01:02:53.716841 Received DATA (on stdin) 01:02:53.716922 > 1 bytes data, server => client 01:02:53.716988 ' ' 01:02:53.721950 Received DATA (on stdin) 01:02:53.722029 > 1 bytes data, server => client 01:02:53.722092 ' ' 01:02:53.727038 Received DATA (on stdin) 01:02:53.727121 > 1 bytes data, server => client 01:02:53.727212 ' ' 01:02:53.732409 Received DATA (on stdin) 01:02:53.732493 > 1 bytes data, server => client 01:02:53.733267 '5' 01:02:53.738362 Received DATA (on stdin) 01:02:53.738445 > 1 bytes data, server => client 01:02:53.738510 '1' 01:02:53.743466 Received DATA (on stdin) 01:02:53.743543 > 1 bytes data, server => client 01:02:53.743604 '2' 01:02:53.749884 Received DATA (on stdin) 01:02:53.749971 > 1 bytes data, server => client 01:02:53.750034 ' ' 01:02:53.753672 Received DATA (on stdin) 01:02:53.753749 > 1 bytes data, server => client 01:02:53.753811 'O' 01:02:53.758776 Received DATA (on stdin) 01:02:53.758865 > 1 bytes data, server => client 01:02:53.758937 'c' 01:02:53.763883 Received DATA (on stdin) 01:02:53.763967 > 1 bytes data, server => client 01:02:53.764029 't' 01:02:53.768985 Received DATA (on stdin) 01:02:53.769063 > 1 bytes data, server => client 01:02:53.769123 ' ' 01:02:53.774090 Received DATA (on stdin) 01:02:53.774165 > 1 bytes data, server => client 01:02:53.774226 '2' 01:02:53.779884 Received DATA (on stdin) 01:02:53.779966 > 1 bytes data, server => client 01:02:53.780028 '2' 01:02:53.784299 Received DATA (on stdin) 01:02:53.784377 > 1 bytes data, server => client 01:02:53.784442 ' ' 01:02:53.789403 Received DATA (on stdin) 01:02:53.789484 > 1 bytes data, server => client 01:02:53.789551 '1' 01:02:53.794506 Received DATA (on stdin) 01:02:53.794585 > 1 bytes data, server => client 01:02:53.794650 '3' 01:02:53.799610 Received DATA (on stdin) 01:02:53.799695 > 1 bytes data, server => client 01:02:53.799769 ':' 01:02:53.809886 Received DATA (on stdin) 01:02:53.809969 > 1 bytes data, server => client 01:02:53.810034 '0' 01:02:53.811691 Received DATA (on stdin) 01:02:53.811758 > 1 bytes data, server => client 01:02:53.811821 '6' 01:02:53.816798 Received DATA (on stdin) 01:02:53.816876 > 1 bytes data, server => client 01:02:53.816940 ' ' 01:02:53.821904 Received DATA (on stdin) 01:02:53.821990 > 1 bytes data, server => client 01:02:53.822060 '.' 01:02:53.827009 Received DATA (on stdin) 01:02:53.827086 > 1 bytes data, server => client 01:02:53.827152 '\r' 01:02:53.832338 Received DATA (on stdin) 01:02:53.832431 > 1 bytes data, server => client 01:02:53.832499 '\n' 01:02:53.837923 Received DATA (on stdin) 01:02:53.838034 > 1 bytes data, server => client 01:02:53.838120 'd' 01:02:53.843311 Received DATA (on stdin) 01:02:53.843388 > 1 bytes data, server => client 01:02:53.843480 'r' 01:02:53.848574 Received DATA (on stdin) 01:02:53.848653 > 1 bytes data, server => client 01:02:53.848740 'w' 01:02:53.853931 Received DATA (on stdin) 01:02:53.854006 > 1 bytes data, server => client 01:02:53.855799 'x' 01:02:53.860920 Received DATA (on stdin) 01:02:53.861002 > 1 bytes data, server => client 01:02:53.861066 'r' 01:02:53.866617 Received DATA (on stdin) 01:02:53.866730 > 1 bytes data, server => client 01:02:53.866801 '-' 01:02:53.871755 Received DATA (on stdin) 01:02:53.871857 > 1 bytes data, server => client 01:02:53.871938 'x' 01:02:53.876866 Received DATA (on stdin) 01:02:53.876954 > 1 bytes data, server => client 01:02:53.877028 'r' 01:02:53.883222 Received DATA (on stdin) 01:02:53.883311 > 1 bytes data, server => client 01:02:53.883380 '-' 01:02:53.887090 Received DATA (on stdin) 01:02:53.887175 > 1 bytes data, server => client 01:02:53.887245 'x' 01:02:53.892197 Received DATA (on stdin) 01:02:53.892279 > 1 bytes data, server => client 01:02:53.892349 ' ' 01:02:53.897301 Received DATA (on stdin) 01:02:53.897383 > 1 bytes data, server => client 01:02:53.897456 ' ' 01:02:53.902505 Received DATA (on stdin) 01:02:53.902592 > 1 bytes data, server => client 01:02:53.902665 ' ' 01:02:53.907531 Received DATA (on stdin) 01:02:53.907619 > 1 bytes data, server => client 01:02:53.907692 '8' 01:02:53.916548 Received DATA (on stdin) 01:02:53.916630 > 1 bytes data, server => client 01:02:53.916704 ' ' 01:02:53.918384 Received DATA (on stdin) 01:02:53.918459 > 1 bytes data, server => client 01:02:53.918530 '9' 01:02:53.923483 Received DATA (on stdin) 01:02:53.923564 > 1 bytes data, server => client 01:02:53.923636 '8' 01:02:53.928584 Received DATA (on stdin) 01:02:53.928667 > 1 bytes data, server => client 01:02:53.928743 ' ' 01:02:53.933685 Received DATA (on stdin) 01:02:53.933773 > 1 bytes data, server => client 01:02:53.933850 ' ' 01:02:53.938786 Received DATA (on stdin) 01:02:53.938867 > 1 bytes data, server => client 01:02:53.938940 ' ' 01:02:53.943906 Received DATA (on stdin) 01:02:53.943992 > 1 bytes data, server => client 01:02:53.944068 ' ' 01:02:53.949005 Received DATA (on stdin) 01:02:53.949089 > 1 bytes data, server => client 01:02:53.949163 ' ' 01:02:53.954109 Received DATA (on stdin) 01:02:53.954190 > 1 bytes data, server => client 01:02:53.954262 ' ' 01:02:53.959214 Received DATA (on stdin) 01:02:53.959297 > 1 bytes data, server => client 01:02:53.959369 ' ' 01:02:53.964317 Received DATA (on stdin) 01:02:53.964400 > 1 bytes data, server => client 01:02:53.964472 '9' 01:02:53.969434 Received DATA (on stdin) 01:02:53.969507 > 1 bytes data, server => client 01:02:53.969564 '8' 01:02:53.974531 Received DATA (on stdin) 01:02:53.974598 > 1 bytes data, server => client 01:02:53.974654 ' ' 01:02:53.979631 Received DATA (on stdin) 01:02:53.979696 > 1 bytes data, server => client 01:02:53.979752 ' ' 01:02:53.989880 Received DATA (on stdin) 01:02:53.989952 > 1 bytes data, server => client 01:02:53.990014 ' ' 01:02:53.991672 Received DATA (on stdin) 01:02:53.991738 > 1 bytes data, server => client 01:02:53.991799 ' ' 01:02:53.996787 Received DATA (on stdin) 01:02:53.996862 > 1 bytes data, server => client 01:02:53.996922 ' ' 01:02:54.001882 Received DATA (on stdin) 01:02:54.001952 > 1 bytes data, server => client 01:02:54.002012 ' ' 01:02:54.006979 Received DATA (on stdin) 01:02:54.007048 > 1 bytes data, server => client 01:02:54.007108 ' ' 01:02:54.012077 Received DATA (on stdin) 01:02:54.012148 > 1 bytes data, server => client 01:02:54.012209 ' ' 01:02:54.017183 Received DATA (on stdin) 01:02:54.017258 > 1 bytes data, server => client 01:02:54.017319 ' ' 01:02:54.022281 Received DATA (on stdin) 01:02:54.022350 > 1 bytes data, server => client 01:02:54.022410 ' ' 01:02:54.027381 Received DATA (on stdin) 01:02:54.027454 > 1 bytes data, server => client 01:02:54.027514 ' ' 01:02:54.032480 Received DATA (on stdin) 01:02:54.032570 > 1 bytes data, server => client 01:02:54.032631 '5' 01:02:54.037579 Received DATA (on stdin) 01:02:54.037648 > 1 bytes data, server => client 01:02:54.037707 '1' 01:02:54.042682 Received DATA (on stdin) 01:02:54.042755 > 1 bytes data, server => client 01:02:54.042816 '2' 01:02:54.047784 Received DATA (on stdin) 01:02:54.047854 > 1 bytes data, server => client 01:02:54.047915 ' ' 01:02:54.052999 Received DATA (on stdin) 01:02:54.053070 > 1 bytes data, server => client 01:02:54.053132 'O' 01:02:54.058101 Received DATA (on stdin) 01:02:54.058171 > 1 bytes data, server => client 01:02:54.058233 'c' 01:02:54.063208 Received DATA (on stdin) 01:02:54.063278 > 1 bytes data, server => client 01:02:54.063339 't' 01:02:54.069879 Received DATA (on stdin) 01:02:54.069947 > 1 bytes data, server => client 01:02:54.070006 ' ' 01:02:54.073411 Received DATA (on stdin) 01:02:54.073480 > 1 bytes data, server => client 01:02:54.073538 '2' 01:02:54.078513 Received DATA (on stdin) 01:02:54.078579 > 1 bytes data, server => client 01:02:54.078633 '2' 01:02:54.083616 Received DATA (on stdin) 01:02:54.083696 > 1 bytes data, server => client 01:02:54.083756 ' ' 01:02:54.088717 Received DATA (on stdin) 01:02:54.088789 > 1 bytes data, server => client 01:02:54.088851 '1' 01:02:54.093815 Received DATA (on stdin) 01:02:54.093885 > 1 bytes data, server => client 01:02:54.093947 '3' 01:02:54.098915 Received DATA (on stdin) 01:02:54.098985 > 1 bytes data, server => client 01:02:54.099045 ':' 01:02:54.104014 Received DATA (on stdin) 01:02:54.104082 > 1 bytes data, server => client 01:02:54.104142 '0' 01:02:54.109878 Received DATA (on stdin) 01:02:54.109945 > 1 bytes data, server => client 01:02:54.110004 '6' 01:02:54.114211 Received DATA (on stdin) 01:02:54.114282 > 1 bytes data, server => client 01:02:54.114342 ' ' 01:02:54.119310 Received DATA (on stdin) 01:02:54.119380 > 1 bytes data, server => client 01:02:54.119439 '.' 01:02:54.124436 Received DATA (on stdin) 01:02:54.124513 > 1 bytes data, server => client 01:02:54.124573 '.' 01:02:54.129554 Received DATA (on stdin) 01:02:54.129633 > 1 bytes data, server => client 01:02:54.129695 '\r' 01:02:54.136553 Received DATA (on stdin) 01:02:54.136633 > 1 bytes data, server => client 01:02:54.136696 '\n' 01:02:54.140492 Received DATA (on stdin) 01:02:54.140571 > 1 bytes data, server => client 01:02:54.140633 'd' 01:02:54.145678 Received DATA (on stdin) 01:02:54.145754 > 1 bytes data, server => client 01:02:54.145815 'r' 01:02:54.150784 Received DATA (on stdin) 01:02:54.150857 > 1 bytes data, server => client 01:02:54.150916 'w' 01:02:54.155891 Received DATA (on stdin) 01:02:54.155965 > 1 bytes data, server => client 01:02:54.156026 'x' 01:02:54.160997 Received DATA (on stdin) 01:02:54.161072 > 1 bytes data, server => client 01:02:54.161133 'r' 01:02:54.166103 Received DATA (on stdin) 01:02:54.166182 > 1 bytes data, server => client 01:02:54.166247 '-' 01:02:54.171209 Received DATA (on stdin) 01:02:54.171285 > 1 bytes data, server => client 01:02:54.171350 'x' 01:02:54.176330 Received DATA (on stdin) 01:02:54.176408 > 1 bytes data, server => client 01:02:54.176468 'r' 01:02:54.183216 Received DATA (on stdin) 01:02:54.183293 > 1 bytes data, server => client 01:02:54.183354 '-' 01:02:54.186555 Received DATA (on stdin) 01:02:54.186628 > 1 bytes data, server => client 01:02:54.186690 'x' 01:02:54.191664 Received DATA (on stdin) 01:02:54.191740 > 1 bytes data, server => client 01:02:54.191805 ' ' 01:02:54.196768 Received DATA (on stdin) 01:02:54.196841 > 1 bytes data, server => client 01:02:54.196903 ' ' 01:02:54.201874 Received DATA (on stdin) 01:02:54.201951 > 1 bytes data, server => client 01:02:54.202017 ' ' 01:02:54.206978 Received DATA (on stdin) 01:02:54.207053 > 1 bytes data, server => client 01:02:54.207115 '2' 01:02:54.212100 Received DATA (on stdin) 01:02:54.212185 > 1 bytes data, server => client 01:02:54.212251 ' ' 01:02:54.217206 Received DATA (on stdin) 01:02:54.217282 > 1 bytes data, server => client 01:02:54.217346 '9' 01:02:54.222311 Received DATA (on stdin) 01:02:54.222388 > 1 bytes data, server => client 01:02:54.222470 '8' 01:02:54.229881 Received DATA (on stdin) 01:02:54.229958 > 1 bytes data, server => client 01:02:54.230024 ' ' 01:02:54.232523 Received DATA (on stdin) 01:02:54.232592 > 1 bytes data, server => client 01:02:54.232653 ' ' 01:02:54.237632 Received DATA (on stdin) 01:02:54.237710 > 1 bytes data, server => client 01:02:54.237775 ' ' 01:02:54.242755 Received DATA (on stdin) 01:02:54.242829 > 1 bytes data, server => client 01:02:54.242892 ' ' 01:02:54.247842 Received DATA (on stdin) 01:02:54.247918 > 1 bytes data, server => client 01:02:54.247981 ' ' 01:02:54.252950 Received DATA (on stdin) 01:02:54.253027 > 1 bytes data, server => client 01:02:54.253091 ' ' 01:02:54.258076 Received DATA (on stdin) 01:02:54.258159 > 1 bytes data, server => client 01:02:54.258222 ' ' 01:02:54.263184 Received DATA (on stdin) 01:02:54.263272 > 1 bytes data, server => client 01:02:54.263335 '9' 01:02:54.268293 Received DATA (on stdin) 01:02:54.268369 > 1 bytes data, server => client 01:02:54.268430 '8' 01:02:54.273399 Received DATA (on stdin) 01:02:54.273475 > 1 bytes data, server => client 01:02:54.273536 ' ' 01:02:54.278503 Received DATA (on stdin) 01:02:54.278579 > 1 bytes data, server => client 01:02:54.278642 ' ' 01:02:54.283607 Received DATA (on stdin) 01:02:54.283682 > 1 bytes data, server => client 01:02:54.283745 ' ' 01:02:54.289881 Received DATA (on stdin) 01:02:54.289952 > 1 bytes data, server => client 01:02:54.290015 ' ' 01:02:54.293818 Received DATA (on stdin) 01:02:54.293890 > 1 bytes data, server => client 01:02:54.293951 ' ' 01:02:54.298924 Received DATA (on stdin) 01:02:54.298998 > 1 bytes data, server => client 01:02:54.299056 ' ' 01:02:54.304027 Received DATA (on stdin) 01:02:54.304100 > 1 bytes data, server => client 01:02:54.304158 ' ' 01:02:54.309132 Received DATA (on stdin) 01:02:54.309204 > 1 bytes data, server => client 01:02:54.309262 ' ' 01:02:54.314235 Received DATA (on stdin) 01:02:54.314306 > 1 bytes data, server => client 01:02:54.314364 ' ' 01:02:54.319880 Received DATA (on stdin) 01:02:54.319949 > 1 bytes data, server => client 01:02:54.320007 ' ' 01:02:54.324443 Received DATA (on stdin) 01:02:54.324518 > 1 bytes data, server => client 01:02:54.324578 ' ' 01:02:54.329549 Received DATA (on stdin) 01:02:54.329621 > 1 bytes data, server => client 01:02:54.329681 '5' 01:02:54.336551 Received DATA (on stdin) 01:02:54.336636 > 1 bytes data, server => client 01:02:54.336701 '1' 01:02:54.339783 Received DATA (on stdin) 01:02:54.339860 > 1 bytes data, server => client 01:02:54.339936 '2' 01:02:54.344897 Received DATA (on stdin) 01:02:54.344976 > 1 bytes data, server => client 01:02:54.345043 ' ' 01:02:54.350018 Received DATA (on stdin) 01:02:54.350104 > 1 bytes data, server => client 01:02:54.350166 'M' 01:02:54.355134 Received DATA (on stdin) 01:02:54.355219 > 1 bytes data, server => client 01:02:54.355285 'a' 01:02:54.360245 Received DATA (on stdin) 01:02:54.360325 > 1 bytes data, server => client 01:02:54.360387 'y' 01:02:54.365357 Received DATA (on stdin) 01:02:54.365436 > 1 bytes data, server => client 01:02:54.365496 ' ' 01:02:54.370468 Received DATA (on stdin) 01:02:54.370548 > 1 bytes data, server => client 01:02:54.370613 ' ' 01:02:54.376590 Received DATA (on stdin) 01:02:54.376676 > 1 bytes data, server => client 01:02:54.376743 '2' 01:02:54.383215 Received DATA (on stdin) 01:02:54.383297 > 1 bytes data, server => client 01:02:54.383361 ' ' 01:02:54.386807 Received DATA (on stdin) 01:02:54.386882 > 1 bytes data, server => client 01:02:54.386945 ' ' 01:02:54.391921 Received DATA (on stdin) 01:02:54.392004 > 1 bytes data, server => client 01:02:54.392066 '1' 01:02:54.397033 Received DATA (on stdin) 01:02:54.397108 > 1 bytes data, server => client 01:02:54.397168 '9' 01:02:54.402143 Received DATA (on stdin) 01:02:54.402221 > 1 bytes data, server => client 01:02:54.402283 '9' 01:02:54.407254 Received DATA (on stdin) 01:02:54.407332 > 1 bytes data, server => client 01:02:54.407397 '6' 01:02:54.412364 Received DATA (on stdin) 01:02:54.412449 > 1 bytes data, server => client 01:02:54.412531 ' ' 01:02:54.419884 Received DATA (on stdin) 01:02:54.419967 > 1 bytes data, server => client 01:02:54.420031 '.' 01:02:54.422578 Received DATA (on stdin) 01:02:54.422645 > 1 bytes data, server => client 01:02:54.422702 'N' 01:02:54.427704 Received DATA (on stdin) 01:02:54.427793 > 1 bytes data, server => client 01:02:54.427864 'e' 01:02:54.432837 Received DATA (on stdin) 01:02:54.432932 > 1 bytes data, server => client 01:02:54.433003 'X' 01:02:54.437974 Received DATA (on stdin) 01:02:54.438071 > 1 bytes data, server => client 01:02:54.438143 'T' 01:02:54.443089 Received DATA (on stdin) 01:02:54.443173 > 1 bytes data, server => client 01:02:54.443260 '\r' 01:02:54.448206 Received DATA (on stdin) 01:02:54.448290 > 1 bytes data, server => client 01:02:54.448362 '\n' 01:02:54.454018 Received DATA (on stdin) 01:02:54.454105 > 1 bytes data, server => client 01:02:54.454177 '-' 01:02:54.459123 Received DATA (on stdin) 01:02:54.459206 > 1 bytes data, server => client 01:02:54.459274 'r' 01:02:54.464234 Received DATA (on stdin) 01:02:54.464320 > 1 bytes data, server => client 01:02:54.464391 '-' 01:02:54.469885 Received DATA (on stdin) 01:02:54.469971 > 1 bytes data, server => client 01:02:54.470043 '-' 01:02:54.474458 Received DATA (on stdin) 01:02:54.474544 > 1 bytes data, server => client 01:02:54.474619 'r' 01:02:54.479566 Received DATA (on stdin) 01:02:54.479653 > 1 bytes data, server => client 01:02:54.479726 '-' 01:02:54.486549 Received DATA (on stdin) 01:02:54.486637 > 1 bytes data, server => client 01:02:54.486711 '-' 01:02:54.489780 Received DATA (on stdin) 01:02:54.489857 > 1 bytes data, server => client 01:02:54.489941 'r' 01:02:54.494888 Received DATA (on stdin) 01:02:54.494973 > 1 bytes data, server => client 01:02:54.495045 '-' 01:02:54.499996 Received DATA (on stdin) 01:02:54.500085 > 1 bytes data, server => client 01:02:54.500161 '-' 01:02:54.505105 Received DATA (on stdin) 01:02:54.505191 > 1 bytes data, server => client 01:02:54.505262 ' ' 01:02:54.510216 Received DATA (on stdin) 01:02:54.510305 > 1 bytes data, server => client 01:02:54.510372 ' ' 01:02:54.515351 Received DATA (on stdin) 01:02:54.515447 > 1 bytes data, server => client 01:02:54.515519 ' ' 01:02:54.520461 Received DATA (on stdin) 01:02:54.520546 > 1 bytes data, server => client 01:02:54.520618 '1' 01:02:54.526549 Received DATA (on stdin) 01:02:54.526636 > 1 bytes data, server => client 01:02:54.526707 ' ' 01:02:54.530676 Received DATA (on stdin) 01:02:54.530762 > 1 bytes data, server => client 01:02:54.530834 '0' 01:02:54.535787 Received DATA (on stdin) 01:02:54.535874 > 1 bytes data, server => client 01:02:54.535947 ' ' 01:02:54.540904 Received DATA (on stdin) 01:02:54.540979 > 1 bytes data, server => client 01:02:54.541038 ' ' 01:02:54.546016 Received DATA (on stdin) 01:02:54.546091 > 1 bytes data, server => client 01:02:54.546151 ' ' 01:02:54.553214 Received DATA (on stdin) 01:02:54.553287 > 1 bytes data, server => client 01:02:54.553345 ' ' 01:02:54.556243 Received DATA (on stdin) 01:02:54.556314 > 1 bytes data, server => client 01:02:54.556370 ' ' 01:02:54.561352 Received DATA (on stdin) 01:02:54.561426 > 1 bytes data, server => client 01:02:54.561485 ' ' 01:02:54.566470 Received DATA (on stdin) 01:02:54.566564 > 1 bytes data, server => client 01:02:54.566627 ' ' 01:02:54.571579 Received DATA (on stdin) 01:02:54.571651 > 1 bytes data, server => client 01:02:54.571707 ' ' 01:02:54.576688 Received DATA (on stdin) 01:02:54.576760 > 1 bytes data, server => client 01:02:54.576816 '1' 01:02:54.581828 Received DATA (on stdin) 01:02:54.581923 > 1 bytes data, server => client 01:02:54.581983 ' ' 01:02:54.586974 Received DATA (on stdin) 01:02:54.587062 > 1 bytes data, server => client 01:02:54.587129 ' ' 01:02:54.592145 Received DATA (on stdin) 01:02:54.592274 > 1 bytes data, server => client 01:02:54.592339 ' ' 01:02:54.597255 Received DATA (on stdin) 01:02:54.597336 > 1 bytes data, server => client 01:02:54.597424 ' ' 01:02:54.602626 Received DATA (on stdin) 01:02:54.602702 > 1 bytes data, server => client 01:02:54.602797 ' ' 01:02:54.609887 Received DATA (on stdin) 01:02:54.609978 > 1 bytes data, server => client 01:02:54.610048 ' ' 01:02:54.613024 Received DATA (on stdin) 01:02:54.613095 > 1 bytes data, server => client 01:02:54.619105 ' ' 01:02:54.624373 Received DATA (on stdin) 01:02:54.624472 > 1 bytes data, server => client 01:02:54.624540 ' ' 01:02:54.629476 Received DATA (on stdin) 01:02:54.629559 > 1 bytes data, server => client 01:02:54.629647 ' ' 01:02:54.634868 Received DATA (on stdin) 01:02:54.634950 > 1 bytes data, server => client 01:02:54.635040 ' ' 01:02:54.640252 Received DATA (on stdin) 01:02:54.640346 > 1 bytes data, server => client 01:02:54.640449 ' ' 01:02:54.645684 Received DATA (on stdin) 01:02:54.645782 > 1 bytes data, server => client 01:02:54.645875 ' ' 01:02:54.651094 Received DATA (on stdin) 01:02:54.651189 > 1 bytes data, server => client 01:02:54.651302 ' ' 01:02:54.656408 Received DATA (on stdin) 01:02:54.656493 > 1 bytes data, server => client 01:02:54.659912 '3' 01:02:54.665069 Received DATA (on stdin) 01:02:54.665176 > 1 bytes data, server => client 01:02:54.665244 '5' 01:02:54.670200 Received DATA (on stdin) 01:02:54.670286 > 1 bytes data, server => client 01:02:54.670354 ' ' 01:02:54.675302 Received DATA (on stdin) 01:02:54.675388 > 1 bytes data, server => client 01:02:54.676563 'J' 01:02:54.681785 Received DATA (on stdin) 01:02:54.681861 > 1 bytes data, server => client 01:02:54.681946 'u' 01:02:54.687149 Received DATA (on stdin) 01:02:54.687226 > 1 bytes data, server => client 01:02:54.687326 'l' 01:02:54.692421 Received DATA (on stdin) 01:02:54.692492 > 1 bytes data, server => client 01:02:54.692574 ' ' 01:02:54.697939 Received DATA (on stdin) 01:02:54.698022 > 1 bytes data, server => client 01:02:54.698109 '1' 01:02:54.703284 Received DATA (on stdin) 01:02:54.703374 > 1 bytes data, server => client 01:02:54.703446 '6' 01:02:54.708397 Received DATA (on stdin) 01:02:54.708472 > 1 bytes data, server => client 01:02:54.708536 ' ' 01:02:54.716586 Received DATA (on stdin) 01:02:54.716667 > 1 bytes data, server => client 01:02:54.716732 ' ' 01:02:54.721693 Received DATA (on stdin) 01:02:54.721772 > 1 bytes data, server => client 01:02:54.721834 '1' 01:02:54.726802 Received DATA (on stdin) 01:02:54.726882 > 1 bytes data, server => client 01:02:54.726946 '9' 01:02:54.733217 Received DATA (on stdin) 01:02:54.733303 > 1 bytes data, server => client 01:02:54.733370 '9' 01:02:54.737010 Received DATA (on stdin) 01:02:54.737094 > 1 bytes data, server => client 01:02:54.737160 '6' 01:02:54.742119 Received DATA (on stdin) 01:02:54.742197 > 1 bytes data, server => client 01:02:54.742261 ' ' 01:02:54.747227 Received DATA (on stdin) 01:02:54.747309 > 1 bytes data, server => client 01:02:54.747377 'R' 01:02:54.752337 Received DATA (on stdin) 01:02:54.752418 > 1 bytes data, server => client 01:02:54.752481 'E' 01:02:54.757450 Received DATA (on stdin) 01:02:54.757535 > 1 bytes data, server => client 01:02:54.757601 'A' 01:02:54.763215 Received DATA (on stdin) 01:02:54.763297 > 1 bytes data, server => client 01:02:54.763360 'D' 01:02:54.767689 Received DATA (on stdin) 01:02:54.767772 > 1 bytes data, server => client 01:02:54.767844 'M' 01:02:54.772789 Received DATA (on stdin) 01:02:54.772873 > 1 bytes data, server => client 01:02:54.772939 'E' 01:02:54.779908 Received DATA (on stdin) 01:02:54.779995 > 1 bytes data, server => client 01:02:54.780061 '\r' 01:02:54.783007 Received DATA (on stdin) 01:02:54.783078 > 1 bytes data, server => client 01:02:54.783141 '\n' 01:02:54.788827 Received DATA (on stdin) 01:02:54.788915 > 1 bytes data, server => client 01:02:54.788987 'l' 01:02:54.793944 Received DATA (on stdin) 01:02:54.794029 > 1 bytes data, server => client 01:02:54.794094 'r' 01:02:54.799052 Received DATA (on stdin) 01:02:54.799133 > 1 bytes data, server => client 01:02:54.799197 'w' 01:02:54.804160 Received DATA (on stdin) 01:02:54.804238 > 1 bytes data, server => client 01:02:54.804311 'x' 01:02:54.809271 Received DATA (on stdin) 01:02:54.809349 > 1 bytes data, server => client 01:02:54.809411 'r' 01:02:54.814384 Received DATA (on stdin) 01:02:54.814481 > 1 bytes data, server => client 01:02:54.814546 'w' 01:02:54.819497 Received DATA (on stdin) 01:02:54.819573 > 1 bytes data, server => client 01:02:54.819637 'x' 01:02:54.826548 Received DATA (on stdin) 01:02:54.826631 > 1 bytes data, server => client 01:02:54.826706 'r' 01:02:54.829713 Received DATA (on stdin) 01:02:54.829788 > 1 bytes data, server => client 01:02:54.829852 'w' 01:02:54.834824 Received DATA (on stdin) 01:02:54.834906 > 1 bytes data, server => client 01:02:54.834970 'x' 01:02:54.839916 Received DATA (on stdin) 01:02:54.839996 > 1 bytes data, server => client 01:02:54.840068 ' ' 01:02:54.845027 Received DATA (on stdin) 01:02:54.845110 > 1 bytes data, server => client 01:02:54.845175 ' ' 01:02:54.850139 Received DATA (on stdin) 01:02:54.850218 > 1 bytes data, server => client 01:02:54.850282 ' ' 01:02:54.855252 Received DATA (on stdin) 01:02:54.855336 > 1 bytes data, server => client 01:02:54.855402 '1' 01:02:54.860386 Received DATA (on stdin) 01:02:54.860480 > 1 bytes data, server => client 01:02:54.860547 ' ' 01:02:54.865523 Received DATA (on stdin) 01:02:54.865624 > 1 bytes data, server => client 01:02:54.865690 '0' 01:02:54.870677 Received DATA (on stdin) 01:02:54.870772 > 1 bytes data, server => client 01:02:54.870833 ' ' 01:02:54.875803 Received DATA (on stdin) 01:02:54.875887 > 1 bytes data, server => client 01:02:54.875944 ' ' 01:02:54.880924 Received DATA (on stdin) 01:02:54.881015 > 1 bytes data, server => client 01:02:54.881074 ' ' 01:02:54.886048 Received DATA (on stdin) 01:02:54.886132 > 1 bytes data, server => client 01:02:54.886194 ' ' 01:02:54.891183 Received DATA (on stdin) 01:02:54.891280 > 1 bytes data, server => client 01:02:54.891340 ' ' 01:02:54.896329 Received DATA (on stdin) 01:02:54.896428 > 1 bytes data, server => client 01:02:54.896486 ' ' 01:02:54.903218 Received DATA (on stdin) 01:02:54.903316 > 1 bytes data, server => client 01:02:54.903376 ' ' 01:02:54.909975 Received DATA (on stdin) 01:02:54.910068 > 1 bytes data, server => client 01:02:54.910132 ' ' 01:02:54.915105 Received DATA (on stdin) 01:02:54.915195 > 1 bytes data, server => client 01:02:54.915254 '1' 01:02:54.920211 Received DATA (on stdin) 01:02:54.920293 > 1 bytes data, server => client 01:02:54.920373 ' ' 01:02:54.925577 Received DATA (on stdin) 01:02:54.925661 > 1 bytes data, server => client 01:02:54.925741 ' ' 01:02:54.930942 Received DATA (on stdin) 01:02:54.931018 > 1 bytes data, server => client 01:02:54.931100 ' ' 01:02:54.936321 Received DATA (on stdin) 01:02:54.936405 > 1 bytes data, server => client 01:02:54.936497 ' ' 01:02:54.941613 Received DATA (on stdin) 01:02:54.941695 > 1 bytes data, server => client 01:02:54.943247 ' ' 01:02:54.948352 Received DATA (on stdin) 01:02:54.948433 > 1 bytes data, server => client 01:02:54.948515 ' ' 01:02:54.953713 Received DATA (on stdin) 01:02:54.953791 > 1 bytes data, server => client 01:02:54.953871 ' ' 01:02:54.959082 Received DATA (on stdin) 01:02:54.959163 > 1 bytes data, server => client 01:02:54.959254 ' ' 01:02:54.964357 Received DATA (on stdin) 01:02:54.964435 > 1 bytes data, server => client 01:02:54.966578 ' ' 01:02:54.971704 Received DATA (on stdin) 01:02:54.971787 > 1 bytes data, server => client 01:02:54.971844 ' ' 01:02:54.976822 Received DATA (on stdin) 01:02:54.976899 > 1 bytes data, server => client 01:02:54.976956 ' ' 01:02:54.981921 Received DATA (on stdin) 01:02:54.981999 > 1 bytes data, server => client 01:02:54.982075 ' ' 01:02:54.989945 Received DATA (on stdin) 01:02:54.990044 > 1 bytes data, server => client 01:02:54.990103 ' ' 01:02:54.995076 Received DATA (on stdin) 01:02:54.995159 > 1 bytes data, server => client 01:02:54.995218 ' ' 01:02:55.000220 Received DATA (on stdin) 01:02:55.000308 > 1 bytes data, server => client 01:02:55.000368 '7' 01:02:55.005345 Received DATA (on stdin) 01:02:55.005425 > 1 bytes data, server => client 01:02:55.005482 ' ' 01:02:55.010467 Received DATA (on stdin) 01:02:55.010544 > 1 bytes data, server => client 01:02:55.010606 'D' 01:02:55.015603 Received DATA (on stdin) 01:02:55.015695 > 1 bytes data, server => client 01:02:55.015770 'e' 01:02:55.023218 Received DATA (on stdin) 01:02:55.023307 > 1 bytes data, server => client 01:02:55.023365 'c' 01:02:55.025855 Received DATA (on stdin) 01:02:55.025928 > 1 bytes data, server => client 01:02:55.025984 ' ' 01:02:55.031000 Received DATA (on stdin) 01:02:55.031085 > 1 bytes data, server => client 01:02:55.031145 ' ' 01:02:55.036142 Received DATA (on stdin) 01:02:55.036235 > 1 bytes data, server => client 01:02:55.036293 '9' 01:02:55.041279 Received DATA (on stdin) 01:02:55.041363 > 1 bytes data, server => client 01:02:55.041425 ' ' 01:02:55.046410 Received DATA (on stdin) 01:02:55.046491 > 1 bytes data, server => client 01:02:55.046567 ' ' 01:02:55.051537 Received DATA (on stdin) 01:02:55.051618 > 1 bytes data, server => client 01:02:55.051677 '1' 01:02:55.056658 Received DATA (on stdin) 01:02:55.056738 > 1 bytes data, server => client 01:02:55.056795 '9' 01:02:55.061789 Received DATA (on stdin) 01:02:55.061880 > 1 bytes data, server => client 01:02:55.061942 '9' 01:02:55.066914 Received DATA (on stdin) 01:02:55.066996 > 1 bytes data, server => client 01:02:55.067053 '9' 01:02:55.072040 Received DATA (on stdin) 01:02:55.072128 > 1 bytes data, server => client 01:02:55.072188 ' ' 01:02:55.077164 Received DATA (on stdin) 01:02:55.077246 > 1 bytes data, server => client 01:02:55.077304 'b' 01:02:55.083213 Received DATA (on stdin) 01:02:55.083299 > 1 bytes data, server => client 01:02:55.083356 'i' 01:02:55.087402 Received DATA (on stdin) 01:02:55.087483 > 1 bytes data, server => client 01:02:55.087542 'n' 01:02:55.092517 Received DATA (on stdin) 01:02:55.092593 > 1 bytes data, server => client 01:02:55.092649 ' ' 01:02:55.097637 Received DATA (on stdin) 01:02:55.097720 > 1 bytes data, server => client 01:02:55.097780 '-' 01:02:55.102771 Received DATA (on stdin) 01:02:55.102849 > 1 bytes data, server => client 01:02:55.102906 '>' 01:02:55.109884 Received DATA (on stdin) 01:02:55.109974 > 1 bytes data, server => client 01:02:55.110033 ' ' 01:02:55.112996 Received DATA (on stdin) 01:02:55.113066 > 1 bytes data, server => client 01:02:55.113122 'u' 01:02:55.118125 Received DATA (on stdin) 01:02:55.118213 > 1 bytes data, server => client 01:02:55.118271 's' 01:02:55.123256 Received DATA (on stdin) 01:02:55.123342 > 1 bytes data, server => client 01:02:55.123404 'r' 01:02:55.128381 Received DATA (on stdin) 01:02:55.128461 > 1 bytes data, server => client 01:02:55.128518 '/' 01:02:55.133509 Received DATA (on stdin) 01:02:55.133599 > 1 bytes data, server => client 01:02:55.133658 'b' 01:02:55.138635 Received DATA (on stdin) 01:02:55.138720 > 1 bytes data, server => client 01:02:55.138777 'i' 01:02:55.143757 Received DATA (on stdin) 01:02:55.143838 > 1 bytes data, server => client 01:02:55.143894 'n' 01:02:55.148880 Received DATA (on stdin) 01:02:55.148963 > 1 bytes data, server => client 01:02:55.149020 '\r' 01:02:55.154015 Received DATA (on stdin) 01:02:55.154100 > 1 bytes data, server => client 01:02:55.154157 '\n' 01:02:55.159811 Received DATA (on stdin) 01:02:55.159908 > 1 bytes data, server => client 01:02:55.159970 'd' 01:02:55.169887 Received DATA (on stdin) 01:02:55.170003 > 1 bytes data, server => client 01:02:55.170064 'r' 01:02:55.171726 Received DATA (on stdin) 01:02:55.171793 > 1 bytes data, server => client 01:02:55.171850 '-' 01:02:55.176855 Received DATA (on stdin) 01:02:55.176938 > 1 bytes data, server => client 01:02:55.176996 'x' 01:02:55.182018 Received DATA (on stdin) 01:02:55.182106 > 1 bytes data, server => client 01:02:55.182170 'r' 01:02:55.187140 Received DATA (on stdin) 01:02:55.187222 > 1 bytes data, server => client 01:02:55.187281 '-' 01:02:55.192265 Received DATA (on stdin) 01:02:55.192355 > 1 bytes data, server => client 01:02:55.192413 'x' 01:02:55.197398 Received DATA (on stdin) 01:02:55.197487 > 1 bytes data, server => client 01:02:55.197545 'r' 01:02:55.202519 Received DATA (on stdin) 01:02:55.202603 > 1 bytes data, server => client 01:02:55.202665 '-' 01:02:55.207641 Received DATA (on stdin) 01:02:55.207726 > 1 bytes data, server => client 01:02:55.207801 'x' 01:02:55.212763 Received DATA (on stdin) 01:02:55.212849 > 1 bytes data, server => client 01:02:55.212909 ' ' 01:02:55.217881 Received DATA (on stdin) 01:02:55.217956 > 1 bytes data, server => client 01:02:55.218012 ' ' 01:02:55.223011 Received DATA (on stdin) 01:02:55.223105 > 1 bytes data, server => client 01:02:55.223163 ' ' 01:02:55.228138 Received DATA (on stdin) 01:02:55.228221 > 1 bytes data, server => client 01:02:55.228279 '2' 01:02:55.233263 Received DATA (on stdin) 01:02:55.233340 > 1 bytes data, server => client 01:02:55.233397 ' ' 01:02:55.238394 Received DATA (on stdin) 01:02:55.238488 > 1 bytes data, server => client 01:02:55.238549 '0' 01:02:55.246550 Received DATA (on stdin) 01:02:55.246638 > 1 bytes data, server => client 01:02:55.246696 ' ' 01:02:55.248660 Received DATA (on stdin) 01:02:55.248732 > 1 bytes data, server => client 01:02:55.248787 ' ' 01:02:55.253790 Received DATA (on stdin) 01:02:55.253875 > 1 bytes data, server => client 01:02:55.253933 ' ' 01:02:55.258915 Received DATA (on stdin) 01:02:55.259000 > 1 bytes data, server => client 01:02:55.259059 ' ' 01:02:55.264039 Received DATA (on stdin) 01:02:55.264126 > 1 bytes data, server => client 01:02:55.264188 ' ' 01:02:55.269160 Received DATA (on stdin) 01:02:55.269246 > 1 bytes data, server => client 01:02:55.269304 ' ' 01:02:55.274301 Received DATA (on stdin) 01:02:55.274382 > 1 bytes data, server => client 01:02:55.274440 ' ' 01:02:55.279405 Received DATA (on stdin) 01:02:55.279485 > 1 bytes data, server => client 01:02:55.279542 ' ' 01:02:55.284525 Received DATA (on stdin) 01:02:55.284604 > 1 bytes data, server => client 01:02:55.284661 '1' 01:02:55.289646 Received DATA (on stdin) 01:02:55.289728 > 1 bytes data, server => client 01:02:55.289790 ' ' 01:02:55.296596 Received DATA (on stdin) 01:02:55.296692 > 1 bytes data, server => client 01:02:55.296750 ' ' 01:02:55.301726 Received DATA (on stdin) 01:02:55.301816 > 1 bytes data, server => client 01:02:55.301876 ' ' 01:02:55.306874 Received DATA (on stdin) 01:02:55.306976 > 1 bytes data, server => client 01:02:55.307034 ' ' 01:02:55.312004 Received DATA (on stdin) 01:02:55.312088 > 1 bytes data, server => client 01:02:55.312148 ' ' 01:02:55.319887 Received DATA (on stdin) 01:02:55.320000 > 1 bytes data, server => client 01:02:55.320060 ' ' 01:02:55.322275 Received DATA (on stdin) 01:02:55.322345 > 1 bytes data, server => client 01:02:55.322407 ' ' 01:02:55.327409 Received DATA (on stdin) 01:02:55.327504 > 1 bytes data, server => client 01:02:55.327562 ' ' 01:02:55.332552 Received DATA (on stdin) 01:02:55.332652 > 1 bytes data, server => client 01:02:55.332712 ' ' 01:02:55.337716 Received DATA (on stdin) 01:02:55.337821 > 1 bytes data, server => client 01:02:55.337880 ' ' 01:02:55.342865 Received DATA (on stdin) 01:02:55.342953 > 1 bytes data, server => client 01:02:55.343017 ' ' 01:02:55.348001 Received DATA (on stdin) 01:02:55.348085 > 1 bytes data, server => client 01:02:55.348142 ' ' 01:02:55.353166 Received DATA (on stdin) 01:02:55.353263 > 1 bytes data, server => client 01:02:55.353324 '5' 01:02:55.358307 Received DATA (on stdin) 01:02:55.358389 > 1 bytes data, server => client 01:02:55.358447 '1' 01:02:55.363446 Received DATA (on stdin) 01:02:55.363542 > 1 bytes data, server => client 01:02:55.363602 '2' 01:02:55.368575 Received DATA (on stdin) 01:02:55.368662 > 1 bytes data, server => client 01:02:55.368720 ' ' 01:02:55.373705 Received DATA (on stdin) 01:02:55.373791 > 1 bytes data, server => client 01:02:55.373849 'O' 01:02:55.379881 Received DATA (on stdin) 01:02:55.379963 > 1 bytes data, server => client 01:02:55.380020 'c' 01:02:55.383959 Received DATA (on stdin) 01:02:55.384036 > 1 bytes data, server => client 01:02:55.384093 't' 01:02:55.389078 Received DATA (on stdin) 01:02:55.389156 > 1 bytes data, server => client 01:02:55.389219 ' ' 01:02:55.394208 Received DATA (on stdin) 01:02:55.394292 > 1 bytes data, server => client 01:02:55.394348 ' ' 01:02:55.399375 Received DATA (on stdin) 01:02:55.399476 > 1 bytes data, server => client 01:02:55.399552 '1' 01:02:55.406560 Received DATA (on stdin) 01:02:55.406698 > 1 bytes data, server => client 01:02:55.406765 ' ' 01:02:55.409953 Received DATA (on stdin) 01:02:55.410037 > 1 bytes data, server => client 01:02:55.410124 ' ' 01:02:55.415340 Received DATA (on stdin) 01:02:55.415424 > 1 bytes data, server => client 01:02:55.415517 '1' 01:02:55.420735 Received DATA (on stdin) 01:02:55.420827 > 1 bytes data, server => client 01:02:55.420917 '9' 01:02:55.426122 Received DATA (on stdin) 01:02:55.426204 > 1 bytes data, server => client 01:02:55.426573 '9' 01:02:55.431696 Received DATA (on stdin) 01:02:55.431784 > 1 bytes data, server => client 01:02:55.431848 '7' 01:02:55.436819 Received DATA (on stdin) 01:02:55.436906 > 1 bytes data, server => client 01:02:55.436972 ' ' 01:02:55.443218 Received DATA (on stdin) 01:02:55.443312 > 1 bytes data, server => client 01:02:55.443376 'd' 01:02:55.447065 Received DATA (on stdin) 01:02:55.447148 > 1 bytes data, server => client 01:02:55.447219 'e' 01:02:55.453272 Received DATA (on stdin) 01:02:55.453362 > 1 bytes data, server => client 01:02:55.453427 'v' 01:02:55.458405 Received DATA (on stdin) 01:02:55.458499 > 1 bytes data, server => client 01:02:55.458572 '\r' 01:02:55.463512 Received DATA (on stdin) 01:02:55.463603 > 1 bytes data, server => client 01:02:55.463674 '\n' 01:02:55.469308 Received DATA (on stdin) 01:02:55.469398 > 1 bytes data, server => client 01:02:55.469465 'd' 01:02:55.476549 Received DATA (on stdin) 01:02:55.476639 > 1 bytes data, server => client 01:02:55.476703 'r' 01:02:55.479543 Received DATA (on stdin) 01:02:55.479612 > 1 bytes data, server => client 01:02:55.479688 'w' 01:02:55.486610 Received DATA (on stdin) 01:02:55.486696 > 1 bytes data, server => client 01:02:55.486757 'x' 01:02:55.491702 Received DATA (on stdin) 01:02:55.491778 > 1 bytes data, server => client 01:02:55.491855 'r' 01:02:55.497038 Received DATA (on stdin) 01:02:55.497113 > 1 bytes data, server => client 01:02:55.497204 'w' 01:02:55.502318 Received DATA (on stdin) 01:02:55.502402 > 1 bytes data, server => client 01:02:55.503245 'x' 01:02:55.508366 Received DATA (on stdin) 01:02:55.508454 > 1 bytes data, server => client 01:02:55.508537 'r' 01:02:55.513747 Received DATA (on stdin) 01:02:55.513832 > 1 bytes data, server => client 01:02:55.513918 'w' 01:02:55.521693 Received DATA (on stdin) 01:02:55.521779 > 1 bytes data, server => client 01:02:55.521838 'x' 01:02:55.526816 Received DATA (on stdin) 01:02:55.526895 > 1 bytes data, server => client 01:02:55.526952 ' ' 01:02:55.531931 Received DATA (on stdin) 01:02:55.532006 > 1 bytes data, server => client 01:02:55.532063 ' ' 01:02:55.537027 Received DATA (on stdin) 01:02:55.537102 > 1 bytes data, server => client 01:02:55.537179 ' ' 01:02:55.542363 Received DATA (on stdin) 01:02:55.542437 > 1 bytes data, server => client 01:02:55.542515 '2' 01:02:55.547702 Received DATA (on stdin) 01:02:55.547782 > 1 bytes data, server => client 01:02:55.547869 ' ' 01:02:55.553058 Received DATA (on stdin) 01:02:55.553132 > 1 bytes data, server => client 01:02:55.553218 '9' 01:02:55.558406 Received DATA (on stdin) 01:02:55.558488 > 1 bytes data, server => client 01:02:55.558578 '8' === File too long: 493 lines omitted here 01:02:56.468644 > 1 bytes data, server => client 01:02:56.468705 ' ' 01:02:56.473676 Received DATA (on stdin) 01:02:56.473752 > 1 bytes data, server => client 01:02:56.473813 'p' 01:02:56.479878 Received DATA (on stdin) 01:02:56.479956 > 1 bytes data, server => client 01:02:56.480021 'u' 01:02:56.483900 Received DATA (on stdin) 01:02:56.483977 > 1 bytes data, server => client 01:02:56.484039 'b' 01:02:56.489014 Received DATA (on stdin) 01:02:56.489093 > 1 bytes data, server => client 01:02:56.489155 '\r' 01:02:56.494129 Received DATA (on stdin) 01:02:56.494205 > 1 bytes data, server => client 01:02:56.494267 '\n' 01:02:56.499932 Received DATA (on stdin) 01:02:56.500012 > 1 bytes data, server => client 01:02:56.500073 'd' 01:02:56.506544 Received DATA (on stdin) 01:02:56.506637 > 1 bytes data, server => client 01:02:56.506699 'r' 01:02:56.510156 Received DATA (on stdin) 01:02:56.510239 > 1 bytes data, server => client 01:02:56.510304 '-' 01:02:56.515272 Received DATA (on stdin) 01:02:56.515351 > 1 bytes data, server => client 01:02:56.515413 'x' 01:02:56.520384 Received DATA (on stdin) 01:02:56.520461 > 1 bytes data, server => client 01:02:56.520523 'r' 01:02:56.525493 Received DATA (on stdin) 01:02:56.525571 > 1 bytes data, server => client 01:02:56.525633 '-' 01:02:56.530602 Received DATA (on stdin) 01:02:56.530677 > 1 bytes data, server => client 01:02:56.530739 'x' 01:02:56.535712 Received DATA (on stdin) 01:02:56.535787 > 1 bytes data, server => client 01:02:56.535848 'r' 01:02:56.546477 Received DATA (on stdin) 01:02:56.546570 > 1 bytes data, server => client 01:02:56.546633 '-' 01:02:56.548358 Received DATA (on stdin) 01:02:56.548430 > 1 bytes data, server => client 01:02:56.548490 'x' 01:02:56.553466 Received DATA (on stdin) 01:02:56.553544 > 1 bytes data, server => client 01:02:56.553605 ' ' 01:02:56.558575 Received DATA (on stdin) 01:02:56.558650 > 1 bytes data, server => client 01:02:56.558711 ' ' 01:02:56.563687 Received DATA (on stdin) 01:02:56.563765 > 1 bytes data, server => client 01:02:56.563829 ' ' 01:02:56.568814 Received DATA (on stdin) 01:02:56.568892 > 1 bytes data, server => client 01:02:56.568952 '5' 01:02:56.573939 Received DATA (on stdin) 01:02:56.574014 > 1 bytes data, server => client 01:02:56.574076 ' ' 01:02:56.579041 Received DATA (on stdin) 01:02:56.579116 > 1 bytes data, server => client 01:02:56.579177 '0' 01:02:56.584150 Received DATA (on stdin) 01:02:56.584225 > 1 bytes data, server => client 01:02:56.584285 ' ' 01:02:56.589266 Received DATA (on stdin) 01:02:56.589346 > 1 bytes data, server => client 01:02:56.589407 ' ' 01:02:56.594375 Received DATA (on stdin) 01:02:56.594451 > 1 bytes data, server => client 01:02:56.594510 ' ' 01:02:56.599487 Received DATA (on stdin) 01:02:56.599564 > 1 bytes data, server => client 01:02:56.599624 ' ' 01:02:56.604598 Received DATA (on stdin) 01:02:56.604673 > 1 bytes data, server => client 01:02:56.604734 ' ' 01:02:56.609706 Received DATA (on stdin) 01:02:56.609783 > 1 bytes data, server => client 01:02:56.609845 ' ' 01:02:56.614819 Received DATA (on stdin) 01:02:56.614898 > 1 bytes data, server => client 01:02:56.614960 ' ' 01:02:56.623233 Received DATA (on stdin) 01:02:56.623342 > 1 bytes data, server => client 01:02:56.623405 ' ' 01:02:56.625043 Received DATA (on stdin) 01:02:56.625129 > 1 bytes data, server => client 01:02:56.625188 '1' 01:02:56.630163 Received DATA (on stdin) 01:02:56.630243 > 1 bytes data, server => client 01:02:56.630305 ' ' 01:02:56.635282 Received DATA (on stdin) 01:02:56.635358 > 1 bytes data, server => client 01:02:56.635419 ' ' 01:02:56.640397 Received DATA (on stdin) 01:02:56.640476 > 1 bytes data, server => client 01:02:56.640537 ' ' 01:02:56.645533 Received DATA (on stdin) 01:02:56.645618 > 1 bytes data, server => client 01:02:56.645679 ' ' 01:02:56.650635 Received DATA (on stdin) 01:02:56.650722 > 1 bytes data, server => client 01:02:56.650809 ' ' 01:02:56.656005 Received DATA (on stdin) 01:02:56.656084 > 1 bytes data, server => client 01:02:56.656172 ' ' 01:02:56.663287 Received DATA (on stdin) 01:02:56.663378 > 1 bytes data, server => client 01:02:56.663451 ' ' 01:02:56.668395 Received DATA (on stdin) 01:02:56.668475 > 1 bytes data, server => client 01:02:56.668543 ' ' 01:02:56.673484 Received DATA (on stdin) 01:02:56.673563 > 1 bytes data, server => client 01:02:56.673647 ' ' 01:02:56.678844 Received DATA (on stdin) 01:02:56.678930 > 1 bytes data, server => client 01:02:56.679019 ' ' 01:02:56.684213 Received DATA (on stdin) 01:02:56.684297 > 1 bytes data, server => client 01:02:56.684392 ' ' 01:02:56.689590 Received DATA (on stdin) 01:02:56.689672 > 1 bytes data, server => client 01:02:56.689756 ' ' 01:02:56.698352 Received DATA (on stdin) 01:02:56.698434 > 1 bytes data, server => client 01:02:56.698495 '5' 01:02:56.703465 Received DATA (on stdin) 01:02:56.703543 > 1 bytes data, server => client 01:02:56.703605 '1' 01:02:56.708576 Received DATA (on stdin) 01:02:56.708656 > 1 bytes data, server => client 01:02:56.708720 '2' 01:02:56.713663 Received DATA (on stdin) 01:02:56.713738 > 1 bytes data, server => client 01:02:56.713821 ' ' 01:02:56.719006 Received DATA (on stdin) 01:02:56.719077 > 1 bytes data, server => client 01:02:56.719166 'O' 01:02:56.724372 Received DATA (on stdin) 01:02:56.724447 > 1 bytes data, server => client 01:02:56.724531 'c' 01:02:56.729725 Received DATA (on stdin) 01:02:56.729801 > 1 bytes data, server => client 01:02:56.729890 't' 01:02:56.735089 Received DATA (on stdin) 01:02:56.735166 > 1 bytes data, server => client 01:02:56.735261 ' ' 01:02:56.740461 Received DATA (on stdin) 01:02:56.740539 > 1 bytes data, server => client 01:02:56.740644 ' ' 01:02:56.745736 Received DATA (on stdin) 01:02:56.745809 > 1 bytes data, server => client 01:02:56.746569 '1' 01:02:56.751669 Received DATA (on stdin) 01:02:56.751743 > 1 bytes data, server => client 01:02:56.751830 ' ' 01:02:56.757042 Received DATA (on stdin) 01:02:56.757123 > 1 bytes data, server => client 01:02:56.757207 ' ' 01:02:56.762406 Received DATA (on stdin) 01:02:56.762482 > 1 bytes data, server => client 01:02:56.762574 '1' 01:02:56.767690 Received DATA (on stdin) 01:02:56.767765 > 1 bytes data, server => client 01:02:56.767824 '9' 01:02:56.776545 Received DATA (on stdin) 01:02:56.776630 > 1 bytes data, server => client 01:02:56.776694 '9' 01:02:56.779945 Received DATA (on stdin) 01:02:56.780021 > 1 bytes data, server => client 01:02:56.780085 '7' 01:02:56.785040 Received DATA (on stdin) 01:02:56.785119 > 1 bytes data, server => client 01:02:56.785208 ' ' 01:02:56.790412 Received DATA (on stdin) 01:02:56.790488 > 1 bytes data, server => client 01:02:56.790572 'u' 01:02:56.795769 Received DATA (on stdin) 01:02:56.795846 > 1 bytes data, server => client 01:02:56.795937 's' 01:02:56.803268 Received DATA (on stdin) 01:02:56.803347 > 1 bytes data, server => client 01:02:56.803409 'r' 01:02:56.808360 Received DATA (on stdin) 01:02:56.808435 > 1 bytes data, server => client 01:02:56.808518 '\r' 01:02:56.813703 Received DATA (on stdin) 01:02:56.813782 > 1 bytes data, server => client 01:02:56.813866 '\n' 01:02:56.820082 Received DISC (on stdin) 01:02:56.820233 ====> Client forcibly disconnected 01:02:56.820433 disconnected, no socket to read on 01:02:56.823678 Received QUIT (on stdin) 01:02:56.823765 quits 01:02:56.824357 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd SLOWDOWN Testnum 251 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPRT |1|127.0.0.1|44171| TYPE A LIST QUIT === End of file server.input === Start of file stderr251 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 88 0 88 0 0 14 0 --:--:-- 0:00:05 --:--:-- 18 100 298 0 298 0 0 42 0 --:--:-- 0:00:06 --:--:-- 61 100 481 0 481 0 0 60 0 --:--:-- 0:00:07 --:--:-- 99 100 623 0 623 0 0 69 0 --:--:-- 0:00:08 --:--:-- 143 100 623 0 623 0 0 67 0 --:--:-- 0:00:09 --:--:-- 149 === End of file stderr251 === Start of file trace251 01:02:49.143893 * Trying 127.0.0.1:37331... 01:02:49.983186 * Established connection to 127.0.0.1 (127.0.0.1 port 37331) from 127.0.0.1 port 47414 01:02:50.205853 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:02:50.542688 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:02:50.567013 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:02:50.572622 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:02:50.637407 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:02:50.724914 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:02:50.888785 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:02:50.909698 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:02:51.070851 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:02:51.091294 => Send header, 5 bytes (0x5) 0000: PWD 01:02:51.244764 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:02:51.279591 * Entry path is '/' 01:02:51.364141 * Request has same path as previous transfer 01:02:51.947695 => Send header, 26 bytes (0x1a) 0000: EPRT |1|127.0.0.1|44171| 01:02:52.230464 <= Recv header, 50 bytes (0x32) 0000: 200 Thanks for dropping by. We contact you later 01:02:52.270074 * Connect data stream actively 01:02:52.353040 * Ready to accept data connection from server 01:02:52.367911 * Connection accepted from server 01:02:52.447808 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 37644) from 127.0.0.1 port 44171 01:02:52.481232 => Send header, 8 bytes (0x8) 0000: TYPE A 01:02:52.661906 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:02:52.696777 => Send header, 6 bytes (0x6) 0000: LIST 01:02:52.843549 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 01:02:52.878736 * Maxdownload = -1 01:02:53.054075 <= Recv data, 24 bytes (0x18) 0000: total 20 000a: drwxr-xr-x 8 01:02:53.274999 <= Recv data, 48 bytes (0x30) 0000: 98 98 512 Oct 22 13:06 . 002b: drwxr 01:02:53.294482 <= Recv data, 5 bytes (0x5) 0000: -xr-x 01:02:53.300672 <= Recv data, 4 bytes (0x4) 0000: 8 01:02:53.307335 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.312612 <= Recv data, 1 bytes (0x1) 0000: 9 01:02:53.317890 <= Recv data, 1 bytes (0x1) 0000: 8 01:02:53.323177 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.328445 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.333719 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.338950 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.460011 <= Recv data, 18 bytes (0x12) 0000: 98 51 01:02:53.468589 <= Recv data, 7 bytes (0x7) 0000: 2 Oct 2 01:02:53.474615 <= Recv data, 2 bytes (0x2) 0000: 2 01:02:53.480009 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:53.485269 <= Recv data, 1 bytes (0x1) 0000: 3 01:02:53.490487 <= Recv data, 1 bytes (0x1) 0000: : 01:02:53.495737 <= Recv data, 1 bytes (0x1) 0000: 0 01:02:53.500968 <= Recv data, 1 bytes (0x1) 0000: 6 01:02:53.506202 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.511443 <= Recv data, 1 bytes (0x1) 0000: . 01:02:53.516723 <= Recv data, 1 bytes (0x1) 0000: . 01:02:53.529014 <= Recv data, 1 bytes (0x1) 0000: . 01:02:53.541658 <= Recv data, 2 bytes (0x2) 0000: .d 01:02:53.550547 <= Recv data, 3 bytes (0x3) 0000: rwx 01:02:53.557119 <= Recv data, 1 bytes (0x1) 0000: r 01:02:53.562437 <= Recv data, 2 bytes (0x2) 0000: -x 01:02:53.567842 <= Recv data, 1 bytes (0x1) 0000: r 01:02:53.573098 <= Recv data, 1 bytes (0x1) 0000: - 01:02:53.578309 <= Recv data, 1 bytes (0x1) 0000: x 01:02:53.583538 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.588745 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.593977 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.602082 <= Recv data, 1 bytes (0x1) 0000: 2 01:02:53.607449 <= Recv data, 2 bytes (0x2) 0000: 9 01:02:53.612806 <= Recv data, 1 bytes (0x1) 0000: 8 01:02:53.618047 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.623259 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.628495 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.633707 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.638941 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.644230 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.649388 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.654536 <= Recv data, 1 bytes (0x1) 0000: 9 01:02:53.661050 <= Recv data, 1 bytes (0x1) 0000: 8 01:02:53.666273 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.671402 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.676522 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.681652 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.686766 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.691899 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.697034 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.702178 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.707294 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.712428 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.718959 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.724310 <= Recv data, 1 bytes (0x1) 0000: 5 01:02:53.729485 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:53.734716 <= Recv data, 1 bytes (0x1) 0000: 2 01:02:53.740100 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.745507 <= Recv data, 2 bytes (0x2) 0000: Ma 01:02:53.750934 <= Recv data, 1 bytes (0x1) 0000: y 01:02:53.756151 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.761216 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.766245 <= Recv data, 1 bytes (0x1) 0000: 2 01:02:53.771289 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.777880 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.783145 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:53.788492 <= Recv data, 1 bytes (0x1) 0000: 9 01:02:53.793734 <= Recv data, 1 bytes (0x1) 0000: 9 01:02:53.798970 <= Recv data, 1 bytes (0x1) 0000: 6 01:02:53.804187 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.809460 <= Recv data, 1 bytes (0x1) 0000: . 01:02:53.814896 <= Recv data, 1 bytes (0x1) 0000: N 01:02:53.820319 <= Recv data, 1 bytes (0x1) 0000: e 01:02:53.825813 <= Recv data, 1 bytes (0x1) 0000: X 01:02:53.831132 <= Recv data, 1 bytes (0x1) 0000: T 01:02:53.837998 <= Recv data, 1 bytes (0x1) 0000: . 01:02:53.843627 <= Recv data, 1 bytes (0x1) 0000: . 01:02:53.849056 <= Recv data, 1 bytes (0x1) 0000: - 01:02:53.854352 <= Recv data, 1 bytes (0x1) 0000: r 01:02:53.859619 <= Recv data, 1 bytes (0x1) 0000: - 01:02:53.864856 <= Recv data, 2 bytes (0x2) 0000: -r 01:02:53.870183 <= Recv data, 1 bytes (0x1) 0000: - 01:02:53.875403 <= Recv data, 1 bytes (0x1) 0000: - 01:02:53.880539 <= Recv data, 1 bytes (0x1) 0000: r 01:02:53.885791 <= Recv data, 1 bytes (0x1) 0000: - 01:02:53.891040 <= Recv data, 1 bytes (0x1) 0000: - 01:02:53.897795 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.903313 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.908635 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.913868 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:53.919115 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.924366 <= Recv data, 1 bytes (0x1) 0000: 0 01:02:53.929560 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.934808 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.940053 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.945329 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.950555 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.957326 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.962684 <= Recv data, 2 bytes (0x2) 0000: 01:02:53.968118 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:53.973471 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.979044 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.984556 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.989885 <= Recv data, 1 bytes (0x1) 0000: 01:02:53.995252 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.000550 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.007393 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.012836 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.019781 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.025822 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.031840 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.038026 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.043448 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.048989 <= Recv data, 1 bytes (0x1) 0000: 3 01:02:54.054614 <= Recv data, 1 bytes (0x1) 0000: 5 01:02:54.060014 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.065443 <= Recv data, 1 bytes (0x1) 0000: J 01:02:54.070731 <= Recv data, 1 bytes (0x1) 0000: u 01:02:54.076113 <= Recv data, 1 bytes (0x1) 0000: l 01:02:54.083004 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.088343 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:54.093619 <= Recv data, 1 bytes (0x1) 0000: 6 01:02:54.098977 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.104229 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.109476 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:54.114754 <= Recv data, 1 bytes (0x1) 0000: 9 01:02:54.120040 <= Recv data, 1 bytes (0x1) 0000: 9 01:02:54.125321 <= Recv data, 1 bytes (0x1) 0000: 6 01:02:54.130646 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.135926 <= Recv data, 1 bytes (0x1) 0000: R 01:02:54.142820 <= Recv data, 1 bytes (0x1) 0000: E 01:02:54.148258 <= Recv data, 1 bytes (0x1) 0000: A 01:02:54.153612 <= Recv data, 1 bytes (0x1) 0000: D 01:02:54.158905 <= Recv data, 1 bytes (0x1) 0000: M 01:02:54.164154 <= Recv data, 1 bytes (0x1) 0000: E 01:02:54.169474 <= Recv data, 1 bytes (0x1) 0000: . 01:02:54.174678 <= Recv data, 1 bytes (0x1) 0000: . 01:02:54.179960 <= Recv data, 1 bytes (0x1) 0000: l 01:02:54.185231 <= Recv data, 1 bytes (0x1) 0000: r 01:02:54.190523 <= Recv data, 1 bytes (0x1) 0000: w 01:02:54.195854 <= Recv data, 1 bytes (0x1) 0000: x 01:02:54.202651 <= Recv data, 1 bytes (0x1) 0000: r 01:02:54.207977 <= Recv data, 1 bytes (0x1) 0000: w 01:02:54.213337 <= Recv data, 1 bytes (0x1) 0000: x 01:02:54.221058 <= Recv data, 1 bytes (0x1) 0000: r 01:02:54.226473 <= Recv data, 2 bytes (0x2) 0000: wx 01:02:54.231890 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.237226 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.242597 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.248009 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:54.253472 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.258959 <= Recv data, 1 bytes (0x1) 0000: 0 01:02:54.265889 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.271416 <= Recv data, 2 bytes (0x2) 0000: 01:02:54.276987 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.282441 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.287871 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.293331 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.298778 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.304116 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:54.309486 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.314902 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.320245 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.327289 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.332806 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.338182 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.343507 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.348912 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.354314 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.359630 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.365007 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.370294 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.375646 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.380994 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.388086 <= Recv data, 1 bytes (0x1) 0000: 7 01:02:54.393580 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.398997 <= Recv data, 1 bytes (0x1) 0000: D 01:02:54.404401 <= Recv data, 1 bytes (0x1) 0000: e 01:02:54.409739 <= Recv data, 1 bytes (0x1) 0000: c 01:02:54.415186 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.420593 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.426233 <= Recv data, 1 bytes (0x1) 0000: 9 01:02:54.431847 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.437219 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.442571 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:54.459160 <= Recv data, 1 bytes (0x1) 0000: 9 01:02:54.464709 <= Recv data, 3 bytes (0x3) 0000: 99 01:02:54.470251 <= Recv data, 1 bytes (0x1) 0000: b 01:02:54.475597 <= Recv data, 1 bytes (0x1) 0000: i 01:02:54.480905 <= Recv data, 1 bytes (0x1) 0000: n 01:02:54.486237 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.491559 <= Recv data, 1 bytes (0x1) 0000: - 01:02:54.496928 <= Recv data, 1 bytes (0x1) 0000: > 01:02:54.502308 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.507679 <= Recv data, 1 bytes (0x1) 0000: u 01:02:54.513039 <= Recv data, 1 bytes (0x1) 0000: s 01:02:54.519878 <= Recv data, 1 bytes (0x1) 0000: r 01:02:54.525332 <= Recv data, 2 bytes (0x2) 0000: /b 01:02:54.530740 <= Recv data, 1 bytes (0x1) 0000: i 01:02:54.536110 <= Recv data, 1 bytes (0x1) 0000: n 01:02:54.541501 <= Recv data, 1 bytes (0x1) 0000: . 01:02:54.546706 <= Recv data, 1 bytes (0x1) 0000: . 01:02:54.552015 <= Recv data, 1 bytes (0x1) 0000: d 01:02:54.558674 <= Recv data, 1 bytes (0x1) 0000: r 01:02:54.564099 <= Recv data, 1 bytes (0x1) 0000: - 01:02:54.569488 <= Recv data, 1 bytes (0x1) 0000: x 01:02:54.574777 <= Recv data, 1 bytes (0x1) 0000: r 01:02:54.581641 <= Recv data, 1 bytes (0x1) 0000: - 01:02:54.587201 <= Recv data, 1 bytes (0x1) 0000: x 01:02:54.592584 <= Recv data, 1 bytes (0x1) 0000: r 01:02:54.597868 <= Recv data, 2 bytes (0x2) 0000: -x 01:02:54.603374 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.608792 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.614242 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.619546 <= Recv data, 1 bytes (0x1) 0000: 2 01:02:54.624944 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.630341 <= Recv data, 1 bytes (0x1) 0000: 0 01:02:54.635708 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.642659 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.648151 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.653531 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.658944 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.664322 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.669617 <= Recv data, 2 bytes (0x2) 0000: 01:02:54.675083 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:54.680419 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.685757 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.691139 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.696620 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.703669 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.709225 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.714618 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.720089 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.725812 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.731357 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.736773 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.742153 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.747629 <= Recv data, 1 bytes (0x1) 0000: 5 01:02:54.753164 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:54.758698 <= Recv data, 1 bytes (0x1) 0000: 2 01:02:54.765624 <= Recv data, 2 bytes (0x2) 0000: O 01:02:54.771216 <= Recv data, 1 bytes (0x1) 0000: c 01:02:54.776522 <= Recv data, 1 bytes (0x1) 0000: t 01:02:54.782356 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.788672 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.795655 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:54.801230 <= Recv data, 2 bytes (0x2) 0000: 01:02:54.807024 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:54.812650 <= Recv data, 1 bytes (0x1) 0000: 9 01:02:54.818428 <= Recv data, 1 bytes (0x1) 0000: 9 01:02:54.823917 <= Recv data, 1 bytes (0x1) 0000: 7 01:02:54.831012 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.836593 <= Recv data, 1 bytes (0x1) 0000: d 01:02:54.842079 <= Recv data, 1 bytes (0x1) 0000: e 01:02:54.847517 <= Recv data, 1 bytes (0x1) 0000: v 01:02:54.852946 <= Recv data, 1 bytes (0x1) 0000: . 01:02:54.858299 <= Recv data, 1 bytes (0x1) 0000: . 01:02:54.864107 <= Recv data, 1 bytes (0x1) 0000: d 01:02:54.869649 <= Recv data, 1 bytes (0x1) 0000: r 01:02:54.875087 <= Recv data, 1 bytes (0x1) 0000: w 01:02:54.880493 <= Recv data, 1 bytes (0x1) 0000: x 01:02:54.885854 <= Recv data, 1 bytes (0x1) 0000: r 01:02:54.892675 <= Recv data, 1 bytes (0x1) 0000: w 01:02:54.898164 <= Recv data, 1 bytes (0x1) 0000: x 01:02:54.903449 <= Recv data, 1 bytes (0x1) 0000: r 01:02:54.908716 <= Recv data, 1 bytes (0x1) 0000: w 01:02:54.914077 <= Recv data, 1 bytes (0x1) 0000: x 01:02:54.919331 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.924546 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.929712 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.934877 <= Recv data, 1 bytes (0x1) 0000: 2 01:02:54.940035 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.945198 <= Recv data, 1 bytes (0x1) 0000: 9 01:02:54.951799 <= Recv data, 1 bytes (0x1) 0000: 8 01:02:54.957096 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.962307 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.967487 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.972646 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.977853 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.982973 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.988116 <= Recv data, 1 bytes (0x1) 0000: 01:02:54.993281 <= Recv data, 1 bytes (0x1) 0000: 9 01:02:54.998513 <= Recv data, 1 bytes (0x1) 0000: 8 01:02:55.003858 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.012070 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.021427 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.030726 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.036248 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.041516 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.046704 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.051882 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.057068 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.062270 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.067444 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.072587 <= Recv data, 1 bytes (0x1) 0000: 5 01:02:55.079244 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:55.084644 <= Recv data, 1 bytes (0x1) 0000: 2 01:02:55.089850 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.095055 <= Recv data, 1 bytes (0x1) 0000: M 01:02:55.100248 <= Recv data, 1 bytes (0x1) 0000: a 01:02:55.105460 <= Recv data, 1 bytes (0x1) 0000: y 01:02:55.110676 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.115915 <= Recv data, 1 bytes (0x1) 0000: 2 01:02:55.121127 <= Recv data, 1 bytes (0x1) 0000: 9 01:02:55.126303 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.131485 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:55.138181 <= Recv data, 1 bytes (0x1) 0000: 6 01:02:55.143717 <= Recv data, 1 bytes (0x1) 0000: : 01:02:55.149113 <= Recv data, 1 bytes (0x1) 0000: 0 01:02:55.154475 <= Recv data, 1 bytes (0x1) 0000: 4 01:02:55.159752 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.165008 <= Recv data, 1 bytes (0x1) 0000: d 01:02:55.170226 <= Recv data, 1 bytes (0x1) 0000: o 01:02:55.175423 <= Recv data, 1 bytes (0x1) 0000: w 01:02:55.180601 <= Recv data, 1 bytes (0x1) 0000: n 01:02:55.185810 <= Recv data, 1 bytes (0x1) 0000: l 01:02:55.191009 <= Recv data, 1 bytes (0x1) 0000: o 01:02:55.197906 <= Recv data, 1 bytes (0x1) 0000: a 01:02:55.203125 <= Recv data, 1 bytes (0x1) 0000: d 01:02:55.208262 <= Recv data, 1 bytes (0x1) 0000: . 01:02:55.213370 <= Recv data, 1 bytes (0x1) 0000: h 01:02:55.221001 <= Recv data, 1 bytes (0x1) 0000: t 01:02:55.226208 <= Recv data, 1 bytes (0x1) 0000: m 01:02:55.231373 <= Recv data, 1 bytes (0x1) 0000: l 01:02:55.237051 <= Recv data, 1 bytes (0x1) 0000: . 01:02:55.242327 <= Recv data, 1 bytes (0x1) 0000: . 01:02:55.247834 <= Recv data, 1 bytes (0x1) 0000: d 01:02:55.253331 <= Recv data, 1 bytes (0x1) 0000: r 01:02:55.260209 <= Recv data, 1 bytes (0x1) 0000: - 01:02:55.265730 <= Recv data, 1 bytes (0x1) 0000: x 01:02:55.271041 <= Recv data, 1 bytes (0x1) 0000: r 01:02:55.276344 <= Recv data, 1 bytes (0x1) 0000: - 01:02:55.281626 <= Recv data, 1 bytes (0x1) 0000: x 01:02:55.286958 <= Recv data, 1 bytes (0x1) 0000: r 01:02:55.292281 <= Recv data, 1 bytes (0x1) 0000: - 01:02:55.297536 <= Recv data, 1 bytes (0x1) 0000: x 01:02:55.302854 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.308145 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.313455 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.320458 <= Recv data, 1 bytes (0x1) 0000: 2 01:02:55.326359 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.333594 <= Recv data, 1 bytes (0x1) 0000: 0 01:02:55.339310 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.345097 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.350670 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.356660 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.362227 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.367808 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.373299 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.378732 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.385735 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:55.391322 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.396724 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.402199 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.407693 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.413131 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.418615 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.424109 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.430588 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.435826 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.440963 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.455965 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.461314 <= Recv data, 2 bytes (0x2) 0000: 5 01:02:55.466566 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:55.471665 <= Recv data, 1 bytes (0x1) 0000: 2 01:02:55.476769 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.481895 <= Recv data, 1 bytes (0x1) 0000: N 01:02:55.487016 <= Recv data, 1 bytes (0x1) 0000: o 01:02:55.492089 <= Recv data, 1 bytes (0x1) 0000: v 01:02:55.497152 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.502249 <= Recv data, 1 bytes (0x1) 0000: 3 01:02:55.507439 <= Recv data, 1 bytes (0x1) 0000: 0 01:02:55.514008 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.519235 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.524323 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:55.529391 <= Recv data, 1 bytes (0x1) 0000: 9 01:02:55.534508 <= Recv data, 1 bytes (0x1) 0000: 9 01:02:55.539619 <= Recv data, 1 bytes (0x1) 0000: 5 01:02:55.544704 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.549778 <= Recv data, 1 bytes (0x1) 0000: e 01:02:55.554891 <= Recv data, 1 bytes (0x1) 0000: t 01:02:55.559971 <= Recv data, 1 bytes (0x1) 0000: c 01:02:55.565114 <= Recv data, 1 bytes (0x1) 0000: . 01:02:55.571575 <= Recv data, 1 bytes (0x1) 0000: . 01:02:55.603972 <= Recv data, 1 bytes (0x1) 0000: d 01:02:55.610185 <= Recv data, 5 bytes (0x5) 0000: rwxrw 01:02:55.615847 <= Recv data, 1 bytes (0x1) 0000: x 01:02:55.620993 <= Recv data, 1 bytes (0x1) 0000: r 01:02:55.626148 <= Recv data, 1 bytes (0x1) 0000: w 01:02:55.631307 <= Recv data, 1 bytes (0x1) 0000: x 01:02:55.636460 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.641570 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.646701 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.651822 <= Recv data, 1 bytes (0x1) 0000: 2 01:02:55.656928 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.664413 <= Recv data, 1 bytes (0x1) 0000: 9 01:02:55.669814 <= Recv data, 1 bytes (0x1) 0000: 8 01:02:55.675033 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.680201 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.685347 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.690468 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.695621 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.700745 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.705872 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.711008 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:55.716134 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.722715 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.727955 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.733084 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.738235 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.743374 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.748509 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.753618 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.758763 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.763930 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.769171 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.774314 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.780856 <= Recv data, 1 bytes (0x1) 0000: 5 01:02:55.786162 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:55.791435 <= Recv data, 1 bytes (0x1) 0000: 2 01:02:55.796760 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.802008 <= Recv data, 1 bytes (0x1) 0000: O 01:02:55.807193 <= Recv data, 1 bytes (0x1) 0000: c 01:02:55.812406 <= Recv data, 1 bytes (0x1) 0000: t 01:02:55.817606 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.822740 <= Recv data, 2 bytes (0x2) 0000: 30 01:02:55.828021 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.833267 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:55.840004 <= Recv data, 1 bytes (0x1) 0000: 4 01:02:55.845357 <= Recv data, 1 bytes (0x1) 0000: : 01:02:55.850557 <= Recv data, 1 bytes (0x1) 0000: 3 01:02:55.855758 <= Recv data, 1 bytes (0x1) 0000: 3 01:02:55.860981 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.866143 <= Recv data, 1 bytes (0x1) 0000: p 01:02:55.871342 <= Recv data, 1 bytes (0x1) 0000: u 01:02:55.876529 <= Recv data, 1 bytes (0x1) 0000: b 01:02:55.881695 <= Recv data, 1 bytes (0x1) 0000: . 01:02:55.886975 <= Recv data, 1 bytes (0x1) 0000: . 01:02:55.892159 <= Recv data, 1 bytes (0x1) 0000: d 01:02:55.898804 <= Recv data, 1 bytes (0x1) 0000: r 01:02:55.904096 <= Recv data, 1 bytes (0x1) 0000: - 01:02:55.909285 <= Recv data, 1 bytes (0x1) 0000: x 01:02:55.914465 <= Recv data, 1 bytes (0x1) 0000: r 01:02:55.919578 <= Recv data, 1 bytes (0x1) 0000: - 01:02:55.924780 <= Recv data, 1 bytes (0x1) 0000: x 01:02:55.929933 <= Recv data, 1 bytes (0x1) 0000: r 01:02:55.935135 <= Recv data, 1 bytes (0x1) 0000: - 01:02:55.940273 <= Recv data, 1 bytes (0x1) 0000: x 01:02:55.945430 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.950597 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.957193 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.962480 <= Recv data, 1 bytes (0x1) 0000: 5 01:02:55.967713 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.972844 <= Recv data, 1 bytes (0x1) 0000: 0 01:02:55.978026 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.983166 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.988349 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.993470 <= Recv data, 1 bytes (0x1) 0000: 01:02:55.998620 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.003927 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.010593 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.017338 <= Recv data, 2 bytes (0x2) 0000: 1 01:02:56.022762 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.028971 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.034712 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.039983 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.045185 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.050353 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.055524 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.060681 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.065890 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.071105 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.077751 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.0830CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind252 ../src/curl -q --output log/6/curl252.out --include --trace-ascii log/6/trace252 --trace-time -g "ftp://[::1]:36333/" > log/6/stdout252 2> log/6/stderr252 47 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.088238 <= Recv data, 1 bytes (0x1) 0000: 5 01:02:56.093416 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:56.098585 <= Recv data, 1 bytes (0x1) 0000: 2 01:02:56.103700 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.108837 <= Recv data, 1 bytes (0x1) 0000: O 01:02:56.113945 <= Recv data, 1 bytes (0x1) 0000: c 01:02:56.119093 <= Recv data, 1 bytes (0x1) 0000: t 01:02:56.124237 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.129355 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.135944 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:56.141314 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.146506 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.151678 <= Recv data, 1 bytes (0x1) 0000: 1 01:02:56.156863 <= Recv data, 1 bytes (0x1) 0000: 9 01:02:56.162050 <= Recv data, 1 bytes (0x1) 0000: 9 01:02:56.167224 <= Recv data, 1 bytes (0x1) 0000: 7 01:02:56.172355 <= Recv data, 1 bytes (0x1) 0000: 01:02:56.177544 <= Recv data, 1 bytes (0x1) 0000: u 01:02:56.182723 <= Recv data, 1 bytes (0x1) 0000: s 01:02:56.193969 <= Recv data, 1 bytes (0x1) 0000: r 01:02:56.199353 <= Recv data, 1 bytes (0x1) 0000: . 01:02:56.204439 <= Recv data, 1 bytes (0x1) 0000: . 01:02:56.364450 * abort upload 01:02:56.388053 <= Recv data, 0 bytes (0x0) 01:02:56.533260 * Remembering we are in dir "" 01:02:56.632960 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 01:02:56.910583 * Connection #0 to host 127.0.0.1:37331 left intact === End of file trace251 === Start of file valgrind251 ==226485== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind251 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/6/server/ftp_ipv6_server.pid" --logfile "log/6/ftp_ipv6_server.log" --logdir "log/6" --portfile "log/6/server/ftp_ipv6_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv6 --port 0 --addr "[::1]" PINGPONG runs on port 36333 (log/6/server/ftp_ipv6_server.port) RUN: FTP-IPv6 server is PID 226607 port 36333 * pid ftp-ipv6 => 226607 226607 test 0252...[FTP IPv6 dir list PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind252 ../src/curl -q --output log/6/curl252.out --include --trace-ascii log/6/trace252 --trace-time -g "ftp://[::1]:36333/" > log/6/stdout252 2> log/6/stderr252 valgrind ERROR ==226623== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 252 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind252 ../src/curl -q --output log/6/curl252.out --include --trace-ascii log/6/trace252 --trace-time -g "ftp://[::1]:36333/" > log/6/stdout252 2> log/6/stderr252 === End of file commands.log === Start of file curl252.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl252.out === Start of file ftp_ipv6_server.log 01:02:07.086018 FTP server listens on port IPv6/36333 01:02:07.089926 logged pid 226607 in log/6/server/ftp_ipv6_server.pid 01:02:07.090173 Awaiting input 01:02:55.014367 ====> Client connect 01:02:55.015181 FTPD: Getting commands from log/6/server.cmd 01:02:55.015598 FTPD: run test case number: 252 01:02:55.023990 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:02:56.237807 < "USER anonymous" 01:02:56.238235 > "331 We are happy you popped in![CR][LF]" 01:02:56.342778 < "PASS ftp@example.com" 01:02:56.343194 > "230 Welcome you silly person[CR][LF]" 01:02:56.448780 < "PWD" 01:02:56.449289 > "257 "/" is current directory[CR][LF]" 01:02:56.635906 < "EPSV" 01:02:56.636244 ====> Passive DATA channel requested by client 01:02:56.636392 DATA sockfilt for passive data channel starting... 01:02:56.719557 DATA sockfilt for passive data channel started (pid 227676) 01:02:56.722139 DATA sockfilt for passive data channel listens on port 37029 01:02:56.727643 > "229 Entering Passive Mode (|||37029|)[CR][LF]" 01:02:56.727885 Client has been notified that DATA conn will be accepted on port 37029 01:02:56.899557 Client connects to port 37029 01:02:56.900144 ====> Client established passive DATA connection on port 37029 01:02:57.006002 < "TYPE A" 01:02:57.006750 > "200 I modify TYPE as you wanted[CR][LF]" 01:02:57.059894 < "LIST" 01:02:57.060600 > "150 here comes a directory[CR][LF]" 01:02:57.060791 pass LIST data on data connection 01:02:57.063207 send total 20 as data 01:02:57.067770 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 01:02:57.068030 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 01:02:57.068235 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 01:02:57.068432 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 01:02:57.068634 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 01:02:57.068831 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 01:02:57.069033 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 01:02:57.069230 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 01:02:57.069428 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 01:02:57.069627 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 01:02:57.070807 =====> Closing passive DATA connection... 01:02:57.077737 Server disconnects passive DATA connection 01:02:57.078160 Server disconnected passive DATA connection 01:02:57.078366 DATA sockfilt for passive data channel quits (pid 227676) 01:02:57.082012 DATA sockfilt for passive data channel quit (pid 227676) 01:02:57.082184 =====> Closed passive DATA connection 01:02:57.082686 > "226 ASCII transfer complete[CR][LF]" 01:02:59.151839 < "QUIT" 01:02:59.154337 > "221 bye bye baby[CR][LF]" 01:02:59.280174 MAIN sockfilt said DISC 01:02:59.281177 ====> Client disconnected 01:02:59.281866 Awaiting input === End of file ftp_ipv6_server.log === Start of file ftp_ipv6_sockctrl.log 01:02:07.688439 Running IPv6 version 01:02:07.696210 Listening on port 36333 01:02:07.696700 Wrote pid 226611 to log/6/server/ftp_ipv6_sockctrl.pid 01:02:07.696972 Wrote port 36333 to log/6/server/ftp_ipv6_server.port 01:02:07.697749 Received PING (on stdin) 01:02:55.626663 ====> Client connect 01:02:55.639481 Received DATA (on stdin) 01:02:55.639843 > 160 bytes data, server => client 01:02:55.640249 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:02:55.640363 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:02:55.640470 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:02:56.850786 < 16 bytes data, client => server 01:02:56.850961 'USER anonymous\r\n' 01:02:56.853843 Received DATA (on stdin) 01:02:56.853926 > 33 bytes data, server => client 01:02:56.854011 '331 We are happy you popped in!\r\n' 01:02:56.957374 < 22 bytes data, client => server 01:02:56.957539 'PASS ftp@example.com\r\n' 01:02:56.958805 Received DATA (on stdin) 01:02:56.958880 > 30 bytes data, server => client 01:02:56.958962 '230 Welcome you silly person\r\n' 01:02:57.059928 < 5 bytes data, client => server 01:02:57.060091 'PWD\r\n' 01:02:57.064896 Received DATA (on stdin) 01:02:57.064991 > 30 bytes data, server => client 01:02:57.065075 '257 "/" is current directory\r\n' 01:02:57.259877 < 6 bytes data, client => server 01:02:57.260029 'EPSV\r\n' 01:02:57.338280 Received DATA (on stdin) 01:02:57.338417 > 39 bytes data, server => client 01:02:57.338555 '229 Entering Passive Mode (|||37029|)\r\n' 01:02:57.620463 < 8 bytes data, client => server 01:02:57.620648 'TYPE A\r\n' 01:02:57.622039 Received DATA (on stdin) 01:02:57.622127 > 33 bytes data, server => client 01:02:57.622235 '200 I modify TYPE as you wanted\r\n' 01:02:57.674405 < 6 bytes data, client => server 01:02:57.674576 'LIST\r\n' 01:02:57.675904 Received DATA (on stdin) 01:02:57.675982 > 28 bytes data, server => client 01:02:57.676085 '150 here comes a directory\r\n' 01:02:57.698073 Received DATA (on stdin) 01:02:57.698196 > 29 bytes data, server => client 01:02:57.698559 '226 ASCII transfer complete\r\n' 01:02:59.766322 < 6 bytes data, client => server 01:02:59.766513 'QUIT\r\n' 01:02:59.767854 Received DATA (on stdin) 01:02:59.767928 > 18 bytes data, server => client 01:02:59.770301 '221 bye bye baby\r\n' 01:02:59.895373 ====> Client disconnect 01:02:59.896374 Received ACKD (on stdin) === End of file ftp_ipv6_sockctrl.log === Start of file ftp_ipv6_sockdata.log 01:02:56.315645 Running IPv6 version 01:02:56.333583 Listening on port 37029 01:02:56.334076 Wrote pid 227676 to log/6/server/ftp_ipv6_sockdata.pid 01:02:56.334844 Received PING (on stdin) 01:02:56.336990 Received PORT (on stdin) 01:02:56.514911 ====> Client connect 01:02:56.679107 Received DATA (on stdin) 01:02:56.679458 > 10 bytes data, server => client 01:02:56.686781 'total 20\r\n' 01:02:56.687061 Received DATA (on stdin) 01:02:56.687125 > 57 bytes data, server => client 01:02:56.687220 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 01:02:56.687310 Received DATA (on stdin) 01:02:56.687371 > 58 bytes data, server => client 01:02:56.687463 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 01:02:56.687538 Received DATA (on stdin) 01:02:56.687595 > 61 bytes data, server => client 01:02:56.687702 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 01:02:56.687769 '\n' 01:02:56.687845 Received DATA (on stdin) 01:02:56.687902 > 62 bytes data, server => client 01:02:56.687995 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 01:02:56.688050 '\n' 01:02:56.688123 Received DATA (on stdin) 01:02:56.688181 > 70 bytes data, server => client 01:02:56.688274 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 01:02:56.688332 'usr/bin\r\n' 01:02:56.688404 Received DATA (on stdin) 01:02:56.688462 > 59 bytes data, server => client 01:02:56.688554 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 01:02:56.688628 Received DATA (on stdin) 01:02:56.688685 > 69 bytes data, server => client 01:02:56.688778 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 01:02:56.688838 'd.html\r\n' 01:02:56.688911 Received DATA (on stdin) 01:02:56.688968 > 59 bytes data, server => client 01:02:56.689060 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 01:02:56.689133 Received DATA (on stdin) 01:02:56.689191 > 59 bytes data, server => client 01:02:56.689284 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 01:02:56.689358 Received DATA (on stdin) 01:02:56.689415 > 59 bytes data, server => client 01:02:56.689506 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 01:02:56.693610 Received DISC (on stdin) 01:02:56.694480 ====> Client forcibly disconnected 01:02:56.694641 Received QUIT (on stdin) 01:02:56.694709 quits 01:02:56.695194 ============> sockfilt quits === End of file ftp_ipv6_sockdata.log === Start of file server.cmd Testnum 252 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE A LIST QUIT === End of file server.input === Start of file stderr252 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 623 0 623 0 0 127 0 --:--:-- 0:00:04 --:--:-- 166 100 623 0 623 0 0 118 0 --:--:-- 0:00:05 --:--:-- 151 === End of file stderr252 === Start of file trace252 01:02:54.667859 * Trying [::1]:36333... 01:02:55.563550 * Established connection to ::1 (::1 port 36333) from ::1 port 43170 01:02:55.797130 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:02:56.119397 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:02:56.146462 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:02:56.152263 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:02:56.157046 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:02:56.254821 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:02:56.315403 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:02:56.343479 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:02:56.424008 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:02:56.443614 => Send header, 5 bytes (0x5) 0000: PWD 01:02:56.469388 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:02:56.503246 * Entry path is '/' 01:02:56.587807 * Request has same path as previous transfer 01:02:56.639111 => Send header, 6 bytes (0x6) 0000: EPSV 01:02:56.653363 * Connect data stream passively 01:02:56.726371 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||37029|) 01:02:56.835991 * Connecting to ::1 (::1) port 37029 01:02:56.893306 * Trying [::1]:37029... 01:02:56.976363 * Established 2nd connection to ::1 (::1 port 37029) from ::1 port 58502 01:02:57.007158 => Send header, 8 bytes (0x8) 0000: TYPE A 01:02:57.027033 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:02:57.064107 => Send header, 6 bytes (0x6) 0000: LIST 01:02:57.103339 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 01:02:57.136535 * Maxdownload = -1 01:02:57.283201 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 01:02:57.714583 * abort upload 01:02:57.739244 <= Recv data, 0 bytes (0x0) 01:02:57.920777 * Remembering we are in dir "" 01:02:58.111417 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 01:02:58.432691 * Connection #0 to host ::1:36333 left intact === End of file trace252 === Start of file valgrind252 ==226623== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind252 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 255 in state 4 Runner 2 (id 185908) running test 258 in state 4 Runner 3 (id 185910) running test 259 in state 4 Runner 4 (id 185912) running test 253 in state 4 Runner 5 (id 185914) running test 256 in state 4 Runner 6 (id 185916) running test 260 in state 4 Runner 7 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind253 ../src/curl -q --output log/4/curl253.out --include --trace-ascii log/4/trace253 --trace-time -g "ftp://[::1]:42905/" -P - > log/4/stdout253 2> log/4/stderr253 (id 185918) running test 254 in state 4 Runner 8 (id 185920) running test 257 in state 4 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/4/server/ftp_ipv6_server.pid" --logfile "log/4/ftp_ipv6_server.log" --logdir "log/4" --portfile "log/4/server/ftp_ipv6_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv6 --port 0 --addr "[::1]" PINGPONG runs on port 42905 (log/4/server/ftp_ipv6_server.port) RUN: FTP-IPv6 server is PID 226742 port 42905 * pid ftp-ipv6 => 226742 226742 test 0253...[FTP IPv6 dir list with EPRT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind253 ../src/curl -q --output log/4/curl253.out --include --trace-ascii log/4/trace253 --trace-time -g "ftp://[::1]:42905/" -P - > log/4/stdout253 2> log/4/stderr253 valgrind ERROR ==226759== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 253 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind253 ../src/curl -q --output log/4/curl253.out --include --trace-ascii log/4/trace253 --trace-time -g "ftp://[::1]:42905/" -P - > log/4/stdout253 2> log/4/stderr253 === End of file commands.log === Start of file curl253.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 moo drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl253.out === Start of file ftp_ipv6_server.log 01:02:18.768298 FTP server listens on port IPv6/42905 01:02:18.772200 logged pid 226742 in log/4/server/ftp_ipv6_server.pid 01:02:18.772456 Awaiting input 01:03:07.084766 ====> Client connect 01:03:07.085597 FTPD: Getting commands from log/4/server.cmd 01:03:07.086024 FTPD: run test case number: 253 01:03:07.094501 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:03:08.429389 < "USER anonymous" 01:03:08.434342 > "331 We are happy you popped in![CR][LF]" 01:03:08.548397 < "PASS ftp@example.com" 01:03:08.548829 > "230 Welcome you silly person[CR][LF]" 01:03:08.643941 < "PWD" 01:03:08.647830 > "257 "/" is current directory[CR][LF]" 01:03:08.944039 < "EPRT |2|::1|50123|" 01:03:08.944405 ====> Active DATA channel requested by client 01:03:08.945001 > "200 Thanks for dropping by. We contact you later[CR][LF]" 01:03:08.945369 DATA sockfilt for active data channel starting... 01:03:09.034828 DATA sockfilt for active data channel started (pid 228015) 01:03:09.035325 ====> Active DATA channel connected to client port 50123 01:03:09.338537 < "TYPE A" 01:03:09.339010 > "200 I modify TYPE as you wanted[CR][LF]" 01:03:09.388983 < "LIST" 01:03:09.389422 > "150 here comes a directory[CR][LF]" 01:03:09.389618 pass LIST data on data connection 01:03:09.395721 send total 20 as data 01:03:09.400980 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 01:03:09.401294 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 01:03:09.401508 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 01:03:09.401720 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 01:03:09.401932 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 01:03:09.402137 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 01:03:09.402347 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 01:03:09.402551 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 moo as data 01:03:09.402755 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 01:03:09.402957 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 01:03:09.411001 =====> Closing active DATA connection... 01:03:09.411309 Server disconnects active DATA connection 01:03:09.412071 Server disconnected active DATA connection 01:03:09.412277 DATA sockfilt for active data channel quits (pid 228015) 01:03:09.421576 DATA sockfilt for active data channel quit (pid 228015) 01:03:09.421819 =====> Closed active DATA connection 01:03:09.422158 > "226 ASCII transfer complete[CR][LF]" 01:03:11.499138 < "QUIT" 01:03:11.499562 > "221 bye bye baby[CR][LF]" 01:03:11.660998 MAIN sockfilt said DISC 01:03:11.661578 ====> Client disconnected 01:03:11.662197 Awaiting input === End of file ftp_ipv6_server.log === Start of file ftp_ipv6_sockctrl.log 01:02:18.370670 Running IPv6 version 01:02:18.378516 Listening on port 42905 01:02:18.378983 Wrote pid 226750 to log/4/server/ftp_ipv6_sockctrl.pid 01:02:18.379247 Wrote port 42905 to log/4/server/ftp_ipv6_server.port 01:02:18.380031 Received PING (on stdin) 01:03:06.699990 ====> Client connect 01:03:06.707513 Received DATA (on stdin) 01:03:06.707893 > 160 bytes data, server => client 01:03:06.710793 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:03:06.710927 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:03:06.711041 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:03:08.043261 < 16 bytes data, client => server 01:03:08.043482 'USER anonymous\r\n' 01:03:08.045491 Received DATA (on stdin) 01:03:08.045578 > 33 bytes data, server => client 01:03:08.050417 '331 We are happy you popped in!\r\n' 01:03:08.162721 < 22 bytes data, client => server 01:03:08.162907 'PASS ftp@example.com\r\n' 01:03:08.164689 Received DATA (on stdin) 01:03:08.164776 > 30 bytes data, server => client 01:03:08.164866 '230 Welcome you silly person\r\n' 01:03:08.258072 < 5 bytes data, client => server 01:03:08.258255 'PWD\r\n' 01:03:08.263743 Received DATA (on stdin) 01:03:08.263840 > 30 bytes data, server => client 01:03:08.263931 '257 "/" is current directory\r\n' 01:03:08.558467 < 20 bytes data, client => server 01:03:08.558672 'EPRT |2|::1|50123|\r\n' 01:03:08.566535 Received DATA (on stdin) 01:03:08.566659 > 50 bytes data, server => client 01:03:08.566761 '200 Thanks for dropping by. We contact you later\r\n' 01:03:08.951332 < 8 bytes data, client => server 01:03:08.951535 'TYPE A\r\n' 01:03:08.954594 Received DATA (on stdin) 01:03:08.954694 > 33 bytes data, server => client 01:03:08.954787 '200 I modify TYPE as you wanted\r\n' 01:03:09.003667 < 6 bytes data, client => server 01:03:09.003873 'LIST\r\n' 01:03:09.004994 Received DATA (on stdin) 01:03:09.005068 > 28 bytes data, server => client 01:03:09.005146 '150 here comes a directory\r\n' 01:03:09.037729 Received DATA (on stdin) 01:03:09.037876 > 29 bytes data, server => client 01:03:09.037972 '226 ASCII transfer complete\r\n' 01:03:11.113805 < 6 bytes data, client => server 01:03:11.114018 'QUIT\r\n' 01:03:11.115135 Received DATA (on stdin) 01:03:11.115210 > 18 bytes data, server => client 01:03:11.115285 '221 bye bye baby\r\n' 01:03:11.274434 ====> Client disconnect 01:03:11.277152 Received ACKD (on stdin) === End of file ftp_ipv6_sockctrl.log === Start of file ftp_ipv6_sockdata.log 01:03:09.629544 ====> Client connect 01:03:09.648677 Running IPv6 version 01:03:09.648850 Connected to port 50123 01:03:09.649300 Wrote pid 228015 to log/4/server/ftp_ipv6_sockdata.pid 01:03:09.650083 Received PING (on stdin) 01:03:10.011686 Received DATA (on stdin) 01:03:10.012088 > 10 bytes data, server => client 01:03:10.020105 'total 20\r\n' 0CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind254 ../src/curl -q --output log/7/curl254.out --include --trace-ascii log/7/trace254 --trace-time -g "ftp://[::1]:35447/" --disable-epsv > log/7/stdout254 2> log/7/stderr254 1:03:10.020416 Received DATA (on stdin) 01:03:10.020485 > 57 bytes data, server => client 01:03:10.020588 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 01:03:10.020701 Received DATA (on stdin) 01:03:10.020766 > 58 bytes data, server => client 01:03:10.020865 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 01:03:10.020943 Received DATA (on stdin) 01:03:10.021006 > 61 bytes data, server => client 01:03:10.021117 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 01:03:10.021188 '\n' 01:03:10.021268 Received DATA (on stdin) 01:03:10.021329 > 62 bytes data, server => client 01:03:10.021428 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 01:03:10.021486 '\n' 01:03:10.021563 Received DATA (on stdin) 01:03:10.021623 > 70 bytes data, server => client 01:03:10.021721 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 01:03:10.021784 'usr/bin\r\n' 01:03:10.021864 Received DATA (on stdin) 01:03:10.021931 > 59 bytes data, server => client 01:03:10.022041 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 01:03:10.022123 Received DATA (on stdin) 01:03:10.022184 > 69 bytes data, server => client 01:03:10.022282 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 01:03:10.022346 'd.html\r\n' 01:03:10.022422 Received DATA (on stdin) 01:03:10.022481 > 59 bytes data, server => client 01:03:10.022576 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 moo\r\n' 01:03:10.022653 Received DATA (on stdin) 01:03:10.022713 > 59 bytes data, server => client 01:03:10.022807 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 01:03:10.022884 Received DATA (on stdin) 01:03:10.022942 > 59 bytes data, server => client 01:03:10.023037 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 01:03:10.027158 Received DISC (on stdin) 01:03:10.027308 ====> Client forcibly disconnected 01:03:10.027509 disconnected, no socket to read on 01:03:10.028397 Received QUIT (on stdin) 01:03:10.028476 quits 01:03:10.029077 ============> sockfilt quits === End of file ftp_ipv6_sockdata.log === Start of file server.cmd Testnum 253 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPRT |2|::1|50123| TYPE A LIST QUIT === End of file server.input === Start of file stderr253 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 623 0 623 0 0 110 0 --:--:-- 0:00:05 --:--:-- 141 === End of file stderr253 === Start of file trace253 01:03:06.739106 * Trying [::1]:42905... 01:03:07.666622 * Established connection to ::1 (::1 port 42905) from ::1 port 34564 01:03:07.926055 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:03:08.284897 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:03:08.315049 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:03:08.323101 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:03:08.329098 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:03:08.443198 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:03:08.518108 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:03:08.548330 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:03:08.622239 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:03:08.642502 => Send header, 5 bytes (0x5) 0000: PWD 01:03:08.660466 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:03:08.697275 * Entry path is '/' 01:03:08.788728 * Request has same path as previous transfer 01:03:08.942914 => Send header, 20 bytes (0x14) 0000: EPRT |2|::1|50123| 01:03:09.066237 <= Recv header, 50 bytes (0x32) 0000: 200 Thanks for dropping by. We contact you later 01:03:09.102695 * Connect data stream actively 01:03:09.204955 * Ready to accept data connection from server 01:03:09.221837 * Connection accepted from server 01:03:09.304808 * Established 2nd connection to ::1 (::1 port 37874) from ::1 port 50123 01:03:09.335769 => Send header, 8 bytes (0x8) 0000: TYPE A 01:03:09.354680 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:03:09.388135 => Send header, 6 bytes (0x6) 0000: LIST 01:03:09.504589 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 01:03:09.540741 * Maxdownload = -1 01:03:09.709403 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 moo 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 01:03:10.137219 * abort upload 01:03:10.163193 <= Recv data, 0 bytes (0x0) 01:03:10.338742 * Remembering we are in dir "" 01:03:10.460139 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 01:03:10.757714 * Connection #0 to host ::1:42905 left intact === End of file trace253 === Start of file valgrind253 ==226759== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind253 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/7/server/ftp_ipv6_server.pid" --logfile "log/7/ftp_ipv6_server.log" --logdir "log/7" --portfile "log/7/server/ftp_ipv6_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv6 --port 0 --addr "[::1]" PINGPONG runs on port 35447 (log/7/server/ftp_ipv6_server.port) RUN: FTP-IPv6 server is PID 226746 port 35447 * pid ftp-ipv6 => 226746 226746 test 0254...[FTP IPv6 dir list PASV and --disable-epsv] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind254 ../src/curl -q --output log/7/curl254.out --include --trace-ascii log/7/trace254 --trace-time -g "ftp://[::1]:35447/" --disable-epsv > log/7/stdout254 2> log/7/stderr254 valgrind ERROR ==226841== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 254 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind254 ../src/curl -q --output log/7/curl254.out --include --trace-ascii log/7/trace254 --trace-time -g "ftp://[::1]:35447/" --disable-epsv > log/7/stdout254 2> log/7/stderr254 === End of file commands.log === Start of file curl254.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl254.out === Start of file ftp_ipv6_server.log 01:02:19.602021 FTP server listens on port IPv6/35447 01:02:19.605805 logged pid 226746 in log/7/server/ftp_ipv6_server.pid 01:02:19.606060 Awaiting input 01:03:07.661047 ====> Client connect 01:03:07.661912 FTPD: Getting commands from log/7/server.cmd 01:03:07.662335 FTPD: run test case number: 254 01:03:07.668371 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:03:08.990674 < "USER anonymous" 01:03:08.994580 > "331 We are happy you popped in![CR][LF]" 01:03:09.122148 < "PASS ftp@example.com" 01:03:09.122563 > "230 Welcome you silly person[CR][LF]" 01:03:09.218771 < "PWD" 01:03:09.219268 > "257 "/" is current directory[CR][LF]" 01:03:09.432210 < "EPSV" 01:03:09.432584 ====> Passive DATA channel requested by client 01:03:09.432741 DATA sockfilt for passive data channel starting... 01:03:09.517702 DATA sockfilt for passive data channel started (pid 228018) 01:03:09.521737 DATA sockfilt for passive data channel listens on port 34517 01:03:09.522338 > "229 Entering Passive Mode (|||34517|)[CR][LF]" 01:03:09.522528 Client has been notified that DATA conn will be accepted on port 34517 01:03:09.727633 Client connects to port 34517 01:03:09.728220 ====> Client established passive DATA connection on port 34517 01:03:09.843880 < "TYPE A" 01:03:09.844356 > "200 I modify TYPE as you wanted[CR][LF]" 01:03:09.898419 < "LIST" 01:03:09.898843 > "150 here comes a directory[CR][LF]" 01:03:09.899034 pass LIST data on data connection 01:03:09.905038 send total 20 as data 01:03:09.905370 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 01:03:09.905599 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 01:03:09.905809 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 01:03:09.906016 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 01:03:09.906222 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 01:03:09.906420 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 01:03:09.906629 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 01:03:09.906838 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 01:03:09.907049 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 01:03:09.907259 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 01:03:09.911892 =====> Closing passive DATA connection... 01:03:09.912091 Server disconnects passive DATA connection 01:03:09.917629 Server disconnected passive DATA connection 01:03:09.917885 DATA sockfilt for passive data channel quits (pid 228018) 01:03:09.924848 DATA sockfilt for passive data channel quit (pid 228018) 01:03:09.925099 =====> Closed passive DATA connection 01:03:09.925399 > "226 ASCII transfer complete[CR][LF]" 01:03:12.050270 < "QUIT" 01:03:12.050694 > "221 bye bye baby[CR][LF]" 01:03:12.181605 MAIN sockfilt said DISC 01:03:12.182206 ====> Client disconnected 01:03:12.182806 Awaiting input === End of file ftp_ipv6_server.log === Start of file ftp_ipv6_sockctrl.log 01:02:19.205008 Running IPv6 version 01:02:19.212360 Listening on port 35447 01:02:19.212799 Wrote pid 226753 to log/7/server/ftp_ipv6_sockctrl.pid 01:02:19.213049 Wrote port 35447 to log/7/server/ftp_ipv6_server.port 01:02:19.213798 Received PING (on stdin) 01:03:07.273273 ====> Client connect 01:03:07.286534 Received DATA (on stdin) 01:03:07.286938 > 160 bytes data, server => client 01:03:07.287367 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:03:07.287497 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:03:07.287613 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:03:08.603500 < 16 bytes data, client => server 01:03:08.603746 'USER anonymous\r\n' 01:03:08.610152 Received DATA (on stdin) 01:03:08.610265 > 33 bytes data, server => client 01:03:08.610358 '331 We are happy you popped in!\r\n' 01:03:08.736699 < 22 bytes data, client => server 01:03:08.736915 'PASS ftp@example.com\r\n' 01:03:08.738151 Received DATA (on stdin) 01:03:08.738226 > 30 bytes data, server => client 01:03:08.738316 '230 Welcome you silly person\r\n' 01:03:08.829903 < 5 bytes data, client => server 01:03:08.830077 'PWD\r\n' 01:03:08.834861 Received DATA (on stdin) 01:03:08.834965 > 30 bytes data, server => client 01:03:08.835059 '257 "/" is current directory\r\n' 01:03:09.046822 < 6 bytes data, client => server 01:03:09.047002 'EPSV\r\n' 01:03:09.137913 Received DATA (on stdin) 01:03:09.138062 > 39 bytes data, server => client 01:03:09.138163 '229 Entering Passive Mode (|||34517|)\r\n' 01:03:09.458526 < 8 bytes data, client => server 01:03:09.458730 'TYPE A\r\n' 01:03:09.459927 Received DATA (on stdin) 01:03:09.460014 > 33 bytes data, server => client 01:03:09.460111 '200 I modify TYPE as you wanted\r\n' 01:03:09.512299 < 6 bytes data, client => server 01:03:09.512486 'LIST\r\n' 01:03:09.514426 Received DATA (on stdin) 01:03:09.514515 > 28 bytes data, server => client 01:03:09.514601 '150 here comes a directory\r\n' 01:03:09.540982 Received DATA (on stdin) 01:03:09.541128 > 29 bytes data, server => client 01:03:09.541224 '226 ASCII transfer complete\r\n' 01:03:11.664978 < 6 bytes data, client => server 01:03:11.665177 'QUIT\r\n' 01:03:11.666265 Received DATA (on stdin) 01:03:11.666341 > 18 bytes data, server => client 01:03:11.666420 '221 bye bye baby\r\n' 01:03:11.796823 ====> Client disconnect 01:03:11.797773 Received ACKD (on stdin) === End of file ftp_ipv6_sockctrl.log === Start of file ftp_ipv6_sockdata.log 01:03:09.116541 Running IPv6 version 01:03:09.130892 Listening on port 34517 01:03:09.131386 Wrote pid 228018 to log/7/server/ftp_ipv6_sockdata.pid 01:03:09.132151 Received PING (on stdin) 01:03:09.136530 Received PORT (on stdin) 01:03:09.341934 ====> Client connect 01:03:09.520986 Received DATA (on stdin) 01:03:09.521378 > 10 bytes data, server => client 01:03:09.521753 'total 20\r\n' 01:03:09.522029 Received DATA (on stdin) 01:03:09.522099 > 57 bytes data, server => client 01:03:09.522203 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 01:03:09.522304 Received DATA (on stdin) 01:03:09.522366 > 58 bytes data, server => client 01:03:09.522463 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 01:03:09.522543 Received DATA (on stdin) 01:03:09.522604 > 61 bytes data, server => client 01:03:09.522718 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 01:03:09.522789 '\n' 01:03:09.522870 Received DATA (on stdin) 01:03:09.522931 > 62 bytes data, server => client 01:03:09.523035 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 01:03:09.523092 '\n' 01:03:09.523181 Received DATA (on stdin) 01:03:09.523247 > 70 bytes data, server => client 01:03:09.523346 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 01:03:09.523409 'usr/bin\r\n' 01:03:09.523486 Received DATA (on stdin) 01:03:09.523545 > 59 bytes data, server => client 01:03:09.523641 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 01:03:09.523722 Received DATA (on stdin) 01:03:09.523789 > 69 bytes data, server => client 01:03:09.523903 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 01:03:09.523976 'd.html\r\n' 01:03:09.524064 Received DATA (on stdin) 01:03:09.524133 > 59 bytes data, server => client 01:03:09.524245 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 01:03:09.524335 Received DATA (on stdin) 01:03:09.524405 > 59 bytes data, server => client 01:03:09.524513 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 01:03:09.524598 Received DATA (on stdin) 01:03:09.524662 > 59 bytes data, server => client 01:03:09.524762 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 01:03:09.527897 Received DISC (on stdin) 01:03:09.528037 ====> Client forcibly CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind255 ../src/curl -q --output log/1/curl255.out --include --trace-ascii log/1/trace255 --trace-time -g "ftp://[::1]:40971/" -P - --disable-eprt > log/1/stdout255 2> log/1/stderr255 disconnected 01:03:09.533700 Received QUIT (on stdin) 01:03:09.533813 quits 01:03:09.534359 ============> sockfilt quits === End of file ftp_ipv6_sockdata.log === Start of file server.cmd Testnum 254 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE A LIST QUIT === End of file server.input === Start of file stderr254 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 623 0 623 0 0 120 0 --:--:-- 0:00:05 --:--:-- 157 100 623 0 623 0 0 112 0 --:--:-- 0:00:05 --:--:-- 143 === End of file stderr254 === Start of file trace254 01:03:07.298317 * Trying [::1]:35447... 01:03:08.245008 * Established connection to ::1 (::1 port 35447) from ::1 port 43106 01:03:08.512316 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:03:08.860855 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:03:08.888160 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:03:08.894371 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:03:08.899220 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:03:09.012108 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:03:09.092856 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:03:09.122980 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:03:09.190949 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:03:09.211178 => Send header, 5 bytes (0x5) 0000: PWD 01:03:09.228094 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:03:09.265541 * Entry path is '/' 01:03:09.357446 * Request has same path as previous transfer 01:03:09.431639 => Send header, 6 bytes (0x6) 0000: EPSV 01:03:09.447233 * Connect data stream passively 01:03:09.532426 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||34517|) 01:03:09.656033 * Connecting to ::1 (::1) port 34517 01:03:09.718597 * Trying [::1]:34517... 01:03:09.810967 * Established 2nd connection to ::1 (::1 port 34517) from ::1 port 39428 01:03:09.843360 => Send header, 8 bytes (0x8) 0000: TYPE A 01:03:09.863417 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:03:09.897083 => Send header, 6 bytes (0x6) 0000: LIST 01:03:09.928188 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 01:03:09.964666 * Maxdownload = -1 01:03:10.125174 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 01:03:10.567680 * abort upload 01:03:10.593795 <= Recv data, 0 bytes (0x0) 01:03:10.780993 * Remembering we are in dir "" 01:03:10.977995 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 01:03:11.282845 * Connection #0 to host ::1:35447 left intact === End of file trace254 === Start of file valgrind254 ==226841== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind254 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/1/server/ftp_ipv6_server.pid" --logfile "log/1/ftp_ipv6_server.log" --logdir "log/1" --portfile "log/1/server/ftp_ipv6_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv6 --port 0 --addr "[::1]" PINGPONG runs on port 40971 (log/1/server/ftp_ipv6_server.port) RUN: FTP-IPv6 server is PID 226924 port 40971 * pid ftp-ipv6 => 226924 226924 test 0255...[FTP IPv6 dir list with EPRT and --disable-eprt] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind255 ../src/curl -q --output log/1/curl255.out --include --trace-ascii log/1/trace255 --trace-time -g "ftp://[::1]:40971/" -P - --disable-eprt > log/1/stdout255 2> log/1/stderr255 valgrind ERROR ==226989== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 255 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind255 ../src/curl -q --output log/1/curl255.out --include --trace-ascii log/1/trace255 --trace-time -g "ftp://[::1]:40971/" -P - --disable-eprt > log/1/stdout255 2> log/1/stderr255 === End of file commands.log === Start of file curl255.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl255.out === Start of file ftp_ipv6_server.log 01:02:22.805800 FTP server listens on port IPv6/40971 01:02:22.809720 logged pid 226924 in log/1/server/ftp_ipv6_server.pid 01:02:22.809956 Awaiting input 01:03:10.888104 ====> Client connect 01:03:10.888938 FTPD: Getting commands from log/1/server.cmd 01:03:10.889346 FTPD: run test case number: 255 01:03:10.901121 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:03:12.192737 < "USER anonymous" 01:03:12.193173 > "331 We are happy you popped in![CR][LF]" 01:03:12.311984 < "PASS ftp@example.com" 01:03:12.317661 > "230 Welcome you silly person[CR][LF]" 01:03:12.406270 < "PWD" 01:03:12.406747 > "257 "/" is current directory[CR][LF]" 01:03:12.716948 < "EPRT |2|::1|47179|" 01:03:12.717313 ====> Active DATA channel requested by client 01:03:12.717893 > "200 Thanks for dropping by. We contact you later[CR][LF]" 01:03:12.718272 DATA sockfilt for active data channel starting... 01:03:12.807693 DATA sockfilt for active data channel started (pid 228024) 01:03:12.808210 ====> Active DATA channel connected to client port 47179 01:03:13.108314 < "TYPE A" 01:03:13.108773 > "200 I modify TYPE as you wanted[CR][LF]" 01:03:13.162957 < "LIST" 01:03:13.163709 > "150 here comes a directory[CR][LF]" 01:03:13.163907 pass LIST data on data connection 01:03:13.166615 send total 20 as data 01:03:13.166881 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 01:03:13.167094 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 01:03:13.167305 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 01:03:13.167518 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 01:03:13.174618 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 01:03:13.174874 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 01:03:13.175109 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 01:03:13.175331 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 01:03:13.175543 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 01:03:13.175760 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 01:03:13.177122 =====> Closing active DATA connection... 01:03:13.177300 Server disconnects active DATA connection 01:03:13.181439 Server disconnected active DATA connection 01:03:13.181684 DATA sockfilt for active data channel quits (pid 228024) 01:03:13.185203 DATA sockfilt for active data channel quit (pid 228024) 01:03:13.185399 =====> Closed active DATA connection 01:03:13.185682 > "226 ASCII transfer complete[CR][LF]" 01:03:15.325164 < "QUIT" 01:03:15.325624 > "221 bye bye baby[CR][LF]" 01:03:15.514327 MAIN sockfilt said DISC 01:03:15.514918 ====> Client disconnected 01:03:15.515527 Awaiting input === End of file ftp_ipv6_server.log === Start of file ftp_ipv6_sockctrl.log 01:02:22.408190 Running IPv6 version 01:02:22.415967 Listening on port 40971 01:02:22.416430 Wrote pid 226983 to log/1/server/ftp_ipv6_sockctrl.pid 01:02:22.416723 Wrote port 40971 to log/1/server/ftp_ipv6_server.port 01:02:22.417476 Received PING (on stdin) 01:03:10.503302 ====> Client connect 01:03:10.510591 Received DATA (on stdin) 01:03:10.510947 > 160 bytes data, server => client 01:03:10.517348 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:03:10.517486 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:03:10.517601 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:03:11.806931 < 16 bytes data, client => server 01:03:11.807124 'USER anonymous\r\n' 01:03:11.809080 Received DATA (on stdin) 01:03:11.809160 > 33 bytes data, server => client 01:03:11.809253 '331 We are happy you popped in!\r\n' 01:03:11.926201 < 22 bytes data, client => server 01:03:11.926393 'PASS ftp@example.com\r\n' 01:03:11.928006 Received DATA (on stdin) 01:03:11.928091 > 30 bytes data, server => client 01:03:11.933648 '230 Welcome you silly person\r\n' 01:03:12.020390 < 5 bytes data, client => server 01:03:12.020548 'PWD\r\n' 01:03:12.022588 Received DATA (on stdin) 01:03:12.022668 > 30 bytes data, server => client 01:03:12.022758 '257 "/" is current directory\r\n' 01:03:12.331378 < 20 bytes data, client => server 01:03:12.331570 'EPRT |2|::1|47179|\r\n' 01:03:12.339862 Received DATA (on stdin) 01:03:12.339991 > 50 bytes data, server => client 01:03:12.340101 '200 Thanks for dropping by. We contact you later\r\n' 01:03:12.722693 < 8 bytes data, client => server 01:03:12.722888 'TYPE A\r\n' 01:03:12.724635 Received DATA (on stdin) 01:03:12.724718 > 33 bytes data, server => client 01:03:12.724812 '200 I modify TYPE as you wanted\r\n' 01:03:12.777435 < 6 bytes data, client => server 01:03:12.777612 'LIST\r\n' 01:03:12.778960 Received DATA (on stdin) 01:03:12.779041 > 28 bytes data, server => client 01:03:12.779147 '150 here comes a directory\r\n' 01:03:12.801266 Received DATA (on stdin) 01:03:12.801397 > 29 bytes data, server => client 01:03:12.801489 '226 ASCII transfer complete\r\n' 01:03:14.938962 < 6 bytes data, client => server 01:03:14.939121 'QUIT\r\n' 01:03:14.941180 Received DATA (on stdin) 01:03:14.941263 > 18 bytes data, server => client 01:03:14.941337 '221 bye bye baby\r\n' 01:03:15.127116 ====> Client disconnect 01:03:15.130484 Received ACKD (on stdin) === End of file ftp_ipv6_sockctrl.log === Start of file ftp_ipv6_sockdata.log 01:03:12.401025 ====> Client connect 01:03:12.415544 Running IPv6 version 01:03:12.415687 Connected to port 47179 01:03:12.416126 Wrote pid 228024 to log/1/server/ftp_ipv6_sockdata.pid 01:03:12.420282 Received PING (on stdin) 01:03:12.782501 Received DATA (on stdin) 01:03:12.782881 > 10 bytes data, server => client 01:03:12.783264 'total 20\r\n' 01:03:12.783537 Received DATA (on stdin) 01:03:12.783610 > 57 bytes data, server => client 01:03:12.783725 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 01:03:12.783839 Received DATA (on stdin) 01:03:12.783909 > 58 bytes data, server => client 01:03:12.784022 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 01:03:12.784110 Received DATA (on stdin) 01:03:12.784174 > 61 bytes data, server => client 01:03:12.784291 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 01:03:12.784366 '\n' 01:03:12.790192 Received DATA (on stdin) 01:03:12.790291 > 62 bytes data, server => client 01:03:12.790404 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 01:03:12.790474 '\n' 01:03:12.790575 Received DATA (on stdin) 01:03:12.790645 > 70 bytes data, server => client 01:03:12.790762 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 01:03:12.790835 'usr/bin\r\n' 01:03:12.790926 Received DATA (on stdin) 01:03:12.790995 > 59 bytes data, server => client 01:03:12.791108 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 01:03:12.791199 Received DATA (on stdin) 01:03:12.791267 > 69 bytes data, server => client 01:03:12.791383 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 01:03:12.791455 'd.html\r\n' 01:03:12.791544 Received DATA (on stdin) 01:03:12.791607 > 59 bytes data, server => client 01:03:12.791718 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 01:03:12.791807 Received DATA (on stdin) 01:03:12.791874 > 59 bytes data, server => client 01:03:12.791988 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 01:03:12.792078 Received DATA (on stdin) 01:03:12.792146 > 59 bytes data, server => client 01:03:12.792252 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 01:03:12.796523 Received DISC (on stdin) 01:03:12.796680 ====> Client forcibly disconnected 01:03:12.796871 disconnected, no socket to read on 01:03:12.797491 Received QUIT (on stdin) 01:03:12.797567 quits 01:03:12.798139 ============> sockfilt quits === End of file ftp_ipv6_sockdata.log === Start of file server.cmd Testnum 255 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPRT |2|::1|47179| TYPE A LIST QUIT === End of file server.input === Start of file stderr255 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 623 0 623 0 0 112 0 --:--:-- 0:00:05 --:--:-- 144 === End of file stderr255 === Start of file trace255 01:03:10.553430 * Trying [::1]:40971... 01:03:11.472278 * Established connection to ::1 (::1 port 40971) from ::1 port 43486 01:03:11.722283 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:03:12.066163 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:03:12.094480 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:03:12.101583 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:03:12.106877 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:03:12.214567 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:03:12.280723 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:03:12.313970 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:03:12.384741 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:03:12.407399 => Send header, 5 bytes (0x5) 0000: PWD 01:03:12.438417 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:03:12.474104 * Entry path is '/' 01:03:12.563734 * Request has same patCMD (8448): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind256 ../src/curl -q --include --trace-ascii log/5/trace256 --trace-time -x http://127.0.0.1:46263 http://127.0.0.1:46263/want/256 -C - --no-include -o log/5/fewl256.txt -U daniel:stenberg > log/5/stdout256 2> log/5/stderr256 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind257 ../src/curl -q --output log/8/curl257.out --include --trace-ascii log/8/trace257 --trace-time http://supersite.com/want/257 -L -x http://127.0.0.1:39461 --netrc-optional --netrc-file log/8/netrc257 > log/8/stdout257 2> log/8/stderr257 h as previous transfer 01:03:12.721020 => Send header, 20 bytes (0x14) 0000: EPRT |2|::1|47179| 01:03:12.839416 <= Recv header, 50 bytes (0x32) 0000: 200 Thanks for dropping by. We contact you later 01:03:12.873885 * Connect data stream actively 01:03:12.975762 * Ready to accept data connection from server 01:03:12.991462 * Connection accepted from server 01:03:13.073198 * Established 2nd connection to ::1 (::1 port 45934) from ::1 port 47179 01:03:13.109479 => Send header, 8 bytes (0x8) 0000: TYPE A 01:03:13.129341 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:03:13.167719 => Send header, 6 bytes (0x6) 0000: LIST 01:03:13.270570 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 01:03:13.306003 * Maxdownload = -1 01:03:13.483064 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 01:03:13.900694 * abort upload 01:03:13.924987 <= Recv data, 0 bytes (0x0) 01:03:14.098733 * Remembering we are in dir "" 01:03:14.218442 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 01:03:14.519383 * Connection #0 to host ::1:40971 left intact === End of file trace255 === Start of file valgrind255 ==226989== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind255 test 0256...[HTTP resume request over proxy with auth without server supporting it] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind256 ../src/curl -q --include --trace-ascii log/5/trace256 --trace-time -x http://127.0.0.1:46263 http://127.0.0.1:46263/want/256 -C - --no-include -o log/5/fewl256.txt -U daniel:stenberg > log/5/stdout256 2> log/5/stderr256 valgrind ERROR ==227163== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 256 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind256 ../src/curl -q --include --trace-ascii log/5/trace256 --trace-time -x http://127.0.0.1:46263 http://127.0.0.1:46263/want/256 -C - --no-include -o log/5/fewl256.txt -U daniel:stenberg > log/5/stdout256 2> log/5/stderr256 === End of file commands.log === Start of file fewl256.txt This text is here to simulate a partly downloaded file to resume download on. === End of file fewl256.txt === Start of file http_server.log 01:02:30.197736 ====> Client connect 01:02:30.197899 accept_connection 3 returned 4 01:02:30.197976 accept_connection 3 returned 0 01:02:30.204657 Read 93 bytes 01:02:30.204801 Process 93 bytes request 01:02:30.204900 Got request: GET /verifiedserver HTTP/1.1 01:02:30.204970 Are-we-friendly question received 01:02:30.205098 Wrote request (93 bytes) input to log/5/server.input 01:02:30.205198 Identifying ourselves as friends 01:02:30.205385 Response sent (57 bytes) and written to log/5/server.response 01:02:30.205450 special request received, no persistency 01:02:30.205511 ====> Client disconnect 0 01:03:18.517121 ====> Client connect 01:03:18.517274 accept_connection 3 returned 4 01:03:18.517358 accept_connection 3 returned 0 01:03:19.749037 Read 206 bytes 01:03:19.749225 Process 206 bytes request 01:03:19.749321 Got request: GET http://127.0.0.1:46263/want/256 HTTP/1.1 01:03:19.749393 Serve test number 256 part 0 01:03:19.749577 - request found to be complete (256) 01:03:19.749843 Wrote request (206 bytes) input to log/5/server.input 01:03:19.749957 Send response test256 section 01:03:19.750320 Response sent (155 bytes) and written to log/5/server.response 01:03:19.750391 => persistent connection request ended, awaits new request 01:03:21.254441 Connection closed by client 01:03:21.254618 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 58336 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 256 === End of file server.cmd === Start of file server.input GET http://127.0.0.1:46263/want/256 HTTP/1.1 Host: 127.0.0.1:46263 Proxy-Authorization: Basic ZGFuaWVsOnN0ZW5iZXJn Range: bytes=78- User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.0 200 Mooo Date: Mon, 13 Nov 2000 13:41:09 GMT Server: myown/1.0 Connection: close todelooooo lalalala yada yada, we know nothing about ranges ;-) === End of file server.response === Start of file stderr256 ** Resuming transfer from byte position 78 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (33) HTTP server does not seem to support byte ranges. Cannot resume. === End of file stderr256 === Start of file trace256 01:03:18.583930 * Trying 127.0.0.1:46263... 01:03:19.457464 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 34106 01:03:19.589042 * using HTTP/1.x 01:03:19.731004 * Proxy auth using Basic with user 'daniel' 01:03:20.175989 => Send header, 206 bytes (0xce) 0000: GET http://127.0.0.1:46263/want/256 HTTP/1.1 002e: Host: 127.0.0.1:46263 0045: Proxy-Authorization: Basic ZGFuaWVsOnN0ZW5iZXJn 0076: Range: bytes=78- 0088: User-Agent: curl/8.17.0 00a1: Accept: */* 00ae: Proxy-Connection: Keep-Alive 00cc: 01:03:20.571057 * HTTP 1.0, assume close after body 01:03:20.594515 <= Recv header, 18 bytes (0x12) 0000: HTTP/1.0 200 Mooo. 01:03:20.832743 <= Recv header, 36 bytes (0x24) 0000: Date: Mon, 13 Nov 2000 13:41:09 GMT. 01:03:20.928316 <= Recv header, 18 bytes (0x12) 0000: Server: myown/1.0. 01:03:20.999358 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:03:21.115923 * HTTP server does not seem to support byte ranges. Cannot resume. 01:03:21.128663 <= Recv header, 1 bytes (0x1) 0000: . 01:03:21.533156 * closing connection #0 === End of file trace256 === Start of file valgrind256 ==227163== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind256 test 0257...[HTTP Location: following with --netrc-optional] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind257 ../src/curl -q --output log/8/curl257.out --include --trace-ascii log/8/trace257 --trace-time http://supersite.com/want/257 -L -x http://127.0.0.1:39461 --netrc-optional --netrc-file log/8/netrc257 > log/8/stdout257 2> log/8/stderr257 valgrind ERROR ==227325== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 257 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind257 ../src/curl -q --output log/8/curl257.out --include --trace-ascii log/8/trace257 --trace-time http://supersite.com/want/257 -L -x http://127.0.0.1:39461 --netrc-optional --netrc-file log/8/netrc257 > log/8/stdout257 2> log/8/stderr257 === End of file commands.log === Start of file curl257.out HTTP/1.1 301 This is a weirdo text message swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: http://anotherone.com/2570002 Connection: close HTTP/1.1 302 Followed here fine swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: http://athird.com/2570003 HTTP/1.1 200 Followed here fine swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 52 If this is received, the location following worked === End of file curl257.out === Start of file http_server.log 01:02:31.703390 ====> Client connect 01:02:31.703542 accept_connection 3 returned 4 01:02:31.703613 accept_connection 3 returned 0 01:02:31.710092 Read 93 bytes 01:02:31.710186 Process 93 bytes request 01:02:31.710269 Got request: GET /verifiedserver HTTP/1.1 01:02:31.710330 Are-we-friendly question received 01:02:31.710436 Wrote request (93 bytes) input to log/8/server.input 01:02:31.710522 Identifying ourselves as friends 01:02:31.710665 Response sent (57 bytes) and written to log/8/server.response 01:02:31.710723 special request received, no persistency 01:02:31.710774 ====> Client disconnect 0 01:03:20.433395 ====> Client connect 01:03:20.433547 accept_connection 3 returned 4 01:03:20.433625 accept_connection 3 returned 0 01:03:21.581649 Read 178 bytes 01:03:21.581839 Process 178 bytes request 01:03:21.581934 Got request: GET http://supersite.com/want/257 HTTP/1.1 01:03:21.582006 Serve test number 257 part 0 01:03:21.582217 - request found to be complete (257) 01:03:21.582486 Wrote request (178 bytes) input to log/8/server.input 01:03:21.582589 Send response test257 section 01:03:21.582813 connection close instruction "swsclose" found in response 01:03:21.582981 Response sent (235 bytes) and written to log/8/server.response 01:03:21.583041 instructed to close connection after server-reply 01:03:21.583099 ====> Client disconnect 0 01:03:23.740453 ====> Client connect 01:03:23.740600 accept_connection 3 returned 4 01:03:23.740680 accept_connection 3 returned 0 01:03:23.828102 Read 179 bytes 01:03:23.828289 Process 179 bytes request 01:03:23.828386 Got request: GET http://anotherone.com/2570002 HTTP/1.1 01:03:23.828457 Serve test number 257 part 2 01:03:23.828670 - request found to be complete (257) 01:03:23.828903 Wrote request (179 bytes) input to log/8/server.input 01:03:23.829000 Send response test257 section 01:03:23.829250 connection close instruction "swsclose" found in response 01:03:23.829425 Response sent (191 bytes) and written to log/8/server.response 01:03:23.829489 instructed to close connection after server-reply 01:03:23.829548 ====> Client disconnect 0 01:03:24.089967 ====> Client connect 01:03:24.090092 accept_connection 3 returned 4 01:03:24.090168 accept_connection 3 returned 0 01:03:24.106363 Read 128 bytes 01:03:24.106518 Process 128 bytes request 01:03:24.106614 Got request: GET http://athird.com/2570003 HTTP/1.1 01:03:24.106686 Serve test number 257 part 3 01:03:24.106891 - request found to be complete (257) 01:03:24.107125 Wrote request (128 bytes) input to log/8/server.input 01:03:24.107217 Send response test257 section 01:03:24.107479 connection close instruction "swsclose" found in response 01:03:24.107647 Response sent (174 bytes) and written to log/8/server.response 01:03:24.107711 instructed to close connection after server-reply 01:03:24.107774 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 60802 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file netrc257 machine supersite.com login user1 password passwd1 machine anotherone.com login user2 password passwd2 === End of file netrc257 === Start of file server.cmd Testnum 257 === End of file server.cmd === Start of file server.input GET http://supersite.com/want/257 HTTP/1.1 Host: supersite.com Authorization: Basic dXNlcjE6cGFzc3dkMQ== User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://anotherone.com/2570002 HTTP/1.1 Host: anotherone.com Authorization: Basic dXNlcjI6cGFzc3dkMg== User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://athird.com/2570003 HTTP/1.1 Host: athird.com User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 301 This is a weirdo text message swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: http://anotherone.com/2570002 Connection: close This server reply is for testing a simple Location: following HTTP/1.1 302 Followed here fine swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: http://athird.com/2570003 If this is received, the location following worked HTTP/1.1 200 Followed here fine swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 52 If this is received, the location following worked === End of file server.response === Start of file stderr257 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 100 52 100 52 0 0 7 0 0:00:07 0:00:06 0:00:01 173 === End of file stderr257 === Start of file trace257 01:03:20.499459 * Trying 127.0.0.1:39461... 01:03:21.376284 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 43950 01:03:21.510072 * using HTTP/1.x 01:03:21.650779 * Server auth using Basic with user 'user1' 01:03:22.004359 => Send header, 178 bytes (0xb2) 0000: GET http://supersite.com/want/257 HTTP/1.1 002c: Host: supersite.com 0041: Authorization: Basic dXNlcjE6cGFzc3dkMQ== 006c: User-Agent: curl/8.17.0 0085: Accept: */* 0092: Proxy-Connection: Keep-Alive 00b0: 01:03:22.334617 <= Recv header, 52 bytes (0x34) 0000: HTTP/1.1 301 This is a weirdo text message swsclose. 01:03:22.628978 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:03:22.724982 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:03:22.808901 <= Recv header, 40 bytes (0x28) 0000: Location: http://anotherone.com/2570002. 01:03:22.860048 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:03:22.938702 <= Recv header, 1 bytes (0x1) 0000: . 01:03:23.179426 * Request completely sent off 01:03:23.428332 * shutting down connection #0 01:03:23.881331 * Issue another request to this URL: 'http://anotherone.com/2570002' 01:03:24.07CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind258 ../src/curl -q --output log/2/curl258.out --include --trace-ascii log/2/trace258 --trace-time -x http://127.0.0.1:39863 http://remotehost:54321/we/want/258 -F name=daniel -F tool=curl -F file=@log/2/test258.txt -H "Expect:" -U uuuser:pppassword --proxy-anyauth > log/2/stdout258 2> log/2/stderr258 7671 * Hostname 127.0.0.1 was found in DNS cache 01:03:24.119116 * Trying 127.0.0.1:39461... 01:03:24.155375 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 50038 01:03:24.161666 * using HTTP/1.x 01:03:24.189458 * Server auth using Basic with user 'user2' 01:03:24.215818 => Send header, 179 bytes (0xb3) 0000: GET http://anotherone.com/2570002 HTTP/1.1 002c: Host: anotherone.com 0042: Authorization: Basic dXNlcjI6cGFzc3dkMg== 006d: User-Agent: curl/8.17.0 0086: Accept: */* 0093: Proxy-Connection: Keep-Alive 00b1: 01:03:24.260866 <= Recv header, 41 bytes (0x29) 0000: HTTP/1.1 302 Followed here fine swsclose. 01:03:24.270188 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:03:24.277699 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:03:24.286084 <= Recv header, 36 bytes (0x24) 0000: Location: http://athird.com/2570003. 01:03:24.305233 * no chunk, no close, no size. Assume close to signal end 01:03:24.314276 <= Recv header, 1 bytes (0x1) 0000: . 01:03:24.339709 * Request completely sent off 01:03:24.354921 * shutting down connection #1 01:03:24.386412 * Issue another request to this URL: 'http://athird.com/2570003' 01:03:24.431339 * Couldn't find host athird.com in the log/8/netrc257 file; using defaults 01:03:24.456829 * Hostname 127.0.0.1 was found in DNS cache 01:03:24.470983 * Trying 127.0.0.1:39461... 01:03:24.476727 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 50052 01:03:24.478666 * using HTTP/1.x 01:03:24.492392 => Send header, 128 bytes (0x80) 0000: GET http://athird.com/2570003 HTTP/1.1 0028: Host: athird.com 003a: User-Agent: curl/8.17.0 0053: Accept: */* 0060: Proxy-Connection: Keep-Alive 007e: 01:03:24.512188 <= Recv header, 41 bytes (0x29) 0000: HTTP/1.1 200 Followed here fine swsclose. 01:03:24.518451 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:03:24.524134 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:03:24.549253 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 52. 01:03:24.570631 <= Recv header, 1 bytes (0x1) 0000: . 01:03:24.590867 <= Recv data, 52 bytes (0x34) 0000: If this is received, the location following worked.. 01:03:24.828095 * Connection #2 to host 127.0.0.1:39461 left intact === End of file trace257 === Start of file valgrind257 ==227325== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind257 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 263 in state 4 Runner 2 (id 185908) running test 258 in state 4 Runner 3 (id 185910) running test 259 in state 4 Runner 4 (id 185912) running test 261 in state 4 Runner 5 (id 185914) running test 264 in state 4 Runner 6 (id 185916) running test 260 in state 4 Runner 7 (id 185918) running test 262 in state 4 Runner 8 (id 185920) running test 265 in state 4 test 0258...[HTTP POST multipart without Expect: header using proxy anyauth (Digest)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind258 ../src/curl -q --output log/2/curl258.out --include --trace-ascii log/2/trace258 --trace-time -x http://127.0.0.1:39863 http://remotehost:54321/we/want/258 -F name=daniel -F tool=curl -F file=@log/2/test258.txt -H "Expect:" -U uuuser:pppassword --proxy-anyauth > log/2/stdout258 2> log/2/stderr258 valgrind ERROR ==227506== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 258 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind258 ../src/curl -q --output log/2/curl258.out --include --trace-ascii log/2/trace258 --trace-time -x http://127.0.0.1:39863 http://remotehost:54321/we/want/258 -F name=daniel -F tool=curl -F file=@log/2/test258.txt -H "Expect:" -U uuuser:pppassword --proxy-anyauth > log/2/stdout258 2> log/2/stderr258 === End of file commands.log === Start of file curl258.out HTTP/1.1 407 no, tell me who you are first swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Proxy-Authenticate: Digest realm="many secrets", nonce="911" Proxy-Connection: close Content-Length: 0 HTTP/1.1 200 A OK Server: Microsoft-IIS/6.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 3 ok === End of file curl258.out === Start of file http_server.log 01:02:41.327754 ====> Client connect 01:02:41.327903 accept_connection 3 returned 4 01:02:41.327978 accept_connection 3 returned 0 01:02:41.334196 Read 93 bytes 01:02:41.334293 Process 93 bytes request 01:02:41.334378 Got request: GET /verifiedserver HTTP/1.1 01:02:41.334441 Are-we-friendly question received 01:02:41.334553 Wrote request (93 bytes) input to log/2/server.input 01:02:41.334636 Identifying ourselves as friends 01:02:41.334810 Response sent (57 bytes) and written to log/2/server.response 01:02:41.334871 special request received, no persistency 01:02:41.334925 ====> Client disconnect 0 01:03:36.215233 ====> Client connect 01:03:36.215382 accept_connection 3 returned 4 01:03:36.215464 accept_connection 3 returned 0 01:03:37.960072 Read 691 bytes 01:03:37.960282 Process 691 bytes request 01:03:37.960379 Got request: POST http://remotehost:54321/we/want/258 HTTP/1.1 01:03:37.960451 Serve test number 258 part 0 01:03:37.960686 - request found to be complete (258) 01:03:37.960908 Found Content-Length: 433 in the request 01:03:37.961112 Wrote request (691 bytes) input to log/2/server.input 01:03:37.961221 Send response test258 section 01:03:37.961493 connection close instruction "swsclose" found in response 01:03:37.961711 Response sent (217 bytes) and written to log/2/server.response 01:03:37.961778 instructed to close connection after server-reply 01:03:37.961838 ====> Client disconnect 0 01:03:40.539624 ====> Client connect 01:03:40.539755 accept_connection 3 returned 4 01:03:40.539840 accept_connection 3 returned 0 01:03:41.170499 Read 838 bytes 01:03:41.170679 Process 838 bytes request 01:03:41.170768 Got request: POST http://remotehost:54321/we/want/258 HTTP/1.1 01:03:41.170834 Serve test number 258 part 0 01:03:41.171059 - request found to be complete (258) 01:03:41.171260 Found Content-Length: 433 in the request 01:03:41.171336 Received Digest request, sending back data 1000 01:03:41.171427 Wrote request (838 bytes) input to log/2/server.input 01:03:41.171512 Send response test258 section 01:03:41.171873 Response sent (115 bytes) and written to log/2/server.response 01:03:41.171937 => persistent connection request ended, awaits new request 01:03:42.356112 Connection closed by client 01:03:42.356311 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 60482 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 258 === End of file server.cmd === Start of file server.input POST http://remotehost:54321/we/want/258 HTTP/1.1 Host: remotehost:54321 User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive Content-Length: 433 Content-Type: multipart/form-data; boundary=------------------------N5IAuRAK3VMULoj1p3nz03 --------------------------N5IAuRAK3VMULoj1p3nz03 Content-Disposition: form-data; name="name" daniel --------------------------N5IAuRAK3VMULoj1p3nz03 Content-Disposition: form-data; name="tool" curl --------------------------N5IAuRAK3VMUCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind260 ../src/curl -q --output log/6/curl260.out --include --trace-ascii log/6/trace260 --trace-time "http://127.0.0.1:38277?260" > log/6/stdout260 2> log/6/stderr260 Loj1p3nz03 Content-Disposition: form-data; name="file"; filename="test258.txt" Content-Type: text/plain foo- This is a moo- bar --------------------------N5IAuRAK3VMULoj1p3nz03-- POST http://remotehost:54321/we/want/258 HTTP/1.1 Host: remotehost:54321 Proxy-Authorization: Digest username="uuuser", realm="many secrets", nonce="911", uri="/we/want/258", response="2501654ca391f0b5c8c12a1da77e34cd" User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive Content-Length: 433 Content-Type: multipart/form-data; boundary=------------------------N5IAuRAK3VMULoj1p3nz03 --------------------------N5IAuRAK3VMULoj1p3nz03 Content-Disposition: form-data; name="name" daniel --------------------------N5IAuRAK3VMULoj1p3nz03 Content-Disposition: form-data; name="tool" curl --------------------------N5IAuRAK3VMULoj1p3nz03 Content-Disposition: form-data; name="file"; filename="test258.txt" Content-Type: text/plain foo- This is a moo- bar --------------------------N5IAuRAK3VMULoj1p3nz03-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 407 no, tell me who you are first swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Proxy-Authenticate: Digest realm="many secrets", nonce="911" Proxy-Connection: close Content-Length: 0 HTTP/1.1 200 A OK Server: Microsoft-IIS/6.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 3 ok === End of file server.response === Start of file stderr258 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 433 0 0 100 433 0 100 0:00:04 0:00:04 --:--:-- 146 100 433 0 0 100 433 0 79 0:00:05 0:00:05 --:--:-- 104 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 100 433 0 0 100 433 0 59 0:00:07 0:00:07 --:--:-- 565 100 436 0 3 100 433 0 57 0:00:07 0:00:07 --:--:-- 419 === End of file stderr258 === Start of file test258.txt foo- This is a moo- bar === End of file test258.txt === Start of file trace258 01:03:35.294347 * Trying 127.0.0.1:39863... 01:03:36.150181 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 55764 01:03:36.267584 * using HTTP/1.x 01:03:37.383130 => Send header, 258 bytes (0x102) 0000: POST http://remotehost:54321/we/want/258 HTTP/1.1 0033: Host: remotehost:54321 004b: User-Agent: curl/8.17.0 0064: Accept: */* 0071: Proxy-Connection: Keep-Alive 008f: Content-Length: 433 00a4: Content-Type: multipart/form-data; boundary=-------------------- 00e4: ----N5IAuRAK3VMULoj1p3nz03 0100: 01:03:37.504405 => Send data, 433 bytes (0x1b1) 0000: --------------------------N5IAuRAK3VMULoj1p3nz03 0032: Content-Disposition: form-data; name="name" 005f: 0061: daniel 0069: --------------------------N5IAuRAK3VMULoj1p3nz03 009b: Content-Disposition: form-data; name="tool" 00c8: 00ca: curl 00d0: --------------------------N5IAuRAK3VMULoj1p3nz03 0102: Content-Disposition: form-data; name="file"; filename="test258.t 0142: xt" 0147: Content-Type: text/plain 0161: 0163: foo-.This is a moo-.bar. 017d: --------------------------N5IAuRAK3VMULoj1p3nz03-- 01:03:37.624021 * upload completely sent off: 433 bytes 01:03:37.906048 <= Recv header, 52 bytes (0x34) 0000: HTTP/1.1 407 no, tell me who you are first swsclose. 01:03:38.207088 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:03:38.312739 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:03:38.502584 <= Recv header, 61 bytes (0x3d) 0000: Proxy-Authenticate: Digest realm="many secrets", nonce="911". 01:03:38.549631 * HTTP/1.1 proxy connection set close 01:03:38.553603 <= Recv header, 24 bytes (0x18) 0000: Proxy-Connection: close. 01:03:38.592063 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 0. 01:03:38.677417 * Need to rewind upload for next request 01:03:38.741493 <= Recv header, 1 bytes (0x1) 0000: . 01:03:39.171989 * shutting down connection #0 01:03:39.711507 * Issue another request to this URL: 'http://remotehost:54321/we/want/258' 01:03:39.875978 * Hostname 127.0.0.1 was found in DNS cache 01:03:39.917948 * Trying 127.0.0.1:39863... 01:03:39.956816 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 55766 01:03:39.963553 * using HTTP/1.x 01:03:40.465479 * Proxy auth using Digest with user 'uuuser' 01:03:40.556964 => Send header, 405 bytes (0x195) 0000: POST http://remotehost:54321/we/want/258 HTTP/1.1 0033: Host: remotehost:54321 004b: Proxy-Authorization: Digest username="uuuser", realm="many secre 008b: ts", nonce="911", uri="/we/want/258", response="2501654ca391f0b5 00cb: c8c12a1da77e34cd" 00de: User-Agent: curl/8.17.0 00f7: Accept: */* 0104: Proxy-Connection: Keep-Alive 0122: Content-Length: 433 0137: Content-Type: multipart/form-data; boundary=-------------------- 0177: ----N5IAuRAK3VMULoj1p3nz03 0193: 01:03:40.602640 => Send data, 433 bytes (0x1b1) 0000: --------------------------N5IAuRAK3VMULoj1p3nz03 0032: Content-Disposition: form-data; name="name" 005f: 0061: daniel 0069: --------------------------N5IAuRAK3VMULoj1p3nz03 009b: Content-Disposition: form-data; name="tool" 00c8: 00ca: curl 00d0: --------------------------N5IAuRAK3VMULoj1p3nz03 0102: Content-Disposition: form-data; name="file"; filename="test258.t 0142: xt" 0147: Content-Type: text/plain 0161: 0163: foo-.This is a moo-.bar. 017d: --------------------------N5IAuRAK3VMULoj1p3nz03-- 01:03:40.653770 * upload completely sent off: 433 bytes 01:03:40.690410 <= Recv header, 19 bytes (0x13) 0000: HTTP/1.1 200 A OK 01:03:40.701064 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/6.0 01:03:40.724294 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 01:03:40.734437 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 3 01:03:40.758666 <= Recv header, 2 bytes (0x2) 0000: 01:03:40.783875 <= Recv data, 3 bytes (0x3) 0000: ok. 01:03:40.990410 * Connection #1 to host 127.0.0.1:39863 left intact === End of file trace258 === Start of file valgrind258 ==227506== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind258 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 263 in state 4 Runner 2 (id 185908) running test 266 in state 4 Runner 3 (id 185910) running test 259 in state 4 Runner 4 (id 185912) running test 261 in state 4 Runner 5 (id 185914) running test 264 in state 4 Runner 6 (id 185916) running test 260 in state 4 Runner 7 (id 185918) running test 262 in state 4 Runner 8 (id 185920) running test 265 in state 4 test 0260...[HTTP GET URL without slash but with question mark] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind260 ../src/curl -q --output log/6/curl260.out --include --trace-ascii log/6/trace260 --trace-time "http://127.0.0.1:38277?260" > log/6/stdout260 2> log/6/stderr260 valgrind ERROR ==227853== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 260 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind260 ../src/curl -q --output log/6/curl260.out --include --trace-ascii log/6/trace260 --trace-time "http://127.0.0.1:38277?260" > log/6/stdout260 2> log/6/stderr260 === End of file commands.log === Start of file curl260.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-3CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind259 ../src/curl -q --output log/3/curl259.out --include --trace-ascii log/3/trace259 --trace-time -x http://127.0.0.1:46853 http://remotehost:54321/we/want/259 -F name=daniel -F tool=curl -F file=@log/3/test259.txt -U uuuser:pppassword --proxy-anyauth -H "Expect: 100-continue" > log/3/stdout259 2> log/3/stderr259 9462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl260.out === Start of file http_server.log 01:03:02.311083 ====> Client connect 01:03:02.311245 accept_connection 3 returned 4 01:03:02.311319 accept_connection 3 returned 0 01:03:02.318050 Read 93 bytes 01:03:02.318160 Process 93 bytes request 01:03:02.318253 Got request: GET /verifiedserver HTTP/1.1 01:03:02.318317 Are-we-friendly question received 01:03:02.318433 Wrote request (93 bytes) input to log/6/server.input 01:03:02.318528 Identifying ourselves as friends 01:03:02.318712 Response sent (57 bytes) and written to log/6/server.response 01:03:02.318774 special request received, no persistency 01:03:02.318830 ====> Client disconnect 0 01:03:49.760746 ====> Client connect 01:03:49.760900 accept_connection 3 returned 4 01:03:49.760982 accept_connection 3 returned 0 01:03:50.793793 Read 83 bytes 01:03:50.793989 Process 83 bytes request 01:03:50.794082 Got request: GET /?260 HTTP/1.1 01:03:50.794217 No test number in path 01:03:50.794469 [log/6/server.cmd] cmdfile says testnum 260 01:03:50.794690 - request found to be complete (260) 01:03:50.794933 Wrote request (83 bytes) input to log/6/server.input 01:03:50.795036 Send response test260 section 01:03:50.795485 Response sent (256 bytes) and written to log/6/server.response 01:03:50.795552 => persistent connection request ended, awaits new request 01:03:52.690835 Connection closed by client 01:03:52.691023 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 34592 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 260 === End of file server.cmd === Start of file server.input GET /?260 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr260 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr260 === Start of file trace260 01:03:49.820270 * Trying 127.0.0.1:38277... 01:03:50.727044 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 34114 01:03:50.860569 * using HTTP/1.x 01:03:51.216385 => Send header, 83 bytes (0x53) 0000: GET /?260 HTTP/1.1 0014: Host: 127.0.0.1:38277 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: 01:03:51.556914 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:03:51.872283 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:03:51.971068 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:03:51.994802 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:03:52.002312 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:03:52.011358 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:03:52.041927 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:03:52.096062 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:03:52.129713 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:03:52.134423 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:03:52.211903 <= Recv header, 1 bytes (0x1) 0000: . 01:03:52.267562 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:03:52.371500 * we are done reading and this is set to close, stop send 01:03:52.400835 * abort upload 01:03:52.878937 * shutting down connection #0 === End of file trace260 === Start of file valgrind260 ==227853== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind260 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 263 in state 4 Runner 2 (id 185908) running test 266 in state 4 Runner 3 (id 185910) running test 259 in state 4 Runner 4 (id 185912) running test 261 in state 4 Runner 5 (id 185914) running test 264 in state 4 Runner 6 (id 185916) running test 267 in state 4 Runner 7 (id 185918) running test 262 in state 4 Runner 8 (id 185920) running test 265 in state 4 test 0259...[HTTP POST multipart with Expect: header using proxy anyauth (Digest)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind259 ../src/curl -q --output log/3/curl259.out --include --trace-ascii log/3/trace259 --trace-time -x http://127.0.0.1:46853 http://remotehost:54321/we/want/259 -F name=daniel -F tool=curl -F file=@log/3/test259.txt -U uuuser:pppassword --proxy-anyauth -H "Expect: 100-continue" > log/3/stdout259 2> log/3/stderr259 valgrind ERROR ==227738== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 259 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind259 ../src/curl -q --output log/3/curl259.out --include --trace-ascii log/3/trace259 --trace-time -x http://127.0.0.1:46853 http://remotehost:54321/we/want/259 -F name=daniel -F tool=curl -F file=@log/3/test259.txt -U uuuser:pppassword --proxy-anyauth -H "Expect: 100-continue" > log/3/stdout259 2> log/3/stderr259 === End of file commands.log === Start of file curl259.out HTTP/1.1 407 no, tell me who you are first Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Proxy-Authenticate: Digest realm="many secrets", nonce="911" Content-Length: 0 HTTP/1.1 200 A OK Server: Microsoft-IIS/6.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 3 ok === End of file curl259.out === Start of file http_server.log 01:03:00.906742 ====> Client connect 01:03:00.906896 accept_connection 3 returned 4 01:03:00.906975 accept_connection 3 returned 0 01:03:00.916546 Read 93 bytes 01:03:00.916648 Process 93 bytes request 01:03:00.916736 Got request: GET /verifiedserver HTTP/1.1 01:03:00.916800 Are-we-friendly question received 01:03:00.916914 Wrote request (93 bytes) input to log/3/server.input 01:03:00.917007 Identifying ourselves as friends 01:03:00.917183 Response sent (57 bytes) and written to log/3/server.response 01:03:00.917245 special request received, no persistency 01:03:00.917299 ====> Client disconnect 0 01:03:55.743616 ====> Client connect 01:03:55.743765 accept_connection 3 returned 4 01:03:55.743850 accept_connection 3 returned 0 01:03:57.395017 Read 280 bytes 01:03:57.395220 Process 280 bytes request 01:03:57.395312 Got request: POST http://remotehost:54321/we/want/259 HTTP/1.1 01:03:57.395383 Serve test number 259 part 0 01:03:57.395635 - request found to be complete (259) 01:03:57.395872 Found Content-Length: 433 in the request 01:03:59.244019 Read 433 bytes 01:03:59.244250 Process 713 bytes request [CONTINUED] 01:03:59.244327 - request found to be complete (259) 01:03:59.244727 Wrote request (713 bytes) input to log/3/server.input 01:03:59.244847 Send response test259 section 01:03:59.245283 Response sent (184 bytes) and written to log/3/server.response 01:03:59.245357 => persistent connection request ended, awaits new request 01:04:01.988360 Read 427 bytes 01:04:01.988571 Process 427 bytes request 01:04:01.988665 Got request: POST http://remotehost:54321/we/want/259 HTTP/1.1 01:04:01.988735 Serve test number 259 part 0 01:04:01.988957 - request found to be complete (259) 01:04:01.989161 Found Content-Length: 433 in the request 01:04:01.989234 Received Digest request, sending back data 1000 01:04:03.093102 Read 433 bytes 01:04:03.093288 Process 860 bytes request [CONTINUED] 01:04:03.093370 - request found to be complete (259) 01:04:03.093733 Wrote request (860 bytes) input to log/3/server.input 01:04:03.093834 Send response test259 section 01:04:03.094245 Response sent (115 bytes) and written to log/3/server.response 01:04:03.094315 => persistent connection request ended, awaits new request 01:04:04.384080 Connection closed by client 01:04:04.384282 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 33546 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 259 === End of file server.cmd === Start of file server.input POST http://remotehost:54321/we/want/259 HTTP/1.1 Host: remotehost:54321 User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive Expect: 100-continue Content-Length: 433 Content-Type: multipart/form-data; boundary=------------------------2X7uEN77OLevlVKSLYJaB0 --------------------------2X7uEN77OLevlVKSLYJaB0 Content-Disposition: form-data; name="name" daniel --------------------------2X7uEN77OLevlVKSLYJaB0 Content-Disposition: form-data; name="tool" curl --------------------------2X7uEN77OLevlVKSLYJaB0 Content-Disposition: form-data; name="file"; filename="test259.txt" Content-Type: text/plain foo- This is a moo- bar --------------------------2X7uEN77OLevlVKSLYJaB0-- POST http://remotehost:54321/we/want/259 HTTP/1.1 Host: remotehost:54321 Proxy-Authorization: Digest username="uuuser", realm="many secrets", nonce="911", uri="/we/want/259", response="b479994d13e60f3aa192a67c5892ddc5" User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive Expect: 100-continue Content-Length: 433 Content-Type: multipart/form-data; boundary=------------------------2X7uEN77OLevlVKSLYJaB0 --------------------------2X7uEN77OLevlVKSLYJaB0 Content-Disposition: form-data; name="name" daniel --------------------------2X7uEN77OLevlVKSLYJaB0 Content-Disposition: form-data; name="tool" curl --------------------------2X7uEN77OLevlVKSLYJaB0 Content-Disposition: form-data; name="file"; filename="test259.txt" Content-Type: text/plain foo- This is a moo- bar --------------------------2X7uEN77OLevlVKSLYJaB0-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 407 no, tell me who you are first Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Proxy-Authenticate: Digest realm="many secrets", nonce="911" Content-Length: 0 HTTP/1.1 200 A OK Server: Microsoft-IIS/6.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 3 ok === End of file server.response === Start of file stderr259 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 433 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 433 0 0 100 433 0 72 0:00:06 0:00:05 0:00:01 94 100 433 0 0 100 433 0 61 0:00:07 0:00:07 --:--:-- 77 100 433 0 0 100 433 0 60 0:00:07 0:00:07 --:--:-- 93 0 0 0 0 0 0 0 0 --:--:-- 0:00:08 --:--:-- 0 0 433 0 0 0 0 0 0 --:--:-- 0:00:08 --:--:-- 0 100 433 0 0 100 433 0 44 0:00:09 0:00:09 --:--:-- 249 100 436 0 3 100 433 0 43 0:00:10 0:00:09 0:00:01 224 === End of file stderr259 === Start of file test259.txt foo- This is a moo- bar === End of file test259.txt === Start of file trace259 01:03:55.803283 * Trying 127.0.0.1:46853... 01:03:56.712753 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 50674 01:03:56.864507 * using HTTP/1.x 01:03:57.822621 => Send header, 280 bytes (0x118) 0000: POST http://remotehost:54321/we/want/259 HTTP/1.1 0033: Host: remotehost:54321 004b: User-Agent: curl/8.17.0 0064: Accept: */* 0071: Proxy-Connection: Keep-Alive 008f: Expect: 100-continue 00a5: Content-Length: 433 00ba: Content-Type: multipart/form-data; boundary=-------------------- 00fa: ----2X7uEN77OLevlVKSLYJaB0 0116: 01:03:59.346717 * Done waiting for 100-continue 01:03:59.644645 => Send data, 433 bytes (0x1b1) 0000: --------------------------2X7uEN77OLevlVKSLYJaB0 0032: Content-Disposition: form-data; name="name" 005f: 0061: daniel 0069: --------------------------2X7uEN77OLevlVKSLYJaB0 009b: Content-Disposition: form-data; name="tool" 00c8: 00ca: curl 00d0: --------------------------2X7uEN77OLevlVKSLYJaB0 0102: Content-Disposition: form-data; name="file"; filename="test259.t 0142: xt" 0147: Content-Type: text/plain 0161: 0163: foo-.This is a moo-.bar. 017d: --------------------------2X7uEN77OLevlVKSLYJaB0-- 01:03:59.745597 * upload completely sent off: 433 bytes 01:03:59.933506 <= Recv header, 43 bytes (0x2b) 0000: HTTP/1.1 407 no, tell me who you are first. 01:04:00.237962 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:04:00.340512 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:04:00.529094 <= Recv header, 61 bytes (0x3d) 0000: Proxy-Authenticate: Digest realm="many secrets", nonce="911". 01:04:00.566208 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 0. 01:04:00.652217 * Need to rewind upload for next request 01:04:00.707735 * Ignoring the response-body 01:04:00.724925 * setting size while ignoring 01:04:00.740236 <= Recv header, 1 bytes (0x1) 0000: . 01:04:01.146898 * Connection #0 to host 127.0.0.1:46853 left intact 01:04:01.343559 * Issue another request to this URL: 'http://remotehost:54321/we/want/259' 01:04:01.766308 * Reusing existing http: connection with proxy 127.0.0.1 01:04:02.299363 * Proxy auth using Digest with user 'uuuser' 01:04:02.374528 => Send header, 427 bytes (0x1ab) 0000: POST http://remotehost:54321/we/want/259 HTTP/1.1 0033: Host: remotehost:54321 004b: Proxy-Authorization: Digest username="uuuser", realm="many secre 008b: ts", nonce="911", uri="/we/want/259", response="b479994d13e60f3a 00cb: a192a67c5892ddc5" 00de: User-Agent: curl/8.17.0 00f7: Accept: */* 0104: Proxy-Connection: Keep-Alive 0122: Expect: 100-continue 0138: Content-Length: 433 014d: Content-Type: multipart/form-data; boundary=-------------------- 018d: ----2X7uEN77OLevlVKSLYJaB0 01a9: 01:04:03.458249 * Done waiting for 100-continue 01:04:03.476129 => Send data, 433 bytes (0x1b1) 0000: --------------------------2X7uEN77OLevlVKSLYJaB0 0032: Content-Disposition: form-data; name="name" 005f: 0061: daniel 0069: -----------CMD (2048): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind262 ../src/curl -q --output log/7/curl262.out --include --trace-ascii log/7/trace262 --trace-time http://127.0.0.1:34897/262 > log/7/stdout262 2> log/7/stderr262 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind261 ../src/curl -q --output log/4/curl261.out --include --trace-ascii log/4/trace261 --trace-time ftp://127.0.0.1:38207/261 > log/4/stdout261 2> log/4/stderr261 ---------------2X7uEN77OLevlVKSLYJaB0 009b: Content-Disposition: form-data; name="tool" 00c8: 00ca: curl 00d0: --------------------------2X7uEN77OLevlVKSLYJaB0 0102: Content-Disposition: form-data; name="file"; filename="test259.t 0142: xt" 0147: Content-Type: text/plain 0161: 0163: foo-.This is a moo-.bar. 017d: --------------------------2X7uEN77OLevlVKSLYJaB0-- 01:04:03.527685 * upload completely sent off: 433 bytes 01:04:03.555742 <= Recv header, 19 bytes (0x13) 0000: HTTP/1.1 200 A OK 01:04:03.566896 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/6.0 01:04:03.590465 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 01:04:03.600338 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 3 01:04:03.622426 <= Recv header, 2 bytes (0x2) 0000: 01:04:03.647844 <= Recv data, 3 bytes (0x3) 0000: ok. 01:04:03.768369 * Connection #0 to host 127.0.0.1:46853 left intact === End of file trace259 === Start of file valgrind259 ==227738== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind259 test 0262...[Reject HTTP response with binary zero in header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind262 ../src/curl -q --output log/7/curl262.out --include --trace-ascii log/7/trace262 --trace-time http://127.0.0.1:34897/262 > log/7/stdout262 2> log/7/stderr262 valgrind ERROR ==228165== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 262 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind262 ../src/curl -q --output log/7/curl262.out --include --trace-ascii log/7/trace262 --trace-time http://127.0.0.1:34897/262 > log/7/stdout262 2> log/7/stderr262 === End of file commands.log === Start of file http_server.log 01:03:15.238873 ====> Client connect 01:03:15.239051 accept_connection 3 returned 4 01:03:15.239130 accept_connection 3 returned 0 01:03:15.246682 Read 93 bytes 01:03:15.246805 Process 93 bytes request 01:03:15.246901 Got request: GET /verifiedserver HTTP/1.1 01:03:15.246968 Are-we-friendly question received 01:03:15.247090 Wrote request (93 bytes) input to log/7/server.input 01:03:15.247188 Identifying ourselves as friends 01:03:15.247345 Response sent (57 bytes) and written to log/7/server.response 01:03:15.247410 special request received, no persistency 01:03:15.247469 ====> Client disconnect 0 01:04:02.944089 ====> Client connect 01:04:02.944239 accept_connection 3 returned 4 01:04:02.944330 accept_connection 3 returned 0 01:04:03.971062 Read 82 bytes 01:04:03.971281 Process 82 bytes request 01:04:03.971375 Got request: GET /262 HTTP/1.1 01:04:03.971448 Serve test number 262 part 0 01:04:03.971625 - request found to be complete (262) 01:04:03.971873 Wrote request (82 bytes) input to log/7/server.input 01:04:03.971998 Send response test262 section 01:04:03.972341 Response sent (238 bytes) and written to log/7/server.response 01:04:03.972408 => persistent connection request ended, awaits new request 01:04:04.841542 Connection closed by client 01:04:04.841735 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 45248 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 262 === End of file server.cmd === Start of file server.input GET /262 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes hello === End of file server.response === Start of file stderr262 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 curl: (8) Nul byte in header === End of file stderr262 === Start of file trace262 01:04:03.009241 * Trying 127.0.0.1:34897... 01:04:03.907974 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 54874 01:04:04.034235 * using HTTP/1.x 01:04:04.396002 => Send header, 82 bytes (0x52) 0000: GET /262 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:04:04.766198 * Nul byte in header 01:04:05.126073 * closing connection #0 === End of file trace262 === Start of file valgrind262 ==228165== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind262 test 0261...[FTP RETR with 226 response code to TYPE] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind261 ../src/curl -q --output log/4/curl261.out --include --trace-ascii log/4/trace261 --trace-time ftp://127.0.0.1:38207/261 > log/4/stdout261 2> log/4/stderr261 valgrind ERROR ==228112== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 261 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind261 ../src/curl -q --output log/4/curl261.out --include --trace-ascii log/4/trace261 --trace-time ftp://127.0.0.1:38207/261 > log/4/stdout261 2> log/4/stderr261 === End of file commands.log === Start of file curl261.out hepp === End of file curl261.out === Start of file ftp_server.log 01:03:14.964316 ====> Client connect 01:03:14.965364 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:03:14.972184 < "USER anonymous" 01:03:14.972530 > "331 We are happy you popped in![CR][LF]" 01:03:14.973262 < "PASS ftp@example.com" 01:03:14.973510 > "230 Welcome you silly person[CR][LF]" 01:03:14.974601 < "PWD" 01:03:14.974888 > "257 "/" is current directory[CR][LF]" 01:03:14.977120 < "EPSV" 01:03:14.977340 ====> Passive DATA channel requested by client 01:03:14.977519 DATA sockfilt for passive data channel starting... 01:03:15.022354 DATA sockfilt for passive data channel started (pid 228080) 01:03:15.023865 DATA sockfilt for passive data channel listens on port 38499 01:03:15.024298 > "229 Entering Passive Mode (|||38499|)[CR][LF]" 01:03:15.024481 Client has been notified that DATA conn will be accepted on port 38499 01:03:15.027773 Client connects to port 38499 01:03:15.028010 ====> Client established passive DATA connection on port 38499 01:03:15.028725 < "TYPE I" 01:03:15.029034 > "200 I modify TYPE as you wanted[CR][LF]" 01:03:15.030629 < "SIZE verifiedserver" 01:03:15.031233 > "213 18[CR][LF]" 01:03:15.032374 < "RETR verifiedserver" 01:03:15.034873 > "150 Binary junk (18 bytes).[CR][LF]" 01:03:15.035422 =====> Closing passive DATA connection... 01:03:15.035589 Server disconnects passive DATA connection 01:03:15.036965 Server disconnected passive DATA connection 01:03:15.037151 DATA sockfilt for passive data channel quits (pid 228080) 01:03:15.044172 DATA sockfilt for passive data channel quit (pid 228080) 01:03:15.045438 =====> Closed passive DATA connection 01:03:15.046036 > "226 File transfer complete[CR][LF]" 01:03:15.089477 < "QUIT" 01:03:15.090806 > "221 bye bye baby[CR][LF]" 01:03:15.094386 MAIN sockfilt said DISC 01:03:15.094594 ====> Client disconnected 01:03:15.094879 Awaiting input 01:04:02.398783 ====> Client connect 01:04:02.399550 FTPD: Getting commands from log/4/server.cmd 01:04:02.400311 FTPD: set custom reply for TYPE command 01:04:02.400578 FTPD: run test case number: 261 01:04:02.401487 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:04:03.495017 < "USER anonymous" 01:04:03.495436 > "331 We are happy you popped in![CR][LF]" 01:04:03.618460 < "PASS ftp@example.com" 01:04:03.618893 > "230 Welcome you silly person[CR][LF]" 01:04:03.708507 < "PWD" 01:04:03.708964 > "257 "/" is current directory[CR][LF]" 01:04:03.918399 < "EPSV" 01:04:03.918731 ====> Passive DATA channel requested by client 01:04:03.918886 DATA sockfilt for passive data channel starting... 01:04:04.004893 DATA sockfilt for passive data channel started (pid 229163) 01:04:04.006251 DATA sockfilt for passive data channel listens on port 46559 01:04:04.007074 > "229 Entering Passive Mode (|||46559|)[CR][LF]" 01:04:04.007260 Client has been notified that DATA conn will be accepted on port 46559 01:04:04.240985 Client connects to port 46559 01:04:04.241542 ====> Client established passive DATA connection on port 46559 01:04:04.371837 < "TYPE I" 01:04:04.372248 > "226 Kind of on the positive side![CR][LF]" 01:04:04.440771 < "SIZE 261" 01:04:04.442811 > "213 5[CR][LF]" 01:04:04.525142 < "RETR 261" 01:04:04.526326 > "150 Binary data connection for 261 () (5 bytes).[CR][LF]" 01:04:04.526993 =====> Closing passive DATA connection... 01:04:04.527168 Server disconnects passive DATA connection 01:04:04.528599 Server disconnected passive DATA connection 01:04:04.528809 DATA sockfilt for passive data channel quits (pid 229163) 01:04:04.540996 DATA sockfilt for passive data channel quit (pid 229163) 01:04:04.541385 =====> Closed passive DATA connection 01:04:04.541704 > "226 File transfer complete[CR][LF]" 01:04:06.549744 < "QUIT" 01:04:06.550175 > "221 bye bye baby[CR][LF]" 01:04:06.687930 MAIN sockfilt said DISC 01:04:06.688648 ====> Client disconnected 01:04:06.689000 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:03:14.577156 ====> Client connect 01:03:14.581216 Received DATA (on stdin) 01:03:14.581324 > 160 bytes data, server => client 01:03:14.581429 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:03:14.581525 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:03:14.581613 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:03:14.585962 < 16 bytes data, client => server 01:03:14.586061 'USER anonymous\r\n' 01:03:14.588105 Received DATA (on stdin) 01:03:14.588184 > 33 bytes data, server => client 01:03:14.588265 '331 We are happy you popped in!\r\n' 01:03:14.588533 < 22 bytes data, client => server 01:03:14.588609 'PASS ftp@example.com\r\n' 01:03:14.589095 Received DATA (on stdin) 01:03:14.589157 > 30 bytes data, server => client 01:03:14.589234 '230 Welcome you silly person\r\n' 01:03:14.589449 < 5 bytes data, client => server 01:03:14.589514 'PWD\r\n' 01:03:14.590696 Received DATA (on stdin) 01:03:14.590765 > 30 bytes data, server => client 01:03:14.590842 '257 "/" is current directory\r\n' 01:03:14.592222 < 6 bytes data, client => server 01:03:14.592299 'EPSV\r\n' 01:03:14.640348 Received DATA (on stdin) 01:03:14.640487 > 39 bytes data, server => client 01:03:14.640582 '229 Entering Passive Mode (|||38499|)\r\n' 01:03:14.643004 < 8 bytes data, client => server 01:03:14.643083 'TYPE I\r\n' 01:03:14.645082 Received DATA (on stdin) 01:03:14.645159 > 33 bytes data, server => client 01:03:14.645250 '200 I modify TYPE as you wanted\r\n' 01:03:14.645737 < 21 bytes data, client => server 01:03:14.645818 'SIZE verifiedserver\r\n' 01:03:14.646542 Received DATA (on stdin) 01:03:14.646621 > 8 bytes data, server => client 01:03:14.646720 '213 18\r\n' 01:03:14.647489 < 21 bytes data, client => server 01:03:14.647570 'RETR verifiedserver\r\n' 01:03:14.648254 Received DATA (on stdin) 01:03:14.648319 > 29 bytes data, server => client 01:03:14.648418 '150 Binary junk (18 bytes).\r\n' 01:03:14.661297 Received DATA (on stdin) 01:03:14.661407 > 28 bytes data, server => client 01:03:14.661513 '226 File transfer complete\r\n' 01:03:14.703947 < 6 bytes data, client => server 01:03:14.704117 'QUIT\r\n' 01:03:14.705446 Received DATA (on stdin) 01:03:14.705526 > 18 bytes data, server => client 01:03:14.705630 '221 bye bye baby\r\n' 01:03:14.706262 ====> Client disconnect 01:03:14.710679 Received ACKD (on stdin) 01:04:02.014003 ====> Client connect 01:04:02.016929 Received DATA (on stdin) 01:04:02.017054 > 160 bytes data, server => client 01:04:02.017167 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:04:02.017271 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:04:02.017367 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:04:03.109486 < 16 bytes data, client => server 01:04:03.109690 'USER anonymous\r\n' 01:04:03.110914 Received DATA (on stdin) 01:04:03.110996 > 33 bytes data, server => client 01:04:03.111089 '331 We are happy you popped in!\r\n' 01:04:03.229972 < 22 bytes data, client => server 01:04:03.230167 'PASS ftp@example.com\r\n' 01:04:03.234365 Received DATA (on stdin) 01:04:03.234471 > 30 bytes data, server => client 01:04:03.234563 '230 Welcome you silly person\r\n' 01:04:03.323127 < 5 bytes data, client => server 01:04:03.323345 'PWD\r\n' 01:04:03.324432 Received DATA (on stdin) 01:04:03.324515 > 30 bytes data, server => client 01:04:03.324606 '257 "/" is current directory\r\n' 01:04:03.532275 < 6 bytes data, client => server 01:04:03.532472 'EPSV\r\n' 01:04:03.622103 Received DATA (on stdin) 01:04:03.622243 > 39 bytes data, server => client 01:04:03.622357 '229 Entering Passive Mode (|||46559|)\r\n' 01:04:03.983155 < 8 bytes data, client => server 01:04:03.983348 'TYPE I\r\n' 01:04:03.987716 Received DATA (on stdin) 01:04:03.987827 > 35 bytes data, server => client 01:04:03.987924 '226 Kind of on the positive side!\r\n' 01:04:04.055444 < 10 bytes data, client => server 01:04:04.055646 'SIZE 261\r\n' 01:04:04.058303 Received DATA (on stdin) 01:04:04.058395 > 7 bytes data, server => client 01:04:04.058471 '213 5\r\n' 01:04:04.136490 < 10 bytes data, client => server 01:04:04.136701 'RETR 261\r\n' 01:04:04.143086 Received DATA (on stdin) 01:04:04.143204 > 50 bytes data, server => client 01:04:04.143303 '150 Binary data connection for 261 () (5 bytes).\r\n' 01:04:04.157164 Received DATA (on stdin) 01:04:04.157306 > 28 bytes data, server => client 01:04:04.157396 '226 File transfer complete\r\n' 01:04:06.164362 < 6 bytes data, client => server 01:04:06.164568 'QUIT\r\n' 01:04:06.165638 Received DATA (on stdin) 01:04:06.165722 > 18 bytes data, server => client 01:04:06.165808 '221 bye bye baby\r\n' 01:04:06.303096 ====> Client disconnect 01:04:06.303963 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:03:15.628194 Running IPv4 version 01:03:15.636224 Listening on port 38499 01:03:15.636791 Wrote pid 228080 to log/4/server/ftp_sockdata.pid 01:03:15.637595 Received PING (on stdin) 01:03:15.638750 Received PORT (on stdin) 01:03:15.643265 ====> Client connect 01:03:15.651413 Received DATA (on stdin) 01:03:15.651768 > 18 bytes data, server => client 01:03:15.652178 'WE ROOLZ: 201673\r\n' 01:03:15.652451 Received DISC (on stdin) 01:03:15.656528 ====> Client forcibly disconnected 01:03:15.656719 Received QUICMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind263 ../src/curl -q --output log/1/curl263.out --include --trace-ascii log/1/trace263 --trace-time -g -x "http://[::1]:40103" http://veryveryremotesite.com/263 > log/1/stdout263 2> log/1/stderr263 T (on stdin) 01:03:15.656795 quits 01:03:15.657316 ============> sockfilt quits 01:04:03.599161 Running IPv4 version 01:04:03.618385 Listening on port 46559 01:04:03.618957 Wrote pid 229163 to log/4/server/ftp_sockdata.pid 01:04:03.619774 Received PING (on stdin) 01:04:03.620979 Received PORT (on stdin) 01:04:03.855405 ====> Client connect 01:04:04.142907 Received DATA (on stdin) 01:04:04.143320 > 5 bytes data, server => client 01:04:04.143684 'hepp\n' 01:04:04.143983 Received DISC (on stdin) 01:04:04.149796 ====> Client forcibly disconnected 01:04:04.150059 Received QUIT (on stdin) 01:04:04.150143 quits 01:04:04.150670 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY TYPE 226 Kind of on the positive side Testnum 261 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE 261 RETR 261 QUIT === End of file server.input === Start of file stderr261 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 5 0 5 0 0 0 0 --:--:-- 0:00:05 --:--:-- 1 === End of file stderr261 === Start of file trace261 01:04:02.078773 * Trying 127.0.0.1:38207... 01:04:02.892073 * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 42358 01:04:03.091052 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:04:03.378373 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:04:03.399780 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:04:03.404033 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:04:03.408333 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:04:03.515225 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:04:03.592842 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:04:03.616072 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:04:03.686747 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:04:03.706417 => Send header, 5 bytes (0x5) 0000: PWD 01:04:03.723592 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:04:03.761979 * Entry path is '/' 01:04:03.865339 * Request has same path as previous transfer 01:04:03.917189 => Send header, 6 bytes (0x6) 0000: EPSV 01:04:03.933073 * Connect data stream passively 01:04:04.009862 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||46559|) 01:04:04.146759 * Connecting to 127.0.0.1 (127.0.0.1) port 46559 01:04:04.233630 * Trying 127.0.0.1:46559... 01:04:04.333425 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 46559) from 127.0.0.1 port 35764 01:04:04.366337 => Send header, 8 bytes (0x8) 0000: TYPE I 01:04:04.386777 <= Recv header, 35 bytes (0x23) 0000: 226 Kind of on the positive side 01:04:04.415263 * Got a 226 response code instead of the assumed 200 01:04:04.440376 => Send header, 10 bytes (0xa) 0000: SIZE 261 01:04:04.480510 <= Recv header, 7 bytes (0x7) 0000: 213 5 01:04:04.521405 => Send header, 10 bytes (0xa) 0000: RETR 261 01:04:04.538173 <= Recv header, 50 bytes (0x32) 0000: 150 Binary data connection for 261 () (5 bytes). 01:04:04.578106 * Maxdownload = -1 01:04:04.589159 * Getting file with size: 5 01:04:04.739900 <= Recv data, 5 bytes (0x5) 0000: hepp. 01:04:05.058474 * abort upload 01:04:05.085088 <= Recv data, 0 bytes (0x0) 01:04:05.260228 * Remembering we are in dir "" 01:04:05.452127 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:04:05.776411 * Connection #0 to host 127.0.0.1:38207 left intact === End of file trace261 === Start of file valgrind261 ==228112== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind261 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/1/server/http_ipv6_server.pid" --logfile "log/1/http_ipv6_server.log" --logdir "log/1" --portfile log/1/server/http_ipv6_server.port --config log/1/server.cmd --ipv6 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP-IPv6 server is on PID 228333 port 40103 * pid http-ipv6 => 228333 228333 test 0263...[HTTP-IPv6 GET with proxy specified using IPv6-numerical address] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind263 ../src/curl -q --output log/1/curl263.out --include --trace-ascii log/1/trace263 --trace-time -g -x "http://[::1]:40103" http://veryveryremotesite.com/263 > log/1/stdout263 2> log/1/stderr263 valgrind ERROR ==228342== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 263 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind263 ../src/curl -q --output log/1/curl263.out --include --trace-ascii log/1/trace263 --trace-time -g -x "http://[::1]:40103" http://veryveryremotesite.com/263 > log/1/stdout263 2> log/1/stderr263 === End of file commands.log === Start of file curl263.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Content-Type: text/html hello === End of file curl263.out === Start of file http_ipv6_server.log 01:03:18.568466 Running HTTP IPv6 version on port 40103 01:03:18.575381 Wrote pid 228333 to log/1/server/http_ipv6_server.pid 01:03:18.575679 Wrote port 40103 to log/1/server/http_ipv6_server.port 01:04:05.330099 ====> Client connect 01:04:05.330335 accept_connection 3 returned 4 01:04:05.330561 accept_connection 3 returned 0 01:04:06.457738 Read 148 bytes 01:04:06.459159 Process 148 bytes request 01:04:06.464241 Got request: GET http://veryveryremotesite.com/263 HTTP/1.1 01:04:06.464620 Serve test number 263 part 0 01:04:06.470431 - request found to be complete (263) 01:04:06.471844 Wrote request (148 bytes) input to log/1/server.input 01:04:06.472371 Send response test263 section 01:04:06.477476 Response sent (101 bytes) and written to log/1/server.response 01:04:06.477691 => persistent connection request ended, awaits new request 01:04:09.073115 Connection closed by client 01:04:09.073367 ====> Client disconnect 0 === End of file http_ipv6_server.log === Start of file server.cmd Testnum 263 === End of file server.cmd === Start of file server.input GET http://veryveryremotesite.com/263 HTTP/1.1 Host: veryveryremotesite.com User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Content-Type: text/html hello === End of file server.response === Start of file stderr263 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr263 === Start of file trace263 01:04:05.374465 * Trying [::1]:40103... 01:04:06.308150 * Established connection to ::1 (::1 port 40103) from ::1 port 39348 01:04:06.432064 * using HTTP/1.x 01:04:06.890813 => Send header, 148 bytes (0x94) 0000: GET http://veryvCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind264 ../src/curl -q --output log/5/curl264.out --include --trace-ascii log/5/trace264 --trace-time http://we.want.that.site.com/264 -x http://f%61ke:user@127.0.0.1:46263 > log/5/stdout264 2> log/5/stderr264 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind265 ../src/curl -q --output log/8/curl265.out --include --trace-ascii log/8/trace265 --trace-time http://test.remote.example.com.265:39461/path/2650002 --proxy http://127.0.0.1:39461 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit" > log/8/stdout265 2> log/8/stderr265 eryremotesite.com/263 HTTP/1.1 0030: Host: veryveryremotesite.com 004e: User-Agent: curl/8.17.0 0067: Accept: */* 0074: Proxy-Connection: Keep-Alive 0092: 01:04:07.241658 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:04:07.559113 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:04:07.676318 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:04:07.744247 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:04:07.826231 <= Recv header, 1 bytes (0x1) 0000: . 01:04:07.886494 <= Recv data, 6 bytes (0x6) 0000: hello. 01:04:08.484243 * Connection #0 to host ::1:40103 left intact === End of file trace263 === Start of file valgrind263 ==228342== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind263 test 0264...[HTTP with proxy string including http:// and user+password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind264 ../src/curl -q --output log/5/curl264.out --include --trace-ascii log/5/trace264 --trace-time http://we.want.that.site.com/264 -x http://f%61ke:user@127.0.0.1:46263 > log/5/stdout264 2> log/5/stderr264 valgrind ERROR ==228513== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 264 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind264 ../src/curl -q --output log/5/curl264.out --include --trace-ascii log/5/trace264 --trace-time http://we.want.that.site.com/264 -x http://f%61ke:user@127.0.0.1:46263 > log/5/stdout264 2> log/5/stderr264 === End of file commands.log === Start of file curl264.out HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Type: text/html Content-Length: 26 the content would go here === End of file curl264.out === Start of file http_server.log 01:03:25.134461 ====> Client connect 01:03:25.134636 accept_connection 3 returned 4 01:03:25.134713 accept_connection 3 returned 0 01:03:25.141589 Read 93 bytes 01:03:25.141685 Process 93 bytes request 01:03:25.141779 Got request: GET /verifiedserver HTTP/1.1 01:03:25.141847 Are-we-friendly question received 01:03:25.141965 Wrote request (93 bytes) input to log/5/server.input 01:03:25.142059 Identifying ourselves as friends 01:03:25.142247 Response sent (57 bytes) and written to log/5/server.response 01:03:25.142312 special request received, no persistency 01:03:25.142369 ====> Client disconnect 0 01:04:12.718111 ====> Client connect 01:04:12.718251 accept_connection 3 returned 4 01:04:12.718326 accept_connection 3 returned 0 01:04:13.939248 Read 187 bytes 01:04:13.939498 Process 187 bytes request 01:04:13.939601 Got request: GET http://we.want.that.site.com/264 HTTP/1.1 01:04:13.939674 Serve test number 264 part 0 01:04:13.939863 - request found to be complete (264) 01:04:13.940120 Wrote request (187 bytes) input to log/5/server.input 01:04:13.940232 Send response test264 section 01:04:13.940439 connection close instruction "swsclose" found in response 01:04:13.940640 Response sent (136 bytes) and written to log/5/server.response 01:04:13.940706 instructed to close connection after server-reply 01:04:13.940767 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 59210 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 264 === End of file server.cmd === Start of file server.input GET http://we.want.that.site.com/264 HTTP/1.1 Host: we.want.that.site.com Proxy-Authorization: Basic ZmFrZTp1c2Vy User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Type: text/html Content-Length: 26 the content would go here === End of file server.response === Start of file stderr264 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 26 100 26 0 0 4 0 0:00:06 0:00:05 0:00:01 7 100 26 100 26 0 0 4 0 0:00:06 0:00:05 0:00:01 7 === End of file stderr264 === Start of file trace264 01:04:12.777989 * Trying 127.0.0.1:46263... 01:04:13.660323 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 53166 01:04:13.809705 * using HTTP/1.x 01:04:13.939945 * Proxy auth using Basic with user 'fake' 01:04:14.366033 => Send header, 187 bytes (0xbb) 0000: GET http://we.want.that.site.com/264 HTTP/1.1 002f: Host: we.want.that.site.com 004c: Proxy-Authorization: Basic ZmFrZTp1c2Vy 0075: User-Agent: curl/8.17.0 008e: Accept: */* 009b: Proxy-Connection: Keep-Alive 00b9: 01:04:14.757547 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 200 OK swsclose 01:04:15.086199 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:04:15.238528 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:04:15.278090 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 01:04:15.364631 <= Recv header, 2 bytes (0x2) 0000: 01:04:15.425304 <= Recv data, 26 bytes (0x1a) 0000: the content would go here. 01:04:15.996480 * Connection #0 to host 127.0.0.1:46263 left intact === End of file trace264 === Start of file valgrind264 ==228513== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind264 test 0265...[HTTP proxy CONNECT auth NTLM and then POST, response-body in the 407] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind265 ../src/curl -q --output log/8/curl265.out --include --trace-ascii log/8/trace265 --trace-time http://test.remote.example.com.265:39461/path/2650002 --proxy http://127.0.0.1:39461 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit" > log/8/stdout265 2> log/8/stderr265 valgrind ERROR ==228669== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 265 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind265 ../src/curl -q --output log/8/curl265.out --include --trace-ascii log/8/trace265 --trace-time http://test.remote.example.com.265:39461/path/2650002 --proxy http://127.0.0.1:39461 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit" > log/8/stdout265 2> log/8/stderr265 === End of file commands.log === Start of file curl265.out HTTP/1.0 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Connection: Keep-Alive Content-Length: 1033 HTTP/1.1 200 Things are fine in proxy land Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 7 Connection: close Content-Type: text/html Funny-head: yesyes daniel === End of file curl265.out === Start of file http_server.log 01:03:28.383015 ====> Client connect 01:03:28.383199 accept_connection 3 returned 4 01:03:28.383280 accept_connection 3 returned 0 01:03:28.390631 Read 93 bytes 01:03:28.390723 Process 93 bytes request 01:03:28.390818 Got request: GET /verifiedserver HTTP/1.1 01:03:28.390893 Are-we-friendly question received 01:03:28.391009 Wrote request (93 bytes) input to log/8/server.input 01:03:28.391100 Identifying ourselves as friends 01:03:28.391252 Response sent (57 bytes) and written to log/8/server.response 01:03:28.391313 special request received, no persistency 01:03:28.391368 ====> Client disconnect 0 01:04:16.746838 ====> Client connect 01:04:16.746972 accept_connection 3 returned 4 01:04:16.747047 accept_connection 3 returned 0 01:04:17.752687 Read 222 bytes 01:04:17.752887 Process 222 bytes request 01:04:17.753138 Received a CONNECT test.remote.example.com.265:39461 HTTP/1.1 request 01:04:17.753301 Port number: 39461, test case number: -7 01:04:17.753587 [log/8/server.cmd] cmdfile says testnum 265 01:04:17.753885 - request found to be complete (265) 01:04:17.754111 Received NTLM type-1, sending back data 1001 01:04:17.754266 Wrote request (222 bytes) input to log/8/server.input 01:04:17.754391 Send response test265 section 01:04:17.754943 Response sent (1381 bytes) and written to log/8/server.response 01:04:17.755037 received CONNECT but isn't running as proxy 01:04:19.826000 Read 354 bytes 01:04:19.826181 Process 354 bytes request 01:04:19.826286 Received a CONNECT test.remote.example.com.265:39461 HTTP/1.1 request 01:04:19.826364 Port number: 39461, test case number: -7 01:04:19.826471 [log/8/server.cmd] cmdfile says testnum 265 01:04:19.826767 - request found to be complete (265) 01:04:19.826987 Received NTLM type-3, sending back data 1002 01:04:19.827076 Wrote request (354 bytes) input to log/8/server.input 01:04:19.827157 Send response test265 section 01:04:19.827572 Response sent (118 bytes) and written to log/8/server.response 01:04:19.827640 received CONNECT but isn't running as proxy 01:04:20.666394 Read 184 bytes 01:04:20.666600 Process 184 bytes request 01:04:20.666686 Got request: POST /path/2650002 HTTP/1.1 01:04:20.666750 Serve test number 265 part 2 01:04:20.666984 - request found to be complete (265) 01:04:20.667176 Found Content-Length: 6 in the request 01:04:20.667274 Wrote request (184 bytes) input to log/8/server.input 01:04:20.667358 Send response test265 section 01:04:20.667748 Response sent (139 bytes) and written to log/8/server.response 01:04:20.667811 => persistent connection request ended, awaits new request 01:04:22.035743 Connection closed by client 01:04:22.035955 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 50068 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 265 === End of file server.cmd === Start of file server.input CONNECT test.remote.example.com.265:39461 HTTP/1.1 Host: test.remote.example.com.265:39461 Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive CONNECT test.remote.example.com.265:39461 HTTP/1.1 Host: test.remote.example.com.265:39461 Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive POST /path/2650002 HTTP/1.1 Host: test.remote.example.com.265:39461 User-Agent: curl/8.17.0 Accept: */* Content-Length: 6 Content-Type: application/x-www-form-urlencoded postit === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.0 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Connection: Keep-Alive Content-Length: 1033 And you should ignore this data. QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ HTTP/1.1 200 Things are fine in proxy land Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 7 Connection: close Content-Type: text/html Funny-head: yesyes daniel === End of file server.response === Start of file stderr265 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 13 100 7 0 6 1 0 0:00:07 0:00:06 0:00:01 2 100 13 0 7 0 6 0 0 --:--:-- 0:00:07 --:--:-- 3 === End of file stderr265 === Start of file trace265 01:04:16.821618 * Trying 127.0.0.1:39461... 01:04:17.626189 * CONNECT: no ALPN negotiated 01:04:17.679470 * allocate connect buffer 01:04:17.872882 * Proxy auth using NTLM with user 'testuser' 01:04:18.007149 * Establish HTTP proxy tunnel to test.remote.example.com.265:39461 01:04:18.166805 => Send header, 222 bytes (0xde) 0000: CONNECT test.remote.example.com.265:39461 HTTP/1.1 0034: Host: test.remote.example.com.265:39461 005d: Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAA 009d: AAAAA= 00a5: User-Agent: curl/8.17.0 00be: Proxy-Connection: Keep-Alive 00dc: 01:04:18.368827 <= Recv header, 57 bytes (0x39) 0000: HTTP/1.0 407 Authorization Required to proxy me my dear 01:04:18.718639 <= Recv header, 243 bytes (0xf3) 0000: Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVD 0040: gyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQ 0080: ASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGU 00c0: AdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== 01:04:19.023888 <= Recv header, 24 bytes (0x18) 0000: Connection: Keep-Alive 01:04:19.060213 <= Recv header, 22 bytes (0x16) 0000: Content-Length: 1033CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind266 ../src/curl -q --output log/2/curl266.out --include --trace-ascii log/2/trace266 --trace-time http://127.0.0.1:39863/266 -D log/2/heads266 > log/2/stdout266 2> log/2/stderr266 01:04:19.075184 <= Recv header, 2 bytes (0x2) 0000: 01:04:19.088936 * Ignore 1033 bytes of response-body 01:04:20.177404 * Proxy auth using NTLM with user 'testuser' 01:04:20.187424 * Establish HTTP proxy tunnel to test.remote.example.com.265:39461 01:04:20.213730 => Send header, 354 bytes (0x162) 0000: CONNECT test.remote.example.com.265:39461 HTTP/1.1 0034: Host: test.remote.example.com.265:39461 005d: Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAA 009d: AAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw 00dd: 47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1 011d: NUQVRJT04= 0129: User-Agent: curl/8.17.0 0142: Proxy-Connection: Keep-Alive 0160: 01:04:20.269815 <= Recv header, 44 bytes (0x2c) 0000: HTTP/1.1 200 Things are fine in proxy land 01:04:20.283340 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 01:04:20.295798 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 01:04:20.302210 <= Recv header, 2 bytes (0x2) 0000: 01:04:20.323094 * CONNECT phase completed 01:04:20.341221 * CONNECT tunnel established, response 200 01:04:20.524237 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 42738 01:04:20.625106 * using HTTP/1.x 01:04:21.066836 => Send header, 178 bytes (0xb2) 0000: POST /path/2650002 HTTP/1.1 001d: Host: test.remote.example.com.265:39461 0046: User-Agent: curl/8.17.0 005f: Accept: */* 006c: Content-Length: 6 007f: Content-Type: application/x-www-form-urlencoded 00b0: 01:04:21.095710 => Send data, 6 bytes (0x6) 0000: postit 01:04:21.161969 * upload completely sent off: 6 bytes 01:04:21.381625 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:04:21.455737 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:04:21.519079 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 7. 01:04:21.553448 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:04:21.570471 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:04:21.575283 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:04:21.645237 <= Recv header, 1 bytes (0x1) 0000: . 01:04:21.699855 <= Recv data, 7 bytes (0x7) 0000: daniel. 01:04:22.209107 * shutting down connection #0 === End of file trace265 === Start of file valgrind265 ==228669== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind265 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 271 in state 4 Runner 2 (id 185908) running test 266 in state 4 Runner 3 (id 185910) running test 268 in state 4 Runner 4 (id 185912) running test 270 in state 4 Runner 5 (id 185914) running test 272 in state 4 Runner 6 (id 185916) running test 267 in state 4 Runner 7 (id 185918) running test 269 in state 4 Runner 8 (id 185920) running test 273 in state 4 test 0266...[HTTP GET with chunked Transfer-Encoding and chunked trailer] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind266 ../src/curl -q --output log/2/curl266.out --include --trace-ascii log/2/trace266 --trace-time http://127.0.0.1:39863/266 -D log/2/heads266 > log/2/stdout266 2> log/2/stderr266 valgrind ERROR ==228861== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 266 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind266 ../src/curl -q --output log/2/curl266.out --include --trace-ascii log/2/trace266 --trace-time http://127.0.0.1:39863/266 -D log/2/heads266 > log/2/stdout266 2> log/2/stderr266 === End of file commands.log === Start of file curl266.out HTTP/1.1 200 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Trailer: chunky-trailer Connection: mooo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccc chunky-trailer: header data === End of file curl266.out === Start of file heads266 HTTP/1.1 200 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Trailer: chunky-trailer Connection: mooo chunky-trailer: header data === End of file heads266 === Start of file http_server.log 01:03:46.147591 ====> Client connect 01:03:46.147749 accept_connection 3 returned 4 01:03:46.147824 accept_connection 3 returned 0 01:03:46.154021 Read 93 bytes 01:03:46.154121 Process 93 bytes request 01:03:46.154217 Got request: GET /verifiedserver HTTP/1.1 01:03:46.154291 Are-we-friendly question received 01:03:46.154415 Wrote request (93 bytes) input to log/2/server.input 01:03:46.154511 Identifying ourselves as friends 01:03:46.154706 Response sent (57 bytes) and written to log/2/server.response 01:03:46.154777 special request received, no persistency 01:03:46.154841 ====> Client disconnect 0 01:04:33.319852 ====> Client connect 01:04:33.319994 accept_connection 3 returned 4 01:04:33.320076 accept_connection 3 returned 0 01:04:34.285116 Read 82 bytes 01:04:34.285329 Process 82 bytes request 01:04:34.285422 Got request: GET /266 HTTP/1.1 01:04:34.285492 Serve test number 266 part 0 01:04:34.285908 instructed to delay 10 msecs between packets 01:04:34.286055 - request found to be complete (266) 01:04:34.286207 instructed to delay 10 msecs between packets 01:04:34.286381 Wrote request (82 bytes) input to log/2/server.input 01:04:34.286487 Send response test266 section 01:04:34.286811 Pausing 10 milliseconds after writing 20 bytes 01:04:34.299710 Pausing 10 milliseconds after writing 20 bytes 01:04:34.309870 Pausing 10 milliseconds after writing 20 bytes 01:04:34.320035 Pausing 10 milliseconds after writing 20 bytes 01:04:34.330211 Pausing 10 milliseconds after writing 20 bytes 01:04:34.340380 Pausing 10 milliseconds after writing 20 bytes 01:04:34.350538 Pausing 10 milliseconds after writing 20 bytes 01:04:34.360692 Pausing 10 milliseconds after writing 20 bytes 01:04:34.370852 Pausing 10 milliseconds after writing 20 bytes 01:04:34.381017 Pausing 10 milliseconds after writing 20 bytes 01:04:34.391173 Pausing 10 milliseconds after writing 20 bytes 01:04:34.401326 Pausing 10 milliseconds after writing 20 bytes 01:04:34.411476 Pausing 10 milliseconds after writing 20 bytes 01:04:34.421626 Pausing 10 milliseconds after writing 20 bytes 01:04:34.431776 Pausing 10 milliseconds after writing 20 bytes 01:04:34.441924 Pausing 10 milliseconds after writing 20 bytes 01:04:34.452074 Pausing 10 milliseconds after writing 20 bytes 01:04:34.462224 Pausing 10 milliseconds after writing 9 bytes 01:04:34.472384 Response sent (349 bytes) and written to log/2/server.response 01:04:34.472461 => persistent connection request ended, awaits new request 01:04:36.837240 Connection closed by client 01:04:36.837439 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 45696 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd writedelay: 10 Testnum 266 === End of file server.cmd === Start of file server.input GET /266 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Trailer: chunky-trailer Connection: mooo 40 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind267 ../src/curl -q --output log/6/curl267.out --include --trace-ascii log/6/trace267 --trace-time http://127.0.0.1:38277/267 -u testuser:testpass --ntlm -d "data" -H "Header1: yes" -H "Header2: no" > log/6/stdout267 2> log/6/stderr267 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 30 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 21;heresatest=moooo cccccccccccccccccccccccccccccccc 0 chunky-trailer: header data === End of file server.response === Start of file stderr266 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 145 0 145 0 0 32 0 --:--:-- 0:00:04 --:--:-- 44 100 145 0 145 0 0 31 0 --:--:-- 0:00:04 --:--:-- 43 === End of file stderr266 === Start of file trace266 01:04:32.396100 * Trying 127.0.0.1:39863... 01:04:33.255570 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 35092 01:04:33.374741 * using HTTP/1.x 01:04:33.706111 => Send header, 82 bytes (0x52) 0000: GET /266 HTTP/1.1 0013: Host: 127.0.0.1:39863 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:04:34.040664 <= Recv header, 28 bytes (0x1c) 0000: HTTP/1.1 200 funky chunky 01:04:34.354618 <= Recv header, 34 bytes (0x22) 0000: Server: fakeit/0.9 fakeitbad/1.0 01:04:34.518693 <= Recv header, 28 bytes (0x1c) 0000: Transfer-Encoding: chunked 01:04:34.549050 <= Recv header, 25 bytes (0x19) 0000: Trailer: chunky-trailer 01:04:34.602425 <= Recv header, 18 bytes (0x12) 0000: Connection: mooo 01:04:34.674503 <= Recv header, 2 bytes (0x2) 0000: 01:04:34.729874 <= Recv data, 214 bytes (0xd6) 0000: 40 0004: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0046: 30 004a: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 007c: 21;heresatest=moooo 0091: cccccccccccccccccccccccccccccccc. 00b4: 0 00b7: chunky-trailer: header data 00d4: 01:04:35.406118 * Connection #0 to host 127.0.0.1:39863 left intact === End of file trace266 === Start of file valgrind266 ==228861== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind266 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 271 in state 4 Runner 2 (id 185908) running test 274 in state 4 Runner 3 (id 185910) running test 268 in state 4 Runner 4 (id 185912) running test 270 in state 4 Runner 5 (id 185914) running test 272 in state 4 Runner 6 (id 185916) running test 267 in state 4 Runner 7 (id 185918) running test 269 in state 4 Runner 8 (id 185920) running test 273 in state 4 test 0267...[HTTP POST with NTLM authorization and added custom headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind267 ../src/curl -q --output log/6/curl267.out --include --trace-ascii log/6/trace267 --trace-time http://127.0.0.1:38277/267 -u testuser:testpass --ntlm -d "data" -H "Header1: yes" -H "Header2: no" > log/6/stdout267 2> log/6/stderr267 valgrind ERROR ==229038== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 267 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind267 ../src/curl -q --output log/6/curl267.out --include --trace-ascii log/6/trace267 --trace-time http://127.0.0.1:38277/267 -u testuser:testpass --ntlm -d "data" -H "Header1: yes" -H "Header2: no" > log/6/stdout267 2> log/6/stderr267 === End of file commands.log === Start of file curl267.out HTTP/1.1 401 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== HTTP/1.1 200 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file curl267.out === Start of file http_server.log 01:03:56.507861 ====> Client connect 01:03:56.508030 accept_connection 3 returned 4 01:03:56.508106 accept_connection 3 returned 0 01:03:56.514688 Read 93 bytes 01:03:56.514800 Process 93 bytes request 01:03:56.514895 Got request: GET /verifiedserver HTTP/1.1 01:03:56.514962 Are-we-friendly question received 01:03:56.515085 Wrote request (93 bytes) input to log/6/server.input 01:03:56.515180 Identifying ourselves as friends 01:03:56.515364 Response sent (57 bytes) and written to log/6/server.response 01:03:56.515430 special request received, no persistency 01:03:56.515492 ====> Client disconnect 0 01:04:44.522307 ====> Client connect 01:04:44.522451 accept_connection 3 returned 4 01:04:44.522529 accept_connection 3 returned 0 01:04:45.744347 Read 244 bytes 01:04:45.744531 Process 244 bytes request 01:04:45.744628 Got request: POST /267 HTTP/1.1 01:04:45.744700 Serve test number 267 part 0 01:04:45.744929 - request found to be complete (267) 01:04:45.745134 Found Content-Length: 0 in the request 01:04:45.745213 Received NTLM type-1, sending back data 1001 01:04:45.745362 Wrote request (244 bytes) input to log/6/server.input 01:04:45.745469 Send response test267 section 01:04:45.746053 Response sent (421 bytes) and written to log/6/server.response 01:04:45.746120 => persistent connection request ended, awaits new request 01:04:49.050507 Read 380 bytes 01:04:49.050695 Process 380 bytes request 01:04:49.050791 Got request: POST /267 HTTP/1.1 01:04:49.050861 Serve test number 267 part 0 01:04:49.051082 - request found to be complete (267) 01:04:49.051284 Found Content-Length: 4 in the request 01:04:49.051365 Received NTLM type-3, sending back data 1002 01:04:49.051457 Expecting 4 POSTed bytes 01:04:49.051573 Wrote request (380 bytes) input to log/6/server.input 01:04:49.051666 Send response test267 section 01:04:49.051927 connection close instruction "swsclose" found in response 01:04:49.052134 Response sent (180 bytes) and written to log/6/server.response 01:04:49.052201 instructed to close connection after server-reply 01:04:49.052262 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 36706 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 267 === End of file server.cmd === Start of file server.input POST /267 HTTP/1.1 Host: 127.0.0.1:38277 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/8.17.0 Accept: */* Header1: yes Header2: no Content-Length: 0 Content-Type: application/x-www-form-urlencoded POST /267 HTTP/1.1 Host: 127.0.0.1:38277 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= User-Agent: curl/8.17.0 Accept: */* Header1: yes Header2: no Content-Length: 4 Content-Type: application/x-www-form-urlencoded data === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 401 Now gimme that second request of crap Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 34 WWW-Authenticate: NTLM TlRMTCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind269 ../src/curl -q --output log/7/curl269.out --include --trace-ascii log/7/trace269 --trace-time http://127.0.0.1:34897/269 --ignore-content-length > log/7/stdout269 2> log/7/stderr269 VNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== This is not the real page either HTTP/1.1 200 Things are fine in server land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page === End of file server.response === Start of file stderr267 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 34 100 34 0 0 7 0 0:00:04 0:00:04 --:--:-- 9 100 34 100 34 0 0 7 0 0:00:04 0:00:04 --:--:-- 9 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 4 0 0 0 4 0 0 --:--:-- 0:00:06 --:--:-- 3 100 36 100 32 0 4 4 0 0:00:08 0:00:06 0:00:02 26 === End of file stderr267 === Start of file trace267 01:04:44.599507 * Trying 127.0.0.1:38277... 01:04:45.459610 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 49210 01:04:45.585344 * using HTTP/1.x 01:04:45.767634 * Server auth using NTLM with user 'testuser' 01:04:46.166101 => Send header, 244 bytes (0xf4) 0000: POST /267 HTTP/1.1 0014: Host: 127.0.0.1:38277 002b: Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 006d: User-Agent: curl/8.17.0 0086: Accept: */* 0093: Header1: yes 00a1: Header2: no 00ae: Content-Length: 0 00c1: Content-Type: application/x-www-form-urlencoded 00f2: 01:04:46.506706 <= Recv header, 52 bytes (0x34) 0000: HTTP/1.1 401 Now gimme that second request of crap 01:04:46.810537 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 01:04:46.934554 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 01:04:46.972558 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 34 01:04:47.160837 <= Recv header, 241 bytes (0xf1) 0000: WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgy 0040: NcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQAS 0080: AAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAd 00c0: ABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== 01:04:47.293589 * Ignoring the response-body 01:04:47.310882 * setting size while ignoring 01:04:47.325856 <= Recv header, 2 bytes (0x2) 0000: 01:04:47.855928 * Connection #0 to host 127.0.0.1:38277 left intact 01:04:47.971216 * Issue another request to this URL: 'http://127.0.0.1:38277/267' 01:04:48.366033 * Reusing existing http: connection with host 127.0.0.1 01:04:49.261661 * Server auth using NTLM with user 'testuser' 01:04:49.441682 => Send header, 376 bytes (0x178) 0000: POST /267 HTTP/1.1 0014: Host: 127.0.0.1:38277 002b: Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABw 006b: AAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjK 00ab: HRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJ 00eb: T04= 00f1: User-Agent: curl/8.17.0 010a: Accept: */* 0117: Header1: yes 0125: Header2: no 0132: Content-Length: 4 0145: Content-Type: application/x-www-form-urlencoded 0176: 01:04:49.487216 => Send data, 4 bytes (0x4) 0000: data 01:04:49.538022 * upload completely sent off: 4 bytes 01:04:49.577694 <= Recv header, 54 bytes (0x36) 0000: HTTP/1.1 200 Things are fine in server land swsclose 01:04:49.592446 <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 01:04:49.601475 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 01:04:49.608590 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 32 01:04:49.626811 <= Recv header, 2 bytes (0x2) 0000: 01:04:49.640119 <= Recv data, 32 bytes (0x20) 0000: Finally, this is the real page!. 01:04:49.760530 * Connection #0 to host 127.0.0.1:38277 left intact === End of file trace267 === Start of file valgrind267 ==229038== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind267 test 0269...[HTTP --ignore-content-length] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind269 ../src/curl -q --output log/7/curl269.out --include --trace-ascii log/7/trace269 --trace-time http://127.0.0.1:34897/269 --ignore-content-length > log/7/stdout269 2> log/7/stderr269 valgrind ERROR ==229305== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 269 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind269 ../src/curl -q --output log/7/curl269.out --include --trace-ascii log/7/trace269 --trace-time http://127.0.0.1:34897/269 --ignore-content-length > log/7/stdout269 2> log/7/stderr269 === End of file commands.log === Start of file curl269.out HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Accept-Ranges: bytes Content-Length: 677654 Connection: close Content-Type: text/html Funny-head: yesyes muahahaha === End of file curl269.out === Start of file http_server.log 01:04:08.873508 ====> Client connect 01:04:08.873679 accept_connection 3 returned 4 01:04:08.873766 accept_connection 3 returned 0 01:04:08.881954 Read 93 bytes 01:04:08.882064 Process 93 bytes request 01:04:08.882166 Got request: GET /verifiedserver HTTP/1.1 01:04:08.882241 Are-we-friendly question received 01:04:08.882367 Wrote request (93 bytes) input to log/7/server.input 01:04:08.882471 Identifying ourselves as friends 01:04:08.882653 Response sent (57 bytes) and written to log/7/server.response 01:04:08.882719 special request received, no persistency 01:04:08.882782 ====> Client disconnect 0 01:04:56.119081 ====> Client connect 01:04:56.119232 accept_connection 3 returned 4 01:04:56.119311 accept_connection 3 returned 0 01:04:57.148232 Read 82 bytes 01:04:57.148442 Process 82 bytes request 01:04:57.148547 Got request: GET /269 HTTP/1.1 01:04:57.148626 Serve test number 269 part 0 01:04:57.148814 - request found to be complete (269) 01:04:57.149086 Wrote request (82 bytes) input to log/7/server.input 01:04:57.149206 Send response test269 section 01:04:57.149440 connection close instruction "swsclose" found in response 01:04:57.149644 Response sent (202 bytes) and written to log/7/server.response 01:04:57.149713 instructed to close connection after server-reply 01:04:57.149773 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 54882 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 269 === End of file server.cmd === Start of file server.input GET /269 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Accept-Ranges: bytes Content-Length: 677654 Connection: close Content-Type: text/html Funny-head: yesyes muahahaha === End of file server.response === Start of file stderr269 % Total % Received % Xferd Average Speed Time Time CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind268 ../src/curl -q --output log/3/curl268.out --include --trace-ascii log/3/trace268 --trace-time http://127.0.0.1:46853/268 --variable hello@log/3/junk --expand-data {{hello:json}} > log/3/stdout268 2> log/3/stderr268 Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 10 0 10 0 0 2 0 --:--:-- 0:00:04 --:--:-- 3 100 10 0 10 0 0 2 0 --:--:-- 0:00:04 --:--:-- 2 === End of file stderr269 === Start of file trace269 01:04:56.176354 * Trying 127.0.0.1:34897... 01:04:57.077842 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 56516 01:04:57.198978 * using HTTP/1.x 01:04:57.573119 => Send header, 82 bytes (0x52) 0000: GET /269 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:04:57.919927 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 01:04:58.236209 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:04:58.342946 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:04:58.362271 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:04:58.384967 <= Recv header, 23 bytes (0x17) 0000: Content-Length: 677654. 01:04:58.456590 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:04:58.492019 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:04:58.497341 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:04:58.573747 <= Recv header, 1 bytes (0x1) 0000: . 01:04:58.632695 <= Recv data, 10 bytes (0xa) 0000: muahahaha. 01:04:58.756817 * abort upload 01:04:58.781862 <= Recv data, 0 bytes (0x0) 01:04:59.323487 * shutting down connection #0 === End of file trace269 === Start of file valgrind269 ==229305== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind269 test 0268...[JSON encoding of Unicode string] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind268 ../src/curl -q --output log/3/curl268.out --include --trace-ascii log/3/trace268 --trace-time http://127.0.0.1:46853/268 --variable hello@log/3/junk --expand-data {{hello:json}} > log/3/stdout268 2> log/3/stderr268 valgrind ERROR ==229261== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 268 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind268 ../src/curl -q --output log/3/curl268.out --include --trace-ascii log/3/trace268 --trace-time http://127.0.0.1:46853/268 --variable hello@log/3/junk --expand-data {{hello:json}} > log/3/stdout268 2> log/3/stderr268 === End of file commands.log === Start of file curl268.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl268.out === Start of file http_server.log 01:04:08.399647 ====> Client connect 01:04:08.399824 accept_connection 3 returned 4 01:04:08.399935 accept_connection 3 returned 0 01:04:08.407485 Read 93 bytes 01:04:08.407588 Process 93 bytes request 01:04:08.407679 Got request: GET /verifiedserver HTTP/1.1 01:04:08.407747 Are-we-friendly question received 01:04:08.407869 Wrote request (93 bytes) input to log/3/server.input 01:04:08.407965 Identifying ourselves as friends 01:04:08.408127 Response sent (57 bytes) and written to log/3/server.response 01:04:08.408191 special request received, no persistency 01:04:08.408247 ====> Client disconnect 0 01:04:56.384857 ====> Client connect 01:04:56.385027 accept_connection 3 returned 4 01:04:56.385116 accept_connection 3 returned 0 01:04:57.553585 Read 154 bytes 01:04:57.553807 Process 154 bytes request 01:04:57.553907 Got request: POST /268 HTTP/1.1 01:04:57.553978 Serve test number 268 part 0 01:04:57.554158 - request found to be complete (268) 01:04:57.554309 Found Content-Length: 3 in the request 01:04:57.554480 Wrote request (154 bytes) input to log/3/server.input 01:04:57.554605 Send response test268 section 01:04:57.555041 Response sent (267 bytes) and written to log/3/server.response 01:04:57.555109 => persistent connection request ended, awaits new request 01:04:59.525262 Connection closed by client 01:04:59.525478 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 57178 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file junk “ === End of file junk === Start of file server.cmd Testnum 268 === End of file server.cmd === Start of file server.input POST /268 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* Content-Length: 3 Content-Type: application/x-www-form-urlencoded “ === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr268 Warning: The argument '“' starts with a Unicode character. Maybe ASCII was Warning: intended? % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 9 100 6 0 3 1 0 0:00:06 0:00:04 0:00:02 2 100 9 100 6 0 3 1 0 0:00:06 0:00:04 0:00:02 2 === End of file stderr268 === Start of file trace268 01:04:56.444043 * Trying 127.0.0.1:46853... 01:04:57.353061 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 51974 01:04:57.487396 * using HTTP/1.x 01:04:57.978100 => Send header, 151 bytes (0x97) 0000: POST /268 HTTP/1.1 0014: Host: 127.0.0.1:46853 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: Content-Length: 3 0064: Content-Type: application/x-www-form-urlencoded 0095: 01:04:58.084430 => Send data, 3 bytes (0x3) 0000: ... 01:04:58.162869 * upload completely sent off: 3 bytes 01:04:58.414605 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:04:58.689350 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:04:58.784876 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:04:58.810201 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:04:58.818921 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:04:58.842993 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:04:58.874979 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:04:58.934480 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:04:58.971722 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:04:58.976962 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:04:59.063039 <= Recv header, 2 bytes (0x2) 0000: 01:04:59.122450 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:04:59.706392 * shutting doCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind270 ../src/curl -q --output log/4/curl270.out --include --trace-ascii log/4/trace270 --trace-time ftp://127.0.0.1:38207/270 --ftp-skip-pasv-ip --disable-epsv > log/4/stdout270 2> log/4/stderr270 wn connection #0 === End of file trace268 === Start of file valgrind268 ==229261== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind268 test 0270...[FTP RETR PASV --ftp-skip-pasv-ip] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind270 ../src/curl -q --output log/4/curl270.out --include --trace-ascii log/4/trace270 --trace-time ftp://127.0.0.1:38207/270 --ftp-skip-pasv-ip --disable-epsv > log/4/stdout270 2> log/4/stderr270 valgrind ERROR ==229479== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 270 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind270 ../src/curl -q --output log/4/curl270.out --include --trace-ascii log/4/trace270 --trace-time ftp://127.0.0.1:38207/270 --ftp-skip-pasv-ip --disable-epsv > log/4/stdout270 2> log/4/stderr270 === End of file commands.log === Start of file curl270.out data to see that FTP works so does it? === End of file curl270.out === Start of file ftp_server.log 01:04:10.137455 ====> Client connect 01:04:10.144405 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:04:10.149437 < "USER anonymous" 01:04:10.149763 > "331 We are happy you popped in![CR][LF]" 01:04:10.150501 < "PASS ftp@example.com" 01:04:10.150742 > "230 Welcome you silly person[CR][LF]" 01:04:10.151433 < "PWD" 01:04:10.151695 > "257 "/" is current directory[CR][LF]" 01:04:10.153545 < "EPSV" 01:04:10.153739 ====> Passive DATA channel requested by client 01:04:10.153880 DATA sockfilt for passive data channel starting... 01:04:10.199571 DATA sockfilt for passive data channel started (pid 229392) 01:04:10.200975 DATA sockfilt for passive data channel listens on port 38133 01:04:10.201390 > "229 Entering Passive Mode (|||38133|)[CR][LF]" 01:04:10.201568 Client has been notified that DATA conn will be accepted on port 38133 01:04:10.203364 Client connects to port 38133 01:04:10.203555 ====> Client established passive DATA connection on port 38133 01:04:10.204355 < "TYPE I" 01:04:10.204616 > "200 I modify TYPE as you wanted[CR][LF]" 01:04:10.205423 < "SIZE verifiedserver" 01:04:10.205725 > "213 18[CR][LF]" 01:04:10.209731 < "RETR verifiedserver" 01:04:10.210143 > "150 Binary junk (18 bytes).[CR][LF]" 01:04:10.210696 =====> Closing passive DATA connection... 01:04:10.210869 Server disconnects passive DATA connection 01:04:10.214289 Server disconnected passive DATA connection 01:04:10.214619 DATA sockfilt for passive data channel quits (pid 229392) 01:04:10.219607 DATA sockfilt for passive data channel quit (pid 229392) 01:04:10.219913 =====> Closed passive DATA connection 01:04:10.220586 > "226 File transfer complete[CR][LF]" 01:04:10.263236 < "QUIT" 01:04:10.267639 > "221 bye bye baby[CR][LF]" 01:04:10.267930 MAIN sockfilt said DISC 01:04:10.268116 ====> Client disconnected 01:04:10.268383 Awaiting input 01:04:57.477422 ====> Client connect 01:04:57.478174 FTPD: Getting commands from log/4/server.cmd 01:04:57.478461 FTPD: instructed to use PASVBADIP 01:04:57.478753 FTPD: run test case number: 270 01:04:57.484350 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:04:58.764169 < "USER anonymous" 01:04:58.764596 > "331 We are happy you popped in![CR][LF]" 01:04:58.897729 < "PASS ftp@example.com" 01:04:58.898461 > "230 Welcome you silly person[CR][LF]" 01:04:58.992068 < "PWD" 01:04:58.997643 > "257 "/" is current directory[CR][LF]" 01:04:59.205266 < "PASV" 01:04:59.205592 ====> Passive DATA channel requested by client 01:04:59.205746 DATA sockfilt for passive data channel starting... 01:04:59.294217 DATA sockfilt for passive data channel started (pid 230467) 01:04:59.295598 DATA sockfilt for passive data channel listens on port 46709 01:04:59.296193 > "227 Entering Passive Mode (1,2,3,4,182,117)[CR][LF]" 01:04:59.296384 Client has been notified that DATA conn will be accepted on port 46709 01:04:59.522435 Client connects to port 46709 01:04:59.522982 ====> Client established passive DATA connection on port 46709 01:04:59.639598 < "TYPE I" 01:04:59.640023 > "200 I modify TYPE as you wanted[CR][LF]" 01:04:59.695063 < "SIZE 270" 01:04:59.697407 > "213 51[CR][LF]" 01:04:59.778542 < "RETR 270" 01:04:59.779757 > "150 Binary data connection for 270 () (51 bytes).[CR][LF]" 01:04:59.784769 =====> Closing passive DATA connection... 01:04:59.784971 Server disconnects passive DATA connection 01:04:59.787224 Server disconnected passive DATA connection 01:04:59.787424 DATA sockfilt for passive data channel quits (pid 230467) 01:04:59.790715 DATA sockfilt for passive data channel quit (pid 230467) 01:04:59.790915 =====> Closed passive DATA connection 01:04:59.791229 > "226 File transfer complete[CR][LF]" 01:05:01.833700 < "QUIT" 01:05:01.837735 > "221 bye bye baby[CR][LF]" 01:05:01.974309 MAIN sockfilt said DISC 01:05:01.974834 ====> Client disconnected 01:05:01.975173 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:04:09.752596 ====> Client connect 01:04:09.753987 Received DATA (on stdin) 01:04:09.754083 > 160 bytes data, server => client 01:04:09.760274 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:04:09.760393 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:04:09.760476 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:04:09.764257 < 16 bytes data, client => server 01:04:09.764356 'USER anonymous\r\n' 01:04:09.765238 Received DATA (on stdin) 01:04:09.765318 > 33 bytes data, server => client 01:04:09.765415 '331 We are happy you popped in!\r\n' 01:04:09.765695 < 22 bytes data, client => server 01:04:09.765783 'PASS ftp@example.com\r\n' 01:04:09.766222 Received DATA (on stdin) 01:04:09.766295 > 30 bytes data, server => client 01:04:09.766391 '230 Welcome you silly person\r\n' 01:04:09.766637 < 5 bytes data, client => server 01:04:09.766706 'PWD\r\n' 01:04:09.767178 Received DATA (on stdin) 01:04:09.767251 > 30 bytes data, server => client 01:04:09.767338 '257 "/" is current directory\r\n' 01:04:09.768751 < 6 bytes data, client => server 01:04:09.768822 'EPSV\r\n' 01:04:09.816848 Received DATA (on stdin) 01:04:09.817012 > 39 bytes data, server => client 01:04:09.817119 '229 Entering Passive Mode (|||38133|)\r\n' 01:04:09.819451 < 8 bytes data, client => server 01:04:09.819528 'TYPE I\r\n' 01:04:09.820092 Received DATA (on stdin) 01:04:09.820164 > 33 bytes data, server => client 01:04:09.820251 '200 I modify TYPE as you wanted\r\n' 01:04:09.820619 < 21 bytes data, client => server 01:04:09.820693 'SIZE verifiedserver\r\n' 01:04:09.821211 Received DATA (on stdin) 01:04:09.821276 > 8 bytes data, server => client 01:04:09.821341 '213 18\r\n' 01:04:09.824537 < 21 bytes data, client => server 01:04:09.824640 'RETR verifiedserver\r\n' 01:04:09.826577 Received DATA (on stdin) 01:04:09.826657 > 29 bytes data, server => client 01:04:09.826739 '150 Binary junk (18 bytes).\r\n' 01:04:09.835672 Received DATA (on stdin) 01:04:09.835811 > 28 bytes data, server => client 01:04:09.835921 '226 File transfer complete\r\n' 01:04:09.877613 < 6 bytes data, client => server 01:04:09.877788 'QUIT\r\n' 01:04:09.879106 Received DATA (on stdin) 01:04:09.879180 > 18 bytes data, server => client 01:04:09.879464 '221 bye bye baby\r\n' 01:04:09.880058 ====> Client disconnect 01:04:09.884084 Received ACKD (on stdin) 01:04:57.092521 ====> Client connect 01:04:57.095061 Received DATA (on stdin) 01:04:57.095163 > 160 bytes data, server => client 01:04:57.100070 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind271 ../src/curl -q --output log/1/curl271.out --include --trace-ascii log/1/trace271 --trace-time tftp://127.0.0.1:52872//271 > log/1/stdout271 2> log/1/stderr271 ' 01:04:57.100187 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:04:57.100279 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:04:58.378338 < 16 bytes data, client => server 01:04:58.378532 'USER anonymous\r\n' 01:04:58.380246 Received DATA (on stdin) 01:04:58.380329 > 33 bytes data, server => client 01:04:58.380422 '331 We are happy you popped in!\r\n' 01:04:58.511963 < 22 bytes data, client => server 01:04:58.512165 'PASS ftp@example.com\r\n' 01:04:58.513517 Received DATA (on stdin) 01:04:58.513595 > 30 bytes data, server => client 01:04:58.513705 '230 Welcome you silly person\r\n' 01:04:58.606344 < 5 bytes data, client => server 01:04:58.606518 'PWD\r\n' 01:04:58.607879 Received DATA (on stdin) 01:04:58.607955 > 30 bytes data, server => client 01:04:58.613381 '257 "/" is current directory\r\n' 01:04:58.819504 < 6 bytes data, client => server 01:04:58.819706 'PASV\r\n' 01:04:58.911561 Received DATA (on stdin) 01:04:58.911722 > 45 bytes data, server => client 01:04:58.911826 '227 Entering Passive Mode (1,2,3,4,182,117)\r\n' 01:04:59.254062 < 8 bytes data, client => server 01:04:59.254279 'TYPE I\r\n' 01:04:59.255380 Received DATA (on stdin) 01:04:59.255460 > 33 bytes data, server => client 01:04:59.255552 '200 I modify TYPE as you wanted\r\n' 01:04:59.309082 < 10 bytes data, client => server 01:04:59.309247 'SIZE 270\r\n' 01:04:59.312776 Received DATA (on stdin) 01:04:59.312872 > 8 bytes data, server => client 01:04:59.312958 '213 51\r\n' 01:04:59.393011 < 10 bytes data, client => server 01:04:59.393242 'RETR 270\r\n' 01:04:59.395126 Received DATA (on stdin) 01:04:59.395203 > 51 bytes data, server => client 01:04:59.395307 '150 Binary data connection for 270 () (51 bytes).\r\n' 01:04:59.406585 Received DATA (on stdin) 01:04:59.406719 > 28 bytes data, server => client 01:04:59.406816 '226 File transfer complete\r\n' 01:05:01.447440 < 6 bytes data, client => server 01:05:01.447635 'QUIT\r\n' 01:05:01.453079 Received DATA (on stdin) 01:05:01.453207 > 18 bytes data, server => client 01:05:01.453293 '221 bye bye baby\r\n' 01:05:01.589416 ====> Client disconnect 01:05:01.590241 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:04:10.805584 Running IPv4 version 01:04:10.813297 Listening on port 38133 01:04:10.813764 Wrote pid 229392 to log/4/server/ftp_sockdata.pid 01:04:10.814538 Received PING (on stdin) 01:04:10.815711 Received PORT (on stdin) 01:04:10.818722 ====> Client connect 01:04:10.825915 Received DATA (on stdin) 01:04:10.826263 > 18 bytes data, server => client 01:04:10.826631 'WE ROOLZ: 201673\r\n' 01:04:10.826871 Received DISC (on stdin) 01:04:10.826984 ====> Client forcibly disconnected 01:04:10.832057 Received QUIT (on stdin) 01:04:10.832203 quits 01:04:10.832722 ============> sockfilt quits 01:04:59.885546 Running IPv4 version 01:04:59.903578 Listening on port 46709 01:04:59.904144 Wrote pid 230467 to log/4/server/ftp_sockdata.pid 01:04:59.904944 Received PING (on stdin) 01:04:59.910203 Received PORT (on stdin) 01:05:00.137450 ====> Client connect 01:05:00.395438 Received DATA (on stdin) 01:05:00.395816 > 5 bytes data, server => client 01:05:00.400827 'data\n' 01:05:00.401147 Received DATA (on stdin) 01:05:00.401218 > 7 bytes data, server => client 01:05:00.401288 ' to\n' 01:05:00.401385 Received DATA (on stdin) 01:05:00.401452 > 10 bytes data, server => client 01:05:00.401524 ' see\n' 01:05:00.401617 Received DATA (on stdin) 01:05:00.401682 > 9 bytes data, server => client 01:05:00.401751 'that FTP\n' 01:05:00.401831 Received DATA (on stdin) 01:05:00.401895 > 6 bytes data, server => client 01:05:00.401962 'works\n' 01:05:00.402049 Received DATA (on stdin) 01:05:00.402124 > 14 bytes data, server => client 01:05:00.402206 ' so does it?\n' 01:05:00.402297 Received DISC (on stdin) 01:05:00.402426 ====> Client forcibly disconnected 01:05:00.403077 Received QUIT (on stdin) 01:05:00.403156 quits 01:05:00.403667 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd PASVBADIP Testnum 270 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD PASV TYPE I SIZE 270 RETR 270 QUIT === End of file server.input === Start of file stderr270 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 51 100 51 0 0 9 0 0:00:05 0:00:05 --:--:-- 13 100 51 100 51 0 0 9 0 0:00:05 0:00:05 --:--:-- 11 === End of file stderr270 === Start of file trace270 01:04:57.151516 * Trying 127.0.0.1:38207... 01:04:58.045771 * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 43242 01:04:58.290373 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:04:58.638462 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:04:58.665142 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:04:58.671986 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:04:58.676959 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:04:58.784142 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:04:58.875764 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:04:58.897806 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:04:58.969364 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:04:58.989516 => Send header, 5 bytes (0x5) 0000: PWD 01:04:59.008416 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:04:59.050001 * Entry path is '/' 01:04:59.153490 * Request has same path as previous transfer 01:04:59.204167 => Send header, 6 bytes (0x6) 0000: PASV 01:04:59.220066 * Connect data stream passively 01:04:59.299510 <= Recv header, 45 bytes (0x2d) 0000: 227 Entering Passive Mode (1,2,3,4,182,117) 01:04:59.366315 * Skip 1.2.3.4 for data connection, reuse 127.0.0.1 instead 01:04:59.444448 * Connecting to 127.0.0.1 (127.0.0.1) port 46709 01:04:59.516012 * Trying 127.0.0.1:46709... 01:04:59.607448 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 46709) from 127.0.0.1 port 58260 01:04:59.640375 => Send header, 8 bytes (0x8) 0000: TYPE I 01:04:59.659799 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:04:59.693745 => Send header, 10 bytes (0xa) 0000: SIZE 270 01:04:59.727089 <= Recv header, 8 bytes (0x8) 0000: 213 51 01:04:59.775966 => Send header, 10 bytes (0xa) 0000: RETR 270 01:04:59.801814 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 270 () (51 bytes). 01:04:59.844522 * Maxdownload = -1 01:04:59.855071 * Getting file with size: 51 01:05:00.003733 <= Recv data, 51 bytes (0x33) 0000: data. to. see.that FTP.works. so does it?. 01:05:00.324476 * abort upload 01:05:00.349940 <= Recv data, 0 bytes (0x0) 01:05:00.551750 * Remembering we are in dir "" 01:05:00.746141 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:05:01.064399 * Connection #0 to host 127.0.0.1:38207 left intact === End of file trace270 === Start of file valgrind270 ==229479== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind270 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/tftpserver.pl --pidfile "log/1/server/tftp_server.pid" --portfile "log/1/server/tftp_server.port" --logfile "log/1/tftp_server.log" --logdir "log/1" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: TFTP server on PID 229629 port 52872 * pid tftp => 229629 229629 test 0271...[TFTP retrieve] ../libtool --mode=execute /usr/bin/valgrind --tool=memCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind272 ../src/curl -q --output log/5/curl272.out --include --trace-ascii log/5/trace272 --trace-time ftp://127.0.0.1:33729/272 -z "2004 jan 1 12:12:12 UTC" > log/5/stdout272 2> log/5/stderr272 check --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind271 ../src/curl -q --output log/1/curl271.out --include --trace-ascii log/1/trace271 --trace-time tftp://127.0.0.1:52872//271 > log/1/stdout271 2> log/1/stderr271 valgrind ERROR ==229643== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 271 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind271 ../src/curl -q --output log/1/curl271.out --include --trace-ascii log/1/trace271 --trace-time tftp://127.0.0.1:52872//271 > log/1/stdout271 2> log/1/stderr271 === End of file commands.log === Start of file curl271.out a chunk of data returned to client === End of file curl271.out === Start of file server.cmd Testnum 271 === End of file server.cmd === Start of file server.input opcode = 1 mode = octet tsize = 0 blksize = 512 timeout = 5 filename = /271 === End of file server.input === Start of file stderr271 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 36 0 36 0 0 55 0 --:--:-- --:--:-- --:--:-- 55 100 36 0 36 0 0 43 0 --:--:-- --:--:-- --:--:-- 0 100 36 0 36 0 0 42 0 --:--:-- --:--:-- --:--:-- 42 === End of file stderr271 === Start of file tftp_server.log 01:04:13.652573 Wrote pid 229629 to log/1/server/tftp_server.pid 01:04:13.655301 Wrote port 52872 to log/1/server/tftp_server.port 01:04:13.655470 Running IPv4 version on port UDP/52872 01:05:01.607483 trying to get file: /271 mode 1 01:05:01.607879 requested test number 271 part 0 01:05:01.614845 file opened and all is good 01:05:01.615480 write 01:05:01.615791 read 01:05:02.136322 read: 4 01:05:02.136933 end of one transfer === End of file tftp_server.log === Start of file trace271 01:05:00.163407 * Trying 127.0.0.1:52872... 01:05:00.616979 * Established connection to 127.0.0.1 (127.0.0.1 port 52872) from port 4294967295 01:05:00.778448 * set timeouts for state 0; Total 297705, retry 5 maxtry 50 01:05:01.148336 <= Recv data, 36 bytes (0x24) 0000: a chunk of.data.returned. to client. 01:05:01.490172 * Connected for receive 01:05:01.499149 * set timeouts for state 1; Total 0, retry 5 maxtry 3 01:05:01.954310 * shutting down connection #0 === End of file trace271 === Start of file valgrind271 ==229643== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind271 test 0272...[FTP timed conditioned get file with identical time stamp] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind272 ../src/curl -q --output log/5/curl272.out --include --trace-ascii log/5/trace272 --trace-time ftp://127.0.0.1:33729/272 -z "2004 jan 1 12:12:12 UTC" > log/5/stdout272 2> log/5/stderr272 valgrind ERROR ==229814== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 272 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind272 ../src/curl -q --output log/5/curl272.out --include --trace-ascii log/5/trace272 --trace-time ftp://127.0.0.1:33729/272 -z "2004 jan 1 12:12:12 UTC" > log/5/stdout272 2> log/5/stderr272 === End of file commands.log === Start of file ftp_server.log 01:04:20.032518 ====> Client connect 01:04:20.033484 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:04:20.043892 < "USER anonymous" 01:04:20.044462 > "331 We are happy you popped in![CR][LF]" 01:04:20.045990 < "PASS ftp@example.com" 01:04:20.046243 > "230 Welcome you silly person[CR][LF]" 01:04:20.047715 < "PWD" 01:04:20.050183 > "257 "/" is current directory[CR][LF]" 01:04:20.050823 < "EPSV" 01:04:20.051022 ====> Passive DATA channel requested by client 01:04:20.051157 DATA sockfilt for passive data channel starting... 01:04:20.088093 DATA sockfilt for passive data channel started (pid 229805) 01:04:20.089415 DATA sockfilt for passive data channel listens on port 35913 01:04:20.090263 > "229 Entering Passive Mode (|||35913|)[CR][LF]" 01:04:20.090457 Client has been notified that DATA conn will be accepted on port 35913 01:04:20.093821 Client connects to port 35913 01:04:20.094076 ====> Client established passive DATA connection on port 35913 01:04:20.094794 < "TYPE I" 01:04:20.095780 > "200 I modify TYPE as you wanted[CR][LF]" 01:04:20.096531 < "SIZE verifiedserver" 01:04:20.096861 > "213 18[CR][LF]" 01:04:20.098220 < "RETR verifiedserver" 01:04:20.101026 > "150 Binary junk (18 bytes).[CR][LF]" 01:04:20.101592 =====> Closing passive DATA connection... 01:04:20.101760 Server disconnects passive DATA connection 01:04:20.104583 Server disconnected passive DATA connection 01:04:20.104776 DATA sockfilt for passive data channel quits (pid 229805) 01:04:20.108358 DATA sockfilt for passive data channel quit (pid 229805) 01:04:20.108556 =====> Closed passive DATA connection 01:04:20.108827 > "226 File transfer complete[CR][LF]" 01:04:20.153898 < "QUIT" 01:04:20.154524 > "221 bye bye baby[CR][LF]" 01:04:20.160586 MAIN sockfilt said DISC 01:04:20.160978 ====> Client disconnected 01:04:20.161283 Awaiting input 01:05:07.933426 ====> Client connect 01:05:07.934417 FTPD: Getting commands from log/5/server.cmd 01:05:07.934871 FTPD: run test case number: 272 01:05:07.936421 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:05:09.244514 < "USER anonymous" 01:05:09.245087 > "331 We are happy you popped in![CR][LF]" 01:05:09.346673 < "PASS ftp@example.com" 01:05:09.350179 > "230 Welcome you silly person[CR][LF]" 01:05:09.433985 < "PWD" 01:05:09.434728 > "257 "/" is current directory[CR][LF]" 01:05:09.625820 < "MDTM 272" 01:05:09.626846 > "213 20040101121212[CR][LF]" 01:05:10.811729 < "QUIT" 01:05:10.812406 > "221 bye bye baby[CR][LF]" 01:05:11.032675 MAIN sockfilt said DISC 01:05:11.033357 ====> Client disconnected 01:05:11.033650 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:04:20.647650 ====> Client connect 01:04:20.649218 Received DATA (on stdin) 01:04:20.649301 > 160 bytes data, server => client 01:04:20.649415 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:04:20.649517 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:04:20.649603 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:04:20.658371 < 16 bytes data, client => server 01:04:20.658502 'USER anonymous\r\n' 01:04:20.659727 Received DATA (on stdin) 01:04:20.659805 > 33 bytes data, server => client 01:04:20.660191 '331 We are happy you popped in!\r\n' 01:04:20.660983 < 22 bytes data, client => server 01:04:20.661060 'PASS ftp@example.com\r\n' 01:04:20.662304 Received DATA (on stdin) 01:04:20.662372 > 30 bytes data, server => client 01:04:20.662451 '230 Welcome you silly person\r\n' 01:04:20.662685 < 5 bytes data, client => server 01:04:20.662759 'PWD\r\n' 01:04:20.663575 Received DATA (on stdin) 01:04:20.663650 > 30 bytes data, server => client 01:04:20.663744 '257 "/" is current directory\r\n' 01:04:20.665883 < 6 bytes data, client => server 01:04:20.665947 'EPSV\r\n' 01:04:20.705211 Received DATA (on stdin) 01:04:20.705369 > 39 bytes data, server => client 01:04:20.705497 '229 Entering PassiCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind273 ../src/curl -q --output log/8/curl273.out --include --trace-ascii log/8/trace273 --trace-time http://127.0.0.1:39461/273 -u testuser:testpass --digest > log/8/stdout273 2> log/8/stderr273 ve Mode (|||35913|)\r\n' 01:04:20.709116 < 8 bytes data, client => server 01:04:20.709204 'TYPE I\r\n' 01:04:20.710545 Received DATA (on stdin) 01:04:20.710625 > 33 bytes data, server => client 01:04:20.710743 '200 I modify TYPE as you wanted\r\n' 01:04:20.711502 < 21 bytes data, client => server 01:04:20.711587 'SIZE verifiedserver\r\n' 01:04:20.712562 Received DATA (on stdin) 01:04:20.712634 > 8 bytes data, server => client 01:04:20.712709 '213 18\r\n' 01:04:20.713185 < 21 bytes data, client => server 01:04:20.713274 'RETR verifiedserver\r\n' 01:04:20.714071 Received DATA (on stdin) 01:04:20.714144 > 29 bytes data, server => client 01:04:20.714255 '150 Binary junk (18 bytes).\r\n' 01:04:20.724531 Received DATA (on stdin) 01:04:20.724636 > 28 bytes data, server => client 01:04:20.724717 '226 File transfer complete\r\n' 01:04:20.768209 < 6 bytes data, client => server 01:04:20.768380 'QUIT\r\n' 01:04:20.769777 Received DATA (on stdin) 01:04:20.769860 > 18 bytes data, server => client 01:04:20.770272 '221 bye bye baby\r\n' 01:04:20.775951 ====> Client disconnect 01:04:20.776312 Received ACKD (on stdin) 01:05:08.548480 ====> Client connect 01:05:08.551110 Received DATA (on stdin) 01:05:08.551251 > 160 bytes data, server => client 01:05:08.551380 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:05:08.551479 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:05:08.551565 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:05:09.858693 < 16 bytes data, client => server 01:05:09.858864 'USER anonymous\r\n' 01:05:09.860266 Received DATA (on stdin) 01:05:09.860344 > 33 bytes data, server => client 01:05:09.860715 '331 We are happy you popped in!\r\n' 01:05:09.960924 < 22 bytes data, client => server 01:05:09.961108 'PASS ftp@example.com\r\n' 01:05:09.962426 Received DATA (on stdin) 01:05:09.962500 > 30 bytes data, server => client 01:05:09.965852 '230 Welcome you silly person\r\n' 01:05:10.048240 < 5 bytes data, client => server 01:05:10.048419 'PWD\r\n' 01:05:10.049771 Received DATA (on stdin) 01:05:10.049850 > 30 bytes data, server => client 01:05:10.049956 '257 "/" is current directory\r\n' 01:05:10.240076 < 10 bytes data, client => server 01:05:10.240253 'MDTM 272\r\n' 01:05:10.246277 Received DATA (on stdin) 01:05:10.246367 > 20 bytes data, server => client 01:05:10.246450 '213 20040101121212\r\n' 01:05:11.425984 < 6 bytes data, client => server 01:05:11.426169 'QUIT\r\n' 01:05:11.427470 Received DATA (on stdin) 01:05:11.427543 > 18 bytes data, server => client 01:05:11.427635 '221 bye bye baby\r\n' 01:05:11.647743 ====> Client disconnect 01:05:11.648594 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:04:20.692809 Running IPv4 version 01:04:20.701603 Listening on port 35913 01:04:20.702092 Wrote pid 229805 to log/5/server/ftp_sockdata.pid 01:04:20.702971 Received PING (on stdin) 01:04:20.704166 Received PORT (on stdin) 01:04:20.707854 ====> Client connect 01:04:20.717448 Received DATA (on stdin) 01:04:20.717799 > 18 bytes data, server => client 01:04:20.718204 'WE ROOLZ: 202313\r\n' 01:04:20.719725 Received DISC (on stdin) 01:04:20.719859 ====> Client forcibly disconnected 01:04:20.720490 Received QUIT (on stdin) 01:04:20.720570 quits 01:04:20.721140 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 272 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD MDTM 272 QUIT === End of file server.input === Start of file stderr272 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr272 === Start of file trace272 01:05:07.580072 * Trying 127.0.0.1:33729... 01:05:08.539879 * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 53320 01:05:08.782498 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:05:09.119194 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:05:09.148481 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:05:09.154971 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:05:09.160867 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:05:09.262690 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:05:09.326260 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:05:09.346699 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:05:09.413194 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:05:09.432916 => Send header, 5 bytes (0x5) 0000: PWD 01:05:09.459557 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:05:09.494256 * Entry path is '/' 01:05:09.590020 * Request has same path as previous transfer 01:05:09.624751 => Send header, 10 bytes (0xa) 0000: MDTM 272 01:05:09.637919 <= Recv header, 20 bytes (0x14) 0000: 213 20040101121212 01:05:09.713665 * The requested document is not new enough 01:05:09.851462 * Remembering we are in dir "" 01:05:10.121580 * Connection #0 to host 127.0.0.1:33729 left intact === End of file trace272 === Start of file valgrind272 ==229814== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind272 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 279 in state 4 Runner 2 (id 185908) running test 274 in state 4 Runner 3 (id 185910) running test 277 in state 4 Runner 4 (id 185912) running test 278 in state 4 Runner 5 (id 185914) running test 280 in state 4 Runner 6 (id 185916) running test 275 in state 4 Runner 7 (id 185918) running test 276 in state 4 Runner 8 (id 185920) running test 273 in state 4 test 0273...[HTTP with two Digest authorization headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind273 ../src/curl -q --output log/8/curl273.out --include --trace-ascii log/8/trace273 --trace-time http://127.0.0.1:39461/273 -u testuser:testpass --digest > log/8/stdout273 2> log/8/stderr273 valgrind ERROR ==229973== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 273 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind273 ../src/curl -q --output log/8/curl273.out --include --trace-ascii log/8/trace273 --trace-time http://127.0.0.1:39461/273 -u testuser:testpass --digest > log/8/stdout273 2> log/8/stderr273 === End of file commands.log === Start of file curl273.out HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" Content-Type: text/html; charset=iso-8859-1 HTTP/1.1 200 OK swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 23 This IS the real page === End of file curl273.out === Start of file http_server.log 01:04:25.866043 ====> Client connect 01:04:25.866196 accept_connection 3 returned 4 01:04:25.866265 accept_connection 3 returned 0 01:04:25.872749 Read 93 bytes 01:04:25.872849 Process 93 bytes request 01:04:25.872935 Got request: GET /verifiedserver HTTP/1.1 01:04:25.872995 Are-we-friendly question receiveCMD (12032): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind274 ../src/curl -q --output log/2/curl274.out --include --trace-ascii log/2/trace274 --trace-time http://127.0.0.1:39863/want/274 -L --max-redirs 0 > log/2/stdout274 2> log/2/stderr274 d 01:04:25.873123 Wrote request (93 bytes) input to log/8/server.input 01:04:25.873210 Identifying ourselves as friends 01:04:25.873380 Response sent (57 bytes) and written to log/8/server.response 01:04:25.873440 special request received, no persistency 01:04:25.873493 ====> Client disconnect 0 01:05:13.713894 ====> Client connect 01:05:13.714041 accept_connection 3 returned 4 01:05:13.714118 accept_connection 3 returned 0 01:05:14.747931 Read 82 bytes 01:05:14.748162 Process 82 bytes request 01:05:14.748265 Got request: GET /273 HTTP/1.1 01:05:14.748346 Serve test number 273 part 0 01:05:14.748572 - request found to be complete (273) 01:05:14.748856 Wrote request (82 bytes) input to log/8/server.input 01:05:14.748972 Send response test273 section 01:05:14.749230 connection close instruction "swsclose" found in response 01:05:14.749511 Response sent (289 bytes) and written to log/8/server.response 01:05:14.749600 instructed to close connection after server-reply 01:05:14.749676 ====> Client disconnect 0 01:05:17.031911 ====> Client connect 01:05:17.032042 accept_connection 3 returned 4 01:05:17.032116 accept_connection 3 returned 0 01:05:23.185257 Read 221 bytes 01:05:23.185454 Process 221 bytes request 01:05:23.185551 Got request: GET /273 HTTP/1.1 01:05:23.185622 Serve test number 273 part 0 01:05:23.185833 - request found to be complete (273) 01:05:23.186022 Received Digest request, sending back data 1000 01:05:23.186116 Wrote request (221 bytes) input to log/8/server.input 01:05:23.186209 Send response test273 section 01:05:23.186469 connection close instruction "swsclose" found in response 01:05:23.186667 Response sent (158 bytes) and written to log/8/server.response 01:05:23.186734 instructed to close connection after server-reply 01:05:23.186797 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 39022 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 273 === End of file server.cmd === Start of file server.input GET /273 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* GET /273 HTTP/1.1 Host: 127.0.0.1:39461 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/273", response="576ae57b1db0039f8c0de43ef58e49e3" User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" Content-Type: text/html; charset=iso-8859-1 This is not the real page HTTP/1.1 200 OK swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 23 This IS the real page === End of file server.response === Start of file stderr273 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:11 --:--:-- 0 100 23 100 23 0 0 1 0 0:00:23 0:00:11 0:00:12 3 === End of file stderr273 === Start of file trace273 01:05:13.783271 * Trying 127.0.0.1:39461... 01:05:14.658142 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 44604 01:05:14.786243 * using HTTP/1.x 01:05:14.880049 * Server auth using Digest with user 'testuser' 01:05:15.171724 => Send header, 82 bytes (0x52) 0000: GET /273 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:05:15.510676 <= Recv header, 46 bytes (0x2e) 0000: HTTP/1.1 401 Authorization Required swsclose 01:05:15.821826 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 01:05:16.083282 <= Recv header, 64 bytes (0x40) 0000: WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" 01:05:16.116738 * Ignoring duplicate digest auth header. 01:05:16.124235 <= Recv header, 64 bytes (0x40) 0000: WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" 01:05:16.155653 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 01:05:16.193251 * no chunk, no close, no size. Assume close to signal end 01:05:16.287367 <= Recv header, 2 bytes (0x2) 0000: 01:05:16.522988 * Request completely sent off 01:05:16.768576 * shutting down connection #0 01:05:17.224832 * Issue another request to this URL: 'http://127.0.0.1:39461/273' 01:05:17.373484 * Hostname 127.0.0.1 was found in DNS cache 01:05:17.410935 * Trying 127.0.0.1:39461... 01:05:17.446360 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 44606 01:05:17.452456 * using HTTP/1.x 01:05:23.541299 * Server auth using Digest with user 'testuser' 01:05:23.571430 => Send header, 221 bytes (0xdd) 0000: GET /273 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: Authorization: Digest username="testuser", realm="testrealm", no 006a: nce="1053604145", uri="/273", response="576ae57b1db0039f8c0de43e 00aa: f58e49e3" 00b5: User-Agent: curl/8.17.0 00ce: Accept: */* 00db: 01:05:23.630095 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 200 OK swsclose 01:05:23.640639 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 01:05:23.649414 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 01:05:23.674453 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 23 01:05:23.701859 <= Recv header, 2 bytes (0x2) 0000: 01:05:23.722415 <= Recv data, 23 bytes (0x17) 0000: This IS the real page!. 01:05:23.957289 * Connection #1 to host 127.0.0.1:39461 left intact === End of file trace273 === Start of file valgrind273 ==229973== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind273 test 0274...[HTTP Location: following with --max-redirs 0] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind274 ../src/curl -q --output log/2/curl274.out --include --trace-ascii log/2/trace274 --trace-time http://127.0.0.1:39863/want/274 -L --max-redirs 0 > log/2/stdout274 2> log/2/stderr274 valgrind ERROR ==230159== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 274 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind274 ../src/curl -q --output log/2/curl274.out --include --trace-ascii log/2/trace274 --trace-time http://127.0.0.1:39863/want/274 -L --max-redirs 0 > log/2/stdout274 2> log/2/stderr274 === End of file commands.log === Start of file curl274.out HTTP/1.1 301 This is a weirdo text message swsclose Server: test-server/fake Location: data/reply/25 Content-Length: 0 Connection: close === End of file curl274.out === Start of file http_server.log 01:04:40.035561 ====> Client connect 01:04:40.035722 accept_connection 3 returned 4 01:04:40.035790 accept_connection 3 returned 0 01:04:40.0423CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind275 ../src/curl -q --output log/6/curl275.out --include --trace-ascii log/6/trace275 --trace-time http://remotesite.com.275:38277/we/want/that/page/275 -p -x 127.0.0.1:36617 --user iam:myself --proxy-user youare:yourself http://remotesite.com.275:38277/we/want/that/page/275 > log/6/stdout275 2> log/6/stderr275 29 Read 93 bytes 01:04:40.042431 Process 93 bytes request 01:04:40.042512 Got request: GET /verifiedserver HTTP/1.1 01:04:40.042573 Are-we-friendly question received 01:04:40.042679 Wrote request (93 bytes) input to log/2/server.input 01:04:40.042764 Identifying ourselves as friends 01:04:40.042927 Response sent (57 bytes) and written to log/2/server.response 01:04:40.042994 special request received, no persistency 01:04:40.043052 ====> Client disconnect 0 01:05:27.322195 ====> Client connect 01:05:27.322351 accept_connection 3 returned 4 01:05:27.322440 accept_connection 3 returned 0 01:05:28.343468 Read 87 bytes 01:05:28.343658 Process 87 bytes request 01:05:28.343754 Got request: GET /want/274 HTTP/1.1 01:05:28.343823 Serve test number 274 part 0 01:05:28.343977 - request found to be complete (274) 01:05:28.344195 Wrote request (87 bytes) input to log/2/server.input 01:05:28.344303 Send response test274 section 01:05:28.344479 connection close instruction "swsclose" found in response 01:05:28.344647 Response sent (138 bytes) and written to log/2/server.response 01:05:28.344711 instructed to close connection after server-reply 01:05:28.344768 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 35102 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 274 === End of file server.cmd === Start of file server.input GET /want/274 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 301 This is a weirdo text message swsclose Server: test-server/fake Location: data/reply/25 Content-Length: 0 Connection: close === End of file server.response === Start of file stderr274 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (47) Maximum (0) redirects followed === End of file stderr274 === Start of file trace274 01:05:26.355753 * Trying 127.0.0.1:39863... 01:05:27.283893 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 33658 01:05:27.409835 * using HTTP/1.x 01:05:27.767432 => Send header, 87 bytes (0x57) 0000: GET /want/274 HTTP/1.1 0018: Host: 127.0.0.1:39863 002f: User-Agent: curl/8.17.0 0048: Accept: */* 0055: 01:05:28.105837 <= Recv header, 52 bytes (0x34) 0000: HTTP/1.1 301 This is a weirdo text message swsclose. 01:05:28.449551 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:05:28.623587 <= Recv header, 24 bytes (0x18) 0000: Location: data/reply/25. 01:05:28.671219 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 0. 01:05:28.724452 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:05:28.810578 <= Recv header, 1 bytes (0x1) 0000: . 01:05:29.296090 * shutting down connection #0 01:05:29.813060 * Maximum (0) redirects followed === End of file trace274 === Start of file valgrind274 ==230159== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind274 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 279 in state 4 Runner 2 (id 185908) running test 282 in state 4 Runner 3 (id 185910) running test 277 in state 4 Runner 4 (id 185912) running test 278 in state 4 Runner 5 (id 185914) running test 280 in state 4 Runner 6 (id 185916) running test 275 in state 4 Runner 7 (id 185918) running test 276 in state 4 Runner 8 (id 185920) running test 281 in state 4 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/6/server/http2_server.pid" --logfile "log/6/http2_server.log" --logdir "log/6" --portfile log/6/server/http2_server.port --config log/6/server.cmd --id 2 --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP2 server is on PID 230336 port 36617 * pid http-proxy => 230336 230336 test 0275...[HTTP CONNECT with proxytunnel getting two URLs from the same host] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind275 ../src/curl -q --output log/6/curl275.out --include --trace-ascii log/6/trace275 --trace-time http://remotesite.com.275:38277/we/want/that/page/275 -p -x 127.0.0.1:36617 --user iam:myself --proxy-user youare:yourself http://remotesite.com.275:38277/we/want/that/page/275 > log/6/stdout275 2> log/6/stderr275 valgrind ERROR ==230345== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 275 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind275 ../src/curl -q --output log/6/curl275.out --include --trace-ascii log/6/trace275 --trace-time http://remotesite.com.275:38277/we/want/that/page/275 -p -x 127.0.0.1:36617 --user iam:myself --proxy-user youare:yourself http://remotesite.com.275:38277/we/want/that/page/275 > log/6/stdout275 2> log/6/stderr275 === End of file commands.log === Start of file curl275.out HTTP/1.1 200 OK Connected-fine: sure HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Content-Length: 9 contents === End of file curl275.out === Start of file http2_server.log 01:04:54.325319 Run as proxy, CONNECT to host 127.0.0.1 01:04:54.335612 Running HTTP IPv4 version on port 36617 01:04:54.336052 Wrote pid 230336 to log/6/server/http2_server.pid 01:04:54.336328 Wrote port 36617 to log/6/server/http2_server.port 01:05:42.561746 ====> Client connect 01:05:42.561934 accept_connection 3 returned 4 01:05:42.562114 accept_connection 3 returned 0 01:05:43.597623 Read 181 bytes 01:05:43.598423 Process 181 bytes request 01:05:43.600413 Received a CONNECT remotesite.com.275:38277 HTTP/1.1 request 01:05:43.600577 Port number: 38277, test case number: -7 01:05:43.601653 [log/6/server.cmd] cmdfile says testnum 275 01:05:43.611265 - request found to be complete (275) 01:05:43.612789 Wrote request (181 bytes) input to log/6/proxy.input 01:05:43.616656 Send response test275 section 01:05:43.618024 Response sent (41 bytes) and written to log/6/proxy.response 01:05:44.119079 about to connect to 127.0.0.1:38277 01:05:44.123434 connected fine to 127.0.0.1:38277, now tunnel 01:05:44.915907 [CTRL] READ 148 bytes from client 01:05:44.916420 [CTRL] READ "GET /we/want/that/page/275 HTTP/1.1%0d%0aHost: remotesite.com.275:38277%0d%0aAuthorization: Basic aWFtOm15c2VsZg==%0d%0aUser-Agent: curl/8.17.0%0d%0aAccept: */*%0d%0a%0d%0a" 01:05:44.917244 [CTRL] SENT 148 bytes to server 01:05:44.917369 [CTRL] SENT "GET /we/want/that/page/275 HTTP/1.1%0d%0aHost: remotesite.com.275:38277%0d%0aAuthorization: Basic aWFtOm15c2VsZg==%0d%0aUser-Agent: curl/8.17.0%0d%0aAccept: */*%0d%0a%0d%0a" 01:05:44.918629 [CTRL] READ 100 bytes from server 01:05:44.918742 [CTRL] READ "HTTP/1.1 200 OK%0aDate: Tue, 09 Nov 2010 14:49:00 GMT%0aServer: test-server/fake%0aContent-Type: text/html" 01:05:44.918907 [CTRL] READ 29 bytes from server 01:05:44.918984 [CTRL] READ "%0aContent-Length: 9%0a%0acontents%0a" 01:05:44.919130 [CTRL] SENT 129 bytes to client 01:05:44.919233 [CTRL] SENT "HTTP/1.1 200 OK%0aDate: Tue, 09 Nov 2010 14:49:00 GMT%0aServer: test-server/fake%0aContent-Type: text/html%0aContent-Length: 9%0a%0acontents%0a" 01:05:47.226268 [CTRL] READ 148 bytes from client 01:05:47.226464 [CTRL] READ "GET /we/want/that/page/275 HTTP/1.1%0d%0aHost: remotesite.com.275:38277%0d%0aAuthorization: Basic aWFtOm15c2VsZg==%0d%0aUser-Agent: curl/8.17.0%0d%0aAccept: */*%0d%0a%0d%0a" 01:05:47.226570 [CTRL] SENT 148 bytes to server 01:05:47.226665 [CTRL] SENT "GET /we/want/that/page/275 HTTP/1.1%0d%0aHost: remotesite.com.275:38277%0d%0aAuthorization: Basic aWFtOm15c2VsZg==%0d%0aUser-Agent: curl/8.17.0%0d%0aAccept: */*%0d%0a%0d%0a" 01:05:47.227742 [CTRL] READ 20 bytes from server 01:05:47.227832 [CTRL] READ "HTTP/1.1 200 OK%0aDate" 01:05:47.227915 [CTRL] READ 109 bytes from server 01:05:47.227998 [CTRL] READ ": Tue, 09 Nov 2010 14:49:00 GMT%0aServer: test-server/fake%0aContent-Type: text/html%0aContent-Length: 9%0a%0acontents%0a" 01:05:47.228085 [CTRL] SENT 129 bytes to client 01:05:47.228168 [CTRL] SENT "HTTP/1.1 200 OK%0aDate: Tue, 09 Nov 2010 14:49:00 GMT%0aServer: test-server/fake%0aContent-Type: text/html%0aContent-Length: 9%0a%0acontents%0a" 01:05:47.705326 [CTRL] got 0, STOP READING client 01:05:47.705607 [CTRL] DISABLED WRITING server 01:05:47.956121 [CTRL] got 0, STOP READING server 01:05:47.956392 [CTRL] DISABLED WRITING client 01:05:48.209582 [CTRL] CLOSING client socket 01:05:48.209856 [CTRL] CLOSING server socket 01:05:48.209965 [CTRL] ENDING 01:05:48.210155 ====> Client disconnect 0 === End of file http2_server.log === Start of file http_server.log 01:04:53.430425 ====> Client connect 01:04:53.430622 accept_connection 3 returned 4 01:04:53.430703 accept_connection 3 returned 0 01:04:53.434220 Read 93 bytes 01:04:53.434329 Process 93 bytes request 01:04:53.434425 Got request: GET /verifiedserver HTTP/1.1 01:04:53.434492 Are-we-friendly question received 01:04:53.434612 Wrote request (93 bytes) input to log/6/server.input 01:04:53.434706 Identifying ourselves as friends 01:04:53.434863 Response sent (57 bytes) and written to log/6/server.response 01:04:53.434923 special request received, no persistency 01:04:53.434978 ====> Client disconnect 0 01:05:44.123373 ====> Client connect 01:05:44.123530 accept_connection 3 returned 4 01:05:44.123622 accept_connection 3 returned 0 01:05:44.917245 Read 148 bytes 01:05:44.917428 Process 148 bytes request 01:05:44.917534 Got request: GET /we/want/that/page/275 HTTP/1.1 01:05:44.917608 Serve test number 275 part 0 01:05:44.917829 - request found to be complete (275) 01:05:44.918130 Wrote request (148 bytes) input to log/6/server.input 01:05:44.918239 Send response test275 section 01:05:44.918627 Response sent (129 bytes) and written to log/6/server.response 01:05:44.918704 => persistent connection request ended, awaits new request 01:05:47.226596 Read 148 bytes 01:05:47.226751 Process 148 bytes request 01:05:47.226850 Got request: GET /we/want/that/page/275 HTTP/1.1 01:05:47.226921 Serve test number 275 part 0 01:05:47.227139 - request found to be complete (275) 01:05:47.227376 Wrote request (148 bytes) input to log/6/server.input 01:05:47.227460 Send response test275 section 01:05:47.227832 Response sent (129 bytes) and written to log/6/server.response 01:05:47.227904 => persistent connection request ended, awaits new request 01:05:47.705744 Connection closed by client 01:05:47.705908 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 50130 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file proxy.input CONNECT remotesite.com.275:38277 HTTP/1.1 Host: remotesite.com.275:38277 Proxy-Authorization: Basic eW91YXJlOnlvdXJzZWxm User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive === End of file proxy.input === Start of file proxy.response HTTP/1.1 200 OK Connected-fine: sure === End of file proxy.response === Start of file server.cmd Testnum 275 === End of file server.cmd === Start of file server.input GET /we/want/that/page/275 HTTP/1.1 Host: remotesite.com.275:38277 Authorization: Basic aWFtOm15c2VsZg== User-Agent: curl/8.17.0 Accept: */* GET /we/want/that/page/275 HTTP/1.1 Host: remotesite.com.275:38277 Authorization: Basic aWFtOm15c2VsZg== User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Content-Length: 9 contents HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Content-Length: 9 contents === End of file server.response === Start of file stderr275 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 9 100 9 0 0 1 0 0:00:09 0:00:05 0:00:04 2 100 9 100 9 0 0 1 0 0:00:09 0:00:05 0:00:04 2 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 9 100 9 0 0 15 0 --:--:-- --:--:-- --:--:-- 57 === End of file stderr275 === Start of file stdout275 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Content-Length: 9 contents === End of file stdout275 === Start of file trace275 01:05:42.604982 * Trying 127.0.0.1:36617... 01:05:43.484872 * CONNECT: no ALPN negotiated 01:05:43.539929 * allocate connect buffer 01:05:43.699407 * Proxy auth using Basic with user 'youare' 01:05:43.739899 * Server auth using Basic with user 'iam' 01:05:43.850366 * Establish HTTP proxy tunnel to remotesite.com.275:38277 01:05:44.012562 => Send header, 181 bytes (0xb5) 0000: CONNECT remotesite.com.275:38277 HTTP/1.1 002b: Host: remotesite.com.275:38277 004b: Proxy-Authorization: Basic eW91YXJlOnlvdXJzZWxm 007c: User-Agent: curl/8.17.0 0095: Proxy-Connection: Keep-Alive 00b3: 01:05:44.223864 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:05:44.573723 <= Recv header, 22 bytes (0x16) 0000: Connected-fine: sure 01:05:44.663499 <= Recv header, 2 bytes (0x2) 0000: 01:05:44.707021 * CONNECT phase completed 01:05:44.726660 * CONNECT tunnel established, response 200 01:05:44.924371 * Established connection to 127.0.0.1 (127.0.0.1 port 36617) from 127.0.0.1 port 58660 01:05:45.014605 * using HTTP/1.x 01:05:45.084776 * Server auth using Basic with user 'iam' 01:05:45.318800 => Send header, 148 bytes (0x94) 0000: GET /we/want/that/page/275 HTTP/1.1 0025: Host: remotesite.com.275:38277 0045: Authorization: Basic aWFtOm15c2VsZg== 006c: User-Agent: curl/8.17.0 0085: Accept: */* 0092: 01:05:45.566661 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:05:45.626629 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:05:45.664443 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:05:45.720478 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:05:45CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind276 ../src/curl -q --output log/7/curl276.out --include --trace-ascii log/7/trace276 --trace-time "http://127.0.0.1:34897/want?uri=http://anything/276?secondq/276" -L > log/7/stdout276 2> log/7/stderr276 .746087 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 9. 01:05:45.834149 <= Recv header, 1 bytes (0x1) 0000: . 01:05:45.890474 <= Recv data, 9 bytes (0x9) 0000: contents. 01:05:46.442958 * Connection #0 to host 127.0.0.1:36617 left intact 01:05:47.528077 * Reusing existing http: connection with proxy 127.0.0.1 01:05:47.596166 * Server auth using Basic with user 'iam' 01:05:47.612122 => Send header, 148 bytes (0x94) 0000: GET /we/want/that/page/275 HTTP/1.1 0025: Host: remotesite.com.275:38277 0045: Authorization: Basic aWFtOm15c2VsZg== 006c: User-Agent: curl/8.17.0 0085: Accept: */* 0092: 01:05:47.645728 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:05:47.658052 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:05:47.667477 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:05:47.675635 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:05:47.681238 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 9. 01:05:47.689641 <= Recv header, 1 bytes (0x1) 0000: . 01:05:47.694858 <= Recv data, 9 bytes (0x9) 0000: contents. 01:05:47.740558 * Connection #0 to host 127.0.0.1:36617 left intact === End of file trace275 === Start of file valgrind275 ==230345== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind275 test 0276...[HTTP Location: following with multiple question marks in URLs] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind276 ../src/curl -q --output log/7/curl276.out --include --trace-ascii log/7/trace276 --trace-time "http://127.0.0.1:34897/want?uri=http://anything/276?secondq/276" -L > log/7/stdout276 2> log/7/stderr276 valgrind ERROR ==230565== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 276 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind276 ../src/curl -q --output log/7/curl276.out --include --trace-ascii log/7/trace276 --trace-time "http://127.0.0.1:34897/want?uri=http://anything/276?secondq/276" -L > log/7/stdout276 2> log/7/stderr276 === End of file commands.log === Start of file curl276.out HTTP/1.1 301 This is a weirdo text message swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: data/2760002.txt?coolsite=http://anotherurl/?a_second/2760002 Connection: close HTTP/1.1 200 Followed here fine swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 52 If this is received, the location following worked === End of file curl276.out === Start of file http_server.log 01:05:03.203108 ====> Client connect 01:05:03.203272 accept_connection 3 returned 4 01:05:03.203349 accept_connection 3 returned 0 01:05:03.208223 Read 93 bytes 01:05:03.208349 Process 93 bytes request 01:05:03.208443 Got request: GET /verifiedserver HTTP/1.1 01:05:03.208513 Are-we-friendly question received 01:05:03.208637 Wrote request (93 bytes) input to log/7/server.input 01:05:03.208741 Identifying ourselves as friends 01:05:03.208919 Response sent (57 bytes) and written to log/7/server.response 01:05:03.208984 special request received, no persistency 01:05:03.209042 ====> Client disconnect 0 01:05:51.321372 ====> Client connect 01:05:51.321512 accept_connection 3 returned 4 01:05:51.321589 accept_connection 3 returned 0 01:05:52.376287 Read 119 bytes 01:05:52.376494 Process 119 bytes request 01:05:52.376601 Got request: GET /want?uri=http://anything/276?secondq/276 HTTP/1.1 01:05:52.376679 Serve test number 276 part 0 01:05:52.376881 - request found to be complete (276) 01:05:52.377154 Wrote request (119 bytes) input to log/7/server.input 01:05:52.377275 Send response test276 section 01:05:52.377514 connection close instruction "swsclose" found in response 01:05:52.377706 Response sent (267 bytes) and written to log/7/server.response 01:05:52.377771 instructed to close connection after server-reply 01:05:52.377829 ====> Client disconnect 0 01:05:54.731300 ====> Client connect 01:05:54.731446 accept_connection 3 returned 4 01:05:54.731535 accept_connection 3 returned 0 01:05:54.795413 Read 140 bytes 01:05:54.795630 Process 140 bytes request 01:05:54.795725 Got request: GET /data/2760002.txt?coolsite=http://anotherurl/?a_second/2760002 HTTP/1.1 01:05:54.795794 Serve test number 276 part 2 01:05:54.795982 - request found to be complete (276) 01:05:54.796195 Wrote request (140 bytes) input to log/7/server.input 01:05:54.796287 Send response test276 section 01:05:54.796504 connection close instruction "swsclose" found in response 01:05:54.796671 Response sent (174 bytes) and written to log/7/server.response 01:05:54.796734 instructed to close connection after server-reply 01:05:54.796791 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 37402 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 276 === End of file server.cmd === Start of file server.input GET /want?uri=http://anything/276?secondq/276 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* GET /data/2760002.txt?coolsite=http://anotherurl/?a_second/2760002 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 301 This is a weirdo text message swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: data/2760002.txt?coolsite=http://anotherurl/?a_second/2760002 Connection: close This server reply is for testing a simple Location: following HTTP/1.1 200 Followed here fine swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 52 If this is received, the location following worked === End of file server.response === Start of file stderr276 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 52 100 52 0 0 8 0 0:00:06 0:00:05 0:00:01 140 100 52 100 52 0 0 8 0 0:00:06 0:00:06 --:--:-- 116 === End of file stderr276 === Start of file trace276 01:05:51.380692 * Trying 127.0.0.1:34897... 01:05:52.301896 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 49020 01:05:52.428859 * using HTTP/1.x 01:05:52.802497 => Send header, 119 bytes (0x77) 0000: GET /want?uri=http://anything/276?secondq/276 HTTP/1.1 0038: Host: 127.0.0.1:34897 004f: User-Agent: curl/8.17.0 0068: Accept: */* 0075: 01:05:53.174690 <= Recv header, 52 bytes (0x34) 0000: HTTP/1.1 301 This is a weirdo text message swsclose. 01:05:53.491126 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:05:53.596077 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:05:53.687678 <= Recv header, 72 bytes (0x48) 0000: Location: data/2760002.txt?coolsite=http://anotherurl/?a_second/ 0040: 2760002. 01:05:53.747498 <= Recv headerCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind278 ../src/curl -q --output log/4/curl278.out --include --trace-ascii log/4/trace278 --trace-time http://we.want.that.site.com/278 -x http://f%61ke:@127.0.0.1:42621 > log/4/stdout278 2> log/4/stderr278 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind279 ../src/curl -q --output log/1/curl279.out --include --trace-ascii log/1/trace279 --trace-time http://we.want.that.site.com/279 -x http://f%61ke@127.0.0.1:40641 > log/1/stdout279 2> log/1/stderr279 , 18 bytes (0x12) 0000: Connection: close. 01:05:53.828890 <= Recv header, 1 bytes (0x1) 0000: . 01:05:54.067761 * Request completely sent off 01:05:54.327207 * shutting down connection #0 01:05:54.900033 * Issue another request to this URL: 'http://127.0.0.1:34897/data/2760002.txt?coolsite=http://anotherurl/?a_second/2760002' 01:05:55.067083 * Hostname 127.0.0.1 was found in DNS cache 01:05:55.109897 * Trying 127.0.0.1:34897... 01:05:55.147838 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 50182 01:05:55.154558 * using HTTP/1.x 01:05:55.183497 => Send header, 140 bytes (0x8c) 0000: GET /data/2760002.txt?coolsite=http://anotherurl/?a_second/27600 0040: 02 HTTP/1.1 004d: Host: 127.0.0.1:34897 0064: User-Agent: curl/8.17.0 007d: Accept: */* 008a: 01:05:55.225369 <= Recv header, 41 bytes (0x29) 0000: HTTP/1.1 200 Followed here fine swsclose. 01:05:55.235202 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:05:55.243419 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:05:55.270476 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 52. 01:05:55.295556 <= Recv header, 1 bytes (0x1) 0000: . 01:05:55.318637 <= Recv data, 52 bytes (0x34) 0000: If this is received, the location following worked.. 01:05:55.594349 * Connection #1 to host 127.0.0.1:34897 left intact === End of file trace276 === Start of file valgrind276 ==230565== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind276 test 0278...[HTTP with proxy string including http:// and user+empty password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind278 ../src/curl -q --output log/4/curl278.out --include --trace-ascii log/4/trace278 --trace-time http://we.want.that.site.com/278 -x http://f%61ke:@127.0.0.1:42621 > log/4/stdout278 2> log/4/stderr278 valgrind ERROR ==230831== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 278 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind278 ../src/curl -q --output log/4/curl278.out --include --trace-ascii log/4/trace278 --trace-time http://we.want.that.site.com/278 -x http://f%61ke:@127.0.0.1:42621 > log/4/stdout278 2> log/4/stderr278 === End of file commands.log === Start of file curl278.out HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Type: text/html Content-Length: 27 the content would go here === End of file curl278.out === Start of file http_server.log 01:05:05.998759 ====> Client connect 01:05:05.998923 accept_connection 3 returned 4 01:05:05.999005 accept_connection 3 returned 0 01:05:06.005707 Read 93 bytes 01:05:06.005800 Process 93 bytes request 01:05:06.005896 Got request: GET /verifiedserver HTTP/1.1 01:05:06.005970 Are-we-friendly question received 01:05:06.006099 Wrote request (93 bytes) input to log/4/server.input 01:05:06.006193 Identifying ourselves as friends 01:05:06.006384 Response sent (57 bytes) and written to log/4/server.response 01:05:06.006453 special request received, no persistency 01:05:06.006511 ====> Client disconnect 0 01:05:54.100471 ====> Client connect 01:05:54.100611 accept_connection 3 returned 4 01:05:54.100689 accept_connection 3 returned 0 01:05:55.305175 Read 183 bytes 01:05:55.305375 Process 183 bytes request 01:05:55.305472 Got request: GET http://we.want.that.site.com/278 HTTP/1.1 01:05:55.305638 Serve test number 278 part 0 01:05:55.305811 - request found to be complete (278) 01:05:55.306066 Wrote request (183 bytes) input to log/4/server.input 01:05:55.306189 Send response test278 section 01:05:55.306391 connection close instruction "swsclose" found in response 01:05:55.306577 Response sent (137 bytes) and written to log/4/server.response 01:05:55.306643 instructed to close connection after server-reply 01:05:55.306704 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 37004 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 278 === End of file server.cmd === Start of file server.input GET http://we.want.that.site.com/278 HTTP/1.1 Host: we.want.that.site.com Proxy-Authorization: Basic ZmFrZTo= User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Type: text/html Content-Length: 27 the content would go here === End of file server.response === Start of file stderr278 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 27 100 27 0 0 5 0 0:00:05 0:00:05 --:--:-- 7 100 27 100 27 0 0 5 0 0:00:05 0:00:05 --:--:-- 7 === End of file stderr278 === Start of file trace278 01:05:53.158408 * Trying 127.0.0.1:42621... 01:05:54.076639 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 60802 01:05:54.198090 * using HTTP/1.x 01:05:54.342225 * Proxy auth using Basic with user 'fake' 01:05:54.727642 => Send header, 183 bytes (0xb7) 0000: GET http://we.want.that.site.com/278 HTTP/1.1 002f: Host: we.want.that.site.com 004c: Proxy-Authorization: Basic ZmFrZTo= 0071: User-Agent: curl/8.17.0 008a: Accept: */* 0097: Proxy-Connection: Keep-Alive 00b5: 01:05:55.097327 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 200 OK swsclose 01:05:55.415520 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:05:55.561782 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:05:55.599035 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 27 01:05:55.682667 <= Recv header, 2 bytes (0x2) 0000: 01:05:55.741428 <= Recv data, 27 bytes (0x1b) 0000: the content would go here 01:05:56.296637 * Connection #0 to host 127.0.0.1:42621 left intact === End of file trace278 === Start of file valgrind278 ==230831== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind278 test 0279...[HTTP with proxy string including http:// and user only] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind279 ../src/curl -q --output log/1/curl279.out --include --trace-ascii log/1/trace279 --trace-time http://we.want.that.site.com/279 -x http://f%61ke@127.0.0.1:40641 > log/1/stdout279 2> log/1/stderr279 valgrind ERROR ==230934== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 279 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind279 ../src/curl -q --output log/1/curl279.out --include --trace-ascii log/1/trace279 --trace-time http://we.want.that.site.com/279 -x http://f%61ke@127.0.0.1:40641 > log/1/stdout279 2> log/1/stderr279 === End of file commands.log === Start of file curl279.out HTTP/1.1 200 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind277 ../src/curl -q --output log/3/curl277.out --include --trace-ascii log/3/trace277 --trace-time http://127.0.0.1:46853/want/277 -F name=daniel -H "Content-Type: text/info" > log/3/stdout277 2> log/3/stderr277 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Type: text/html Content-Length: 27 the content would go here === End of file curl279.out === Start of file http_server.log 01:05:06.918615 ====> Client connect 01:05:06.918794 accept_connection 3 returned 4 01:05:06.918879 accept_connection 3 returned 0 01:05:06.926433 Read 93 bytes 01:05:06.926601 Process 93 bytes request 01:05:06.926700 Got request: GET /verifiedserver HTTP/1.1 01:05:06.926766 Are-we-friendly question received 01:05:06.926898 Wrote request (93 bytes) input to log/1/server.input 01:05:06.927004 Identifying ourselves as friends 01:05:06.927182 Response sent (57 bytes) and written to log/1/server.response 01:05:06.927252 special request received, no persistency 01:05:06.927314 ====> Client disconnect 0 01:05:55.406651 ====> Client connect 01:05:55.406795 accept_connection 3 returned 4 01:05:55.406881 accept_connection 3 returned 0 01:05:56.654030 Read 183 bytes 01:05:56.654220 Process 183 bytes request 01:05:56.654318 Got request: GET http://we.want.that.site.com/279 HTTP/1.1 01:05:56.654411 Serve test number 279 part 0 01:05:56.654587 - request found to be complete (279) 01:05:56.654829 Wrote request (183 bytes) input to log/1/server.input 01:05:56.654937 Send response test279 section 01:05:56.655144 connection close instruction "swsclose" found in response 01:05:56.655306 Response sent (137 bytes) and written to log/1/server.response 01:05:56.655374 instructed to close connection after server-reply 01:05:56.655437 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 37574 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 279 === End of file server.cmd === Start of file server.input GET http://we.want.that.site.com/279 HTTP/1.1 Host: we.want.that.site.com Proxy-Authorization: Basic ZmFrZTo= User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Type: text/html Content-Length: 27 the content would go here === End of file server.response === Start of file stderr279 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 27 100 27 0 0 5 0 0:00:05 0:00:05 --:--:-- 7 100 27 100 27 0 0 5 0 0:00:05 0:00:05 --:--:-- 7 === End of file stderr279 === Start of file trace279 01:05:54.471323 * Trying 127.0.0.1:40641... 01:05:55.377449 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 54206 01:05:55.541306 * using HTTP/1.x 01:05:55.686099 * Proxy auth using Basic with user 'fake' 01:05:56.078535 => Send header, 183 bytes (0xb7) 0000: GET http://we.want.that.site.com/279 HTTP/1.1 002f: Host: we.want.that.site.com 004c: Proxy-Authorization: Basic ZmFrZTo= 0071: User-Agent: curl/8.17.0 008a: Accept: */* 0097: Proxy-Connection: Keep-Alive 00b5: 01:05:56.447469 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 200 OK swsclose 01:05:56.751920 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:05:56.888724 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:05:56.925124 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 27 01:05:57.008136 <= Recv header, 2 bytes (0x2) 0000: 01:05:57.069315 <= Recv data, 27 bytes (0x1b) 0000: the content would go here 01:05:57.645764 * Connection #0 to host 127.0.0.1:40641 left intact === End of file trace279 === Start of file valgrind279 ==230934== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind279 test 0277...[HTTP RFC1867-type formposting with custom Content-Type] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind277 ../src/curl -q --output log/3/curl277.out --include --trace-ascii log/3/trace277 --trace-time http://127.0.0.1:46853/want/277 -F name=daniel -H "Content-Type: text/info" > log/3/stdout277 2> log/3/stderr277 valgrind ERROR ==230575== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 277 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind277 ../src/curl -q --output log/3/curl277.out --include --trace-ascii log/3/trace277 --trace-time http://127.0.0.1:46853/want/277 -F name=daniel -H "Content-Type: text/info" > log/3/stdout277 2> log/3/stderr277 === End of file commands.log === Start of file curl277.out HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 11 blablabla === End of file curl277.out === Start of file http_server.log 01:05:03.519476 ====> Client connect 01:05:03.519671 accept_connection 3 returned 4 01:05:03.519752 accept_connection 3 returned 0 01:05:03.522696 Read 93 bytes 01:05:03.522773 Process 93 bytes request 01:05:03.522856 Got request: GET /verifiedserver HTTP/1.1 01:05:03.522918 Are-we-friendly question received 01:05:03.523039 Wrote request (93 bytes) input to log/3/server.input 01:05:03.523128 Identifying ourselves as friends 01:05:03.523304 Response sent (57 bytes) and written to log/3/server.response 01:05:03.523364 special request received, no persistency 01:05:03.523421 ====> Client disconnect 0 01:05:57.052350 ====> Client connect 01:05:57.052491 accept_connection 3 returned 4 01:05:57.052569 accept_connection 3 returned 0 01:05:58.652919 Read 349 bytes 01:05:58.653113 Process 349 bytes request 01:05:58.653220 Got request: POST /want/277 HTTP/1.1 01:05:58.653302 Serve test number 277 part 0 01:05:58.653506 - request found to be complete (277) 01:05:58.653686 Found Content-Length: 158 in the request 01:05:58.653867 Wrote request (349 bytes) input to log/3/server.input 01:05:58.653977 Send response test277 section 01:05:58.654198 connection close instruction "swsclose" found in response 01:05:58.654359 Response sent (117 bytes) and written to log/3/server.response 01:05:58.654429 instructed to close connection after server-reply 01:05:58.654494 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 40736 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 277 === End of file server.cmd === Start of file server.input POST /want/277 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* Content-Length: 158 Content-Type: text/info; boundary=------------------------Cwzgrp04gASgALyLOmnbCf --------------------------Cwzgrp04gASgALyLOmnbCf Content-Disposition: attachment; name="name" daniel --------------------------Cwzgrp04gASgALyLOmnbCf-- === End of file CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind280 ../src/curl -q --output log/5/curl280.out --include --trace-ascii log/5/trace280 --trace-time ftp://127.0.0.1:33729/280/ --ftp-alternative-to-user "USER replacement" > log/5/stdout280 2> log/5/stderr280 server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 11 blablabla === End of file server.response === Start of file stderr277 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 158 0 0 100 158 0 38 0:00:04 0:00:04 --:--:-- 55 100 169 100 11 100 158 2 31 0:00:05 0:00:05 --:--:-- 44 100 169 100 11 100 158 2 30 0:00:05 0:00:05 --:--:-- 43 === End of file stderr277 === Start of file trace277 01:05:57.106462 * Trying 127.0.0.1:46853... 01:05:58.000310 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 38300 01:05:58.126597 * using HTTP/1.x 01:05:59.080182 => Send header, 191 bytes (0xbf) 0000: POST /want/277 HTTP/1.1 0019: Host: 127.0.0.1:46853 0030: User-Agent: curl/8.17.0 0049: Accept: */* 0056: Content-Length: 158 006b: Content-Type: text/info; boundary=------------------------Cwzgrp 00ab: 04gASgALyLOmnbCf 00bd: 01:05:59.190215 => Send data, 158 bytes (0x9e) 0000: --------------------------Cwzgrp04gASgALyLOmnbCf 0032: Content-Disposition: attachment; name="name" 0060: 0062: daniel 006a: --------------------------Cwzgrp04gASgALyLOmnbCf-- 01:05:59.280876 * upload completely sent off: 158 bytes 01:05:59.560479 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 01:05:59.858483 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:05:59.958502 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:06:00.004689 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 11. 01:06:00.086012 <= Recv header, 1 bytes (0x1) 0000: . 01:06:00.144423 <= Recv data, 11 bytes (0xb) 0000: blablabla.. 01:06:00.649180 * Connection #0 to host 127.0.0.1:46853 left intact === End of file trace277 === Start of file valgrind277 ==230575== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind277 test 0280...[FTP --ftp-alternative-to-user on USER failure] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind280 ../src/curl -q --output log/5/curl280.out --include --trace-ascii log/5/trace280 --trace-time ftp://127.0.0.1:33729/280/ --ftp-alternative-to-user "USER replacement" > log/5/stdout280 2> log/5/stderr280 valgrind ERROR ==231152== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 280 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind280 ../src/curl -q --output log/5/curl280.out --include --trace-ascii log/5/trace280 --trace-time ftp://127.0.0.1:33729/280/ --ftp-alternative-to-user "USER replacement" > log/5/stdout280 2> log/5/stderr280 === End of file commands.log === Start of file curl280.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 fine === End of file curl280.out === Start of file ftp_server.log 01:05:14.270306 ====> Client connect 01:05:14.271777 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:05:14.280994 < "USER anonymous" 01:05:14.282310 > "331 We are happy you popped in![CR][LF]" 01:05:14.283301 < "PASS ftp@example.com" 01:05:14.284215 > "230 Welcome you silly person[CR][LF]" 01:05:14.284724 < "PWD" 01:05:14.285125 > "257 "/" is current directory[CR][LF]" 01:05:14.287636 < "EPSV" 01:05:14.287845 ====> Passive DATA channel requested by client 01:05:14.287992 DATA sockfilt for passive data channel starting... 01:05:14.329634 DATA sockfilt for passive data channel started (pid 231146) 01:05:14.330941 DATA sockfilt for passive data channel listens on port 45539 01:05:14.331281 > "229 Entering Passive Mode (|||45539|)[CR][LF]" 01:05:14.331454 Client has been notified that DATA conn will be accepted on port 45539 01:05:14.334437 Client connects to port 45539 01:05:14.334657 ====> Client established passive DATA connection on port 45539 01:05:14.335521 < "TYPE I" 01:05:14.335808 > "200 I modify TYPE as you wanted[CR][LF]" 01:05:14.337063 < "SIZE verifiedserver" 01:05:14.337780 > "213 18[CR][LF]" 01:05:14.338807 < "RETR verifiedserver" 01:05:14.339113 > "150 Binary junk (18 bytes).[CR][LF]" 01:05:14.339626 =====> Closing passive DATA connection... 01:05:14.339791 Server disconnects passive DATA connection 01:05:14.347374 Server disconnected passive DATA connection 01:05:14.347620 DATA sockfilt for passive data channel quits (pid 231146) 01:05:14.350773 DATA sockfilt for passive data channel quit (pid 231146) 01:05:14.350954 =====> Closed passive DATA connection 01:05:14.351493 > "226 File transfer complete[CR][LF]" 01:05:14.391957 < "QUIT" 01:05:14.392265 > "221 bye bye baby[CR][LF]" 01:05:14.397655 MAIN sockfilt said DISC 01:05:14.397993 ====> Client disconnected 01:05:14.398270 Awaiting input 01:06:01.146963 ====> Client connect 01:06:01.147741 FTPD: Getting commands from log/5/server.cmd 01:06:01.148543 FTPD: set custom reply for USER command 01:06:01.148811 FTPD: blank custom reply for USER command after 1 uses 01:06:01.149046 FTPD: run test case number: 280 01:06:01.150052 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:06:02.678285 < "USER anonymous" 01:06:02.679237 > "530 We don't like USER commands[CR][LF]" 01:06:02.807253 < "USER replacement" 01:06:02.810952 > "331 We are happy you popped in![CR][LF]" 01:06:02.895215 < "PASS ftp@example.com" 01:06:02.895620 > "230 Welcome you silly person[CR][LF]" 01:06:02.932823 < "PWD" 01:06:02.933282 > "257 "/" is current directory[CR][LF]" 01:06:03.136196 < "CWD 280" 01:06:03.136973 > "250 CWD command successful.[CR][LF]" 01:06:03.209055 < "EPSV" 01:06:03.209387 ====> Passive DATA channel requested by client 01:06:03.209533 DATA sockfilt for passive data channel starting... 01:06:03.278191 DATA sockfilt for passive data channel started (pid 232102) 01:06:03.279317 DATA sockfilt for passive data channel listens on port 34301 01:06:03.279659 > "229 Entering Passive Mode (|||34301|)[CR][LF]" 01:06:03.279826 Client has been notified that DATA conn will be accepted on port 34301 01:06:03.494304 Client connects to port 34301 01:06:03.494945 ====> Client established passive DATA connection on port 34301 01:06:03.619630 < "TYPE A" 01:06:03.620045 > "200 I modify TYPE as you wanted[CR][LF]" 01:06:03.672689 < "LIST" 01:06:03.673113 > "150 here comes a directory[CR][LF]" 01:06:03.673299 pass LIST data on data connection 01:06:03.675438 send total 20 as data 01:06:03.675705 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 01:06:03.675916 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 01:06:03.676119 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 01:06:03.676323 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 01:06:03.676552 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 01:06:03.676748 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 01:06:03.676943 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 01:06:03.677137 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 01:06:03.677335 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 01:06:03.684236 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 fine as data 01:06:03.684793 =====> Closing passive DATA connection... 01:06:03.684950 Server disconnects passive DATA connection 01:06:03.687984 Server disconnected passive DATA connection 01:06:03.688161 DATA sockfilt for passive data channel quits (pid 232102) 01:06:03.694242 DATA sockfilt for passive data channel quit (pid 232102) 01:06:03.694424 =====> Closed passive DATA connection 01:06:03.697983 > "226 ASCII transfer complete[CR][LF]" 01:06:05.973367 < "QUIT" 01:06:05.974107 > "221 bye bye baby[CR][LF]" 01:06:06.107551 MAIN sockfilt said DISC 01:06:06.108059 ====> Client disconnected 01:06:06.108351 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:05:14.885327 ====> Client connect 01:05:14.886548 Received DATA (on stdin) 01:05:14.886628 > 160 bytes data, server => client 01:05:14.886752 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:05:14.886849 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:05:14.886937 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:05:14.895528 < 16 bytes data, client => server 01:05:14.895630 'USER anonymous\r\n' 01:05:14.896652 Received DATA (on stdin) 01:05:14.896726 > 33 bytes data, server => client 01:05:14.897924 '331 We are happy you popped in!\r\n' 01:05:14.898180 < 22 bytes data, client => server 01:05:14.898257 'PASS ftp@example.com\r\n' 01:05:14.898907 Received DATA (on stdin) 01:05:14.898969 > 30 bytes data, server => client 01:05:14.899125 '230 Welcome you silly person\r\n' 01:05:14.899416 < 5 bytes data, client => server 01:05:14.899481 'PWD\r\n' 01:05:14.900330 Received DATA (on stdin) 01:05:14.900399 > 30 bytes data, server => client 01:05:14.900704 '257 "/" is current directory\r\n' 01:05:14.902541 < 6 bytes data, client => server 01:05:14.902610 'EPSV\r\n' 01:05:14.947078 Received DATA (on stdin) 01:05:14.947221 > 39 bytes data, server => client 01:05:14.947310 '229 Entering Passive Mode (|||45539|)\r\n' 01:05:14.950330 < 8 bytes data, client => server 01:05:14.950414 'TYPE I\r\n' 01:05:14.951396 Received DATA (on stdin) 01:05:14.951469 > 33 bytes data, server => client 01:05:14.951554 '200 I modify TYPE as you wanted\r\n' 01:05:14.951960 < 21 bytes data, client => server 01:05:14.952039 'SIZE verifiedserver\r\n' 01:05:14.952738 Received DATA (on stdin) 01:05:14.952811 > 8 bytes data, server => client 01:05:14.953028 '213 18\r\n' 01:05:14.953702 < 21 bytes data, client => server 01:05:14.953780 'RETR verifiedserver\r\n' 01:05:14.955454 Received DATA (on stdin) 01:05:14.955526 > 29 bytes data, server => client 01:05:14.955612 '150 Binary junk (18 bytes).\r\n' 01:05:14.966555 Received DATA (on stdin) 01:05:14.966645 > 28 bytes data, server => client 01:05:14.966747 '226 File transfer complete\r\n' 01:05:15.006589 < 6 bytes data, client => server 01:05:15.006705 'QUIT\r\n' 01:05:15.008017 Received DATA (on stdin) 01:05:15.008087 > 18 bytes data, server => client 01:05:15.008166 '221 bye bye baby\r\n' 01:05:15.012926 ====> Client disconnect 01:05:15.013250 Received ACKD (on stdin) 01:06:01.761958 ====> Client connect 01:06:01.765585 Received DATA (on stdin) 01:06:01.765678 > 160 bytes data, server => client 01:06:01.765788 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:06:01.765888 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:06:01.765975 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:06:03.292218 < 16 bytes data, client => server 01:06:03.292421 'USER anonymous\r\n' 01:06:03.296167 Received DATA (on stdin) 01:06:03.296263 > 33 bytes data, server => client 01:06:03.296364 '530 We don't like USER commands\r\n' 01:06:03.421300 < 18 bytes data, client => server 01:06:03.421503 'USER replacement\r\n' 01:06:03.422940 Received DATA (on stdin) 01:06:03.423018 > 33 bytes data, server => client 01:06:03.426502 '331 We are happy you popped in!\r\n' 01:06:03.509369 < 22 bytes data, client => server 01:06:03.509555 'PASS ftp@example.com\r\n' 01:06:03.511120 Received DATA (on stdin) 01:06:03.511194 > 30 bytes data, server => client 01:06:03.511276 '230 Welcome you silly person\r\n' 01:06:03.546955 < 5 bytes data, client => server 01:06:03.547140 'PWD\r\n' 01:06:03.552839 Received DATA (on stdin) 01:06:03.552942 > 30 bytes data, server => client 01:06:03.553026 '257 "/" is current directory\r\n' 01:06:03.750289 < 9 bytes data, client => server 01:06:03.750487 'CWD 280\r\n' 01:06:03.751888 Received DATA (on stdin) 01:06:03.751971 > 29 bytes data, server => client 01:06:03.752074 '250 CWD command successful.\r\n' 01:06:03.823193 < 6 bytes data, client => server 01:06:03.823381 'EPSV\r\n' 01:06:03.895346 Received DATA (on stdin) 01:06:03.895481 > 39 bytes data, server => client 01:06:03.895571 '229 Entering Passive Mode (|||34301|)\r\n' 01:06:04.233758 < 8 bytes data, client => server 01:06:04.233956 'TYPE A\r\n' 01:06:04.235558 Received DATA (on stdin) 01:06:04.235632 > 33 bytes data, server => client 01:06:04.235712 '200 I modify TYPE as you wanted\r\n' 01:06:04.286785 < 6 bytes data, client => server 01:06:04.286962 'LIST\r\n' 01:06:04.296173 Received DATA (on stdin) 01:06:04.296285 > 28 bytes data, server => client 01:06:04.296367 '150 here comes a directory\r\n' 01:06:04.309937 Received DATA (on stdin) 01:06:04.310041 > 29 bytes data, server => client 01:06:04.313509 '226 ASCII transfer complete\r\n' 01:06:06.587450 < 6 bytes data, client => server 01:06:06.587633 'QUIT\r\n' 01:06:06.589037 Received DATA (on stdin) 01:06:06.589112 > 18 bytes data, server => client 01:06:06.589211 '221 bye bye baby\r\n' 01:06:06.722517 ====> Client disconnect 01:06:06.723823 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:05:14.935337 Running IPv4 version 01:05:14.943417 Listening on port 45539 01:05:14.943870 Wrote pid 231146 to log/5/server/ftp_sockdata.pid 01:05:14.944648 Received PING (on stdin) 01:05:14.945674 Received PORT (on stdin) 01:05:14.949703 ====> Client connect 01:05:14.955709 Received DATA (on stdin) 01:05:14.956003 > 18 bytes data, server => client 01:05:14.956371 'WE ROOLZ: 202313\r\n' 01:05:14.956613 Received DISC (on stdin) 01:05:14.956727 ====> Client forcibly disconnected 01:05:14.963227 Received QUIT (on stdin) 01:05:14.963313 quits 01:05:14.963802 ============> sockfilt quits 01:06:03.883376 Running IPv4 version 01:06:03.891116 Listening on port 34301 01:06:03.891629 Wrote pid 232102 to log/5/server/ftp_sockdata.pid 01:06:03.892416 Received PING (on stdin) 01:06:03.893972 Received PORT (on stdin) 01:06:04.106289 ====> Client connect 01:06:04.290990 Received DATA (on stdin) 01:06:04.291393 > 10 bytes data, server => client 01:06:04.291766 'total 20\r\n' 01:06:04.292041 Received DATA (on stdin) 01:06:04.292112 > 57 bytes data, server => client 01:06:04.292214 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 01:06:04.292312 Received DATA (on stdin) 01:06:04.292378 > 58 bytes data, server => client 01:06:04.292479 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 01:06:04.292563 Received DATA (on stdin) 01:06:04.292628 > 61 bytes data, server => client 01:06:04.292745 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 01:06:04.292830 '\n' 01:06:04.292925 Received DATA (on stdin) 01:06:04.292991 > 62 bytes data, server => client 01:06:04.293094 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 01:06:04.293156 '\n' 01:06:04.2CMD (5632): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind281 ../src/curl -q --output log/8/curl281.out --include --trace-ascii log/8/trace281 --trace-time http://127.0.0.1:39461/we/want/281 -f -T log/8/test281.txt > log/8/stdout281 2> log/8/stderr281 93239 Received DATA (on stdin) 01:06:04.293305 > 70 bytes data, server => client 01:06:04.293408 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 01:06:04.293476 'usr/bin\r\n' 01:06:04.293560 Received DATA (on stdin) 01:06:04.293623 > 59 bytes data, server => client 01:06:04.293723 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 01:06:04.293806 Received DATA (on stdin) 01:06:04.293872 > 69 bytes data, server => client 01:06:04.293974 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 01:06:04.294042 'd.html\r\n' 01:06:04.294138 Received DATA (on stdin) 01:06:04.294204 > 59 bytes data, server => client 01:06:04.294304 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 01:06:04.294386 Received DATA (on stdin) 01:06:04.294451 > 59 bytes data, server => client 01:06:04.294553 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 01:06:04.302834 Received DATA (on stdin) 01:06:04.302929 > 60 bytes data, server => client 01:06:04.303037 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 fine\r\n' 01:06:04.303136 Received DISC (on stdin) 01:06:04.303264 ====> Client forcibly disconnected 01:06:04.303613 Received QUIT (on stdin) 01:06:04.303689 quits 01:06:04.304201 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY USER 530 We don't like USER commands COUNT USER 1 Testnum 280 === End of file server.cmd === Start of file server.input USER anonymous USER replacement PASS ftp@example.com PWD CWD 280 EPSV TYPE A LIST QUIT === End of file server.input === Start of file stderr280 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 624 0 624 0 0 112 0 --:--:-- 0:00:05 --:--:-- 143 100 624 0 624 0 0 104 0 --:--:-- 0:00:05 --:--:-- 173 === End of file stderr280 === Start of file trace280 01:06:00.775526 * Trying 127.0.0.1:33729... 01:06:01.842367 * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 33570 01:06:02.133548 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:06:02.534512 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:06:02.569229 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:06:02.577262 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:06:02.583329 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:06:02.698499 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:06:02.781121 <= Recv header, 33 bytes (0x21) 0000: 530 We don't like USER commands 01:06:02.807469 => Send header, 18 bytes (0x12) 0000: USER replacement 01:06:02.878203 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:06:02.894156 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:06:02.910791 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:06:02.931773 => Send header, 5 bytes (0x5) 0000: PWD 01:06:02.945061 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:06:02.986271 * Entry path is '/' 01:06:03.135101 => Send header, 9 bytes (0x9) 0000: CWD 280 01:06:03.151059 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 01:06:03.207997 => Send header, 6 bytes (0x6) 0000: EPSV 01:06:03.223530 * Connect data stream passively 01:06:03.295758 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||34301|) 01:06:03.404605 * Connecting to 127.0.0.1 (127.0.0.1) port 34301 01:06:03.482308 * Trying 127.0.0.1:34301... 01:06:03.582495 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 34301) from 127.0.0.1 port 37766 01:06:03.618573 => Send header, 8 bytes (0x8) 0000: TYPE A 01:06:03.637789 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:06:03.671584 => Send header, 6 bytes (0x6) 0000: LIST 01:06:03.701395 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 01:06:03.756389 * Maxdownload = -1 01:06:03.930058 <= Recv data, 624 bytes (0x270) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 fine 01:06:04.364824 * abort upload 01:06:04.391459 <= Recv data, 0 bytes (0x0) 01:06:04.616272 * Remembering we are in dir "280/" 01:06:04.821858 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 01:06:05.138981 * Connection #0 to host 127.0.0.1:33729 left intact === End of file trace280 === Start of file valgrind280 ==231152== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind280 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 286 in state 4 Runner 2 (id 185908) running test 282 in state 4 Runner 3 (id 185910) running test 287 in state 4 Runner 4 (id 185912) running test 285 in state 4 Runner 5 (id 185914) running test 288 in state 4 Runner 6 (id 185916) running test 283 in state 4 Runner 7 (id 185918) running test 284 in state 4 Runner 8 (id 185920) running test 281 in state 4 test 0281...[HTTP PUT from file with 100 + 401 responses and -f without auth given] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind281 ../src/curl -q --output log/8/curl281.out --include --trace-ascii log/8/trace281 --trace-time http://127.0.0.1:39461/we/want/281 -f -T log/8/test281.txt > log/8/stdout281 2> log/8/stderr281 valgrind ERROR ==231335== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 281 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind281 ../src/curl -q --output log/8/curl281.out --include --trace-ascii log/8/trace281 --trace-time http://127.0.0.1:39461/we/want/281 -f -T log/8/test281.txt > log/8/stdout281 2> log/8/stderr281 === End of file commands.log === Start of file curl281.out HTTP/1.1 100 Continue HTTP/1.1 401 Bad Auth swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT WWW-Authenticate: Basic Realm=authenticate Server: test-server/fake === End of file curl281.out === Start of file http_server.log 01:05:27.802612 ====> Client connect 01:05:27.802760 accept_connection 3 returned 4 01:05:27.802829 accept_connection 3 returned 0 01:05:27.809345 Read 93 bytes 01:05:27.809423 Process 93 bytes request 01:05:27.809504 Got request: GET /verifiedserver HTTP/1.1 01:05:27.809577 Are-we-friendly question received 01:05:27.809681 Wrote request (93 bytes) input to log/8/server.input 01:05:27.809760 Identifying ourselves as friends 01:05:27.809926 Response sent (57 bytes) and written to log/8/server.response 01:05:27.809986 special request received, no persistency 01:05:27.810036 ====> Client disconnect 0 01:06:15.385403 ====> Client connect 01:06:15CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind282 ../src/curl -q --output log/2/curl282.out --include --trace-ascii log/2/trace282 --trace-time http://127.0.0.1:39863/282 > log/2/stdout282 2> log/2/stderr282 .385536 accept_connection 3 returned 4 01:06:15.385611 accept_connection 3 returned 0 01:06:16.529266 Read 148 bytes 01:06:16.529483 Process 148 bytes request 01:06:16.529576 Got request: PUT /we/want/281 HTTP/1.1 01:06:16.529642 Serve test number 281 part 0 01:06:16.529810 - request found to be complete (281) 01:06:16.529953 Found Content-Length: 38 in the request 01:06:16.530110 Wrote request (148 bytes) input to log/8/server.input 01:06:16.530212 Send response test281 section 01:06:16.530405 connection close instruction "swsclose" found in response 01:06:16.530591 Response sent (159 bytes) and written to log/8/server.response 01:06:16.530653 instructed to close connection after server-reply 01:06:16.530709 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 50826 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 281 === End of file server.cmd === Start of file server.input PUT /we/want/281 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* Content-Length: 38 Weird file to upload === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 100 Continue HTTP/1.1 401 Bad Auth swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT WWW-Authenticate: Basic Realm=authenticate Server: test-server/fake === End of file server.response === Start of file stderr281 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 38 0 0 100 38 0 8 0:00:04 0:00:04 --:--:-- 11 curl: (22) The requested URL returned error: 401 === End of file stderr281 === Start of file test281.txt Weird file to upload === End of file test281.txt === Start of file trace281 01:06:15.462061 * Trying 127.0.0.1:39461... 01:06:16.318699 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 38660 01:06:16.455300 * using HTTP/1.x 01:06:16.951168 => Send header, 110 bytes (0x6e) 0000: PUT /we/want/281 HTTP/1.1 001b: Host: 127.0.0.1:39461 0032: User-Agent: curl/8.17.0 004b: Accept: */* 0058: Content-Length: 38 006c: 01:06:17.045045 => Send data, 38 bytes (0x26) 0000: Weird. file. to. upload. 01:06:17.124930 * upload completely sent off: 38 bytes 01:06:17.368952 <= Recv header, 22 bytes (0x16) 0000: HTTP/1.1 100 Continue. 01:06:17.669630 <= Recv header, 1 bytes (0x1) 0000: . 01:06:17.750460 <= Recv header, 31 bytes (0x1f) 0000: HTTP/1.1 401 Bad Auth swsclose. 01:06:17.771101 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:06:17.904772 <= Recv header, 43 bytes (0x2b) 0000: WWW-Authenticate: Basic Realm=authenticate. 01:06:17.930670 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:06:17.955964 * no chunk, no close, no size. Assume close to signal end 01:06:18.011669 * The requested URL returned error: 401 01:06:18.022599 <= Recv header, 1 bytes (0x1) 0000: . 01:06:18.381034 * closing connection #0 === End of file trace281 === Start of file valgrind281 ==231335== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind281 test 0282...[HTTP GET with no response body or headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind282 ../src/curl -q --output log/2/curl282.out --include --trace-ascii log/2/trace282 --trace-time http://127.0.0.1:39863/282 > log/2/stdout282 2> log/2/stderr282 valgrind ERROR ==231502== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 282 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind282 ../src/curl -q --output log/2/curl282.out --include --trace-ascii log/2/trace282 --trace-time http://127.0.0.1:39863/282 > log/2/stdout282 2> log/2/stderr282 === End of file commands.log === Start of file curl282.out HTTP/1.1 200 OK swsclose === End of file curl282.out === Start of file http_server.log 01:05:34.011902 ====> Client connect 01:05:34.012077 accept_connection 3 returned 4 01:05:34.012153 accept_connection 3 returned 0 01:05:34.019457 Read 93 bytes 01:05:34.019576 Process 93 bytes request 01:05:34.019667 Got request: GET /verifiedserver HTTP/1.1 01:05:34.019731 Are-we-friendly question received 01:05:34.019843 Wrote request (93 bytes) input to log/2/server.input 01:05:34.019936 Identifying ourselves as friends 01:05:34.020101 Response sent (57 bytes) and written to log/2/server.response 01:05:34.020167 special request received, no persistency 01:05:34.020228 ====> Client disconnect 0 01:06:21.068239 ====> Client connect 01:06:21.068379 accept_connection 3 returned 4 01:06:21.068462 accept_connection 3 returned 0 01:06:22.072939 Read 82 bytes 01:06:22.073132 Process 82 bytes request 01:06:22.073232 Got request: GET /282 HTTP/1.1 01:06:22.073308 Serve test number 282 part 0 01:06:22.073483 - request found to be complete (282) 01:06:22.073723 Wrote request (82 bytes) input to log/2/server.input 01:06:22.073840 Send response test282 section 01:06:22.074029 connection close instruction "swsclose" found in response 01:06:22.074181 Response sent (26 bytes) and written to log/2/server.response 01:06:22.074248 instructed to close connection after server-reply 01:06:22.074308 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 49984 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 282 === End of file server.cmd === Start of file server.input GET /282 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK swsclose === End of file server.response === Start of file stderr282 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr282 === Start of file trace282 01:06:20.137070 * Trying 127.0.0.1:39863... 01:06:21.020927 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 56864 01:06:21.142453 * using HTTP/1.x 01:06:21.498122 => Send header, 82 bytes (0x52) 0000: GET /282 HTTP/1.1 0013: Host: 127.0.0.1:39CMD (17664): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind283 ../src/curl -q --output log/6/curl283.out --include --trace-ascii log/6/trace283 --trace-time tftp://127.0.0.1:53918//invalid-file --tftp-blksize 1024 > log/6/stdout283 2> log/6/stderr283 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind284 ../src/curl -q --output log/7/curl284.out --include --trace-ascii log/7/trace284 --trace-time tftp://127.0.0.1:45249//284 > log/7/stdout284 2> log/7/stderr284 863 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:06:21.852419 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 01:06:22.187101 * no chunk, no close, no size. Assume close to signal end 01:06:22.249141 <= Recv header, 1 bytes (0x1) 0000: . 01:06:22.401574 * abort upload 01:06:22.439036 <= Recv data, 0 bytes (0x0) 01:06:22.977390 * shutting down connection #0 === End of file trace282 === Start of file valgrind282 ==231502== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind282 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 286 in state 4 Runner 2 (id 185908) running test 290 in state 4 Runner 3 (id 185910) running test 287 in state 4 Runner 4 (id 185912) running test 285 in state 4 Runner 5 (id 185914) running test 288 in state 4 Runner 6 (id 185916) running test 283 in state 4 Runner 7 (id 185918) running test 284 in state 4 Runner 8 (id 185920) running test 289 in state 4 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/tftpserver.pl --pidfile "log/6/server/tftp_server.pid" --portfile "log/6/server/tftp_server.port" --logfile "log/6/tftp_server.log" --logdir "log/6" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: TFTP server on PID 231639 port 53918 * pid tftp => 231639 231639 test 0283...[TFTP retrieve on invalid file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind283 ../src/curl -q --output log/6/curl283.out --include --trace-ascii log/6/trace283 --trace-time tftp://127.0.0.1:53918//invalid-file --tftp-blksize 1024 > log/6/stdout283 2> log/6/stderr283 valgrind ERROR ==231654== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 283 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind283 ../src/curl -q --output log/6/curl283.out --include --trace-ascii log/6/trace283 --trace-time tftp://127.0.0.1:53918//invalid-file --tftp-blksize 1024 > log/6/stdout283 2> log/6/stderr283 === End of file commands.log === Start of file server.cmd Testnum 283 === End of file server.cmd === Start of file server.input opcode = 1 mode = octet tsize = 0 blksize = 1024 timeout = 5 filename = /invalid-file === End of file server.input === Start of file stderr283 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 curl: (69) TFTP: Access Violation === End of file stderr283 === Start of file tftp_server.log 01:05:51.051844 Wrote pid 231639 to log/6/server/tftp_server.pid 01:05:51.054294 Wrote port 53918 to log/6/server/tftp_server.port 01:05:51.054448 Running IPv4 version on port UDP/53918 01:06:38.897193 trying to get file: /invalid-file mode 1 01:06:38.897586 requested test number 0 part 0 01:06:38.899145 fopen() failed with error (2) No such file or directory 01:06:38.902831 Couldn't open test file 0 01:06:38.903012 fopen() failed with error (2) No such file or directory 01:06:38.903090 Couldn't open test file for test: 0 01:06:38.903573 end of one transfer === End of file tftp_server.log === Start of file trace283 01:06:38.444229 * Trying 127.0.0.1:53918... 01:06:38.896293 * Established connection to 127.0.0.1 (127.0.0.1 port 53918) from port 4294967295 01:06:39.063108 * set timeouts for state 0; Total 297733, retry 5 maxtry 50 01:06:39.358876 * TFTP error: Access violation 01:06:39.692300 * shutting down connection #0 === End of file trace283 === Start of file valgrind283 ==231654== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind283 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/tftpserver.pl --pidfile "log/7/server/tftp_server.pid" --portfile "log/7/server/tftp_server.port" --logfile "log/7/tftp_server.log" --logdir "log/7" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: TFTP server on PID 231776 port 45249 * pid tftp => 231776 231776 test 0284...[TFTP retrieve of boundary case 512 byte file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind284 ../src/curl -q --output log/7/curl284.out --include --trace-ascii log/7/trace284 --trace-time tftp://127.0.0.1:45249//284 > log/7/stdout284 2> log/7/stderr284 valgrind ERROR ==231795== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 284 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind284 ../src/curl -q --output log/7/curl284.out --include --trace-ascii log/7/trace284 --trace-time tftp://127.0.0.1:45249//284 > log/7/stdout284 2> log/7/stderr284 === End of file commands.log === Start of file curl284.out A chunk of data which exactly fits into a 512 byte TFTP block, testing a boundary condition in the TFTP receive code. 789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF === End of file curl284.out === Start of file server.cmd Testnum 284 === End of file server.cmd === Start of file server.input opcode = 1 mode = octet tsize = 0 blksize = 512 timeout = 5 filename = /284 === End of file server.input === Start of file stderr284 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 512 0 512 0 0 711 0 --:--:-- --:--:-- --:--:-- 711 100 512 0 512 0 0 548 0 --:--:-- --:--:-- --:--:-- 0 100 512 0 512 0 0 534 0 --:--:-- --:--:-- --:--:-- 534 === End of file stderr284 === Start of file tftp_server.log 01:05:59.965937 Wrote pid 231776 to log/7/server/tftp_server.pid 01:05:59.968340 Wrote port 45249 to log/7/server/tftp_server.port 01:05:59.968490 Running IPv4 version on port UDP/45249 01:06:47.567205 trying to get file: /284 mode 1 01:06:47.567554 requested test number 284 part 0 01:06:47.574832 file opened and all is good 01:06:47.575527 write 01:06:47.575807 read 01:06:48.166115 read: 4 01:06:48.166520 write 01:06:48.166617 read 01:06:48.216819 read: 4 01:06:48.217356 end of one transfer === End of file tftp_server.log === Start of file trace284 01:06:46.066811 * Trying 127.0.0.1:45249... 01:06:46.561776 * Established connection to 127.0.0.1 (127.0.0.1 port 45249) from port 4294967295 01:06:46.739758 * set timeouts for state 0; Total 297515, retry 5 maxtry 50 01:06:47.107382 <= Recv data, 512 bytes (0x200) 0000: A chunk of data which exactly fits into.a 512 byte TFTP block, t 0040: esting a boundary.condition in the TFTP receive code..789ABCDEF. 0080: 123456789ABCDEF.123456789ABCDEF.123456789ABCDEF.123456789ABCDEF. 00c0: 123456789ABCDEF.123456789ABCDEF.123456789ABCDEF.123456789ABCCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind285 ../src/curl -q --output log/4/curl285.out --include --trace-ascii log/4/trace285 --trace-time -T log/4/test285.txt tftp://127.0.0.1:49032// --connect-timeout 549 > log/4/stdout285 2> log/4/stderr285 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind286 ../src/curl -q --output log/1/curl286.out --include --trace-ascii log/1/trace286 --trace-time -T log/1/test286.txt tftp://127.0.0.1:52872// > log/1/stdout286 2> log/1/stderr286 CMD (14336): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind287 ../src/curl -q --include --trace-ascii log/3/trace287 --trace-time http://test.remote.example.com.287:46853/path/287 -H "User-Agent: looser/2015" --proxy http://127.0.0.1:46853 --proxytunnel --proxy-header "User-Agent: looser/2007" > log/3/stdout287 2> log/3/stderr287 DEF. 0100: 123456789ABCDEF.123456789ABCDEF.123456789ABCDEF.123456789ABCDEF. 0140: 123456789ABCDEF.123456789ABCDEF.123456789ABCDEF.123456789ABCDEF. 0180: 123456789ABCDEF.123456789ABCDEF.123456789ABCDEF.123456789ABCDEF. 01c0: 123456789ABCDEF.123456789ABCDEF.123456789ABCDEF.123456789ABCDEF. 01:06:47.519338 * Connected for receive 01:06:47.528589 * set timeouts for state 1; Total 0, retry 5 maxtry 3 01:06:48.026027 * shutting down connection #0 === End of file trace284 === Start of file valgrind284 ==231795== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind284 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/tftpserver.pl --pidfile "log/4/server/tftp_server.pid" --portfile "log/4/server/tftp_server.port" --logfile "log/4/tftp_server.log" --logdir "log/4" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: TFTP server on PID 231788 port 49032 * pid tftp => 231788 231788 test 0285...[TFTP send] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind285 ../src/curl -q --output log/4/curl285.out --include --trace-ascii log/4/trace285 --trace-time -T log/4/test285.txt tftp://127.0.0.1:49032// --connect-timeout 549 > log/4/stdout285 2> log/4/stderr285 valgrind ERROR ==231887== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 285 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind285 ../src/curl -q --output log/4/curl285.out --include --trace-ascii log/4/trace285 --trace-time -T log/4/test285.txt tftp://127.0.0.1:49032// --connect-timeout 549 > log/4/stdout285 2> log/4/stderr285 === End of file commands.log === Start of file server.cmd Testnum 285 === End of file server.cmd === Start of file server.input opcode = 2 mode = octet tsize = 32 blksize = 512 timeout = 10 filename = /test285.txt === End of file server.input === Start of file stderr285 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 32 0 0 100 32 0 56 --:--:-- --:--:-- --:--:-- 56 100 32 0 0 100 32 0 52 --:--:-- --:--:-- --:--:-- 52 === End of file stderr285 === Start of file test285.txt a chunk of data sent to server === End of file test285.txt === Start of file tftp_server.log 01:06:00.090936 Wrote pid 231788 to log/4/server/tftp_server.pid 01:06:00.093498 Wrote port 49032 to log/4/server/tftp_server.port 01:06:00.093664 Running IPv4 version on port UDP/49032 01:06:48.400499 trying to get file: /test285.txt mode 2 01:06:48.400967 requested test number 285 part 0 01:06:48.407269 file opened and all is good 01:06:48.407635 write 01:06:48.407979 read 01:06:48.637339 read: 36 01:06:53.638611 end of one transfer === End of file tftp_server.log === Start of file trace285 01:06:47.918430 * Trying 127.0.0.1:49032... 01:06:48.386843 * Established connection to 127.0.0.1 (127.0.0.1 port 49032) from port 4294967295 01:06:48.577376 * set timeouts for state 0; Total 546673, retry 10 maxtry 50 01:06:48.867993 * Connected for transmit 01:06:48.876792 * set timeouts for state 2; Total 0, retry 5 maxtry 3 01:06:49.483227 * shutting down connection #0 === End of file trace285 === Start of file upload.285 a chunk of data sent to server === End of file upload.285 === Start of file valgrind285 ==231887== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind285 test 0286...[TFTP send of boundary case 512 byte file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind286 ../src/curl -q --output log/1/curl286.out --include --trace-ascii log/1/trace286 --trace-time -T log/1/test286.txt tftp://127.0.0.1:52872// > log/1/stdout286 2> log/1/stderr286 valgrind ERROR ==232066== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 286 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind286 ../src/curl -q --output log/1/curl286.out --include --trace-ascii log/1/trace286 --trace-time -T log/1/test286.txt tftp://127.0.0.1:52872// > log/1/stdout286 2> log/1/stderr286 === End of file commands.log === Start of file server.cmd Testnum 286 === End of file server.cmd === Start of file server.input opcode = 2 mode = octet tsize = 512 blksize = 512 timeout = 5 filename = /test286.txt === End of file server.input === Start of file stderr286 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 512 0 0 100 512 0 627 --:--:-- --:--:-- --:--:-- 627 100 512 0 0 100 512 0 594 --:--:-- --:--:-- --:--:-- 594 === End of file stderr286 === Start of file test286.txt A chunk of data which exactly fits into a 512 byte TFTP block, testing a boundary condition in the TFTP transmit code. 89ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF === End of file test286.txt === Start of file tftp_server.log 01:06:02.725392 trying to get file: verifiedserver mode 1 01:06:02.725721 Are-we-friendly question received 01:06:02.725833 write 01:06:02.725920 read 01:06:02.731241 read: 4 01:06:02.731454 end of one transfer 01:06:51.355682 trying to get file: /test286.txt mode 2 01:06:51.355980 requested test number 286 part 0 01:06:51.356413 file opened and all is good 01:06:51.356624 write 01:06:51.356828 read 01:06:51.589078 read: 516 01:06:51.589480 write 01:06:51.589807 read 01:06:51.652738 read: 4 01:06:56.653395 end of one transfer === End of file tftp_server.log === Start of file trace286 01:06:49.869832 * Trying 127.0.0.1:52872... 01:06:50.330563 * Established connection to 127.0.0.1 (127.0.0.1 port 52872) from port 4294967295 01:06:50.524121 * set timeouts for state 0; Total 297724, retry 5 maxtry 50 01:06:50.823680 * Connected for transmit 01:06:50.833025 * set timeouts for state 2; Total 0, retry 5 maxtry 3 01:06:51.654070 * shutting down connection #0 === End of file trace286 === Start of file upload.286 A chunk of data which exactly fits into a 512 byte TFTP block, testing a boundary condition in the TFTP transmit code. 89ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF === End of file upload.286 === Start of file valgrind286 ==232066== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind286 test 0287...[HTTP proxy CONNECT with custom User-Agent header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind288 ../src/curl -q --output log/5/curl288.out --trace-ascii log/5/trace288 --trace-time file://localhost/build/curl/src/build-curl/tests/log/5/test288.txt > log/5/stdout288 2> log/5/stderr288 CMD (6656): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind289 ../src/curl -q --output log/8/curl289.out --include --trace-ascii log/8/trace289 --trace-time ftp://127.0.0.1:33545/289 -T log/8/illegal-nonexistent-file -C - > log/8/stdout289 2> log/8/stderr289 /build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind287 ../src/curl -q --include --trace-ascii log/3/trace287 --trace-time http://test.remote.example.com.287:46853/path/287 -H "User-Agent: looser/2015" --proxy http://127.0.0.1:46853 --proxytunnel --proxy-header "User-Agent: looser/2007" > log/3/stdout287 2> log/3/stderr287 valgrind ERROR ==232241== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 287 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind287 ../src/curl -q --include --trace-ascii log/3/trace287 --trace-time http://test.remote.example.com.287:46853/path/287 -H "User-Agent: looser/2015" --proxy http://127.0.0.1:46853 --proxytunnel --proxy-header "User-Agent: looser/2007" > log/3/stdout287 2> log/3/stderr287 === End of file commands.log === Start of file http_server.log 01:06:05.145023 ====> Client connect 01:06:05.145187 accept_connection 3 returned 4 01:06:05.145263 accept_connection 3 returned 0 01:06:05.151926 Read 93 bytes 01:06:05.152030 Process 93 bytes request 01:06:05.152123 Got request: GET /verifiedserver HTTP/1.1 01:06:05.152195 Are-we-friendly question received 01:06:05.152314 Wrote request (93 bytes) input to log/3/server.input 01:06:05.152419 Identifying ourselves as friends 01:06:05.152600 Response sent (57 bytes) and written to log/3/server.response 01:06:05.152668 special request received, no persistency 01:06:05.152729 ====> Client disconnect 0 01:06:52.377709 ====> Client connect 01:06:52.377870 accept_connection 3 returned 4 01:06:52.377956 accept_connection 3 returned 0 01:06:53.291690 Read 150 bytes 01:06:53.291882 Process 150 bytes request 01:06:53.292109 Received a CONNECT test.remote.example.com.287:46853 HTTP/1.1 request 01:06:53.292272 Port number: 46853, test case number: -7 01:06:53.292544 [log/3/server.cmd] cmdfile says testnum 287 01:06:53.292790 - request found to be complete (287) 01:06:53.293054 Wrote request (150 bytes) input to log/3/server.input 01:06:53.293174 Send response test287 section 01:06:53.293499 connection close instruction "swsclose" found in response 01:06:53.293664 Response sent (77 bytes) and written to log/3/server.response 01:06:53.293730 instructed to close connection after server-reply 01:06:53.293789 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 60764 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 287 === End of file server.cmd === Start of file server.input CONNECT test.remote.example.com.287:46853 HTTP/1.1 Host: test.remote.example.com.287:46853 Proxy-Connection: Keep-Alive User-Agent: looser/2007 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 405 Method Not Allowed swsclose And you should ignore this data. === End of file server.response === Start of file stderr287 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (56) CONNECT tunnel failed, response 405 === End of file stderr287 === Start of file stdout287 HTTP/1.1 405 Method Not Allowed swsclose === End of file stdout287 === Start of file trace287 01:06:52.449097 * Trying 127.0.0.1:46853... 01:06:53.289649 * CONNECT: no ALPN negotiated 01:06:53.343714 * allocate connect buffer 01:06:53.550072 * Establish HTTP proxy tunnel to test.remote.example.com.287:46853 01:06:53.704517 => Send header, 150 bytes (0x96) 0000: CONNECT test.remote.example.com.287:46853 HTTP/1.1 0034: Host: test.remote.example.com.287:46853 005d: Proxy-Connection: Keep-Alive 007b: User-Agent: looser/2007 0094: 01:06:53.926186 <= Recv header, 42 bytes (0x2a) 0000: HTTP/1.1 405 Method Not Allowed swsclose 01:06:54.216700 <= Recv header, 2 bytes (0x2) 0000: 01:06:54.357743 * CONNECT tunnel failed, response 405 01:06:54.729886 * closing connection #0 === End of file trace287 === Start of file valgrind287 ==232241== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind287 setenv all_proxy = http://fake:user@127.0.0.1:47/ test 0288...[file:// with (unsupported) proxy, authentication and range] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind288 ../src/curl -q --output log/5/curl288.out --trace-ascii log/5/trace288 --trace-time file://localhost/build/curl/src/build-curl/tests/log/5/test288.txt > log/5/stdout288 2> log/5/stderr288 valgrind ERROR ==232366== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 288 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind288 ../src/curl -q --output log/5/curl288.out --trace-ascii log/5/trace288 --trace-time file://localhost/build/curl/src/build-curl/tests/log/5/test288.txt > log/5/stdout288 2> log/5/stderr288 === End of file commands.log === Start of file curl288.out foo bar bar foo moo === End of file curl288.out === Start of file server.cmd Testnum 288 === End of file server.cmd === Start of file stderr288 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 100 26 100 26 0 0 11 0 0:00:02 0:00:02 --:--:-- 25 === End of file stderr288 === Start of file test288.txt foo bar bar foo moo === End of file test288.txt === Start of file trace288 01:06:53.470632 * Uses proxy env variable all_proxy == 'http://fake:user@127.0.0.1:47/' 01:06:54.813764 <= Recv data, 26 bytes (0x1a) 0000: foo. bar.bar. foo.moo. 01:06:55.442705 * shutting down connection #0 === End of file trace288 === Start of file valgrind288 ==232366== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind288 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 294 in state 4 Runner 2 (id 185908) running test 290 in state 4 Runner 3 (id 185910) running test 295 in state 4 Runner 4 (id 185912) running test 293 in state 4 Runner 5 (id 185914) running test 296 in state 4 Runner 6 (id 185916) running test 291 in state 4 Runner 7 (id 185918) running test 292 in state 4 Runner 8 (id 185920) running test 289 in state 4 test 0289...[FTP resume upload but denied access to local file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind289 ../src/curl -q --output log/8/curl289.out --include --trace-ascii log/8/trace289 --trace-time ftp://127.0.0.1:33545/289 -T log/8/illegal-nonexistent-file -C - > log/8/stdout289 2> log/8/stderr289 valgrind ERROCMD (16128): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind290 ../src/curl -q --output log/2/curl290.out --include --trace-ascii log/2/trace290 --trace-time ftp://127.0.0.1:39881/290 --max-filesize 30 > log/2/stdout290 2> log/2/stderr290 R ==232540== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 289 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind289 ../src/curl -q --output log/8/curl289.out --include --trace-ascii log/8/trace289 --trace-time ftp://127.0.0.1:33545/289 -T log/8/illegal-nonexistent-file -C - > log/8/stdout289 2> log/8/stderr289 === End of file commands.log === Start of file ftp_server.log 01:06:22.325292 ====> Client connect 01:06:22.331033 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:06:22.335621 < "USER anonymous" 01:06:22.335898 > "331 We are happy you popped in![CR][LF]" 01:06:22.336920 < "PASS ftp@example.com" 01:06:22.337158 > "230 Welcome you silly person[CR][LF]" 01:06:22.338142 < "PWD" 01:06:22.338398 > "257 "/" is current directory[CR][LF]" 01:06:22.340402 < "EPSV" 01:06:22.340593 ====> Passive DATA channel requested by client 01:06:22.340731 DATA sockfilt for passive data channel starting... 01:06:22.378073 DATA sockfilt for passive data channel started (pid 232531) 01:06:22.379269 DATA sockfilt for passive data channel listens on port 32899 01:06:22.379584 > "229 Entering Passive Mode (|||32899|)[CR][LF]" 01:06:22.379742 Client has been notified that DATA conn will be accepted on port 32899 01:06:22.382344 Client connects to port 32899 01:06:22.382547 ====> Client established passive DATA connection on port 32899 01:06:22.383192 < "TYPE I" 01:06:22.383447 > "200 I modify TYPE as you wanted[CR][LF]" 01:06:22.384808 < "SIZE verifiedserver" 01:06:22.385244 > "213 18[CR][LF]" 01:06:22.386436 < "RETR verifiedserver" 01:06:22.386721 > "150 Binary junk (18 bytes).[CR][LF]" 01:06:22.387234 =====> Closing passive DATA connection... 01:06:22.387384 Server disconnects passive DATA connection 01:06:22.394240 Server disconnected passive DATA connection 01:06:22.394468 DATA sockfilt for passive data channel quits (pid 232531) 01:06:22.397525 DATA sockfilt for passive data channel quit (pid 232531) 01:06:22.397691 =====> Closed passive DATA connection 01:06:22.397963 > "226 File transfer complete[CR][LF]" 01:06:22.445315 < "QUIT" 01:06:22.445728 > "221 bye bye baby[CR][LF]" 01:06:22.446848 MAIN sockfilt said DISC 01:06:22.447029 ====> Client disconnected 01:06:22.447294 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:06:22.940190 ====> Client connect 01:06:22.941646 Received DATA (on stdin) 01:06:22.941717 > 160 bytes data, server => client 01:06:22.946558 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:06:22.946664 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:06:22.946749 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:06:22.950127 < 16 bytes data, client => server 01:06:22.950208 'USER anonymous\r\n' 01:06:22.951348 Received DATA (on stdin) 01:06:22.951413 > 33 bytes data, server => client 01:06:22.951493 '331 We are happy you popped in!\r\n' 01:06:22.951717 < 22 bytes data, client => server 01:06:22.951791 'PASS ftp@example.com\r\n' 01:06:22.952595 Received DATA (on stdin) 01:06:22.952658 > 30 bytes data, server => client 01:06:22.952735 '230 Welcome you silly person\r\n' 01:06:22.952951 < 5 bytes data, client => server 01:06:22.953016 'PWD\r\n' 01:06:22.953830 Received DATA (on stdin) 01:06:22.953893 > 30 bytes data, server => client 01:06:22.953970 '257 "/" is current directory\r\n' 01:06:22.955215 < 6 bytes data, client => server 01:06:22.955280 'EPSV\r\n' 01:06:22.994784 Received DATA (on stdin) 01:06:22.994931 > 39 bytes data, server => client 01:06:22.995017 '229 Entering Passive Mode (|||32899|)\r\n' 01:06:22.998887 < 8 bytes data, client => server 01:06:22.998963 'TYPE I\r\n' 01:06:22.999029 Received DATA (on stdin) 01:06:22.999088 > 33 bytes data, server => client 01:06:22.999166 '200 I modify TYPE as you wanted\r\n' 01:06:22.999598 < 21 bytes data, client => server 01:06:22.999677 'SIZE verifiedserver\r\n' 01:06:23.000718 Received DATA (on stdin) 01:06:23.000782 > 8 bytes data, server => client 01:06:23.000844 '213 18\r\n' 01:06:23.001245 < 21 bytes data, client => server 01:06:23.001317 'RETR verifiedserver\r\n' 01:06:23.004037 Received DATA (on stdin) 01:06:23.004105 > 29 bytes data, server => client 01:06:23.004182 '150 Binary junk (18 bytes).\r\n' 01:06:23.013425 Received DATA (on stdin) 01:06:23.013516 > 28 bytes data, server => client 01:06:23.013595 '226 File transfer complete\r\n' 01:06:23.059473 < 6 bytes data, client => server 01:06:23.059628 'QUIT\r\n' 01:06:23.061181 Received DATA (on stdin) 01:06:23.061248 > 18 bytes data, server => client 01:06:23.061318 '221 bye bye baby\r\n' 01:06:23.062008 ====> Client disconnect 01:06:23.066115 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:06:22.984997 Running IPv4 version 01:06:22.991929 Listening on port 32899 01:06:22.992344 Wrote pid 232531 to log/8/server/ftp_sockdata.pid 01:06:22.993037 Received PING (on stdin) 01:06:22.993917 Received PORT (on stdin) 01:06:22.997453 ====> Client connect 01:06:23.002963 Received DATA (on stdin) 01:06:23.003233 > 18 bytes data, server => client 01:06:23.003561 'WE ROOLZ: 220580\r\n' 01:06:23.003778 Received DISC (on stdin) 01:06:23.003884 ====> Client forcibly disconnected 01:06:23.009940 Received QUIT (on stdin) 01:06:23.010029 quits 01:06:23.010497 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 289 === End of file server.cmd === Start of file stderr289 curl: cannot open 'log/8/illegal-nonexistent-file' curl: try 'curl --help' for more information curl: (26) Failed to open/read local data from file/application === End of file stderr289 === Start of file valgrind289 ==232540== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind289 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 294 in state 4 Runner 2 (id 185908) running test 290 in state 4 Runner 3 (id 185910) running test 295 in state 4 Runner 4 (id 185912) running test 293 in state 4 Runner 5 (id 185914) running test 296 in state 4 Runner 6 (id 185916) running test 291 in state 4 Runner 7 (id 185918) running test 292 in state 4 Runner 8 (id 185920) running test 297 in state 4 test 0290...[FTP download maximum filesize exceeded] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind290 ../src/curl -q --output log/2/curl290.out --include --trace-ascii log/2/trace290 --trace-time ftp://127.0.0.1:39881/290 --max-filesize 30 > log/2/stdout290 2> log/2/stderr290 valgrind ERROR ==232708== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 290 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind290 ../src/curl -q --output log/2/curl290.out --include --trace-ascii log/2/trace290 --trace-time ftp://127.0.0.1:39881/290 --max-filesize 30 > log/2/stdout290 2> log/2/stderr290 === End of file commands.log === Start of file ftp_server.log 01:06:27.047716 ====> Client connect 01:06:27.049302 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:06:27.056783 < "USER anonymous" 01:06:27.057382 > "331 We are happy you popped in![CR][LF]" 01:06:27.058322 < "PASS ftp@example.com" 01:06:27.058595 > "230 Welcome you silly person[CR][LF]" 01:06:27.059796 < "PWD" 01:06:27.060330 > "257 "/" is current directory[CR][LF]" 01:06:27.062882 < "EPSV" 01:06:27.063093 ====> Passive DATA channel requested by client 01:06:27.063237 DATA sockfilt for passive data channel starting... 01:06:27.108619 DATA sockfilt for passive data channel started (pid 232702) 01:06:27.109992 DATA sockfilt for passive data channel listens on port 46039 01:06:27.110336 > "229 Entering Passive Mode (|||46039|)[CR][LF]" 01:06:27.110500 Client has been notified that DATA conn will be accepted on port 46039 01:06:27.113798 Client connects to port 46039 01:06:27.114020 ====> Client established passive DATA connection on port 46039 01:06:27.114640 < "TYPE I" 01:06:27.115735 > "200 I modify TYPE as you wanted[CR][LF]" 01:06:27.116244 < "SIZE verifiedserver" 01:06:27.117274 > "213 18[CR][LF]" 01:06:27.117805 < "RETR verifiedserver" 01:06:27.118107 > "150 Binary junk (18 bytes).[CR][LF]" 01:06:27.121142 =====> Closing passive DATA connection... 01:06:27.121308 Server disconnects passive DATA connection 01:06:27.122251 Server disconnected passive DATA connection 01:06:27.122411 DATA sockfilt for passive data channel quits (pid 232702) 01:06:27.130015 DATA sockfilt for passive data channel quit (pid 232702) 01:06:27.130214 =====> Closed passive DATA connection 01:06:27.130477 > "226 File transfer complete[CR][LF]" 01:06:27.169086 < "QUIT" 01:06:27.169456 > "221 bye bye baby[CR][LF]" 01:06:27.170651 MAIN sockfilt said DISC 01:06:27.170849 ====> Client disconnected 01:06:27.171128 Awaiting input 01:07:14.654800 ====> Client connect 01:07:14.655529 FTPD: Getting commands from log/2/server.cmd 01:07:14.655853 FTPD: run test case number: 290 01:07:14.656754 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:07:15.914584 < "USER anonymous" 01:07:15.915274 > "331 We are happy you popped in![CR][LF]" 01:07:16.028429 < "PASS ftp@example.com" 01:07:16.034283 > "230 Welcome you silly person[CR][LF]" 01:07:16.113622 < "PWD" 01:07:16.114013 > "257 "/" is current directory[CR][LF]" 01:07:16.306351 < "EPSV" 01:07:16.306683 ====> Passive DATA channel requested by client 01:07:16.306836 DATA sockfilt for passive data channel starting... 01:07:16.384538 DATA sockfilt for passive data channel started (pid 233985) 01:07:16.385575 DATA sockfilt for passive data channel listens on port 38553 01:07:16.385919 > "229 Entering Passive Mode (|||38553|)[CR][LF]" 01:07:16.386085 Client has been notified that DATA conn will be accepted on port 38553 01:07:16.610948 Client connects to port 38553 01:07:16.611518 ====> Client established passive DATA connection on port 38553 01:07:16.711468 < "TYPE I" 01:07:16.711892 > "200 I modify TYPE as you wanted[CR][LF]" 01:07:16.761732 < "SIZE 290" 01:07:16.763383 > "213 85[CR][LF]" 01:07:18.066797 < "QUIT" 01:07:18.067465 > "221 bye bye baby[CR][LF]" 01:07:18.250848 MAIN sockfilt said DISC 01:07:18.251480 ====> Client disconnected 01:07:18.257652 DATA sockfilt for passive data channel killed now 01:07:18.257857 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:06:27.662561 ====> Client connect 01:06:27.663848 Received DATA (on stdin) 01:06:27.663935 > 160 bytes data, server => client 01:06:27.664080 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:06:27.664191 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:06:27.664291 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:06:27.671135 < 16 bytes data, client => server 01:06:27.671239 'USER anonymous\r\n' 01:06:27.672306 Received DATA (on stdin) 01:06:27.672376 > 33 bytes data, server => client 01:06:27.672481 '331 We are happy you popped in!\r\n' 01:06:27.673057 < 22 bytes data, client => server 01:06:27.673139 'PASS ftp@example.com\r\n' 01:06:27.674116 Received DATA (on stdin) 01:06:27.674185 > 30 bytes data, server => client 01:06:27.674267 '230 Welcome you silly person\r\n' 01:06:27.674574 < 5 bytes data, client => server 01:06:27.674639 'PWD\r\n' 01:06:27.675280 Received DATA (on stdin) 01:06:27.675345 > 30 bytes data, server => client 01:06:27.675444 '257 "/" is current directory\r\n' 01:06:27.677636 < 6 bytes data, client => server 01:06:27.677713 'EPSV\r\n' 01:06:27.725996 Received DATA (on stdin) 01:06:27.726158 > 39 bytes data, server => client 01:06:27.726252 '229 Entering Passive Mode (|||46039|)\r\n' 01:06:27.728880 < 8 bytes data, client => server 01:06:27.728950 'TYPE I\r\n' 01:06:27.730118 Received DATA (on stdin) 01:06:27.730200 > 33 bytes data, server => client 01:06:27.730316 '200 I modify TYPE as you wanted\r\n' 01:06:27.730685 < 21 bytes data, client => server 01:06:27.730759 'SIZE verifiedserver\r\n' 01:06:27.731756 Received DATA (on stdin) 01:06:27.731823 > 8 bytes data, server => client 01:06:27.731907 '213 18\r\n' 01:06:27.732330 < 21 bytes data, client => server 01:06:27.732406 'RETR verifiedserver\r\n' 01:06:27.734043 Received DATA (on stdin) 01:06:27.734113 > 29 bytes data, server => client 01:06:27.734192 '150 Binary junk (18 bytes).\r\n' 01:06:27.745930 Received DATA (on stdin) 01:06:27.746018 > 28 bytes data, server => client 01:06:27.746103 '226 File transfer complete\r\n' 01:06:27.783761 < 6 bytes data, client => server 01:06:27.783892 'QUIT\r\n' 01:06:27.784912 Received DATA (on stdin) 01:06:27.784984 > 18 bytes data, server => client 01:06:27.785059 '221 bye bye baby\r\n' 01:06:27.785798 ====> Client disconnect 01:06:27.786543 Received ACKD (on stdin) 01:07:15.269663 ====> Client connect 01:07:15.276017 Received DATA (on stdin) 01:07:15.276115 > 160 bytes data, server => client 01:07:15.276223 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:07:15.276323 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:07:15.276407 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:07:16.528580 < 16 bytes data, client => server 01:07:16.528740 'USER anonymous\r\n' 01:07:16.530085 Received DATA (on stdin) 01:07:16.530158 > 33 bytes data, server => client 01:07:16.530258 '331 We are happy you popped in!\r\n' 01:07:16.642458 < 22 bytes data, client => server 01:07:16.642614 'PASS ftp@example.com\r\n' 01:07:16.643944 Received DATA (on stdin) 01:07:16.644023 > 30 bytes data, server => client 01:07:16.649716 '230 Welcome you silly person\r\n' 01:07:16.727883 < 5 bytes data, client => server 01:07:16.728000 'PWD\r\n' 01:07:16.729360 Received DATA (on stdin) 01:07:16.729432 > 30 bytes data, server => client 01:07:16.729513 '257 "/" is current directory\r\n' 01:07:16.920370 < 6 bytes data, client => server 01:07:16.920539 'EPSV\r\n' 01:07:17.001475 Received DATA (on stdin) 01:07:17.001611 > 39 bytes data, server => client 01:07:17.001703 '229 Entering Passive Mode (|||38553|)\r\n' 01:07:17.327252 < 8 bytes data, client => server 01:07:17.327391 'TYPE I\r\n' 01:07:17.327470 Received DATA (on stdin) 01:07:17.327535 > 33 bytes data, server => client 01:07:17.327620 '200 I modify TYPE as you wanted\r\n' 01:07:17.374314 < 10 bytes data, client => server 01:07:17.374491 'SIZE 290\r\n' 01:07:17.382686 Received DATA (on stdin) 01:07:17.382784 > 8 bytes data, server => client 01:07:17.382856 '213 85\r\n' 01:07:18.680813 < 6 bytes data, client => server 01:07:18.681001 'QUIT\r\n' 01:07:18.682289 Received DATA (on stdin) 01:07:18.682358 > 18 bytes data, server => client 01:07:18.682446 '221 bye bye baby\r\n' 01:07:18.865700 ====> Client disconnect 01:07:18.866471 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:06:27.714539 Running IPv4 version 01:06:27.722290 Listening on port 46039 01:06:27.722746 Wrote pid 232702 to log/2/server/ftp_sockdata.pid 01:06:27.723519 Received PING (on stdin) 01:06:27.724562 Received PORT (on stdin) 01:06:27.728712 ====> Client connect 01:06:27.733568 Received DATA (on stdin) 01:06:27.733843 > 18 bytes data, server => client 01:06:27.736959 'WE ROOLZ: 202189\r\n' 01:06:27.737195 Received DISC (oCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind291 ../src/curl -q --output log/6/curl291.out --include --trace-ascii log/6/trace291 --trace-time ftp://127.0.0.1:39413/291 --max-filesize 100 > log/6/stdout291 2> log/6/stderr291 n stdin) 01:06:27.737308 ====> Client forcibly disconnected 01:06:27.739442 Received QUIT (on stdin) 01:06:27.739524 quits 01:06:27.740038 ============> sockfilt quits 01:07:16.977498 Running IPv4 version 01:07:16.994806 Listening on port 38553 01:07:16.995289 Wrote pid 233985 to log/2/server/ftp_sockdata.pid 01:07:16.999364 Received PING (on stdin) 01:07:17.000143 Received PORT (on stdin) 01:07:17.223397 ====> Client connect 01:07:17.619233 ====> Client disconnect === End of file ftp_sockdata.log === Start of file server.cmd Testnum 290 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE 290 QUIT === End of file server.input === Start of file stderr290 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 85 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (63) Maximum file size exceeded === End of file stderr290 === Start of file trace290 01:07:14.321239 * Trying 127.0.0.1:39881... 01:07:15.207660 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 49974 01:07:15.462534 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:07:15.796553 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:07:15.822535 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:07:15.830048 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:07:15.834824 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:07:15.932384 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:07:16.002191 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:07:16.028579 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:07:16.095387 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:07:16.112790 => Send header, 5 bytes (0x5) 0000: PWD 01:07:16.127313 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:07:16.160738 * Entry path is '/' 01:07:16.256921 * Request has same path as previous transfer 01:07:16.305280 => Send header, 6 bytes (0x6) 0000: EPSV 01:07:16.318783 * Connect data stream passively 01:07:16.389371 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||38553|) 01:07:16.534591 * Connecting to 127.0.0.1 (127.0.0.1) port 38553 01:07:16.603126 * Trying 127.0.0.1:38553... 01:07:16.682377 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 38553) from 127.0.0.1 port 40312 01:07:16.710588 => Send header, 8 bytes (0x8) 0000: TYPE I 01:07:16.727844 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:07:16.759239 => Send header, 10 bytes (0xa) 0000: SIZE 290 01:07:16.785282 <= Recv header, 8 bytes (0x8) 0000: 213 85 01:07:16.851861 * Maximum file size exceeded 01:07:16.930564 * Remembering we are in dir "" 01:07:17.350833 * Connection #0 to host 127.0.0.1:39881 left intact === End of file trace290 === Start of file valgrind290 ==232708== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind290 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 294 in state 4 Runner 2 (id 185908) running test 298 in state 4 Runner 3 (id 185910) running test 295 in state 4 Runner 4 (id 185912) running test 293 in state 4 Runner 5 (id 185914) running test 296 in state 4 Runner 6 (id 185916) running test 291 in state 4 Runner 7 (id 185918) running test 292 in state 4 Runner 8 (id 185920) running test 297 in state 4 test 0291...[FTP download maximum filesize not exceeded] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind291 ../src/curl -q --output log/6/curl291.out --include --trace-ascii log/6/trace291 --trace-time ftp://127.0.0.1:39413/291 --max-filesize 100 > log/6/stdout291 2> log/6/stderr291 valgrind ERROR ==232897== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 291 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind291 ../src/curl -q --output log/6/curl291.out --include --trace-ascii log/6/trace291 --trace-time ftp://127.0.0.1:39413/291 --max-filesize 100 > log/6/stdout291 2> log/6/stderr291 === End of file commands.log === Start of file curl291.out data to see that FTP works so does it? === End of file curl291.out === Start of file ftp_server.log 01:06:43.822485 ====> Client connect 01:06:43.823469 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:06:43.833767 < "USER anonymous" 01:06:43.835318 > "331 We are happy you popped in![CR][LF]" 01:06:43.836314 < "PASS ftp@example.com" 01:06:43.836842 > "230 Welcome you silly person[CR][LF]" 01:06:43.837738 < "PWD" 01:06:43.838027 > "257 "/" is current directory[CR][LF]" 01:06:43.840901 < "EPSV" 01:06:43.841113 ====> Passive DATA channel requested by client 01:06:43.841264 DATA sockfilt for passive data channel starting... 01:06:43.885037 DATA sockfilt for passive data channel started (pid 232891) 01:06:43.886570 DATA sockfilt for passive data channel listens on port 42831 01:06:43.887053 > "229 Entering Passive Mode (|||42831|)[CR][LF]" 01:06:43.887233 Client has been notified that DATA conn will be accepted on port 42831 01:06:43.890555 Client connects to port 42831 01:06:43.890772 ====> Client established passive DATA connection on port 42831 01:06:43.891511 < "TYPE I" 01:06:43.892060 > "200 I modify TYPE as you wanted[CR][LF]" 01:06:43.893116 < "SIZE verifiedserver" 01:06:43.894345 > "213 18[CR][LF]" 01:06:43.894871 < "RETR verifiedserver" 01:06:43.895166 > "150 Binary junk (18 bytes).[CR][LF]" 01:06:43.895746 =====> Closing passive DATA connection... 01:06:43.895902 Server disconnects passive DATA connection 01:06:43.900899 Server disconnected passive DATA connection 01:06:43.901085 DATA sockfilt for passive data channel quits (pid 232891) 01:06:43.904433 DATA sockfilt for passive data channel quit (pid 232891) 01:06:43.904619 =====> Closed passive DATA connection 01:06:43.904886 > "226 File transfer complete[CR][LF]" 01:06:43.952833 < "QUIT" 01:06:43.953251 > "221 bye bye baby[CR][LF]" 01:06:43.954454 MAIN sockfilt said DISC 01:06:43.957534 ====> Client disconnected 01:06:43.957848 Awaiting input 01:07:31.234827 ====> Client connect 01:07:31.235544 FTPD: Getting commands from log/6/server.cmd 01:07:31.235872 FTPD: run test case number: 291 01:07:31.236804 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:07:32.568806 < "USER anonymous" 01:07:32.574287 > "331 We are happy you popped in![CR][LF]" 01:07:32.680372 < "PASS ftp@example.com" 01:07:32.680789 > "230 Welcome you silly person[CR][LF]" 01:07:32.773438 < "PWD" 01:07:32.773872 > "257 "/" is current directory[CR][LF]" 01:07:32.978461 < "EPSV" 01:07:32.978791 ====> Passive DATA channel requested by client 01:07:32.978945 DATA sockfilt for passive data channel starting... 01:07:33.038616 DATA sockfilt for passive data channel started (pid 234189) 01:07:33.039850 DATA sockfilt for passive data channel listens on port 39965 01:07:33.040272 > "229 Entering Passive Mode (|||39965|)[CR][LF]" 01:07:33.040443 Client has been notified that DATA conn will be accepted on port 39965 01:07:33.254292 Client connects to port 39965 01:07:33.254850 ====> Client established passive DATA connection on port 39965 01:07:33.375541 < "TYPE I" 01:07:33.375985 > "200 I modify TYPE as you wanted[CR][LF]" 01:07:33.451807 < "SIZE 291" 01:07:33.457635 > "213 51[CR][LF]" 01:07:33.538139 < "RETR 291" 01:07:33.539278 > "150 Binary data connection for 291 () (51 bytes).[CR][LF]" 01:07:33.539980 =====> Closing passive DATA connection... 01:07:33.540159 Server disconnects passive DATA connection 01:07:33.546781 Server disconnected passive DATA connection 01:07:33.547084 DATA sockfilt for passive data channel quits (pid 234189) 01:07:33.550541 DATA sockfilt for passive data channel quit (pid 234189) 01:07:33.550759 =====> Closed passive DATA connection 01:07:33.551098 > "226 File transfer complete[CR][LF]" 01:07:35.587373 < "QUIT" 01:07:35.591218 > "221 bye bye baby[CR][LF]" 01:07:35.717868 MAIN sockfilt said DISC 01:07:35.718365 ====> Client disconnected 01:07:35.718668 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:06:43.437308 ====> Client connect 01:06:43.438919 Received DATA (on stdin) 01:06:43.439011 > 160 bytes data, server => client 01:06:43.439113 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:06:43.439211 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:06:43.439297 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:06:43.447927 < 16 bytes data, client => server 01:06:43.448063 'USER anonymous\r\n' 01:06:43.449308 Received DATA (on stdin) 01:06:43.449379 > 33 bytes data, server => client 01:06:43.450354 '331 We are happy you popped in!\r\n' 01:06:43.450969 < 22 bytes data, client => server 01:06:43.451043 'PASS ftp@example.com\r\n' 01:06:43.451760 Received DATA (on stdin) 01:06:43.451827 > 30 bytes data, server => client 01:06:43.451923 '230 Welcome you silly person\r\n' 01:06:43.452449 < 5 bytes data, client => server 01:06:43.452514 'PWD\r\n' 01:06:43.453529 Received DATA (on stdin) 01:06:43.453601 > 30 bytes data, server => client 01:06:43.453682 '257 "/" is current directory\r\n' 01:06:43.455599 < 6 bytes data, client => server 01:06:43.455675 'EPSV\r\n' 01:06:43.502680 Received DATA (on stdin) 01:06:43.502850 > 39 bytes data, server => client 01:06:43.502943 '229 Entering Passive Mode (|||42831|)\r\n' 01:06:43.505606 < 8 bytes data, client => server 01:06:43.505682 'TYPE I\r\n' 01:06:43.506957 Received DATA (on stdin) 01:06:43.507030 > 33 bytes data, server => client 01:06:43.507130 '200 I modify TYPE as you wanted\r\n' 01:06:43.507790 < 21 bytes data, client => server 01:06:43.507877 'SIZE verifiedserver\r\n' 01:06:43.508639 Received DATA (on stdin) 01:06:43.508706 > 8 bytes data, server => client 01:06:43.508901 '213 18\r\n' 01:06:43.509351 < 21 bytes data, client => server 01:06:43.509443 'RETR verifiedserver\r\n' 01:06:43.512610 Received DATA (on stdin) 01:06:43.512681 > 29 bytes data, server => client 01:06:43.512773 '150 Binary junk (18 bytes).\r\n' 01:06:43.520323 Received DATA (on stdin) 01:06:43.520421 > 28 bytes data, server => client 01:06:43.520506 '226 File transfer complete\r\n' 01:06:43.566978 < 6 bytes data, client => server 01:06:43.567151 'QUIT\r\n' 01:06:43.568859 Received DATA (on stdin) 01:06:43.568931 > 18 bytes data, server => client 01:06:43.569003 '221 bye bye baby\r\n' 01:06:43.569563 ====> Client disconnect 01:06:43.569865 Received ACKD (on stdin) 01:07:30.849664 ====> Client connect 01:07:30.852148 Received DATA (on stdin) 01:07:30.852249 > 160 bytes data, server => client 01:07:30.852353 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:07:30.852449 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:07:30.852533 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:07:32.182694 < 16 bytes data, client => server 01:07:32.182887 'USER anonymous\r\n' 01:07:32.184284 Received DATA (on stdin) 01:07:32.184362 > 33 bytes data, server => client 01:07:32.189709 '331 We are happy you popped in!\r\n' 01:07:32.294386 < 22 bytes data, client => server 01:07:32.294563 'PASS ftp@example.com\r\n' 01:07:32.296140 Received DATA (on stdin) 01:07:32.296223 > 30 bytes data, server => client 01:07:32.296309 '230 Welcome you silly person\r\n' 01:07:32.387500 < 5 bytes data, client => server 01:07:32.387671 'PWD\r\n' 01:07:32.389186 Received DATA (on stdin) 01:07:32.389268 > 30 bytes data, server => client 01:07:32.389362 '257 "/" is current directory\r\n' 01:07:32.592426 < 6 bytes data, client => server 01:07:32.592616 'EPSV\r\n' 01:07:32.656003 Received DATA (on stdin) 01:07:32.656173 > 39 bytes data, server => client 01:07:32.656274 '229 Entering Passive Mode (|||39965|)\r\n' 01:07:32.989693 < 8 bytes data, client => server 01:07:32.989891 'TYPE I\r\n' 01:07:32.991040 Received DATA (on stdin) 01:07:32.991127 > 33 bytes data, server => client 01:07:32.991223 '200 I modify TYPE as you wanted\r\n' 01:07:33.063239 < 10 bytes data, client => server 01:07:33.063419 'SIZE 291\r\n' 01:07:33.072691 Received DATA (on stdin) 01:07:33.072849 > 8 bytes data, server => client 01:07:33.072932 '213 51\r\n' 01:07:33.152309 < 10 bytes data, client => server 01:07:33.152544 'RETR 291\r\n' 01:07:33.154343 Received DATA (on stdin) 01:07:33.154432 > 51 bytes data, server => client 01:07:33.154531 '150 Binary data connection for 291 () (51 bytes).\r\n' 01:07:33.166146 Received DATA (on stdin) 01:07:33.166302 > 28 bytes data, server => client 01:07:33.166398 '226 File transfer complete\r\n' 01:07:35.201566 < 6 bytes data, client => server 01:07:35.201777 'QUIT\r\n' 01:07:35.206268 Received DATA (on stdin) 01:07:35.206368 > 18 bytes data, server => client 01:07:35.206450 '221 bye bye baby\r\n' 01:07:35.332660 ====> Client disconnect 01:07:35.333473 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:06:43.490756 Running IPv4 version 01:06:43.498496 Listening on port 42831 01:06:43.499005 Wrote pid 232891 to log/6/server/ftp_sockdata.pid 01:06:43.499831 Received PING (on stdin) 01:06:43.501009 Received PORT (on stdin) 01:06:43.505436 ====> Client connect 01:06:43.511368 Received DATA (on stdin) 01:06:43.511692 > 18 bytes data, server => client 01:06:43.512069 'WE ROOLZ: 201819\r\n' 01:06:43.512317 Received DISC (on stdin) 01:06:43.512433 ====> Client forcibly disconnected 01:06:43.516517 Received QUIT (on stdin) 01:06:43.516601 quits 01:06:43.517128 ============> sockfilt quits 01:07:33.644375 Running IPv4 version 01:07:33.651911 Listening on port 39965 01:07:33.652479 Wrote pid 234189 to log/6/server/ftp_sockdata.pid 01:07:33.653206 Received PING (on stdin) 01:07:33.654265 Received PORT (on stdin) 01:07:33.867474 ====> Client connect 01:07:34.159328 Received DATA (on stdin) 01:07:34.159710 > 5 bytes data, server => client 01:07:34.160064 'data\n' 01:07:34.160388 Received DATA (on stdin) 01:07:34.160459 > 7 bytes data, server => client 01:07:34.160528 ' to\n' 01:07:34.160631 Received DATA (on stdin) 01:07:34.160699 > 10 bytes data, server => client 01:07:34.160769 ' see\n' 01:07:34.160864 Received DATA (on stdin) 01:07:34.160930 > 9 bytes data, server => client 01:07:34.161003 'that FTP\n' 01:07:34.161091 Received DATA (on stdin) 01:07:34.161159 > 6 bytes data, server => client 01:07:34.161232 'works\n' 01:07:34.161317 Received DATA (on stdin) 01:07:34.161381 > 14 bytes data, server => client 01:07:34.161456 ' so does it?\n' 01:07:34.161538 Received DISC (on stdin) 01:07:34.161658 ====> Client forcibly disconnected 01:07:34.162443 Received QUIT (on stdin) 01:07:34.162531 quits 01:07:34.163081 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 291 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE 291 RETR 291 QUIT === End of file server.input === Start of file stderr291 % Total % ReCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind292 ../src/curl -q --output log/7/curl292.out --include --trace-ascii log/7/trace292 --trace-time http://127.0.0.1:34897/292 --max-filesize 1000 > log/7/stdout292 2> log/7/stderr292 ceived % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 51 100 51 0 0 9 0 0:00:05 0:00:05 --:--:-- 11 === End of file stderr291 === Start of file trace291 01:07:30.916533 * Trying 127.0.0.1:39413... 01:07:31.829868 * Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 46586 01:07:32.080684 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:07:32.443607 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:07:32.471717 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:07:32.479553 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:07:32.484782 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:07:32.587288 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:07:32.659318 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:07:32.680486 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:07:32.752896 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:07:32.772443 => Send header, 5 bytes (0x5) 0000: PWD 01:07:32.790422 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:07:32.826728 * Entry path is '/' 01:07:32.927111 * Request has same path as previous transfer 01:07:32.977379 => Send header, 6 bytes (0x6) 0000: EPSV 01:07:32.992674 * Connect data stream passively 01:07:33.050636 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||39965|) 01:07:33.174956 * Connecting to 127.0.0.1 (127.0.0.1) port 39965 01:07:33.246351 * Trying 127.0.0.1:39965... 01:07:33.341683 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 39965) from 127.0.0.1 port 45904 01:07:33.374691 => Send header, 8 bytes (0x8) 0000: TYPE I 01:07:33.394164 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:07:33.448206 => Send header, 10 bytes (0xa) 0000: SIZE 291 01:07:33.488746 <= Recv header, 8 bytes (0x8) 0000: 213 51 01:07:33.537277 => Send header, 10 bytes (0xa) 0000: RETR 291 01:07:33.554004 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 291 () (51 bytes). 01:07:33.597709 * Maxdownload = -1 01:07:33.608261 * Getting file with size: 51 01:07:33.759652 <= Recv data, 51 bytes (0x33) 0000: data. to. see.that FTP.works. so does it?. 01:07:34.090939 * abort upload 01:07:34.118066 <= Recv data, 0 bytes (0x0) 01:07:34.290916 * Remembering we are in dir "" 01:07:34.504765 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:07:34.835098 * Connection #0 to host 127.0.0.1:39413 left intact === End of file trace291 === Start of file valgrind291 ==232897== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind291 test 0292...[HTTP GET with maximum filesize not exceeded] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind292 ../src/curl -q --output log/7/curl292.out --include --trace-ascii log/7/trace292 --trace-time http://127.0.0.1:34897/292 --max-filesize 1000 > log/7/stdout292 2> log/7/stderr292 valgrind ERROR ==233068== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 292 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind292 ../src/curl -q --output log/7/curl292.out --include --trace-ascii log/7/trace292 --trace-time http://127.0.0.1:34897/292 --max-filesize 1000 > log/7/stdout292 2> log/7/stderr292 === End of file commands.log === Start of file curl292.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl292.out === Start of file http_server.log 01:06:51.733459 ====> Client connect 01:06:51.733617 accept_connection 3 returned 4 01:06:51.733688 accept_connection 3 returned 0 01:06:51.740824 Read 93 bytes 01:06:51.740919 Process 93 bytes request 01:06:51.741012 Got request: GET /verifiedserver HTTP/1.1 01:06:51.741077 Are-we-friendly question received 01:06:51.741188 Wrote request (93 bytes) input to log/7/server.input 01:06:51.741275 Identifying ourselves as friends 01:06:51.741427 Response sent (57 bytes) and written to log/7/server.response 01:06:51.741488 special request received, no persistency 01:06:51.741545 ====> Client disconnect 0 01:07:38.623953 ====> Client connect 01:07:38.624099 accept_connection 3 returned 4 01:07:38.624175 accept_connection 3 returned 0 01:07:39.659449 Read 82 bytes 01:07:39.659646 Process 82 bytes request 01:07:39.659751 Got request: GET /292 HTTP/1.1 01:07:39.659827 Serve test number 292 part 0 01:07:39.659997 - request found to be complete (292) 01:07:39.660236 Wrote request (82 bytes) input to log/7/server.input 01:07:39.660360 Send response test292 section 01:07:39.660695 Response sent (256 bytes) and written to log/7/server.response 01:07:39.660763 => persistent connection request ended, awaits new request 01:07:41.639604 Connection closed by client 01:07:41.639794 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 39894 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 292 === End of file server.cmd === Start of file server.input GET /292 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr292 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr292 === Start of file trace292 01:07:38.676461 * Trying 127.0.0.1:34897... 01:07:39.586652 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 47912 01:07:39.723934 * using HTTP/1.x 01:07:40.084600 => Send header, 82 bytes (0x52) 0000: GET /292 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:07:40.430412 <= Recv header, 16 bytes (0CMD (16128): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind293 ../src/curl -q --output log/4/curl293.out --include --trace-ascii log/4/trace293 --trace-time http://127.0.0.1:42621/293 --max-filesize 2 > log/4/stdout293 2> log/4/stderr293 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind294 ../src/curl -q --output log/1/curl294.out --include --trace-ascii log/1/trace294 --trace-time ftp://127.0.0.1:37481/294/ --ftp-account "data for acct" > log/1/stdout294 2> log/1/stderr294 x10) 0000: HTTP/1.1 200 OK. 01:07:40.745107 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:07:40.847402 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:07:40.873685 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:07:40.881875 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:07:40.888834 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:07:40.919422 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:07:40.975966 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:07:41.012367 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:07:41.019365 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:07:41.102329 <= Recv header, 1 bytes (0x1) 0000: . 01:07:41.161462 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:07:41.276868 * we are done reading and this is set to close, stop send 01:07:41.309355 * abort upload 01:07:41.821589 * shutting down connection #0 === End of file trace292 === Start of file valgrind292 ==233068== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind292 test 0300 SKIPPED: no stunnel test 0301 SKIPPED: no stunnel test 0302 SKIPPED: no stunnel test 0293...[HTTP GET with maximum filesize exceeded] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind293 ../src/curl -q --output log/4/curl293.out --include --trace-ascii log/4/trace293 --trace-time http://127.0.0.1:42621/293 --max-filesize 2 > log/4/stdout293 2> log/4/stderr293 valgrind ERROR ==233224== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 293 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind293 ../src/curl -q --output log/4/curl293.out --include --trace-ascii log/4/trace293 --trace-time http://127.0.0.1:42621/293 --max-filesize 2 > log/4/stdout293 2> log/4/stderr293 === End of file commands.log === Start of file curl293.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes === End of file curl293.out === Start of file http_server.log 01:06:55.711737 ====> Client connect 01:06:55.711888 accept_connection 3 returned 4 01:06:55.711962 accept_connection 3 returned 0 01:06:55.719020 Read 93 bytes 01:06:55.719119 Process 93 bytes request 01:06:55.719206 Got request: GET /verifiedserver HTTP/1.1 01:06:55.719269 Are-we-friendly question received 01:06:55.719391 Wrote request (93 bytes) input to log/4/server.input 01:06:55.719486 Identifying ourselves as friends 01:06:55.719640 Response sent (57 bytes) and written to log/4/server.response 01:06:55.719701 special request received, no persistency 01:06:55.719755 ====> Client disconnect 0 01:07:42.915637 ====> Client connect 01:07:42.915786 accept_connection 3 returned 4 01:07:42.915867 accept_connection 3 returned 0 01:07:43.934152 Read 82 bytes 01:07:43.934354 Process 82 bytes request 01:07:43.934452 Got request: GET /293 HTTP/1.1 01:07:43.934524 Serve test number 293 part 0 01:07:43.934704 - request found to be complete (293) 01:07:43.934953 Wrote request (82 bytes) input to log/4/server.input 01:07:43.935075 Send response test293 section 01:07:43.935497 Response sent (256 bytes) and written to log/4/server.response 01:07:43.935569 => persistent connection request ended, awaits new request 01:07:45.512554 Connection closed by client 01:07:45.512759 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 47818 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 293 === End of file server.cmd === Start of file server.input GET /293 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr293 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (63) Maximum file size exceeded === End of file stderr293 === Start of file trace293 01:07:41.970799 * Trying 127.0.0.1:42621... 01:07:42.882057 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 39488 01:07:43.006710 * using HTTP/1.x 01:07:43.358384 => Send header, 82 bytes (0x52) 0000: GET /293 HTTP/1.1 0013: Host: 127.0.0.1:42621 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:07:43.713546 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:07:44.027570 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:07:44.133088 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:07:44.158821 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:07:44.167723 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:07:44.175544 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:07:44.207267 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:07:44.265738 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:07:44.301740 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:07:44.307132 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:07:44.412268 * Maximum file size exceeded 01:07:44.433428 <= Recv header, 1 bytes (0x1) 0000: . 01:07:44.800295 * closing connection #0 === End of file trace293 === Start of file valgrind293 ==233224== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind293 test 0294...[FTP --ftp-account on ACCT request] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind294 ../src/curl -q --output log/1/curl294.out --include --trace-ascii log/1/trace294 --trace-time ftp://127.0.0.1:37481/294/ --ftp-account "data for acct" > log/1/stdout294 2> log/1/stderr294 valgrind ERROR ==233380== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 294 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind294 ../src/curl -q --output log/1/curl294.out --include --trace-ascii log/1/trace294 --trace-time ftp://127.0.0.1:37481/294/ --ftp-account "data for acct" > log/1/stdout294 2> log/1/stderr294 === End of file commands.log === Start of file curl294.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl294.out === Start of file ftp_server.log 01:06:57.142525 ====> Client connect 01:06:57.143869 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:06:57.155048 < "USER anonymous" 01:06:57.156810 > "331 We are happy you popped in![CR][LF]" 01:06:57.157957 < "PASS ftp@example.com" 01:06:57.158622 > "230 Welcome you silly person[CR][LF]" 01:06:57.159556 < "PWD" 01:06:57.159834 > "257 "/" is current directory[CR][LF]" 01:06:57.162696 < "EPSV" 01:06:57.162911 ====> Passive DATA channel requested by client 01:06:57.163055 DATA sockfilt for passive data channel starting... 01:06:57.204361 DATA sockfilt for passive data channel started (pid 233371) 01:06:57.205427 DATA sockfilt for passive data channel listens on port 40927 01:06:57.205755 > "229 Entering Passive Mode (|||40927|)[CR][LF]" 01:06:57.205914 Client has been notified that DATA conn will be accepted on port 40927 01:06:57.207976 Client connects to port 40927 01:06:57.208219 ====> Client established passive DATA connection on port 40927 01:06:57.208947 < "TYPE I" 01:06:57.209468 > "200 I modify TYPE as you wanted[CR][LF]" 01:06:57.215031 < "SIZE verifiedserver" 01:06:57.215557 > "213 18[CR][LF]" 01:06:57.216358 < "RETR verifiedserver" 01:06:57.216879 > "150 Binary junk (18 bytes).[CR][LF]" 01:06:57.217801 =====> Closing passive DATA connection... 01:06:57.217956 Server disconnects passive DATA connection 01:06:57.218677 Server disconnected passive DATA connection 01:06:57.218831 DATA sockfilt for passive data channel quits (pid 233371) 01:06:57.221980 DATA sockfilt for passive data channel quit (pid 233371) 01:06:57.222140 =====> Closed passive DATA connection 01:06:57.222623 > "226 File transfer complete[CR][LF]" 01:06:57.275382 < "QUIT" 01:06:57.276076 > "221 bye bye baby[CR][LF]" 01:06:57.276554 MAIN sockfilt said DISC 01:06:57.276850 ====> Client disconnected 01:06:57.277110 Awaiting input 01:07:44.160965 ====> Client connect 01:07:44.161706 FTPD: Getting commands from log/1/server.cmd 01:07:44.162463 FTPD: set custom reply for PASS command 01:07:44.162903 FTPD: set custom reply for ACCT command 01:07:44.163175 FTPD: run test case number: 294 01:07:44.168280 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:07:45.456663 < "USER anonymous" 01:07:45.457122 > "331 We are happy you popped in![CR][LF]" 01:07:45.570693 < "PASS ftp@example.com" 01:07:45.571561 > "332 Give me an ACCT now[CR][LF]" 01:07:45.656956 < "ACCT data for acct" 01:07:45.657720 > "230 Thank-you for the ACCT[CR][LF]" 01:07:45.694290 < "PWD" 01:07:45.697622 > "257 "/" is current directory[CR][LF]" 01:07:45.881024 < "CWD 294" 01:07:45.881661 > "250 CWD command successful.[CR][LF]" 01:07:45.950309 < "EPSV" 01:07:45.950665 ====> Passive DATA channel requested by client 01:07:45.950833 DATA sockfilt for passive data channel starting... 01:07:46.033909 DATA sockfilt for passive data channel started (pid 234406) 01:07:46.035356 DATA sockfilt for passive data channel listens on port 42257 01:07:46.036035 > "229 Entering Passive Mode (|||42257|)[CR][LF]" 01:07:46.036226 Client has been notified that DATA conn will be accepted on port 42257 01:07:46.220957 Client connects to port 42257 01:07:46.221526 ====> Client established passive DATA connection on port 42257 01:07:46.335008 < "TYPE A" 01:07:46.335491 > "200 I modify TYPE as you wanted[CR][LF]" 01:07:46.385740 < "LIST" 01:07:46.390979 > "150 here comes a directory[CR][LF]" 01:07:46.391290 pass LIST data on data connection 01:07:46.393285 send total 20 as data 01:07:46.393565 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 01:07:46.393795 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 01:07:46.394010 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 01:07:46.394231 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 01:07:46.394469 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 01:07:46.394677 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 01:07:46.394884 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 01:07:46.395091 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 01:07:46.395305 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 01:07:46.395510 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 01:07:46.395998 =====> Closing passive DATA connection... 01:07:46.396156 Server disconnects passive DATA connection 01:07:46.404233 Server disconnected passive DATA connection 01:07:46.404493 DATA sockfilt for passive data channel quits (pid 234406) 01:07:46.407700 DATA sockfilt for passive data channel quit (pid 234406) 01:07:46.407906 =====> Closed passive DATA connection 01:07:46.408207 > "226 ASCII transfer complete[CR][LF]" 01:07:48.622325 < "QUIT" 01:07:48.622779 > "221 bye bye baby[CR][LF]" 01:07:48.777638 MAIN sockfilt said DISC 01:07:48.778185 ====> Client disconnected 01:07:48.778513 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:06:57.757282 ====> Client connect 01:06:57.762745 Received DATA (on stdin) 01:06:57.762906 > 160 bytes data, server => client 01:06:57.763014 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:06:57.763109 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:06:57.763194 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:06:57.768848 < 16 bytes data, client => server 01:06:57.769001 'USER anonymous\r\n' 01:06:57.770642 Received DATA (on stdin) 01:06:57.770724 > 33 bytes data, server => client 01:06:57.771784 '331 We are happy you popped in!\r\n' 01:06:57.772500 < 22 bytes data, client => server 01:06:57.772579 'PASS ftp@example.com\r\n' 01:06:57.773412 Received DATA (on stdin) 01:06:57.773483 > 30 bytes data, server => client 01:06:57.773664 '230 Welcome you silly person\r\n' 01:06:57.774166 < 5 bytes data, client => server 01:06:57.774235 'PWD\r\n' 01:06:57.775210 Received DATA (on stdin) 01:06:57.775277 > 30 bytes data, server => client 01:06:57.775358 '257 "/" is current directory\r\n' 01:06:57.777342 < 6 bytes data, client => server 01:06:57.777419 'EPSV\r\n' 01:06:57.821320 Received DATA (on stdin) 01:06:57.821456 > 39 bytes data, server => client 01:06:57.821543 '229 Entering Passive Mode (|||40927|)\r\n' 01:06:57.823715 < 8 bytes data, client => server 01:06:57.823793 'TYPE I\r\n' 01:06:57.824360 Received DATA (on stdin) 01:06:57.824429 > 33 bytes data, server => client 01:06:57.824525 '200 I modify TYPE as you wanted\r\n' 01:06:57.829738 < 21 bytes data, client => server 01:06:57.829816 'SIZE verifiedserver\r\n' 01:06:57.830484 Received DATA (on stdin) 01:06:57.830547 > 8 bytes data, server => client 01:06:57.830625 '213 18\r\n' 01:06:57.831098 < 21 bytes data, client => server 01:06:57.831170 'RETR verifiedserver\r\n' 01:06:57.831791 Received DATA (on stdin) 01:06:57.831853 > 29 bytes data, server => client 01:06:57.831946 '150 Binary junk (18 bytes).\r\n' 01:06:57.837524 Received DATA (on stdin) 01:06:57.837598 > 28 bytes data, server => client 01:06:57.837693 '226 File transfer complete\r\n' 01:06:57.889435 < 6 bytes data, client => server 01:06:57.889598 'QUIT\r\n' 01:06:57.890935 Received DATA (on stdin) 01:06:57.891007 > 18 bytes data, server => client 01:06:57.891098 '221 bye bye baby\r\n' 01:06:57.891653 ====> Client disconnect 01:06:57.891912 Received ACKD (on stdin) 01:07:44.775178 ====> Client connect 01:07:44.782633 Received DATA (on stdin) 01:07:44.782768 > 160 bytes data, server => client 01:07:44.782925 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:07:44.783026 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:07:44.783116 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:07:46.070406 < 16 bytes data, client => server 01:07:46.070601 'USER anonymous\r\n' 01:07:46.075963 Received DATA (on stdin) 01:07:46.076056 > 33 bytes data, server => client 01:07:46.076147 '331 We are happy you popped in!\r\n' 01:07:46.184496 < 22 bytes data, client => server 01:07:46.184700 'PASS ftp@example.com\r\n' 01:07:46.186239 Received DATA (on stdin) 01:07:46.186325 > 25 bytes data, server => client 01:07:46.186437 '332 Give me an ACCT now\r\n' 01:07:46.270855 < 20 bytes data, client => server 01:07:46.271052 'ACCT data for acct\r\n' 01:07:46.272417 Received DATA (on stdin) 01:07:46.272499 > 28 bytes data, server => client 01:07:46.272621 '230 Thank-you for the ACCT\r\n' 01:07:46.308204 < 5 bytes data, client => server 01:07:46.308378 'PWD\r\n' 01:07:46.309799 Received DATA (on stdin) 01:07:46.309884 > 30 bytes data, server => client 01:07:46.313018 '257 "/" is current directory\r\n' 01:07:46.494878 < 9 bytes data, client => server 01:07:46.495078 'CWD 294\r\n' 01:07:46.496511 Received DATA (on stdin) 01:07:46.496595 > 29 bytes data, server => client 01:07:46.497083 '250 CWD command successful.\r\n' 01:07:46.564192 < 6 bytes data, client => server 01:07:46.564384 'EPSV\r\n' 01:07:46.650779 Received DATA (on stdin) 01:07:46.650920 > 39 bytes data, server => client 01:07:46.651576 '229 Entering Passive Mode (|||42257|)\r\n' 01:07:46.948795 < 8 bytes data, client => server 01:07:46.949032 'TYPE A\r\n' 01:07:46.952624 Received DATA (on stdin) 01:07:46.952723 > 33 bytes data, server => client 01:07:46.952816 '200 I modify TYPE as you wanted\r\n' 01:07:46.999648 < 6 bytes data, client => server 01:07:46.999844 'LIST\r\n' 01:07:47.001230 Received DATA (on stdin) 01:07:47.001312 > 28 bytes data, server => client 01:07:47.007084 '150 here comes a directory\r\n' 01:07:47.025965 Received DATA (on stdin) 01:07:47.026111 > 29 bytes data, server => client 01:07:47.026197 '226 ASCII transfer complete\r\n' 01:07:49.236453 < 6 bytes data, client => server 01:07:49.236642 'QUIT\r\n' 01:07:49.237792 Received DATA (on stdin) 01:07:49.237866 > 18 bytes data, server => client 01:07:49.237942 '221 bye bye baby\r\n' 01:07:49.391207 ====> Client disconnect 01:07:49.393268 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:06:57.808392 Running IPv4 version 01:06:57.815364 Listening on port 40927 01:06:57.815776 Wrote pid 233371 to log/1/server/ftp_sockdata.pid 01:06:57.816489 Received PING (on stdin) 01:06:57.820021 Received PORT (on stdin) 01:06:57.823043 ====> Client connect 01:06:57.832269 Received DATA (on stdin) 01:06:57.832547 > 18 bytes data, server => client 01:06:57.833525 'WE ROOLZ: 202066\r\n' 01:06:57.833750 Received DISC (on stdin) 01:06:57.834223 ====> Client forcibly disconnected 01:06:57.834378 Received QUIT (on stdin) 01:06:57.834445 quits 01:06:57.834904 ============> sockfilt quits 01:07:46.636051 Running IPv4 version 01:07:46.647344 Listening on port 42257 01:07:46.647842 Wrote pid 234406 to log/1/server/ftp_sockdata.pid 01:07:46.648609 Received PING (on stdin) 01:07:46.649759 Received PORT (on stdin) 01:07:46.834796 ====> Client connect 01:07:47.009308 Received DATA (on stdin) 01:07:47.009666 > 10 bytes data, server => client 01:07:47.009998 'total 20\r\n' 01:07:47.010241 Received DATA (on stdin) 01:07:47.010304 > 57 bytes data, server => client 01:07:47.010400 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 01:07:47.010489 Received DATA (on stdin) 01:07:47.010549 > 58 bytes data, server => client 01:07:47.010642 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 01:07:47.010716 Received DATA (on stdin) 01:07:47.010775 > 61 bytes data, server => client 01:07:47.010890 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 01:07:47.010965 '\n' 01:07:47.011048 Received DATA (on stdin) 01:07:47.011109 > 62 bytes data, server => client 01:07:47.011210 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 01:07:47.011272 '\n' 01:07:47.011353 Received DATA (on stdin) 01:07:47.011416 > 70 bytes data, server => client 01:07:47.011519 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 01:07:47.011585 'usr/bin\r\n' 01:07:47.011665 Received DATA (on stdin) 01:07:47.011728 > 59 bytes data, server => client 01:07:47.011830 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 01:07:47.011914 Received DATA (on stdin) 01:07:47.011977 > 69 bytes data, server => client 01:07:47.012076 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 01:07:47.012139 'd.html\r\n' 01:07:47.012227 Received DATA (on stdin) 01:07:47.012289 > 59 bytes data, server => client 01:07:47.012390 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 01:07:47.012474 Received DATA (on stdin) 01:07:47.012539 > 59 bytes data, server => client 01:07:47.015999 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 01:07:47.016098 Received DATA (on stdin) 01:07:47.016165 > 59 bytes data, server => client 01:07:47.016265 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 01:07:47.016344 Received DISC (on stdin) 01:07:47.016460 ====> Client forcibly disconnected 01:07:47.019760 Received QUIT (on stdin) 01:07:47.019849 quits 01:07:47.020373 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASS 332 Give me an ACCT now REPLY ACCT 230 Thank-you for the ACCT Testnum 294 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com ACCT data for acct PWD CWD 294 EPSV TYPE A LIST QUIT === End of file server.input === Start of file stderr294 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 623 0 623 0 0 112 0 --:--:-- 0:00:05 --:--:-- 144 === End of file stderr294 === Start of file trace294 01:07:43.842608 * Trying 127.0.0.1:37481... 01:07:44.722888 * Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 127.0.0.1 port 37300 01:07:44.982383 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:07:45.320929 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:07:45.347937 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:07:45.354186 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:07:45.362987 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:07:45.476139 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:07:45.548265 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:07:45.570785 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:07:45.641577 <= Recv header, 25 bytes (0x19) 0000: 332 Give me an ACCT now 01:07:45.655862 => Send header, 20 bytes (0x14) 0000: ACCT data for acct 01:07:45.673975 <= Recv header, 28 bytes (0x1c) 0000: 230 Thank-you for the ACCT 01:07:45.693213 => Send header, 5 bytes (0x5) 0000: PWD 01:07:45.7050CMD (17152): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind295 ../src/curl -q --output log/3/curl295.out --include --trace-ascii log/3/trace295 --trace-time ftp://127.0.0.1:37331/295/ > log/3/stdout295 2> log/3/stderr295 23 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:07:45.743619 * Entry path is '/' 01:07:45.879909 => Send header, 9 bytes (0x9) 0000: CWD 294 01:07:45.894127 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 01:07:45.949219 => Send header, 6 bytes (0x6) 0000: EPSV 01:07:45.965675 * Connect data stream passively 01:07:46.040276 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||42257|) 01:07:46.147870 * Connecting to 127.0.0.1 (127.0.0.1) port 42257 01:07:46.213973 * Trying 127.0.0.1:42257... 01:07:46.303152 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 42257) from 127.0.0.1 port 49830 01:07:46.333802 => Send header, 8 bytes (0x8) 0000: TYPE A 01:07:46.353260 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:07:46.384646 => Send header, 6 bytes (0x6) 0000: LIST 01:07:46.431623 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 01:07:46.473677 * Maxdownload = -1 01:07:46.684853 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 01:07:47.111241 * abort upload 01:07:47.137312 <= Recv data, 0 bytes (0x0) 01:07:47.309757 * Remembering we are in dir "294/" 01:07:47.513210 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 01:07:47.818850 * Connection #0 to host 127.0.0.1:37481 left intact === End of file trace294 === Start of file valgrind294 ==233380== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind294 test 0295...[FTP ACCT request without --ftp-account] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind295 ../src/curl -q --output log/3/curl295.out --include --trace-ascii log/3/trace295 --trace-time ftp://127.0.0.1:37331/295/ > log/3/stdout295 2> log/3/stderr295 valgrind ERROR ==233575== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 295 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind295 ../src/curl -q --output log/3/curl295.out --include --trace-ascii log/3/trace295 --trace-time ftp://127.0.0.1:37331/295/ > log/3/stdout295 2> log/3/stderr295 === End of file commands.log === Start of file ftp_server.log 01:06:58.875420 ====> Client connect 01:06:58.899572 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:06:58.908992 < "USER anonymous" 01:06:58.909474 > "331 We are happy you popped in![CR][LF]" 01:06:58.910329 < "PASS ftp@example.com" 01:06:58.910605 > "230 Welcome you silly person[CR][LF]" 01:06:58.911358 < "PWD" 01:06:58.911673 > "257 "/" is current directory[CR][LF]" 01:06:58.913674 < "EPSV" 01:06:58.913887 ====> Passive DATA channel requested by client 01:06:58.914029 DATA sockfilt for passive data channel starting... 01:06:58.955457 DATA sockfilt for passive data channel started (pid 233541) 01:06:58.956587 DATA sockfilt for passive data channel listens on port 43965 01:06:58.956937 > "229 Entering Passive Mode (|||43965|)[CR][LF]" 01:06:58.957109 Client has been notified that DATA conn will be accepted on port 43965 01:06:58.959736 Client connects to port 43965 01:06:58.959949 ====> Client established passive DATA connection on port 43965 01:06:58.960568 < "TYPE I" 01:06:58.960848 > "200 I modify TYPE as you wanted[CR][LF]" 01:06:58.961776 < "SIZE verifiedserver" 01:06:58.962091 > "213 18[CR][LF]" 01:06:58.962932 < "RETR verifiedserver" 01:06:58.963234 > "150 Binary junk (18 bytes).[CR][LF]" 01:06:58.963745 =====> Closing passive DATA connection... 01:06:58.963902 Server disconnects passive DATA connection 01:06:58.967547 Server disconnected passive DATA connection 01:06:58.967726 DATA sockfilt for passive data channel quits (pid 233541) 01:06:58.973306 DATA sockfilt for passive data channel quit (pid 233541) 01:06:58.973485 =====> Closed passive DATA connection 01:06:58.973744 > "226 File transfer complete[CR][LF]" 01:06:59.015919 < "QUIT" 01:06:59.016456 > "221 bye bye baby[CR][LF]" 01:06:59.024231 MAIN sockfilt said DISC 01:06:59.024483 ====> Client disconnected 01:06:59.024778 Awaiting input 01:07:47.095711 ====> Client connect 01:07:47.096466 FTPD: Getting commands from log/3/server.cmd 01:07:47.097224 FTPD: set custom reply for PASS command 01:07:47.097674 FTPD: set custom reply for PWD command 01:07:47.097929 FTPD: run test case number: 295 01:07:47.098829 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:07:48.424473 < "USER anonymous" 01:07:48.430026 > "331 We are happy you popped in![CR][LF]" 01:07:48.544680 < "PASS ftp@example.com" 01:07:48.545239 > "332 Give me an ACCT now[CR][LF]" 01:07:49.150964 MAIN sockfilt said DISC 01:07:49.151497 ====> Client disconnected 01:07:49.151811 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:06:58.490207 ====> Client connect 01:06:58.515226 Received DATA (on stdin) 01:06:58.515377 > 160 bytes data, server => client 01:06:58.515484 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:06:58.515579 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:06:58.515661 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:06:58.523098 < 16 bytes data, client => server 01:06:58.523215 'USER anonymous\r\n' 01:06:58.524619 Received DATA (on stdin) 01:06:58.524702 > 33 bytes data, server => client 01:06:58.524788 '331 We are happy you popped in!\r\n' 01:06:58.525103 < 22 bytes data, client => server 01:06:58.525179 'PASS ftp@example.com\r\n' 01:06:58.525750 Received DATA (on stdin) 01:06:58.525816 > 30 bytes data, server => client 01:06:58.525898 '230 Welcome you silly person\r\n' 01:06:58.526157 < 5 bytes data, client => server 01:06:58.526234 'PWD\r\n' 01:06:58.526816 Received DATA (on stdin) 01:06:58.526884 > 30 bytes data, server => client 01:06:58.526964 '257 "/" is current directory\r\n' 01:06:58.528456 < 6 bytes data, client => server 01:06:58.528525 'EPSV\r\n' 01:06:58.572059 Received DATA (on stdin) 01:06:58.572207 > 39 bytes data, server => client 01:06:58.572302 '229 Entering Passive Mode (|||43965|)\r\n' 01:06:58.574966 < 8 bytes data, client => server 01:06:58.575041 'TYPE I\r\n' 01:06:58.575981 Received DATA (on stdin) 01:06:58.576064 > 33 bytes data, server => client 01:06:58.576149 '200 I modify TYPE as you wanted\r\n' 01:06:58.576620 < 21 bytes data, client => server 01:06:58.576695 'SIZE verifiedserver\r\n' 01:06:58.577241 Received DATA (on stdin) 01:06:58.577307 > 8 bytes data, server => client 01:06:58.577374 '213 18\r\n' 01:06:58.577797 < 21 bytes data, client => server 01:06:58.577877 'RETR verifiedserver\r\n' 01:06:58.578378 Received DATA (on stdin) 01:06:58.578443 > 29 bytes data, server => client 01:06:58.578524 '150 Binary junk (18 bytes).\r\n' 01:06:58.588890 Received DATA (on stdin) 01:06:58.588986 > 28 bytes data, server => client 01:06:58.589069 '226 File transfer complete\r\n' 01:06:58.629762 < 6 bytes data, client => server 01:06:58CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind296 ../src/curl -q --output log/5/curl296.out --include --trace-ascii log/5/trace296 --trace-time --ftp-method multicwd ftp://127.0.0.1:33729/first/second/third/296 > log/5/stdout296 2> log/5/stderr296 .629979 'QUIT\r\n' 01:06:58.631576 Received DATA (on stdin) 01:06:58.631663 > 18 bytes data, server => client 01:06:58.631752 '221 bye bye baby\r\n' 01:06:58.636062 ====> Client disconnect 01:06:58.639663 Received ACKD (on stdin) 01:07:46.710499 ====> Client connect 01:07:46.713832 Received DATA (on stdin) 01:07:46.713948 > 160 bytes data, server => client 01:07:46.714058 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:07:46.714164 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:07:46.714271 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:07:48.038114 < 16 bytes data, client => server 01:07:48.038350 'USER anonymous\r\n' 01:07:48.040047 Received DATA (on stdin) 01:07:48.040143 > 33 bytes data, server => client 01:07:48.040261 '331 We are happy you popped in!\r\n' 01:07:48.158405 < 22 bytes data, client => server 01:07:48.158631 'PASS ftp@example.com\r\n' 01:07:48.162635 Received DATA (on stdin) 01:07:48.162784 > 25 bytes data, server => client 01:07:48.162886 '332 Give me an ACCT now\r\n' 01:07:48.764473 ====> Client disconnect 01:07:48.767107 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:06:58.561280 Running IPv4 version 01:06:58.568988 Listening on port 43965 01:06:58.569488 Wrote pid 233541 to log/3/server/ftp_sockdata.pid 01:06:58.570288 Received PING (on stdin) 01:06:58.571132 Received PORT (on stdin) 01:06:58.574799 ====> Client connect 01:06:58.578634 Received DATA (on stdin) 01:06:58.578911 > 18 bytes data, server => client 01:06:58.579290 'WE ROOLZ: 202504\r\n' 01:06:58.579542 Received DISC (on stdin) 01:06:58.579657 ====> Client forcibly disconnected 01:06:58.585276 Received QUIT (on stdin) 01:06:58.585361 quits 01:06:58.585845 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASS 332 Give me an ACCT now REPLY PWD 530 No ACCT, go away Testnum 295 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com === End of file server.input === Start of file stderr295 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 curl: (67) ACCT requested but none available === End of file stderr295 === Start of file trace295 01:07:46.766669 * Trying 127.0.0.1:37331... 01:07:47.667692 * Established connection to 127.0.0.1 (127.0.0.1 port 37331) from 127.0.0.1 port 58926 01:07:47.923325 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:07:48.292963 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:07:48.324045 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:07:48.331417 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:07:48.336653 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:07:48.445481 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:07:48.521431 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:07:48.544614 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:07:48.625655 <= Recv header, 25 bytes (0x19) 0000: 332 Give me an ACCT now 01:07:48.664867 * ACCT requested but none available 01:07:49.023697 * closing connection #0 === End of file trace295 === Start of file valgrind295 ==233575== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind295 test 0296...[FTP CWD with --ftp-method multicwd] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind296 ../src/curl -q --output log/5/curl296.out --include --trace-ascii log/5/trace296 --trace-time --ftp-method multicwd ftp://127.0.0.1:33729/first/second/third/296 > log/5/stdout296 2> log/5/stderr296 valgrind ERROR ==233618== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 296 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind296 ../src/curl -q --output log/5/curl296.out --include --trace-ascii log/5/trace296 --trace-time --ftp-method multicwd ftp://127.0.0.1:33729/first/second/third/296 > log/5/stdout296 2> log/5/stderr296 === End of file commands.log === Start of file curl296.out bla bla bla === End of file curl296.out === Start of file ftp_server.log 01:06:59.440466 ====> Client connect 01:06:59.442128 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:06:59.449331 < "USER anonymous" 01:06:59.449997 > "331 We are happy you popped in![CR][LF]" 01:06:59.450922 < "PASS ftp@example.com" 01:06:59.451458 > "230 Welcome you silly person[CR][LF]" 01:06:59.452325 < "PWD" 01:06:59.452854 > "257 "/" is current directory[CR][LF]" 01:06:59.455423 < "EPSV" 01:06:59.455633 ====> Passive DATA channel requested by client 01:06:59.455781 DATA sockfilt for passive data channel starting... 01:06:59.505770 DATA sockfilt for passive data channel started (pid 233579) 01:06:59.507096 DATA sockfilt for passive data channel listens on port 46609 01:06:59.507895 > "229 Entering Passive Mode (|||46609|)[CR][LF]" 01:06:59.508077 Client has been notified that DATA conn will be accepted on port 46609 01:06:59.509920 Client connects to port 46609 01:06:59.510158 ====> Client established passive DATA connection on port 46609 01:06:59.511157 < "TYPE I" 01:06:59.511726 > "200 I modify TYPE as you wanted[CR][LF]" 01:06:59.512400 < "SIZE verifiedserver" 01:06:59.512934 > "213 18[CR][LF]" 01:06:59.513675 < "RETR verifiedserver" 01:06:59.514208 > "150 Binary junk (18 bytes).[CR][LF]" 01:06:59.514732 =====> Closing passive DATA connection... 01:06:59.514889 Server disconnects passive DATA connection 01:06:59.515417 Server disconnected passive DATA connection 01:06:59.515577 DATA sockfilt for passive data channel quits (pid 233579) 01:06:59.523752 DATA sockfilt for passive data channel quit (pid 233579) 01:06:59.523929 =====> Closed passive DATA connection 01:06:59.525533 > "226 File transfer complete[CR][LF]" 01:06:59.569589 < "QUIT" 01:06:59.570046 > "221 bye bye baby[CR][LF]" 01:06:59.574332 MAIN sockfilt said DISC 01:06:59.574696 ====> Client disconnected 01:06:59.574982 Awaiting input 01:07:46.893242 ====> Client connect 01:07:46.894046 FTPD: Getting commands from log/5/server.cmd 01:07:46.894432 FTPD: run test case number: 296 01:07:46.897671 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:07:48.247087 < "USER anonymous" 01:07:48.251004 > "331 We are happy you popped in![CR][LF]" 01:07:48.368824 < "PASS ftp@example.com" 01:07:48.369417 > "230 Welcome you silly person[CR][LF]" 01:07:48.469103 < "PWD" 01:07:48.469581 > "257 "/" is current directory[CR][LF]" 01:07:48.689965 < "CWD first" 01:07:48.690456 > "250 CWD command successful.[CR][LF]" 01:07:48.755073 < "CWD second" 01:07:48.755497 > "250 CWD command successful.[CR][LF]" 01:07:48.800409 < "CWD third" 01:07:48.800825 > "250 CWD command successful.[CR][LF]" 01:07:48.868510 < "EPSV" 01:07:48.868865 ====> Passive DATA channel requested by client 01:07:48.869019 DATA sockfilt for passive data channel starting... 01:07:48.928360 DATA sockfilt for passive data channel started (pid 234552) 01:07:48.929789 DATA sockfilt for passive data channel listens on port 37221 01:07:48.930204 > "229 Entering Passive Mode (|||37221|)[CR][LF]" 01:07:48.930391 Client has been notified that DATA conn will be accepted on port 37221 01:07:49.109996 Client connects to port 37221 01:07:49.110566 ====> Client established passive DATA connection on port 37221 01:07:49.225269 < "TYPE I" 01:07:49.225715 > "200 I modify TYPE as you wanted[CR][LF]" 01:07:49.275088 < "SIZE 296" 01:07:49.277056 > "213 12[CR][LF]" 01:07:49.351886 < "RETR 296" 01:07:49.352944 > "150 Binary data connection for 296 () (12 bytes).[CR][LF]" 01:07:49.353494 =====> Closing passive DATA connection... 01:07:49.353656 Server disconnects passive DATA connection 01:07:49.359123 Server disconnected passive DATA connection 01:07:49.359473 DATA sockfilt for passive data channel quits (pid 234552) 01:07:49.363153 DATA sockfilt for passive data channel quit (pid 234552) 01:07:49.363358 =====> Closed passive DATA connection 01:07:49.363709 > "226 File transfer complete[CR][LF]" 01:07:51.450425 < "QUIT" 01:07:51.452690 > "221 bye bye baby[CR][LF]" 01:07:51.601292 MAIN sockfilt said DISC 01:07:51.602635 ====> Client disconnected 01:07:51.602967 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:07:00.055253 ====> Client connect 01:07:00.056578 Received DATA (on stdin) 01:07:00.056672 > 160 bytes data, server => client 01:07:00.056816 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:07:00.056930 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:07:00.057030 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:07:00.063748 < 16 bytes data, client => server 01:07:00.063863 'USER anonymous\r\n' 01:07:00.064828 Received DATA (on stdin) 01:07:00.064909 > 33 bytes data, server => client 01:07:00.065020 '331 We are happy you popped in!\r\n' 01:07:00.065586 < 22 bytes data, client => server 01:07:00.065667 'PASS ftp@example.com\r\n' 01:07:00.066329 Received DATA (on stdin) 01:07:00.066403 > 30 bytes data, server => client 01:07:00.066507 '230 Welcome you silly person\r\n' 01:07:00.067038 < 5 bytes data, client => server 01:07:00.067106 'PWD\r\n' 01:07:00.067735 Received DATA (on stdin) 01:07:00.067804 > 30 bytes data, server => client 01:07:00.067908 '257 "/" is current directory\r\n' 01:07:00.070107 < 6 bytes data, client => server 01:07:00.070185 'EPSV\r\n' 01:07:00.122590 Received DATA (on stdin) 01:07:00.122736 > 39 bytes data, server => client 01:07:00.122852 '229 Entering Passive Mode (|||46609|)\r\n' 01:07:00.125872 < 8 bytes data, client => server 01:07:00.125955 'TYPE I\r\n' 01:07:00.126584 Received DATA (on stdin) 01:07:00.126661 > 33 bytes data, server => client 01:07:00.126767 '200 I modify TYPE as you wanted\r\n' 01:07:00.127111 < 21 bytes data, client => server 01:07:00.127186 'SIZE verifiedserver\r\n' 01:07:00.127846 Received DATA (on stdin) 01:07:00.127910 > 8 bytes data, server => client 01:07:00.127993 '213 18\r\n' 01:07:00.128403 < 21 bytes data, client => server 01:07:00.128477 'RETR verifiedserver\r\n' 01:07:00.129103 Received DATA (on stdin) 01:07:00.129167 > 29 bytes data, server => client 01:07:00.129261 '150 Binary junk (18 bytes).\r\n' 01:07:00.139318 Received DATA (on stdin) 01:07:00.139409 > 28 bytes data, server => client 01:07:00.140686 '226 File transfer complete\r\n' 01:07:00.183568 < 6 bytes data, client => server 01:07:00.183736 'QUIT\r\n' 01:07:00.185456 Received DATA (on stdin) 01:07:00.185534 > 18 bytes data, server => client 01:07:00.185611 '221 bye bye baby\r\n' 01:07:00.189382 ====> Client disconnect 01:07:00.189742 Received ACKD (on stdin) 01:07:47.507984 ====> Client connect 01:07:47.510474 Received DATA (on stdin) 01:07:47.510581 > 160 bytes data, server => client 01:07:47.513063 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:07:47.513196 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:07:47.513306 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:07:48.860745 < 16 bytes data, client => server 01:07:48.860947 'USER anonymous\r\n' 01:07:48.862563 Received DATA (on stdin) 01:07:48.862668 > 33 bytes data, server => client 01:07:48.866425 '331 We are happy you popped in!\r\n' 01:07:48.982666 < 22 bytes data, client => server 01:07:48.982859 'PASS ftp@example.com\r\n' 01:07:48.984277 Received DATA (on stdin) 01:07:48.984355 > 30 bytes data, server => client 01:07:48.984734 '230 Welcome you silly person\r\n' 01:07:49.082914 < 5 bytes data, client => server 01:07:49.083109 'PWD\r\n' 01:07:49.085956 Received DATA (on stdin) 01:07:49.086045 > 30 bytes data, server => client 01:07:49.086138 '257 "/" is current directory\r\n' 01:07:49.303734 < 11 bytes data, client => server 01:07:49.303954 'CWD first\r\n' 01:07:49.308349 Received DATA (on stdin) 01:07:49.308464 > 29 bytes data, server => client 01:07:49.308555 '250 CWD command successful.\r\n' 01:07:49.366004 < 12 bytes data, client => server 01:07:49.366177 'CWD second\r\n' 01:07:49.370532 Received DATA (on stdin) 01:07:49.370630 > 29 bytes data, server => client 01:07:49.370719 '250 CWD command successful.\r\n' 01:07:49.414597 < 11 bytes data, client => server 01:07:49.414763 'CWD third\r\n' 01:07:49.415860 Received DATA (on stdin) 01:07:49.415947 > 29 bytes data, server => client 01:07:49.416039 '250 CWD command successful.\r\n' 01:07:49.480081 < 6 bytes data, client => server 01:07:49.480304 'EPSV\r\n' 01:07:49.545217 Received DATA (on stdin) 01:07:49.545376 > 39 bytes data, server => client 01:07:49.545468 '229 Entering Passive Mode (|||37221|)\r\n' 01:07:49.839334 < 8 bytes data, client => server 01:07:49.839507 'TYPE I\r\n' 01:07:49.840739 Received DATA (on stdin) 01:07:49.840819 > 33 bytes data, server => client 01:07:49.840903 '200 I modify TYPE as you wanted\r\n' 01:07:49.887723 < 10 bytes data, client => server 01:07:49.887890 'SIZE 296\r\n' 01:07:49.892097 Received DATA (on stdin) 01:07:49.892200 > 8 bytes data, server => client 01:07:49.892273 '213 12\r\n' 01:07:49.965297 < 10 bytes data, client => server 01:07:49.965472 'RETR 296\r\n' 01:07:49.967992 Received DATA (on stdin) 01:07:49.968084 > 51 bytes data, server => client 01:07:49.968183 '150 Binary data connection for 296 () (12 bytes).\r\n' 01:07:49.978719 Received DATA (on stdin) 01:07:49.978865 > 28 bytes data, server => client 01:07:49.978954 '226 File transfer complete\r\n' 01:07:52.064297 < 6 bytes data, client => server 01:07:52.064478 'QUIT\r\n' 01:07:52.065899 Received DATA (on stdin) 01:07:52.066011 > 18 bytes data, server => client 01:07:52.068101 '221 bye bye baby\r\n' 01:07:52.216052 ====> Client disconnect 01:07:52.216898 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:06:59.111526 Running IPv4 version 01:06:59.119211 Listening on port 46609 01:06:59.119690 Wrote pid 233579 to log/5/server/ftp_sockdata.pid 01:06:59.120451 Received PING (on stdin) 01:06:59.121593 Received PORT (on stdin) 01:06:59.124933 ====> Client connect 01:06:59.129613 Received DATA (on stdin) 01:06:59.129906 > 18 bytes data, server => client 01:06:59.130256 'WE ROOLZ: 202313\r\n' 01:06:59.130481 Received DISC (on stdin) 01:06:59.130589 ====> Client forcibly disconnected 01:06:59.136041 Received QUIT (on stdin) 01:06:59.136138 quits 01:06:59.136619 ============> sockfilt quits 01:07:48.533964 Running IPv4 version 01:07:48.541661 Listening on port 37221 01:07:48.542203 Wrote pid 234552 to log/5/server/ftp_sockdata.pid 01:07:48.543017 Received PING (on stdin) 01:07:48.544080 Received PORT (on stdin) 01:07:48.724715 ====> Client connect 01:07:48.972635 Received DATA (on stdin) 01:07:48.973083 > 12 bytes data, server => client 01:07:48.973476 'bla bla bla\n' 01:07:48.973796 Received DISC (on stdin) 01:07:48.973927 ====> Client forcibly disconnected 01:07:48.974824 Received QUIT (on stdin) 01:07:48.974911 quits 01:07:48.975481 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 296 === End of file server.cmd === CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind297 ../src/curl -q --output log/8/curl297.out --include --trace-ascii log/8/trace297 --trace-time --ftp-method singlecwd ftp://127.0.0.1:33545/first/second/third/297 > log/8/stdout297 2> log/8/stderr297 Start of file server.input USER anonymous PASS ftp@example.com PWD CWD first CWD second CWD third EPSV TYPE I SIZE 296 RETR 296 QUIT === End of file server.input === Start of file stderr296 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 12 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 12 100 12 0 0 2 0 0:00:06 0:00:05 0:00:01 2 === End of file stderr296 === Start of file trace296 01:07:46.536347 * Trying 127.0.0.1:33729... 01:07:47.495330 * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 39550 01:07:47.747487 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:07:48.101379 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:07:48.134940 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:07:48.143759 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:07:48.148142 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:07:48.268674 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:07:48.343424 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:07:48.367341 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:07:48.442505 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:07:48.467938 => Send header, 5 bytes (0x5) 0000: PWD 01:07:48.500455 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:07:48.536406 * Entry path is '/' 01:07:48.688776 => Send header, 11 bytes (0xb) 0000: CWD first 01:07:48.705088 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 01:07:48.751045 => Send header, 12 bytes (0xc) 0000: CWD second 01:07:48.791590 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 01:07:48.799583 => Send header, 11 bytes (0xb) 0000: CWD third 01:07:48.824434 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 01:07:48.865109 => Send header, 6 bytes (0x6) 0000: EPSV 01:07:48.880454 * Connect data stream passively 01:07:48.932178 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||37221|) 01:07:49.037663 * Connecting to 127.0.0.1 (127.0.0.1) port 37221 01:07:49.103541 * Trying 127.0.0.1:37221... 01:07:49.189158 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 37221) from 127.0.0.1 port 46024 01:07:49.222082 => Send header, 8 bytes (0x8) 0000: TYPE I 01:07:49.241534 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:07:49.273025 => Send header, 10 bytes (0xa) 0000: SIZE 296 01:07:49.303105 <= Recv header, 8 bytes (0x8) 0000: 213 12 01:07:49.350655 => Send header, 10 bytes (0xa) 0000: RETR 296 01:07:49.367795 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 296 () (12 bytes). 01:07:49.410885 * Maxdownload = -1 01:07:49.423140 * Getting file with size: 12 01:07:49.599570 <= Recv data, 12 bytes (0xc) 0000: bla bla bla. 01:07:49.930405 * abort upload 01:07:49.954862 <= Recv data, 0 bytes (0x0) 01:07:50.125186 * Remembering we are in dir "first/second/third/" 01:07:50.345526 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:07:50.691755 * Connection #0 to host 127.0.0.1:33729 left intact === End of file trace296 === Start of file valgrind296 ==233618== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind296 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 316 in state 4 Runner 2 (id 185908) running test 298 in state 4 Runner 3 (id 185910) running test 317 in state 4 Runner 4 (id 185912) running test 315 in state 4 Runner 5 (id 185914) running test 318 in state 4 Runner 6 (id 185916) running test 299 in state 4 Runner 7 (id 185918) running test 314 in state 4 Runner 8 (id 185920) running test 297 in state 4 test 0297...[FTP CWD with --ftp-method singlecwd] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind297 ../src/curl -q --output log/8/curl297.out --include --trace-ascii log/8/trace297 --trace-time --ftp-method singlecwd ftp://127.0.0.1:33545/first/second/third/297 > log/8/stdout297 2> log/8/stderr297 valgrind ERROR ==233866== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 297 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind297 ../src/curl -q --output log/8/curl297.out --include --trace-ascii log/8/trace297 --trace-time --ftp-method singlecwd ftp://127.0.0.1:33545/first/second/third/297 > log/8/stdout297 2> log/8/stderr297 === End of file commands.log === Start of file curl297.out bla bla bla === End of file curl297.out === Start of file ftp_server.log 01:07:10.821146 ====> Client connect 01:07:10.822549 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:07:10.829609 < "USER anonymous" 01:07:10.830181 > "331 We are happy you popped in![CR][LF]" 01:07:10.830830 < "PASS ftp@example.com" 01:07:10.833864 > "230 Welcome you silly person[CR][LF]" 01:07:10.834771 < "PWD" 01:07:10.835028 > "257 "/" is current directory[CR][LF]" 01:07:10.837129 < "EPSV" 01:07:10.837320 ====> Passive DATA channel requested by client 01:07:10.837459 DATA sockfilt for passive data channel starting... 01:07:10.877151 DATA sockfilt for passive data channel started (pid 233860) 01:07:10.878486 DATA sockfilt for passive data channel listens on port 46479 01:07:10.878823 > "229 Entering Passive Mode (|||46479|)[CR][LF]" 01:07:10.878989 Client has been notified that DATA conn will be accepted on port 46479 01:07:10.881727 Client connects to port 46479 01:07:10.881948 ====> Client established passive DATA connection on port 46479 01:07:10.882573 < "TYPE I" 01:07:10.882850 > "200 I modify TYPE as you wanted[CR][LF]" 01:07:10.883711 < "SIZE verifiedserver" 01:07:10.884022 > "213 18[CR][LF]" 01:07:10.884936 < "RETR verifiedserver" 01:07:10.885232 > "150 Binary junk (18 bytes).[CR][LF]" 01:07:10.888517 =====> Closing passive DATA connection... 01:07:10.888691 Server disconnects passive DATA connection 01:07:10.889177 Server disconnected passive DATA connection 01:07:10.889339 DATA sockfilt for passive data channel quits (pid 233860) 01:07:10.896718 DATA sockfilt for passive data channel quit (pid 233860) 01:07:10.896919 =====> Closed passive DATA connection 01:07:10.897176 > "226 File transfer complete[CR][LF]" 01:07:10.935419 < "QUIT" 01:07:10.935749 > "221 bye bye baby[CR][LF]" 01:07:10.940993 MAIN sockfilt said DISC 01:07:10.941199 ====> Client disconnected 01:07:10.941462 Awaiting input 01:07:58.571540 ====> Client connect 01:07:58.572293 FTPD: Getting commands from log/8/server.cmd 01:07:58.572615 FTPD: run test case number: 297 01:07:58.574684 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:07:59.824770 < "USER anonymous" 01:07:59.825206 > "331 We are happy you popped in![CR][LF]" 01:07:59.941754 < "PASS ftp@example.com" 01:07:59.942176 > "230 Welcome you silly person[CR][LF]" 01:08:00.030730 < "PWD" 01:08:00.034273 > "257 "/" is current directory[CR][LF]" 01:08:00.203113 < "CWD first/second/third" 01:08:00.203553 > "250 CWD command successful.[CR][LF]" 01:08:00.274623 < "EPSV" 01:08:00.274944 ====> Passive DATA channel requested by client 01:08:00.275096 DATA sockfilt for passive data channel starting... 01:08:00.353981 DATA sockfilt for passive data channel started (pid 235192) 01:08:00.355452 DATA sockfilt for passive data channel listens on port 35425 01:08:00.355870 > "229 Entering Passive Mode (|||35425|)[CR][LF]" 01:08:00.356055 Client has been notified that DATA conn will be accepted on port 35425 01:08:00.554192 Client connects to port 35425 01:08:00.554747 ====> Client established passive DATA connection on port 35425 01:08:00.668433 < "TYPE I" 01:08:00.668857 > "200 I modify TYPE as you wanted[CR][LF]" 01:08:00.738689 < "SIZE 297" 01:08:00.746067 > "213 12[CR][LF]" 01:08:00.810969 < "RETR 297" 01:08:00.812610 > "150 Binary data connection for 297 () (12 bytes).[CR][LF]" 01:08:00.813151 =====> Closing passive DATA connection... 01:08:00.813313 Server disconnects passive DATA connection 01:08:00.817545 Server disconnected passive DATA connection 01:08:00.817742 DATA sockfilt for passive data channel quits (pid 235192) 01:08:00.823774 DATA sockfilt for passive data channel quit (pid 235192) 01:08:00.823948 =====> Closed passive DATA connection 01:08:00.824213 > "226 File transfer complete[CR][LF]" 01:08:02.775525 < "QUIT" 01:08:02.780944 > "221 bye bye baby[CR][LF]" 01:08:02.901516 MAIN sockfilt said DISC 01:08:02.901967 ====> Client disconnected 01:08:02.902262 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:07:11.435935 ====> Client connect 01:07:11.437122 Received DATA (on stdin) 01:07:11.437192 > 160 bytes data, server => client 01:07:11.437311 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:07:11.437405 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:07:11.437486 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:07:11.443968 < 16 bytes data, client => server 01:07:11.444061 'USER anonymous\r\n' 01:07:11.445020 Received DATA (on stdin) 01:07:11.445084 > 33 bytes data, server => client 01:07:11.445185 '331 We are happy you popped in!\r\n' 01:07:11.445426 < 22 bytes data, client => server 01:07:11.445498 'PASS ftp@example.com\r\n' 01:07:11.446216 Received DATA (on stdin) 01:07:11.446282 > 30 bytes data, server => client 01:07:11.449231 '230 Welcome you silly person\r\n' 01:07:11.449479 < 5 bytes data, client => server 01:07:11.449546 'PWD\r\n' 01:07:11.450363 Received DATA (on stdin) 01:07:11.450425 > 30 bytes data, server => client 01:07:11.450500 '257 "/" is current directory\r\n' 01:07:11.451847 < 6 bytes data, client => server 01:07:11.451912 'EPSV\r\n' 01:07:11.493923 Received DATA (on stdin) 01:07:11.494073 > 39 bytes data, server => client 01:07:11.494163 '229 Entering Passive Mode (|||46479|)\r\n' 01:07:11.496542 < 8 bytes data, client => server 01:07:11.496612 'TYPE I\r\n' 01:07:11.497964 Received DATA (on stdin) 01:07:11.498030 > 33 bytes data, server => client 01:07:11.498109 '200 I modify TYPE as you wanted\r\n' 01:07:11.498449 < 21 bytes data, client => server 01:07:11.498519 'SIZE verifiedserver\r\n' 01:07:11.499145 Received DATA (on stdin) 01:07:11.499205 > 8 bytes data, server => client 01:07:11.499266 '213 18\r\n' 01:07:11.499662 < 21 bytes data, client => server 01:07:11.499737 'RETR verifiedserver\r\n' 01:07:11.500354 Received DATA (on stdin) 01:07:11.500415 > 29 bytes data, server => client 01:07:11.500489 '150 Binary junk (18 bytes).\r\n' 01:07:11.512294 Received DATA (on stdin) 01:07:11.512380 > 28 bytes data, server => client 01:07:11.512458 '226 File transfer complete\r\n' 01:07:11.551104 < 6 bytes data, client => server 01:07:11.551215 'QUIT\r\n' 01:07:11.551290 Received DATA (on stdin) 01:07:11.551353 > 18 bytes data, server => client 01:07:11.551428 '221 bye bye baby\r\n' 01:07:11.556031 ====> Client disconnect 01:07:11.556793 Received ACKD (on stdin) 01:07:59.186281 ====> Client connect 01:07:59.188667 Received DATA (on stdin) 01:07:59.188745 > 160 bytes data, server => client 01:07:59.189324 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:07:59.189433 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:07:59.189521 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:08:00.438795 < 16 bytes data, client => server 01:08:00.438987 'USER anonymous\r\n' 01:08:00.440220 Received DATA (on stdin) 01:08:00.440303 > 33 bytes data, server => client 01:08:00.440392 '331 We are happy you popped in!\r\n' 01:08:00.553418 < 22 bytes data, client => server 01:08:00.553615 'PASS ftp@example.com\r\n' 01:08:00.557465 Received DATA (on stdin) 01:08:00.557562 > 30 bytes data, server => client 01:08:00.557660 '230 Welcome you silly person\r\n' 01:08:00.644645 < 5 bytes data, client => server 01:08:00.644816 'PWD\r\n' 01:08:00.646201 Received DATA (on stdin) 01:08:00.646281 > 30 bytes data, server => client 01:08:00.649601 '257 "/" is current directory\r\n' 01:08:00.816980 < 24 bytes data, client => server 01:08:00.817175 'CWD first/second/third\r\n' 01:08:00.819115 Received DATA (on stdin) 01:08:00.819200 > 29 bytes data, server => client 01:08:00.819305 '250 CWD command successful.\r\n' 01:08:00.888629 < 6 bytes data, client => server 01:08:00.888788 'EPSV\r\n' 01:08:00.970864 Received DATA (on stdin) 01:08:00.971028 > 39 bytes data, server => client 01:08:00.971133 '229 Entering Passive Mode (|||35425|)\r\n' 01:08:01.280039 < 8 bytes data, client => server 01:08:01.280265 'TYPE I\r\n' 01:08:01.285921 Received DATA (on stdin) 01:08:01.286007 > 33 bytes data, server => client 01:08:01.286097 '200 I modify TYPE as you wanted\r\n' 01:08:01.330185 < 10 bytes data, client => server 01:08:01.353375 'SIZE 297\r\n' 01:08:01.360884 Received DATA (on stdin) 01:08:01.360984 > 8 bytes data, server => client 01:08:01.361429 '213 12\r\n' 01:08:01.424947 < 10 bytes data, client => server 01:08:01.425111 'RETR 297\r\n' 01:08:01.429257 Received DATA (on stdin) 01:08:01.429345 > 51 bytes data, server => client 01:08:01.429448 '150 Binary data connection for 297 () (12 bytes).\r\n' 01:08:01.439489 Received DATA (on stdin) 01:08:01.439566 > 28 bytes data, server => client 01:08:01.439649 '226 File transfer complete\r\n' 01:08:03.389382 < 6 bytes data, client => server 01:08:03.389573 'QUIT\r\n' 01:08:03.390952 Received DATA (on stdin) 01:08:03.391031 > 18 bytes data, server => client 01:08:03.396268 '221 bye bye baby\r\n' 01:08:03.516316 ====> Client disconnect 01:08:03.517511 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:07:10.483420 Running IPv4 version 01:07:10.490797 Listening on port 46479 01:07:10.491230 Wrote pid 233860 to log/8/server/ftp_sockdata.pid 01:07:10.492002 Received PING (on stdin) 01:07:10.492996 Received PORT (on stdin) 01:07:10.496723 ====> Client connect 01:07:10.502694 Received DATA (on stdin) 01:07:10.502991 > 18 bytes data, server => client 01:07:10.503354 'WE ROOLZ: 220580\r\n' 01:07:10.504030 Received DISC (on stdin) 01:07:10.504148 ====> Client forcibly disconnected 01:07:10.506029 Received QUIT (on stdin) 01:07:10.506125 quits 01:07:10.506616 ============> sockfilt quits 01:08:00.954318 Running IPv4 version 01:08:00.967357 Listening on port 35425 01:08:00.967860 Wrote pid 235192 to log/8/server/ftp_sockdata.pid 01:08:00.968663 Received PING (on stdin) 01:08:00.969801 Received PORT (on stdin) 01:08:01.168915 ====> Client connect 01:08:01.429268 Received DATA (on stdin) 01:08:01.429651 > 12 bytes data, server => client 01:08:01.430010 'bla bla bla\n' 01:08:01.430260 Received DISC (on stdin) 01:08:01.430384 ====> Client forcibly disconnected 01:08:01.432987 Received QUIT (on stdin) 01:08:01.433073 quits 01:08:01.436466 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 297 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD first/second/third EPSV TYPE I SIZE 297 RECMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind298 ../src/curl -q --output log/2/curl298.out --include --trace-ascii log/2/trace298 --trace-time --ftp-method nocwd ftp://127.0.0.1:39881/first/second/th%69rd/298 > log/2/stdout298 2> log/2/stderr298 TR 297 QUIT === End of file server.input === Start of file stderr297 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 12 100 12 0 0 2 0 0:00:06 0:00:04 0:00:02 3 100 12 100 12 0 0 2 0 0:00:06 0:00:05 0:00:01 2 === End of file stderr297 === Start of file trace297 01:07:58.268651 * Trying 127.0.0.1:33545... 01:07:59.118007 * Established connection to 127.0.0.1 (127.0.0.1 port 33545) from 127.0.0.1 port 58880 01:07:59.352465 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:07:59.707876 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:07:59.733305 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:07:59.739733 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:07:59.744811 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:07:59.843455 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:07:59.918995 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:07:59.939513 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:08:00.007181 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:08:00.029643 => Send header, 5 bytes (0x5) 0000: PWD 01:08:00.045484 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:08:00.080260 * Entry path is '/' 01:08:00.201977 => Send header, 24 bytes (0x18) 0000: CWD first/second/third 01:08:00.218844 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 01:08:00.273637 => Send header, 6 bytes (0x6) 0000: EPSV 01:08:00.287802 * Connect data stream passively 01:08:00.359957 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||35425|) 01:08:00.478745 * Connecting to 127.0.0.1 (127.0.0.1) port 35425 01:08:00.547851 * Trying 127.0.0.1:35425... 01:08:00.635537 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 35425) from 127.0.0.1 port 54174 01:08:00.665066 => Send header, 8 bytes (0x8) 0000: TYPE I 01:08:00.684262 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:08:00.715794 => Send header, 10 bytes (0xa) 0000: SIZE 297 01:08:00.763522 <= Recv header, 8 bytes (0x8) 0000: 213 12 01:08:00.809957 => Send header, 10 bytes (0xa) 0000: RETR 297 01:08:00.829039 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 297 () (12 bytes). 01:08:00.870306 * Maxdownload = -1 01:08:00.880254 * Getting file with size: 12 01:08:01.023184 <= Recv data, 12 bytes (0xc) 0000: bla bla bla. 01:08:01.330863 * abort upload 01:08:01.354607 <= Recv data, 0 bytes (0x0) 01:08:01.557474 * Remembering we are in dir "first/second/third/" 01:08:01.744755 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:08:02.047033 * Connection #0 to host 127.0.0.1:33545 left intact === End of file trace297 === Start of file valgrind297 ==233866== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind297 test 0298...[FTP CWD with --ftp-method nocwd] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind298 ../src/curl -q --output log/2/curl298.out --include --trace-ascii log/2/trace298 --trace-time --ftp-method nocwd ftp://127.0.0.1:39881/first/second/th%69rd/298 > log/2/stdout298 2> log/2/stderr298 valgrind ERROR ==234055== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 298 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind298 ../src/curl -q --output log/2/curl298.out --include --trace-ascii log/2/trace298 --trace-time --ftp-method nocwd ftp://127.0.0.1:39881/first/second/th%69rd/298 > log/2/stdout298 2> log/2/stderr298 === End of file commands.log === Start of file curl298.out bla bla bla === End of file curl298.out === Start of file ftp_server.log 01:07:21.538451 ====> Client connect 01:07:21.539407 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:07:21.547018 < "USER anonymous" 01:07:21.547337 > "331 We are happy you popped in![CR][LF]" 01:07:21.548445 < "PASS ftp@example.com" 01:07:21.548724 > "230 Welcome you silly person[CR][LF]" 01:07:21.549864 < "PWD" 01:07:21.550134 > "257 "/" is current directory[CR][LF]" 01:07:21.552956 < "EPSV" 01:07:21.553165 ====> Passive DATA channel requested by client 01:07:21.553307 DATA sockfilt for passive data channel starting... 01:07:21.598926 DATA sockfilt for passive data channel started (pid 234043) 01:07:21.600262 DATA sockfilt for passive data channel listens on port 40741 01:07:21.600596 > "229 Entering Passive Mode (|||40741|)[CR][LF]" 01:07:21.600761 Client has been notified that DATA conn will be accepted on port 40741 01:07:21.604100 Client connects to port 40741 01:07:21.604336 ====> Client established passive DATA connection on port 40741 01:07:21.604954 < "TYPE I" 01:07:21.605942 > "200 I modify TYPE as you wanted[CR][LF]" 01:07:21.606471 < "SIZE verifiedserver" 01:07:21.606777 > "213 18[CR][LF]" 01:07:21.608212 < "RETR verifiedserver" 01:07:21.610656 > "150 Binary junk (18 bytes).[CR][LF]" 01:07:21.611200 =====> Closing passive DATA connection... 01:07:21.611370 Server disconnects passive DATA connection 01:07:21.614229 Server disconnected passive DATA connection 01:07:21.614407 DATA sockfilt for passive data channel quits (pid 234043) 01:07:21.617851 DATA sockfilt for passive data channel quit (pid 234043) 01:07:21.618032 =====> Closed passive DATA connection 01:07:21.618303 > "226 File transfer complete[CR][LF]" 01:07:21.659223 < "QUIT" 01:07:21.659617 > "221 bye bye baby[CR][LF]" 01:07:21.664315 MAIN sockfilt said DISC 01:07:21.664697 ====> Client disconnected 01:07:21.664979 Awaiting input 01:08:08.844417 ====> Client connect 01:08:08.845156 FTPD: Getting commands from log/2/server.cmd 01:08:08.845489 FTPD: run test case number: 298 01:08:08.846924 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:08:10.114196 < "USER anonymous" 01:08:10.117589 > "331 We are happy you popped in![CR][LF]" 01:08:10.219952 < "PASS ftp@example.com" 01:08:10.220639 > "230 Welcome you silly person[CR][LF]" 01:08:10.309896 < "PWD" 01:08:10.310337 > "257 "/" is current directory[CR][LF]" 01:08:10.518306 < "EPSV" 01:08:10.518626 ====> Passive DATA channel requested by client 01:08:10.518771 DATA sockfilt for passive data channel starting... 01:08:10.557116 DATA sockfilt for passive data channel started (pid 235357) 01:08:10.558267 DATA sockfilt for passive data channel listens on port 35461 01:08:10.558622 > "229 Entering Passive Mode (|||35461|)[CR][LF]" 01:08:10.558794 Client has been notified that DATA conn will be accepted on port 35461 01:08:10.781248 Client connects to port 35461 01:08:10.781808 ====> Client established passive DATA connection on port 35461 01:08:10.892832 < "TYPE I" 01:08:10.893247 > "200 I modify TYPE as you wanted[CR][LF]" 01:08:10.944892 < "SIZE first/second/third/298" 01:08:10.946728 > "213 12[CR][LF]" 01:08:11.024158 < "RETR first/second/third/298" 01:08:11.028604 > "150 Binary data connection for 298 () (12 bytes).[CR][LF]" 01:08:11.029123 =====> Closing passive DATA connection... 01:08:11.029280 Server disconnects passive DATA connection 01:08:11.029955 Server disconnected passive DATA connection 01:08:11.030123 DATA sockfilt for passive data channel quits (pid 235357) 01:08:11.040911 DATA sockfilt for passive data channel quit (pid 235357) 01:08:11.041175 =====> Closed passive DATA connection 01:08:11.041491 > "226 File transfer complete[CR][LF]" 01:08:12.996877 < "QUIT" 01:08:12.997292 > "221 bye bye baby[CR][LF]" 01:08:13.130169 MAIN sockfilt said DISC 01:08:13.134205 ====> Client disconnected 01:08:13.134568 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:07:22.153223 ====> Client connect 01:07:22.154776 Received DATA (on stdin) 01:07:22.154849 > 160 bytes data, server => client 01:07:22.154951 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:07:22.155047 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:07:22.155131 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:07:22.161473 < 16 bytes data, client => server 01:07:22.161589 'USER anonymous\r\n' 01:07:22.162434 Received DATA (on stdin) 01:07:22.162505 > 33 bytes data, server => client 01:07:22.162589 '331 We are happy you popped in!\r\n' 01:07:22.163014 < 22 bytes data, client => server 01:07:22.163099 'PASS ftp@example.com\r\n' 01:07:22.164064 Received DATA (on stdin) 01:07:22.164132 > 30 bytes data, server => client 01:07:22.164213 '230 Welcome you silly person\r\n' 01:07:22.164511 < 5 bytes data, client => server 01:07:22.164584 'PWD\r\n' 01:07:22.165546 Received DATA (on stdin) 01:07:22.165613 > 30 bytes data, server => client 01:07:22.165695 '257 "/" is current directory\r\n' 01:07:22.167601 < 6 bytes data, client => server 01:07:22.167678 'EPSV\r\n' 01:07:22.216164 Received DATA (on stdin) 01:07:22.216310 > 39 bytes data, server => client 01:07:22.216406 '229 Entering Passive Mode (|||40741|)\r\n' 01:07:22.219072 < 8 bytes data, client => server 01:07:22.219144 'TYPE I\r\n' 01:07:22.220322 Received DATA (on stdin) 01:07:22.220393 > 33 bytes data, server => client 01:07:22.220503 '200 I modify TYPE as you wanted\r\n' 01:07:22.220885 < 21 bytes data, client => server 01:07:22.220962 'SIZE verifiedserver\r\n' 01:07:22.222206 Received DATA (on stdin) 01:07:22.222273 > 8 bytes data, server => client 01:07:22.222340 '213 18\r\n' 01:07:22.222770 < 21 bytes data, client => server 01:07:22.222850 'RETR verifiedserver\r\n' 01:07:22.223611 Received DATA (on stdin) 01:07:22.223678 > 29 bytes data, server => client 01:07:22.223781 '150 Binary junk (18 bytes).\r\n' 01:07:22.233659 Received DATA (on stdin) 01:07:22.233757 > 28 bytes data, server => client 01:07:22.233849 '226 File transfer complete\r\n' 01:07:22.273336 < 6 bytes data, client => server 01:07:22.273485 'QUIT\r\n' 01:07:22.275152 Received DATA (on stdin) 01:07:22.275223 > 18 bytes data, server => client 01:07:22.275301 '221 bye bye baby\r\n' 01:07:22.279332 ====> Client disconnect 01:07:22.279694 Received ACKD (on stdin) 01:08:09.459130 ====> Client connect 01:08:09.461349 Received DATA (on stdin) 01:08:09.461432 > 160 bytes data, server => client 01:08:09.461563 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:08:09.461665 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:08:09.461752 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:08:10.728041 < 16 bytes data, client => server 01:08:10.728197 'USER anonymous\r\n' 01:08:10.729590 Received DATA (on stdin) 01:08:10.729662 > 33 bytes data, server => client 01:08:10.732857 '331 We are happy you popped in!\r\n' 01:08:10.834046 < 22 bytes data, client => server 01:08:10.834234 'PASS ftp@example.com\r\n' 01:08:10.835350 Received DATA (on stdin) 01:08:10.835424 > 30 bytes data, server => client 01:08:10.835524 '230 Welcome you silly person\r\n' 01:08:10.924038 < 5 bytes data, client => server 01:08:10.924205 'PWD\r\n' 01:08:10.929234 Received DATA (on stdin) 01:08:10.929312 > 30 bytes data, server => client 01:08:10.929398 '257 "/" is current directory\r\n' 01:08:11.132450 < 6 bytes data, client => server 01:08:11.132662 'EPSV\r\n' 01:08:11.173590 Received DATA (on stdin) 01:08:11.173752 > 39 bytes data, server => client 01:08:11.173855 '229 Entering Passive Mode (|||35461|)\r\n' 01:08:11.506927 < 8 bytes data, client => server 01:08:11.507127 'TYPE I\r\n' 01:08:11.508234 Received DATA (on stdin) 01:08:11.508311 > 33 bytes data, server => client 01:08:11.508401 '200 I modify TYPE as you wanted\r\n' 01:08:11.558225 < 29 bytes data, client => server 01:08:11.558389 'SIZE first/second/third/298\r\n' 01:08:11.561735 Received DATA (on stdin) 01:08:11.561811 > 8 bytes data, server => client 01:08:11.561886 '213 12\r\n' 01:08:11.638036 < 29 bytes data, client => server 01:08:11.638221 'RETR first/second/third/298\r\n' 01:08:11.644503 Received DATA (on stdin) 01:08:11.644578 > 51 bytes data, server => client 01:08:11.644671 '150 Binary data connection for 298 () (12 bytes).\r\n' 01:08:11.656774 Received DATA (on stdin) 01:08:11.656865 > 28 bytes data, server => client 01:08:11.656957 '226 File transfer complete\r\n' 01:08:13.610770 < 6 bytes data, client => server 01:08:13.610953 'QUIT\r\n' 01:08:13.612538 Received DATA (on stdin) 01:08:13.612619 > 18 bytes data, server => client 01:08:13.612690 '221 bye bye baby\r\n' 01:08:13.744893 ====> Client disconnect 01:08:13.745702 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:07:21.204487 Running IPv4 version 01:07:21.212393 Listening on port 40741 01:07:21.212850 Wrote pid 234043 to log/2/server/ftp_sockdata.pid 01:07:21.213647 Received PING (on stdin) 01:07:21.214746 Received PORT (on stdin) 01:07:21.218899 ====> Client connect 01:07:21.226695 Received DATA (on stdin) 01:07:21.227007 > 18 bytes data, server => client 01:07:21.227367 'WE ROOLZ: 202189\r\n' 01:07:21.227606 Received DISC (on stdin) 01:07:21.227730 ====> Client forcibly disconnected 01:07:21.229750 Received QUIT (on stdin) 01:07:21.229830 quits 01:07:21.230360 ============> sockfilt quits 01:08:10.163396 Running IPv4 version 01:08:10.170603 Listening on port 35461 01:08:10.171082 Wrote pid 235357 to log/2/server/ftp_sockdata.pid 01:08:10.171814 Received PING (on stdin) 01:08:10.172652 Received PORT (on stdin) 01:08:10.396011 ====> Client connect 01:08:10.643898 Received DATA (on stdin) 01:08:10.644273 > 12 bytes data, server => client 01:08:10.644615 'bla bla bla\n' 01:08:10.644874 Received DISC (on stdin) 01:08:10.644991 ====> Client forcibly disconnected 01:08:10.646164 Received QUIT (on stdin) 01:08:10.646252 quits 01:08:10.646827 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 298 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE first/second/third/298 RETR first/second/third/298 QUIT === End of file server.input === Start of file stderr298 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 12 100 12 0 0 2 0 0:00:06 0:00:04 0:00:02 3 100 12 100 12 0 0 2 0 0:00:06 0:00:05 0:00:01 2 === End of file stderr298 === Start of file trace298 01:08:08.544032 * Trying 127.0.0.1:39881... 01:08:09.389058 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 58928 01:08:09.637864 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:08:09.978456 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:08:10.010489 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:08:10.021633 <= Recv header, 32 bytCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind299 ../src/curl -q --output log/6/curl299.out --include --trace-ascii log/6/trace299 --trace-time -x http://127.0.0.1:38277 -u michal:aybabtu ftp://host.com/we/want/299 > log/6/stdout299 2> log/6/stderr299 es (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:08:10.027125 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:08:10.132982 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:08:10.198514 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:08:10.220670 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:08:10.290165 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:08:10.309358 => Send header, 5 bytes (0x5) 0000: PWD 01:08:10.325568 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:08:10.360861 * Entry path is '/' 01:08:10.468537 * Request has same path as previous transfer 01:08:10.517841 => Send header, 6 bytes (0x6) 0000: EPSV 01:08:10.532351 * Connect data stream passively 01:08:10.594990 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||35461|) 01:08:10.709176 * Connecting to 127.0.0.1 (127.0.0.1) port 35461 01:08:10.774367 * Trying 127.0.0.1:35461... 01:08:10.861389 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 35461) from 127.0.0.1 port 60060 01:08:10.892331 => Send header, 8 bytes (0x8) 0000: TYPE I 01:08:10.910790 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:08:10.943535 => Send header, 29 bytes (0x1d) 0000: SIZE first/second/third/298 01:08:10.973134 <= Recv header, 8 bytes (0x8) 0000: 213 12 01:08:11.024349 => Send header, 29 bytes (0x1d) 0000: RETR first/second/third/298 01:08:11.047595 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 298 () (12 bytes). 01:08:11.090081 * Maxdownload = -1 01:08:11.100153 * Getting file with size: 12 01:08:11.245482 <= Recv data, 12 bytes (0xc) 0000: bla bla bla. 01:08:11.558853 * abort upload 01:08:11.583089 <= Recv data, 0 bytes (0x0) 01:08:11.773287 * Remembering we are in dir "" 01:08:11.971873 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:08:12.273895 * Connection #0 to host 127.0.0.1:39881 left intact === End of file trace298 === Start of file valgrind298 ==234055== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind298 test 0320 SKIPPED: no gnutls-serv (with SRP support) test 0321 SKIPPED: no gnutls-serv (with SRP support) test 0322 SKIPPED: no gnutls-serv (with SRP support) Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 316 in state 4 Runner 2 (id 185908) running test 326 in state 4 Runner 3 (id 185910) running test 317 in state 4 Runner 4 (id 185912) running test 315 in state 4 Runner 5 (id 185914) running test 318 in state 4 Runner 6 (id 185916) running test 299 in state 4 Runner 7 (id 185918) running test 314 in state 4 Runner 8 (id 185920) running test 319 in state 4 test 0299...[FTP over HTTP proxy with user:pass not in url] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind299 ../src/curl -q --output log/6/curl299.out --include --trace-ascii log/6/trace299 --trace-time -x http://127.0.0.1:38277 -u michal:aybabtu ftp://host.com/we/want/299 > log/6/stdout299 2> log/6/stderr299 valgrind ERROR ==234241== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 299 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind299 ../src/curl -q --output log/6/curl299.out --include --trace-ascii log/6/trace299 --trace-time -x http://127.0.0.1:38277 -u michal:aybabtu ftp://host.com/we/want/299 > log/6/stdout299 2> log/6/stderr299 === End of file commands.log === Start of file curl299.out HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file curl299.out === Start of file http_server.log 01:07:38.652978 ====> Client connect 01:07:38.653136 accept_connection 3 returned 4 01:07:38.653211 accept_connection 3 returned 0 01:07:38.660330 Read 93 bytes 01:07:38.660450 Process 93 bytes request 01:07:38.660542 Got request: GET /verifiedserver HTTP/1.1 01:07:38.660609 Are-we-friendly question received 01:07:38.660742 Wrote request (93 bytes) input to log/6/server.input 01:07:38.660844 Identifying ourselves as friends 01:07:38.661018 Response sent (57 bytes) and written to log/6/server.response 01:07:38.661086 special request received, no persistency 01:07:38.661149 ====> Client disconnect 0 01:08:26.826893 ====> Client connect 01:08:26.827044 accept_connection 3 returned 4 01:08:26.827127 accept_connection 3 returned 0 01:08:28.048210 Read 188 bytes 01:08:28.048415 Process 188 bytes request 01:08:28.048516 Got request: GET ftp://michal:aybabtu@host.com/we/want/299 HTTP/1.1 01:08:28.048587 Serve test number 299 part 0 01:08:28.048764 - request found to be complete (299) 01:08:28.049030 Wrote request (188 bytes) input to log/6/server.input 01:08:28.049146 Send response test299 section 01:08:28.049367 connection close instruction "swsclose" found in response 01:08:28.049517 Response sent (98 bytes) and written to log/6/server.response 01:08:28.049584 instructed to close connection after server-reply 01:08:28.049646 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 46518 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 299 === End of file server.cmd === Start of file server.input GET ftp://michal:aybabtu@host.com/we/want/299 HTTP/1.1 Host: host.com:21 Authorization: Basic bWljaGFsOmF5YmFidHU= User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file server.response === Start of file stderr299 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 11 0 11 0 0 2 0 --:--:-- 0:00:04 --:--:-- 3 100 11 0 11 0 0 2 0 --:--:-- 0:00:04 --:--:-- 3 === End of file stderr299 === Start of file trace299 01:08:26.892243 * Trying 127.0.0.1:38277... 01:08:27.796614 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 52546 01:08:27.931526 * using HTTP/1.x 01:08:28.092195 * Server auth using Basic with user 'michal' 01:08:28.473068 => Send header, 188 bytes (0xbc) 0000: GET ftp://michal:aybabtu@host.com/we/want/299 HTTP/1.1 0038: Host: host.com:21 004b: Authorization: Basic bWljaGFsOmF5YmFidHU= 0076: User-Agent: curl/8.17.0 008f: Accept: */* 009c: Proxy-Connection: Keep-Alive 00ba: 01:08:28.824749 * HTTP 1.0, assume close after body 01:08:28.846826 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.0 200 OK swsclose. 01:08:29.149354 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:08:29.253586 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:08:29.347041 <= Recv header, 1 bytes (0x1) 0000: . 01:08:29.406921 <= Recv data, 11 bytes (0CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind316 ../src/curl -q --output log/1/curl316.out --include --trace-ascii log/1/trace316 --trace-time http://127.0.0.1:40641/316 --compressed > log/1/stdout316 2> log/1/stderr316 xb) 0000: blablabla.. 01:08:29.537042 * abort upload 01:08:29.562548 <= Recv data, 0 bytes (0x0) 01:08:30.061063 * shutting down connection #0 === End of file trace299 === Start of file valgrind299 ==234241== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind299 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 316 in state 4 Runner 2 (id 185908) running test 326 in state 4 Runner 3 (id 185910) running test 317 in state 4 Runner 4 (id 185912) running test 315 in state 4 Runner 5 (id 185914) running test 318 in state 4 Runner 6 (id 185916) running test 327 in state 4 Runner 7 (id 185918) running test 314 in state 4 Runner 8 (id 185920) running test 319 in state 4 test 0316...[HTTP GET brotli compressed content of size more than CURL_MAX_WRITE_SIZE] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind316 ../src/curl -q --output log/1/curl316.out --include --trace-ascii log/1/trace316 --trace-time http://127.0.0.1:40641/316 --compressed > log/1/stdout316 2> log/1/stderr316 valgrind ERROR ==234785== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 316 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind316 ../src/curl -q --output log/1/curl316.out --include --trace-ascii log/1/trace316 --trace-time http://127.0.0.1:40641/316 --compressed > log/1/stdout316 2> log/1/stderr316 === End of file commands.log === Start of file curl316.out HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: br Content-Length: 31 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEFCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind314 ../src/curl -q --output log/7/curl314.out --include --trace-ascii log/7/trace314 --trace-time http://127.0.0.1:34897/314 --compressed > log/7/stdout314 2> log/7/stderr314 CMD (15616): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind315 ../src/curl -q --output log/4/curl315.out --include --trace-ascii log/4/trace315 --trace-time http://127.0.0.1:42621/315 --compressed > log/4/stdout315 2> log/4/stderr315 0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF === End of file curl316.out === Start of file http_server.log 01:07:52.971804 ====> Client connect 01:07:52.971977 accept_connection 3 returned 4 01:07:52.972063 accept_connection 3 returned 0 01:07:52.980317 Read 93 bytes 01:07:52.980440 Process 93 bytes request 01:07:52.980542 Got request: GET /verifiedserver HTTP/1.1 01:07:52.980617 Are-we-friendly question received 01:07:52.980760 Wrote request (93 bytes) input to log/1/server.input 01:07:52.980865 Identifying ourselves as friends 01:07:52.981041 Response sent (57 bytes) and written to log/1/server.response 01:07:52.981110 special request received, no persistency 01:07:52.981174 ====> Client disconnect 0 01:08:40.684682 ====> Client connect 01:08:40.684831 accept_connection 3 returned 4 01:08:40.684913 accept_connection 3 returned 0 01:08:41.693082 Read 124 bytes 01:08:41.693264 Process 124 bytes request 01:08:41.693363 Got request: GET /316 HTTP/1.1 01:08:41.693438 Serve test number 316 part 0 01:08:41.693775 - request found to be complete (316) 01:08:41.694187 Wrote request (124 bytes) input to log/1/server.input 01:08:41.694289 Send response test316 section 01:08:41.694823 Response sent (315 bytes) and written to log/1/server.response 01:08:41.694893 => persistent connection request ended, awaits new request 01:08:45.139838 Connection closed by client 01:08:45.140071 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 38726 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 316 === End of file server.cmd === Start of file server.input GET /316 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* Accept-Encoding: deflate, gzip, br, zstd === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: br Content-Length: 31 @dñ˜Ï( ë¯Ç¬A«BbQóÈêÙ{ŸÜH === End of file server.response === Start of file stderr316 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 31 100 31 0 0 5 0 0:00:06 0:00:05 0:00:01 6 100 31 100 31 0 0 5 0 0:00:06 0:00:06 --:--:-- 6 === End of file stderr316 === Start of file trace316 01:08:39.751593 * Trying 127.0.0.1:40641... 01:08:40.634615 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 38042 01:08:40.767346 * using HTTP/1.x 01:08:41.118224 => Send header, 124 bytes (0x7c) 0000: GET /316 HTTP/1.1 0013: Host: 127.0.0.1:40641 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Accept-Encoding: deflate, gzip, br, zstd 007a: 01:08:41.452206 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:08:41.759477 <= Recv header, 37 bytes (0x25) 0000: Date: Mon, 29 Nov 2004 21:56:53 GMT 01:08:41.857573 <= Recv header, 117 bytes (0x75) 0000: Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/ 0040: 4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 01:08:41.885537 <= Recv header, 23 bytes (0x17) 0000: Vary: Accept-Encoding 01:08:41.944631 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=ISO-8859-1 01:08:42.527750 <= Recv header, 22 bytes (0x16) 0000: Content-Encoding: br 01:08:42.571750 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 31 01:08:42.653181 <= Recv header, 2 bytes (0x2) 0000: 01:08:42.712047 <= Recv data, 32 bytes (0x20) 0000: ..@.d...(......A.BbQ....{....H.. 01:08:43.737175 * Excess found writing body: excess = 1, size = 31, maxdownload = 31, bytecount = 31 01:08:43.787643 * we are done reading and this is set to close, stop send 01:08:43.817626 * abort upload 01:08:44.320979 * shutting down connection #0 === End of file trace316 === Start of file valgrind316 ==234785== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind316 test 0314...[HTTP GET brotli compressed content] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind314 ../src/curl -q --output log/7/curl314.out --include --trace-ascii log/7/trace314 --trace-time http://127.0.0.1:34897/314 --compressed > log/7/stdout314 2> log/7/stderr314 valgrind ERROR ==234452== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 314 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind314 ../src/curl -q --output log/7/curl314.out --include --trace-ascii log/7/trace314 --trace-time http://127.0.0.1:34897/314 --compressed > log/7/stdout314 2> log/7/stderr314 === End of file commands.log === Start of file curl314.out HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: br Content-Length: 1056 1612 1998-08-21 04:01:29 2004-10-18 02:22:23 curl curl and libcurl Command line tool and library for client-side URL transfers. curl and libcurl is a tool for transferring files using URL syntax. It supports HTTP, HTTPS, FTP, FTPS, DICT, TELNET, LDAP, FILE, and GOPHER, as well as HTTP-post, HTTP-put, cookies, FTP upload, resumed transfers, passwords, portnumbers, SSL certificates, Kerberos, and proxies. It is powered by libcurl, the client-side URL transfer library. There are bindings to libcurl for over 20 languages and environments. 5784.57 3.16 169 6594.54 13.81 105 8.50 21 183 323 Default http://freshmeat.net/projects/curl/ http://freshmeat.net/redir/curl/1612/url_homepage/ http://freshmeat.net/redir/curl/1612/url_tgz/ http://freshmeat.net/redir/curl/1612/url_bz2/ http://freshmeat.net/redir/curl/1612/url_zip/ http://freshmeat.net/redir/curl/1612/url_changelog/ http://freshmeat.net/redir/curl/1612/url_rpm/ http://freshmeat.net/redir/curl/1612/url_deb/ http://freshmeat.net/redir/curl/1612/url_osx/ http://freshmeat.net/redir/curl/1612/url_bsdport/ http://freshmeat.net/redir/curl/1612/url_cvs/ http://freshmeat.net/redir/curl/1612/url_list/ http://freshmeat.net/redir/curl/1612/url_mirror/ MIT/X Consortium License 7.12.2 176085 2004-10-18 02:22:23 Daniel Stenberg http://freshmeat.net/~bagder/ Owner 12 226 3 2 188 216 200 220 164 90 89 809 150 224 900 839 0 7464 7464 OpenSSL (Default) 0 0 7443 OpenLDAP 0 0 12351 zlib 0 0 32047 Heimdal 0 0 44532 c-ares === End of file curl314.out === Start of file http_server.log 01:07:46.591580 ====> Client connect 01:07:46.591744 accept_connection 3 returned 4 01:07:46.591819 accept_connection 3 returned 0 01:07:46.599254 Read 93 bytes 01:07:46.599397 Process 93 bytes request 01:07:46.599489 Got request: GET /verifiedserver HTTP/1.1 01:07:46.599558 Are-we-friendly question received 01:07:46.599684 Wrote request (93 bytes) input to log/7/server.input 01:07:46.599778 Identifying ourselves as friends 01:07:46.599959 Response sent (57 bytes) and written to log/7/server.response 01:07:46.600024 special request received, no persistency 01:07:46.600080 ====> Client disconnect 0 01:08:34.621154 ====> Client connect 01:08:34.621293 accept_connection 3 returned 4 01:08:34.621362 accept_connection 3 returned 0 01:08:35.663275 Read 124 bytes 01:08:35.663454 Process 124 bytes request 01:08:35.663544 Got request: GET /314 HTTP/1.1 01:08:35.663612 Serve test number 314 part 0 01:08:35.663967 - request found to be complete (314) 01:08:35.664348 Wrote request (124 bytes) input to log/7/server.input 01:08:35.664452 Send response test314 section 01:08:35.665113 Response sent (1342 bytes) and written to log/7/server.response 01:08:35.665179 => persistent connection request ended, awaits new request 01:08:44.453242 Connection closed by client 01:08:44.453457 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 37980 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 314 === End of file server.cmd === Start of file server.input GET /314 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* Accept-Encoding: deflate, gzip, br, zstd === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: br Content-Length: 1056 °œv]¤<‹é™ƒ¿— <«ª—ßÈÕå0ÈM0{þ‚U .½PÊX5m2O2á'ÌJïÚöûËÅcðx0ŠxñÿÛ/U"FÅøHa#löþw'Ä tøfç$P‰t]O¥Ý­ JVȾ†ëæ²P±ûŠ’#1S*Üj>ýEícgtÈýji¡’Ä)ü›”4h{ࣈìA$€Yu¶62¶J\öbIËÒ~Á4ÈøzèQöUƒbChP@ª‚Ó‹”gYøùåsg+oÇÍ­ÊÕİ+$ RwÁWñælñæÉPîÚž^¤|úÍé{–å|z"A¡ßŠâi%kíTÆiŽèxÒ 2ŽÛ²òmŸHÜ+LH=ˆ—‰×}S•Æî·P]̾S€Ù`ÂÁ7ˆðU‘(˜ó¯Czkž³pâ€{9c«ýðsŽ÷ãã¶álpÌú£åzT×-‡=i|]~°Â¸Éf;í÷›}„¹&wk•®à\pøåŸ°S9\)—çf&uDva;>[æÍÃaIópýŠ|‰#÷Oânl½Óà#¤‡=}÷¨‡ýÄáÏúº šÖæá¢Fqz|&x2øñÞ¶n®ëÐÎÈÈ`Ôñcú…CZr¸+âùTkÒjI.ª¼ß”ÂÐê¢ö Š=„Þª æD¥Ìûò®V)YW“cèm„ 2æžQ,´ÓK‡…¢N¥±r\Y9ªÝ"B@W ²™cˆCnÛ={ÌQ‚Áa¬„‚8JÖs–R1P鵉p jYqæT@ !H|HdCb Kºâ©k' H㽄=PRƒÜÓˆ²A?ÚVB‹lxð‰Â -äÐw)¥ËÐim»Â4êKS…” ,àžF” Æj (´ÈçoPhñ!ioNN2jÚÑH ÷r’ÔëÀ9„‹7’ ,àžFt)%{‹S&îê郩XÄ 6êá(7lG+G D–Œâé=;Â'¸Ú; |®îˆmQ•èf°Dq•ðÕ%Їû´ 4JI( à­Þ|µOI6”>ðF!˜'ŸbAUš2™‚å.R|ú©¤†ªy†ˆ®¥Ðµ\žçÅx¶ÖV2TàÑv޳”aÿN3cPµÎ Šè~ foFº¥JÅ–™û¯.ì â.áÓB<*ÎMv¹î¨Ìsc&Ë<щwO83ÎõoûŸÝ­ßÅAPv_ˆåP®åžC(û÷M¿lÁn½ÚýÁ•ô?P¥[;‰ù.I¿fá]ÐU® ¿´_79Où…õr‹ûª Ëøƒ£:ß§Ô¥£*¤ß™K~Ñfk¼IÉ œcýåxÖsQ(ÿqþ%ë)§‚žëÎËreÒRäTf?ðo’Šõ… z,ï"°Ý‡KÈ === End of file server.response === Start of file stderr314 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 1056 100 1056 0 0 92 0 0:00:11 0:00:11 --:--:-- 104 100 1056 100 1056 0 0 91 0 0:00:11 0:00:11 --:--:-- 102 === End of file stderr314 === Start of file trace314 01:08:34.676228 * Trying 127.0.0.1:34897... 01:08:35.592954 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 47138 01:08:35.728073 * using HTTP/1.x 01:08:36.087437 => Send header, 124 bytes (0x7c) 0000: GET /314 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Accept-Encoding: deflate, gzip, br, zstd 007a: 01:08:36.455666 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:08:36.774907 <= Recv header, 37 bytes (0x25) 0000: Date: Mon, 29 Nov 2004 21:56:53 GMT 01:08:36.875839 <= Recv header, 117 bytes (0x75) 0000: Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/ 0040: 4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 01:08:36.904526 <= Recv header, 23 bytes (0x17) 0000: Vary: Accept-Encoding 01:08:36.963556 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=ISO-8859-1 01:08:42.255352 <= Recv header, 22 bytes (0x16) 0000: Content-Encoding: br 01:08:42.299232 <= Recv header, 22 bytes (0x16) 0000: Content-Length: 1056 01:08:42.382906 <= Recv header, 2 bytes (0x2) 0000: 01:08:42.444480 <= Recv data, 1057 bytes (0x421) 0000: ......v.]..<........ <.........0.M0{..U....P.X5m2O2.'.J......c.x 0040: 0.x.../U"F..H.a#l..w'.. t.f...$P.t]O.....JV......P.....#1S*.j>.E 0080: .cgt..ji...)....4h{....A$.Yu.62.J\.bI..~.4..z.Q..U..bChP@.....g. 00c0: .Y...s.g+o.......+$.Rw.W..l...P....^.|...{...|z."A....i%k.T..i.. 0100: x..2....m.H.+LH=.....}S....P]...S..`..7..U.(......Czk..p..{9c... 0140: s.......lp.....zT.-.=i|]~....f;....}.....&wk...\.p.....S.9\)..f& 0180: uDva;>[...a.I..p...|.#..O.nl...#..=.}...............F.qz|..&x2.. 01c0: ...n......`..c..CZr.+...Tk.jI..............=.....D.......V)YW.c. 0200: m..2..Q,..K....N..r.\Y9.."B@W.....c.Cn.=.{..Q...a.....8J.s.R.1P. 0240: ..p.jY.q.T@..!H|HdCb.K.....k' H....=PR......A?..VB.lx.....-..w). 0280: ..im...4.K.S...,..F...j..(....o..Ph.!ioNN.2j....H..r....9..7..,. 02c0: .Ft)%{.S.&.....X..6..(.7lG+G.D.....=;.'...;.|...mQ...f.Dq....%.. 0300: ....4JI(....|.OI6.>.F!.'.bA.U.2.....R|.....y........\...x...V2T. 0340: .v...a...N3c.P.......~...foF...J..............B.<*.Mv.....sc&.<. 0380: .wO83...o.......APv_...P....C.(...M.l.n.......?P.[;....I.f.].U.. 03c0: ..._79..O...r...........:......*...K.~.fk.I...c..x.s.Q(.q.%.)... 0400: ....re.R.Tf.?.o......z.,."...K... 01:08:44.061493 * Excess found writing body: excess = 1, size = 1056, maxdownload = 1056, bytecount = 1056 01:08:44.110750 * we are done reading and this is set to close, stop send 01:08:44.140770 * abort upload 01:08:44.635313 * shutting down connection #0 === End of file trace314 === Start of file valgrind314 ==234452== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind314 test 0315...[HTTP GET brotli compressed content with broken header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind315 ../src/curl -q --output log/4/curl315.out --include --trace-ascii log/4/trace315 --trace-time http://127.0.0.1:42621/315 --compressed > log/4/stdout315 2> log/4/stderr315 valgrind ERROR ==234597== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 315 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind315 ../src/curl -q --output log/4/curl315.out --include --trace-ascii log/4/trace315 --trace-time http://127.0.0.1:42621/315 --compressed > log/4/stdout315 2> log/4/stderr315 === End of file commands.log === Start of file curl315.out HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: br Content-Length: 1056 === End of file curl315.out === Start of file http_server.log 01:07:49.620655 ====> Client connect 01:07:49.620827 accept_connection 3 returned 4 01:07:49.620912 accept_connection 3 returned 0 01:07:49.627906 Read 93 bytes 01:07:49.628038 Process 93 bytes request 01:07:49.628127 Got request: GET /verifiedserver HTTP/1.1 01:07:49.628189 Are-we-friendly question received 01:07:49.628307 Wrote request (93 bytes) input to log/4/server.input 01:07:49.628398 Identifying ourselves as friends 01:07:49.628571 Response sent (57 bytes) and written to log/4/server.response 01:07:49.628632 special request received, no persistency 01:07:49.628687 ====> Client disconnect 0 01:08:37.190392 ====> Client connect 01:08:37.190526 accept_connection 3 returned 4 01:08:37.190605 accept_connection 3 returned 0 01:08:38.225272 Read 124 bytes 01:08:38.225488 Process 124 bytes request 01:08:38.225589 Got request: GET /315 HTTP/1.1 01:08:38.225662 Serve test number 315 part 0 01:08:38.225896 - request found to be complete (315) 01:08:38.226179 Wrote request (124 bytes) input to log/4/server.input 01:08:38.226291 Send response test315 section 01:08:38.226825 Response sent (387 bytes) and written to log/4/server.response 01:08:38.226894 => persistent connection request ended, awaits new request 01:08:45.298910 Connection closed by client 01:08:45.299102 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 39490 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 315 === End of file server.cmd === Start of file server.input GET /315 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* Accept-Encoding: deflate, gzip, br, zstd === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: br CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind317 ../src/curl -q --output log/3/curl317.out --include --trace-ascii log/3/trace317 --trace-time http://first.host.it.is/we/want/that/page/317 -x 127.0.0.1:46853 -H "Authorization: s3cr3t" --proxy-user testing:this --location > log/3/stdout317 2> log/3/stderr317 Content-Length: 1056 œv]¤<‹é™ƒ¿— <«ª—ßÈÕå0ÈM0{þ‚U .½PÊX5m2O2á'ÌJïÚöûËÅcðx0ŠxñÿÛ/U"FÅøHa#löþw'Ä tøfç$P‰t]O¥Ý­ === End of file server.response === Start of file stderr315 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 1056 0 0 0 0 0 0 --:--:-- 0:00:10 --:--:-- 0 curl: (61) Unrecognized or bad HTTP Content or Transfer-Encoding === End of file stderr315 === Start of file trace315 01:08:36.242755 * Trying 127.0.0.1:42621... 01:08:37.151605 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 41890 01:08:37.291554 * using HTTP/1.x 01:08:37.649294 => Send header, 124 bytes (0x7c) 0000: GET /315 HTTP/1.1 0013: Host: 127.0.0.1:42621 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Accept-Encoding: deflate, gzip, br, zstd 007a: 01:08:38.004368 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:08:38.326671 <= Recv header, 37 bytes (0x25) 0000: Date: Mon, 29 Nov 2004 21:56:53 GMT 01:08:38.427102 <= Recv header, 117 bytes (0x75) 0000: Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/ 0040: 4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 01:08:38.457260 <= Recv header, 23 bytes (0x17) 0000: Vary: Accept-Encoding 01:08:38.515314 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=ISO-8859-1 01:08:43.675894 <= Recv header, 22 bytes (0x16) 0000: Content-Encoding: br 01:08:43.721451 <= Recv header, 22 bytes (0x16) 0000: Content-Length: 1056 01:08:43.804135 <= Recv header, 2 bytes (0x2) 0000: 01:08:43.862980 <= Recv data, 102 bytes (0x66) 0000: ...v.]..<........ <.........0.M0{..U....P.X5m2O2.'.J......c.x0.x 0040: .../U"F..H.a#l..w'.. t.f...$P.t]O..... 01:08:44.582845 * closing connection #0 === End of file trace315 === Start of file valgrind315 ==234597== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind315 test 0317...[HTTP with custom Authorization: and redirect to new host] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind317 ../src/curl -q --output log/3/curl317.out --include --trace-ascii log/3/trace317 --trace-time http://first.host.it.is/we/want/that/page/317 -x 127.0.0.1:46853 -H "Authorization: s3cr3t" --proxy-user testing:this --location > log/3/stdout317 2> log/3/stderr317 valgrind ERROR ==234888== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 317 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind317 ../src/curl -q --output log/3/curl317.out --include --trace-ascii log/3/trace317 --trace-time http://first.host.it.is/we/want/that/page/317 -x 127.0.0.1:46853 -H "Authorization: s3cr3t" --proxy-user testing:this --location > log/3/stdout317 2> log/3/stderr317 === End of file commands.log === Start of file curl317.out HTTP/1.1 302 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Location: http://goto.second.host.now/3170002 Content-Length: 8 Connection: close HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file curl317.out === Start of file http_server.log 01:07:52.890029 ====> Client connect 01:07:52.890206 accept_connection 3 returned 4 01:07:52.890292 accept_connection 3 returned 0 01:07:52.897001 Read 93 bytes 01:07:52.897109 Process 93 bytes request 01:07:52.897207 Got request: GET /verifiedserver HTTP/1.1 01:07:52.897279 Are-we-friendly question received 01:07:52.897406 Wrote request (93 bytes) input to log/3/server.input 01:07:52.897505 Identifying ourselves as friends 01:07:52.897700 Response sent (57 bytes) and written to log/3/server.response 01:07:52.897770 special request received, no persistency 01:07:52.897833 ====> Client disconnect 0 01:08:41.022942 ====> Client connect 01:08:41.023109 accept_connection 3 returned 4 01:08:41.023194 accept_connection 3 returned 0 01:08:42.266003 Read 222 bytes 01:08:42.266189 Process 222 bytes request 01:08:42.266284 Got request: GET http://first.host.it.is/we/want/that/page/317 HTTP/1.1 01:08:42.266357 Serve test number 317 part 0 01:08:42.266580 - request found to be complete (317) 01:08:42.266863 Wrote request (222 bytes) input to log/3/server.input 01:08:42.266973 Send response test317 section 01:08:42.267213 connection close instruction "swsclose" found in response 01:08:42.267445 Response sent (221 bytes) and written to log/3/server.response 01:08:42.267511 instructed to close connection after server-reply 01:08:42.267577 ====> Client disconnect 0 01:08:44.533778 ====> Client connect 01:08:44.533921 accept_connection 3 returned 4 01:08:44.534009 accept_connection 3 returned 0 01:08:44.634133 Read 193 bytes 01:08:44.634334 Process 193 bytes request 01:08:44.634431 Got request: GET http://goto.second.host.now/3170002 HTTP/1.1 01:08:44.634504 Serve test number 317 part 2 01:08:44.634734 - request found to be complete (317) 01:08:44.634964 Wrote request (193 bytes) input to log/3/server.input 01:08:44.635061 Send response test317 section 01:08:44.635334 connection close instruction "swsclose" found in response 01:08:44.635541 Response sent (157 bytes) and written to log/3/server.response 01:08:44.635608 instructed to close connection after server-reply 01:08:44.635669 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 39888 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 317 === End of file server.cmd === Start of file server.input GET http://first.host.it.is/we/want/that/page/317 HTTP/1.1 Host: first.host.it.is Proxy-Authorization: Basic dGVzdGluZzp0aGlz User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive Authorization: s3cr3t GET http://goto.second.host.now/3170002 HTTP/1.1 Host: goto.second.host.now Proxy-Authorization: Basic dGVzdGluZzp0aGlz User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 302 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Location: http://goto.second.host.now/3170002 Content-Length: 8 Connection: close contents HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file server.response === Start of file stderr317 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 8 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind318 ../src/curl -q --output log/5/curl318.out --include --trace-ascii log/5/trace318 --trace-time http://first.host.it.is/we/want/that/page/318 -x 127.0.0.1:46263 -H "Authorization: s3cr3t" --proxy-user testing:this --location-trusted > log/5/stdout318 2> log/5/stderr318 0 0 --:--:-- 0:00:05 --:--:-- 0 100 9 100 9 0 0 1 0 0:00:09 0:00:06 0:00:03 21 === End of file stderr317 === Start of file trace317 01:08:41.088699 * Trying 127.0.0.1:46853... 01:08:41.977884 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 52322 01:08:42.079227 * using HTTP/1.x 01:08:42.219029 * Proxy auth using Basic with user 'testing' 01:08:42.688743 => Send header, 222 bytes (0xde) 0000: GET http://first.host.it.is/we/want/that/page/317 HTTP/1.1 003c: Host: first.host.it.is 0054: Proxy-Authorization: Basic dGVzdGluZzp0aGlz 0081: User-Agent: curl/8.17.0 009a: Accept: */* 00a7: Proxy-Connection: Keep-Alive 00c5: Authorization: s3cr3t 00dc: 01:08:43.046466 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 302 OK. 01:08:43.356730 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:08:43.458701 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 01:08:43.514422 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:08:43.521355 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:08:43.567196 <= Recv header, 46 bytes (0x2e) 0000: Location: http://goto.second.host.now/3170002. 01:08:43.594969 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 8. 01:08:43.638707 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:08:43.728754 <= Recv header, 1 bytes (0x1) 0000: . 01:08:43.973644 * Request completely sent off 01:08:44.230356 * shutting down connection #0 01:08:44.702360 * Issue another request to this URL: 'http://goto.second.host.now/3170002' 01:08:44.872461 * Hostname 127.0.0.1 was found in DNS cache 01:08:44.912634 * Trying 127.0.0.1:46853... 01:08:44.950129 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 50588 01:08:44.956557 * using HTTP/1.x 01:08:44.975035 * Proxy auth using Basic with user 'testing' 01:08:45.021392 => Send header, 193 bytes (0xc1) 0000: GET http://goto.second.host.now/3170002 HTTP/1.1 0032: Host: goto.second.host.now 004e: Proxy-Authorization: Basic dGVzdGluZzp0aGlz 007b: User-Agent: curl/8.17.0 0094: Accept: */* 00a1: Proxy-Connection: Keep-Alive 00bf: 01:08:45.071993 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:08:45.078589 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:08:45.086535 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 01:08:45.094750 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:08:45.099463 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:08:45.104647 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 9. 01:08:45.121276 <= Recv header, 1 bytes (0x1) 0000: . 01:08:45.143556 <= Recv data, 9 bytes (0x9) 0000: contents. 01:08:45.386984 * Connection #1 to host 127.0.0.1:46853 left intact === End of file trace317 === Start of file valgrind317 ==234888== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind317 test 0318...[HTTP with custom Authorization: and redirect to new host] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind318 ../src/curl -q --output log/5/curl318.out --include --trace-ascii log/5/trace318 --trace-time http://first.host.it.is/we/want/that/page/318 -x 127.0.0.1:46263 -H "Authorization: s3cr3t" --proxy-user testing:this --location-trusted > log/5/stdout318 2> log/5/stderr318 valgrind ERROR ==235067== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 318 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind318 ../src/curl -q --output log/5/curl318.out --include --trace-ascii log/5/trace318 --trace-time http://first.host.it.is/we/want/that/page/318 -x 127.0.0.1:46263 -H "Authorization: s3cr3t" --proxy-user testing:this --location-trusted > log/5/stdout318 2> log/5/stderr318 === End of file commands.log === Start of file curl318.out HTTP/1.1 302 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Location: http://goto.second.host.now/3180002 Content-Length: 8 Connection: close HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file curl318.out === Start of file http_server.log 01:07:54.863151 ====> Client connect 01:07:54.863340 accept_connection 3 returned 4 01:07:54.863413 accept_connection 3 returned 0 01:07:54.870043 Read 93 bytes 01:07:54.870154 Process 93 bytes request 01:07:54.870257 Got request: GET /verifiedserver HTTP/1.1 01:07:54.870327 Are-we-friendly question received 01:07:54.870447 Wrote request (93 bytes) input to log/5/server.input 01:07:54.870544 Identifying ourselves as friends 01:07:54.870706 Response sent (57 bytes) and written to log/5/server.response 01:07:54.870770 special request received, no persistency 01:07:54.870830 ====> Client disconnect 0 01:08:42.250450 ====> Client connect 01:08:42.250583 accept_connection 3 returned 4 01:08:42.250653 accept_connection 3 returned 0 01:08:43.329954 Read 222 bytes 01:08:43.330160 Process 222 bytes request 01:08:43.330257 Got request: GET http://first.host.it.is/we/want/that/page/318 HTTP/1.1 01:08:43.330330 Serve test number 318 part 0 01:08:43.330560 - request found to be complete (318) 01:08:43.330883 Wrote request (222 bytes) input to log/5/server.input 01:08:43.330997 Send response test318 section 01:08:43.331255 connection close instruction "swsclose" found in response 01:08:43.331449 Response sent (221 bytes) and written to log/5/server.response 01:08:43.331519 instructed to close connection after server-reply 01:08:43.331583 ====> Client disconnect 0 01:08:45.602984 ====> Client connect 01:08:45.603132 accept_connection 3 returned 4 01:08:45.603221 accept_connection 3 returned 0 01:08:45.695789 Read 216 bytes 01:08:45.696004 Process 216 bytes request 01:08:45.696100 Got request: GET http://goto.second.host.now/3180002 HTTP/1.1 01:08:45.696171 Serve test number 318 part 2 01:08:45.696386 - request found to be complete (318) 01:08:45.696629 Wrote request (216 bytes) input to log/5/server.input 01:08:45.696730 Send response test318 section 01:08:45.697004 connection close instruction "swsclose" found in response 01:08:45.697174 Response sent (157 bytes) and written to log/5/server.response 01:08:45.697243 instructed to close connection after server-reply 01:08:45.697306 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 38712 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 318 === End of file server.cmd === Start of file server.input GET http://first.host.it.is/we/want/that/page/318 HTTP/1.1 Host: first.host.it.is Proxy-Authorization: Basic dGVzdGluZzp0aGlz User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive Authorization: s3cr3t GET http://goto.second.host.now/3180002 HTTP/1.1 Host: goto.second.host.now Proxy-Authorization: Basic dGVzdGluZzp0aGlz User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive Authorization: s3cr3t === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 302 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: texCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind319 ../src/curl -q --output log/8/curl319.out --trace-ascii log/8/trace319 --trace-time http://127.0.0.1:39461/319 --raw > log/8/stdout319 2> log/8/stderr319 t/html Funny-head: yesyes Location: http://goto.second.host.now/3180002 Content-Length: 8 Connection: close contents HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file server.response === Start of file stderr318 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 8 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 9 100 9 0 0 1 0 0:00:09 0:00:06 0:00:03 21 === End of file stderr318 === Start of file trace318 01:08:42.296142 * Trying 127.0.0.1:46263... 01:08:43.105502 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 34676 01:08:43.201769 * using HTTP/1.x 01:08:43.312205 * Proxy auth using Basic with user 'testing' 01:08:43.755632 => Send header, 222 bytes (0xde) 0000: GET http://first.host.it.is/we/want/that/page/318 HTTP/1.1 003c: Host: first.host.it.is 0054: Proxy-Authorization: Basic dGVzdGluZzp0aGlz 0081: User-Agent: curl/8.17.0 009a: Accept: */* 00a7: Proxy-Connection: Keep-Alive 00c5: Authorization: s3cr3t 00dc: 01:08:44.121891 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 302 OK. 01:08:44.443030 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:08:44.547277 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 01:08:44.604465 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:08:44.610296 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:08:44.655990 <= Recv header, 46 bytes (0x2e) 0000: Location: http://goto.second.host.now/3180002. 01:08:44.684304 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 8. 01:08:44.727323 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:08:44.815523 <= Recv header, 1 bytes (0x1) 0000: . 01:08:45.063323 * Request completely sent off 01:08:45.322045 * shutting down connection #0 01:08:45.768587 * Issue another request to this URL: 'http://goto.second.host.now/3180002' 01:08:45.941561 * Hostname 127.0.0.1 was found in DNS cache 01:08:45.982003 * Trying 127.0.0.1:46263... 01:08:46.020554 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 34678 01:08:46.029278 * using HTTP/1.x 01:08:46.048044 * Proxy auth using Basic with user 'testing' 01:08:46.084643 => Send header, 216 bytes (0xd8) 0000: GET http://goto.second.host.now/3180002 HTTP/1.1 0032: Host: goto.second.host.now 004e: Proxy-Authorization: Basic dGVzdGluZzp0aGlz 007b: User-Agent: curl/8.17.0 0094: Accept: */* 00a1: Proxy-Connection: Keep-Alive 00bf: Authorization: s3cr3t 00d6: 01:08:46.134446 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:08:46.141295 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:08:46.149037 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 01:08:46.157024 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:08:46.161633 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:08:46.167490 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 9. 01:08:46.184745 <= Recv header, 1 bytes (0x1) 0000: . 01:08:46.207340 <= Recv data, 9 bytes (0x9) 0000: contents. 01:08:46.454223 * Connection #1 to host 127.0.0.1:46263 left intact === End of file trace318 === Start of file valgrind318 ==235067== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind318 test 0319...[HTTP GET gobbledigook transfer-encoded data in raw mode] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind319 ../src/curl -q --output log/8/curl319.out --trace-ascii log/8/trace319 --trace-time http://127.0.0.1:39461/319 --raw > log/8/stdout319 2> log/8/stderr319 valgrind ERROR ==235247== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 319 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind319 ../src/curl -q --output log/8/curl319.out --trace-ascii log/8/trace319 --trace-time http://127.0.0.1:39461/319 --raw > log/8/stdout319 2> log/8/stderr319 === End of file commands.log === Start of file curl319.out ‹yž«AlalalaËÉÌKU0äRÈÑF\ †1 q` === End of file curl319.out === Start of file http_server.log 01:08:05.707828 ====> Client connect 01:08:05.707995 accept_connection 3 returned 4 01:08:05.708071 accept_connection 3 returned 0 01:08:05.711091 Read 93 bytes 01:08:05.711178 Process 93 bytes request 01:08:05.711264 Got request: GET /verifiedserver HTTP/1.1 01:08:05.711328 Are-we-friendly question received 01:08:05.711434 Wrote request (93 bytes) input to log/8/server.input 01:08:05.711522 Identifying ourselves as friends 01:08:05.711711 Response sent (57 bytes) and written to log/8/server.response 01:08:05.711782 special request received, no persistency 01:08:05.711845 ====> Client disconnect 0 01:08:53.341368 ====> Client connect 01:08:53.341504 accept_connection 3 returned 4 01:08:53.341580 accept_connection 3 returned 0 01:08:54.333377 Read 82 bytes 01:08:54.333578 Process 82 bytes request 01:08:54.333675 Got request: GET /319 HTTP/1.1 01:08:54.333747 Serve test number 319 part 0 01:08:54.333921 - request found to be complete (319) 01:08:54.334174 Wrote request (82 bytes) input to log/8/server.input 01:08:54.334289 Send response test319 section 01:08:54.334511 connection close instruction "swsclose" found in response 01:08:54.334801 Response sent (325 bytes) and written to log/8/server.response 01:08:54.334877 instructed to close connection after server-reply 01:08:54.334946 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 54872 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 319 === End of file server.cmd === Start of file server.input GET /319 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK swsclose Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Content-Type: text/html; charset=ISO-8859-1 Transfer-Encoding: gobbledigook Content-Length: 44 ‹yž«AlalalaËÉÌKU0äRÈÑF\ †1 q` === End of file server.response === Start of file stderr319 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 44 100 44 0 0 9 0 0:00:04 0:00:04 --:--:-- 13 100 44 100 44 0 0 9 0 0:00:04 0:00:04 --:--:-- 13 === End of file stderr319 === StartCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind326 ../src/curl -q --output log/2/curl326.out --trace-ascii log/2/trace326 --trace-time http://127.0.0.1:39863/326 --raw > log/2/stdout326 2> log/2/stderr326 of file trace319 01:08:53.378962 * Trying 127.0.0.1:39461... 01:08:54.289819 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 56044 01:08:54.412713 * using HTTP/1.x 01:08:54.757004 => Send header, 82 bytes (0x52) 0000: GET /319 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:08:55.088394 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 200 OK swsclose 01:08:55.302264 <= Recv header, 37 bytes (0x25) 0000: Date: Mon, 29 Nov 2004 21:56:53 GMT 01:08:55.382385 <= Recv header, 117 bytes (0x75) 0000: Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/ 0040: 4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 01:08:55.459297 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=ISO-8859-1 01:08:55.517684 <= Recv header, 33 bytes (0x21) 0000: Transfer-Encoding: gobbledigook 01:08:55.541992 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 44 01:08:55.619834 <= Recv header, 2 bytes (0x2) 0000: 01:08:55.675857 <= Recv data, 45 bytes (0x2d) 0000: ....y..A..lalala....KU0.R...F\...1....q`..... 01:08:55.828452 * Excess found writing body: excess = 1, size = 44, maxdownload = 44, bytecount = 44 01:08:55.873596 * we are done reading and this is set to close, stop send 01:08:55.900838 * abort upload 01:08:56.356374 * shutting down connection #0 === End of file trace319 === Start of file valgrind319 ==235247== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind319 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 328 in state 4 Runner 2 (id 185908) running test 326 in state 4 Runner 3 (id 185910) running test 331 in state 4 Runner 4 (id 185912) running test 330 in state 4 Runner 5 (id 185914) running test 332 in state 4 Runner 6 (id 185916) running test 327 in state 4 Runner 7 (id 185918) running test 329 in state 4 Runner 8 (id 185920) running test 333 in state 4 test 0326...[HTTP GET chunked data in raw mode] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind326 ../src/curl -q --output log/2/curl326.out --trace-ascii log/2/trace326 --trace-time http://127.0.0.1:39863/326 --raw > log/2/stdout326 2> log/2/stderr326 valgrind ERROR ==235430== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 326 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind326 ../src/curl -q --output log/2/curl326.out --trace-ascii log/2/trace326 --trace-time http://127.0.0.1:39863/326 --raw > log/2/stdout326 2> log/2/stderr326 === End of file commands.log === Start of file curl326.out 18 line 1 line 2 line 3 0 === End of file curl326.out === Start of file http_server.log 01:08:16.972301 ====> Client connect 01:08:16.972489 accept_connection 3 returned 4 01:08:16.972583 accept_connection 3 returned 0 01:08:16.975505 Read 93 bytes 01:08:16.975583 Process 93 bytes request 01:08:16.975668 Got request: GET /verifiedserver HTTP/1.1 01:08:16.975731 Are-we-friendly question received 01:08:16.975847 Wrote request (93 bytes) input to log/2/server.input 01:08:16.975969 Identifying ourselves as friends 01:08:16.976147 Response sent (57 bytes) and written to log/2/server.response 01:08:16.976207 special request received, no persistency 01:08:16.976261 ====> Client disconnect 0 01:09:04.269785 ====> Client connect 01:09:04.269919 accept_connection 3 returned 4 01:09:04.269992 accept_connection 3 returned 0 01:09:05.211457 Read 82 bytes 01:09:05.211658 Process 82 bytes request 01:09:05.211749 Got request: GET /326 HTTP/1.1 01:09:05.211814 Serve test number 326 part 0 01:09:05.211975 - request found to be complete (326) 01:09:05.212210 Wrote request (82 bytes) input to log/2/server.input 01:09:05.212314 Send response test326 section 01:09:05.212728 Response sent (281 bytes) and written to log/2/server.response 01:09:05.212795 => persistent connection request ended, awaits new request 01:09:07.636036 Connection closed by client 01:09:07.636218 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 59896 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 326 === End of file server.cmd === Start of file server.input GET /326 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Content-Type: text/html; charset=ISO-8859-1 Transfer-Encoding: chunked 18 line 1 line 2 line 3 0 === End of file server.response === Start of file stderr326 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 35 0 35 0 0 8 0 --:--:-- 0:00:04 --:--:-- 11 100 35 0 35 0 0 7 0 --:--:-- 0:00:04 --:--:-- 10 === End of file stderr326 === Start of file trace326 01:09:03.347511 * Trying 127.0.0.1:39863... 01:09:04.195457 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 37802 01:09:04.309548 * using HTTP/1.x 01:09:04.631542 => Send header, 82 bytes (0x52) 0000: GET /326 HTTP/1.1 0013: Host: 127.0.0.1:39863 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:09:04.961095 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:09:05.186026 <= Recv header, 37 bytes (0x25) 0000: Date: Mon, 29 Nov 2004 21:56:53 GMT 01:09:05.269431 <= Recv header, 117 bytes (0x75) 0000: Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/ 0040: 4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 01:09:05.338894 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=ISO-8859-1 01:09:05.425322 <= Recv header, 28 bytes (0x1c) 0000: Transfer-Encoding: chunked 01:09:05.504187 <= Recv header, 2 bytes (0x2) 0000: 01:09:05.559439 <= Recv data, 35 bytes (0x23) 0000: 18 0004: line 1. line 2. line 3. 001e: 0 0021: 01:09:06.230228 * Connection #0 to host 127.0.0.1:39863 left intact === End of file trace326 === Start of file valgrind326 ==235430== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind326 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 328 in state 4 Runner 2 (id 185908) running test 334 in state 4 Runner 3 (id 185910) running test 331 in state 4 Runner 4 (id 185912) running test 330 in state 4 Runner 5 (id 185914) running test 332 in state 4 Runner 6 (id 185916) running test 327 in state 4 Runner 7 (id 185918) running test 329 in state 4 Runner 8 (id 185920) running test 333 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 328 in state 4 Runner 2 (id 185908) runningCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind327 ../src/curl -q --output log/6/curl327.out --include --trace-ascii log/6/trace327 --trace-time http://127.0.0.1:38277/we/want/327 -b none -c log/6/cookies327 http://127.0.0.1:38277/we/want/3270002 > log/6/stdout327 2> log/6/stderr327 test 334 in state 4 Runner 3 (id 185910) running test 331 in state 4 Runner 4 (id 185912) running test 330 in state 4 Runner 5 (id 185914) running test 332 in state 4 Runner 6 (id 185916) running test 327 in state 4 Runner 7 (id 185918) running test 329 in state 4 Runner 8 (id 185920) running test 333 in state 4 test 0327...[HTTP with cookiejar without cookies left] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind327 ../src/curl -q --output log/6/curl327.out --include --trace-ascii log/6/trace327 --trace-time http://127.0.0.1:38277/we/want/327 -b none -c log/6/cookies327 http://127.0.0.1:38277/we/want/3270002 > log/6/stdout327 2> log/6/stderr327 valgrind ERROR ==235610== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 327 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind327 ../src/curl -q --output log/6/curl327.out --include --trace-ascii log/6/trace327 --trace-time http://127.0.0.1:38277/we/want/327 -b none -c log/6/cookies327 http://127.0.0.1:38277/we/want/3270002 > log/6/stdout327 2> log/6/stderr327 === End of file commands.log === Start of file cookies327 # Netscape HTTP Cookie File # https://curl.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. === End of file cookies327 === Start of file curl327.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Funny-head: yesyes swsclose Set-Cookie: foobar=name; expires=Thu, 22 Nov 2525 10:54:11 GMT; === End of file curl327.out === Start of file http_server.log 01:08:33.743087 ====> Client connect 01:08:33.743251 accept_connection 3 returned 4 01:08:33.743328 accept_connection 3 returned 0 01:08:33.750587 Read 93 bytes 01:08:33.750718 Process 93 bytes request 01:08:33.750818 Got request: GET /verifiedserver HTTP/1.1 01:08:33.750886 Are-we-friendly question received 01:08:33.751012 Wrote request (93 bytes) input to log/6/server.input 01:08:33.751112 Identifying ourselves as friends 01:08:33.751270 Response sent (57 bytes) and written to log/6/server.response 01:08:33.751333 special request received, no persistency 01:08:33.751390 ====> Client disconnect 0 01:09:21.173304 ====> Client connect 01:09:21.173461 accept_connection 3 returned 4 01:09:21.173545 accept_connection 3 returned 0 01:09:22.128527 Read 90 bytes 01:09:22.128746 Process 90 bytes request 01:09:22.128848 Got request: GET /we/want/327 HTTP/1.1 01:09:22.128922 Serve test number 327 part 0 01:09:22.129125 - request found to be complete (327) 01:09:22.129394 Wrote request (90 bytes) input to log/6/server.input 01:09:22.129507 Send response test327 section 01:09:22.129735 connection close instruction "swsclose" found in response 01:09:22.129912 Response sent (194 bytes) and written to log/6/server.response 01:09:22.129980 instructed to close connection after server-reply 01:09:22.130043 ====> Client disconnect 0 01:09:31.551116 ====> Client connect 01:09:31.551262 accept_connection 3 returned 4 01:09:31.551344 accept_connection 3 returned 0 01:09:31.698610 Read 115 bytes 01:09:31.698818 Process 115 bytes request 01:09:31.698915 Got request: GET /we/want/3270002 HTTP/1.1 01:09:31.698986 Serve test number 327 part 2 01:09:31.699188 - request found to be complete (327) 01:09:31.699406 Wrote request (115 bytes) input to log/6/server.input 01:09:31.699497 Send response test327 section 01:09:31.699733 connection close instruction "swsclose" found in response 01:09:31.699913 Response sent (194 bytes) and written to log/6/server.response 01:09:31.699980 instructed to close connection after server-reply 01:09:31.700040 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 35918 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 327 === End of file server.cmd === Start of file server.input GET /we/want/327 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* GET /we/want/3270002 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* Cookie: foobar=name === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Funny-head: yesyes swsclose Set-Cookie: foobar=name; expires=Thu, 22 Nov 2525 10:54:11 GMT; HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Funny-head: yesyes swsclose Set-Cookie: foobar=name; expires=Thu, 01 Jan 1970 00:00:00 GMT; === End of file server.response === Start of file stderr327 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 === End of file stderr327 === Start of file stdout327 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Funny-head: yesyes swsclose Set-Cookie: foobar=name; expires=Thu, 01 Jan 1970 00:00:00 GMT; === End of file stdout327 === Start of file trace327 01:09:19.434008 * WARNING: failed to open cookie file "none" 01:09:21.452373 * Trying 127.0.0.1:38277... 01:09:22.086766 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 43618 01:09:22.190270 * using HTTP/1.x 01:09:22.552153 => Send header, 90 bytes (0x5a) 0000: GET /we/want/327 HTTP/1.1 001b: Host: 127.0.0.1:38277 0032: User-Agent: curl/8.17.0 004b: Accept: */* 0058: 01:09:22.886967 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:09:23.187947 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:09:23.290415 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:09:23.352322 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:09:23.358261 <= Recv header, 28 bytes (0x1c) 0000: Funny-head: yesyes swsclose. 01:09:23.652906 * Added cookie foobar="name" for domain 127.0.0.1, path /we/want/, expire 1797210540 01:09:23.670514 <= Recv header, 64 bytes (0x40) 0000: Set-Cookie: foobar=name; expires=Thu, 22 Nov 2525 10:54:11 GMT;. 01:09:23.709917 * no chunk, no close, no size. Assume close to signal end 01:09:23.765613 <= Recv header, 1 bytes (0x1) 0000: . 01:09:23.866114 * abort upload 01:09:23.902914 <= Recv data, 0 bytes (0x0) 01:09:24.407013 * shutting down connection #0 01:09:31.777160 * WARNING: failed to open cookie file "none" 01:09:31.875020 * Hostname 127.0.0.1 was found in DNS cache 01:09:31.930087 * Trying 127.0.0.1:38277... 01:09:31.964271 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 58188 01:0CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind328 ../src/curl -q --output log/1/curl328.out --include --trace-ascii log/1/trace328 --trace-time http://127.0.0.1:40641/hello/328 --compressed > log/1/stdout328 2> log/1/stderr328 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind332 ../src/curl -q --output log/5/curl332.out --include --trace-ascii log/5/trace332 --trace-time tftp://127.0.0.1:35535//332 --tftp-blksize 400 > log/5/stdout332 2> log/5/stderr332 9:31.971069 * using HTTP/1.x 01:09:32.087058 => Send header, 115 bytes (0x73) 0000: GET /we/want/3270002 HTTP/1.1 001f: Host: 127.0.0.1:38277 0036: User-Agent: curl/8.17.0 004f: Accept: */* 005c: Cookie: foobar=name 0071: 01:09:32.120153 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:09:32.131982 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:09:32.141398 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:09:32.148938 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:09:32.153499 <= Recv header, 28 bytes (0x1c) 0000: Funny-head: yesyes swsclose. 01:09:32.235836 * Replaced cookie foobar="name" for domain 127.0.0.1, path /we/want/, expire 1 01:09:32.239659 <= Recv header, 64 bytes (0x40) 0000: Set-Cookie: foobar=name; expires=Thu, 01 Jan 1970 00:00:00 GMT;. 01:09:32.251270 * no chunk, no close, no size. Assume close to signal end 01:09:32.255788 <= Recv header, 1 bytes (0x1) 0000: . 01:09:32.268102 * abort upload 01:09:32.270970 <= Recv data, 0 bytes (0x0) 01:09:32.310535 * shutting down connection #1 === End of file trace327 === Start of file valgrind327 ==235610== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind327 test 0328...[HTTP with "Content-Encoding: none] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind328 ../src/curl -q --output log/1/curl328.out --include --trace-ascii log/1/trace328 --trace-time http://127.0.0.1:40641/hello/328 --compressed > log/1/stdout328 2> log/1/stderr328 valgrind ERROR ==235919== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 328 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind328 ../src/curl -q --output log/1/curl328.out --include --trace-ascii log/1/trace328 --trace-time http://127.0.0.1:40641/hello/328 --compressed > log/1/stdout328 2> log/1/stderr328 === End of file commands.log === Start of file curl328.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Type: text/html Content-Encoding: none Content-Length: 38 Q- What did 0 say to 8? A- Nice Belt === End of file curl328.out === Start of file http_server.log 01:08:49.188359 ====> Client connect 01:08:49.188583 accept_connection 3 returned 4 01:08:49.188671 accept_connection 3 returned 0 01:08:49.196822 Read 93 bytes 01:08:49.196936 Process 93 bytes request 01:08:49.197039 Got request: GET /verifiedserver HTTP/1.1 01:08:49.197112 Are-we-friendly question received 01:08:49.197243 Wrote request (93 bytes) input to log/1/server.input 01:08:49.197347 Identifying ourselves as friends 01:08:49.197525 Response sent (57 bytes) and written to log/1/server.response 01:08:49.197595 special request received, no persistency 01:08:49.197659 ====> Client disconnect 0 01:09:36.715556 ====> Client connect 01:09:36.715701 accept_connection 3 returned 4 01:09:36.715795 accept_connection 3 returned 0 01:09:37.760787 Read 130 bytes 01:09:37.760990 Process 130 bytes request 01:09:37.761084 Got request: GET /hello/328 HTTP/1.1 01:09:37.761156 Serve test number 328 part 0 01:09:37.761334 - request found to be complete (328) 01:09:37.761583 Wrote request (130 bytes) input to log/1/server.input 01:09:37.761692 Send response test328 section 01:09:37.762012 Response sent (157 bytes) and written to log/1/server.response 01:09:37.762081 => persistent connection request ended, awaits new request 01:09:40.352519 Connection closed by client 01:09:40.352732 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 41968 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 328 === End of file server.cmd === Start of file server.input GET /hello/328 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* Accept-Encoding: deflate, gzip, br, zstd === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Type: text/html Content-Encoding: none Content-Length: 38 Q- What did 0 say to 8? A- Nice Belt === End of file server.response === Start of file stderr328 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 38 100 38 0 0 8 0 0:00:04 0:00:04 --:--:-- 11 100 38 100 38 0 0 7 0 0:00:05 0:00:04 0:00:01 10 === End of file stderr328 === Start of file trace328 01:09:35.759033 * Trying 127.0.0.1:40641... 01:09:36.691929 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 32842 01:09:36.825419 * using HTTP/1.x 01:09:37.186303 => Send header, 130 bytes (0x82) 0000: GET /hello/328 HTTP/1.1 0019: Host: 127.0.0.1:40641 0030: User-Agent: curl/8.17.0 0049: Accept: */* 0056: Accept-Encoding: deflate, gzip, br, zstd 0080: 01:09:37.551101 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:09:37.878814 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:09:38.029833 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:09:38.126116 <= Recv header, 23 bytes (0x17) 0000: Content-Encoding: none. 01:09:38.163612 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 38. 01:09:38.249815 <= Recv header, 1 bytes (0x1) 0000: . 01:09:38.310568 <= Recv data, 38 bytes (0x26) 0000: Q- What did 0 say to 8? A- Nice Belt!. 01:09:38.887741 * Connection #0 to host 127.0.0.1:40641 left intact === End of file trace328 === Start of file valgrind328 ==235919== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind328 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/tftpserver.pl --pidfile "log/5/server/tftp_server.pid" --portfile "log/5/server/tftp_server.port" --logfile "log/5/tftp_server.log" --logdir "log/5" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: TFTP server on PID 235972 port 35535 * pid tftp => 235972 235972 test 0332...[TFTP retrieve with blksize 400] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind332 ../src/curl -q --output log/5/curl332.out --include --trace-ascii log/5/trace332 --trace-time tftp://127.0.0.1:35535//332 --tftp-blksize 400 > log/5/stdout332 2> log/5/stderr332 valgrind ERROR ==236319== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 332 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind332 ../src/curl -q --output log/5/curl332.out --include --trace-ascii log/5/trace332 --trace-time tftp://127.0.0.1:35535//332 --tftp-blksize 400 > log/5/stdout332 2> log/5/stderr332 === End of file commands.log === Start of file curl332.out a chunk of data returned to client === End of file curl332.out === Start of file server.cmd Testnum 332 === End of file server.cmd ===CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind330 ../src/curl -q --output log/4/curl330.out --include --trace-ascii log/4/trace330 --trace-time http://first.host.it.is/we/want/that/page/330 -x 127.0.0.1:42621 -H "Cookie: test=yes" --location > log/4/stdout330 2> log/4/stderr330 Start of file server.input opcode = 1 mode = octet tsize = 0 blksize = 400 timeout = 5 filename = /332 === End of file server.input === Start of file stderr332 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 36 0 36 0 0 54 0 --:--:-- --:--:-- --:--:-- 54 100 36 0 36 0 0 43 0 --:--:-- --:--:-- --:--:-- 0 100 36 0 36 0 0 41 0 --:--:-- --:--:-- --:--:-- 41 === End of file stderr332 === Start of file tftp_server.log 01:08:50.068244 Wrote pid 235972 to log/5/server/tftp_server.pid 01:08:50.070953 Wrote port 35535 to log/5/server/tftp_server.port 01:08:50.071121 Running IPv4 version on port UDP/35535 01:09:38.953510 trying to get file: /332 mode 1 01:09:38.953865 requested test number 332 part 0 01:09:38.960498 file opened and all is good 01:09:38.961041 write 01:09:38.961327 read 01:09:39.485098 read: 4 01:09:39.485777 end of one transfer === End of file tftp_server.log === Start of file trace332 01:09:38.461875 * Trying 127.0.0.1:35535... 01:09:38.933480 * Established connection to 127.0.0.1 (127.0.0.1 port 35535) from port 4294967295 01:09:39.111848 * set timeouts for state 0; Total 297460, retry 5 maxtry 50 01:09:39.495159 <= Recv data, 36 bytes (0x24) 0000: a chunk of.data.returned. to client. 01:09:39.840958 * Connected for receive 01:09:39.850550 * set timeouts for state 1; Total 0, retry 5 maxtry 3 01:09:40.311750 * shutting down connection #0 === End of file trace332 === Start of file valgrind332 ==236319== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind332 test 0330...[HTTP with custom Cookie: and redirect to new host] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind330 ../src/curl -q --output log/4/curl330.out --include --trace-ascii log/4/trace330 --trace-time http://first.host.it.is/we/want/that/page/330 -x 127.0.0.1:42621 -H "Cookie: test=yes" --location > log/4/stdout330 2> log/4/stderr330 valgrind ERROR ==235962== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 330 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind330 ../src/curl -q --output log/4/curl330.out --include --trace-ascii log/4/trace330 --trace-time http://first.host.it.is/we/want/that/page/330 -x 127.0.0.1:42621 -H "Cookie: test=yes" --location > log/4/stdout330 2> log/4/stderr330 === End of file commands.log === Start of file curl330.out HTTP/1.1 302 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Location: http://goto.second.host.now/3300002 Content-Length: 8 Connection: close HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file curl330.out === Start of file http_server.log 01:08:49.510642 ====> Client connect 01:08:49.510836 accept_connection 3 returned 4 01:08:49.510915 accept_connection 3 returned 0 01:08:49.517805 Read 93 bytes 01:08:49.517987 Process 93 bytes request 01:08:49.518094 Got request: GET /verifiedserver HTTP/1.1 01:08:49.518171 Are-we-friendly question received 01:08:49.518303 Wrote request (93 bytes) input to log/4/server.input 01:08:49.518416 Identifying ourselves as friends 01:08:49.518616 Response sent (57 bytes) and written to log/4/server.response 01:08:49.518687 special request received, no persistency 01:08:49.518752 ====> Client disconnect 0 01:09:37.662944 ====> Client connect 01:09:37.663089 accept_connection 3 returned 4 01:09:37.663166 accept_connection 3 returned 0 01:09:38.894175 Read 172 bytes 01:09:38.894362 Process 172 bytes request 01:09:38.894465 Got request: GET http://first.host.it.is/we/want/that/page/330 HTTP/1.1 01:09:38.894540 Serve test number 330 part 0 01:09:38.894745 - request found to be complete (330) 01:09:38.895099 Wrote request (172 bytes) input to log/4/server.input 01:09:38.895217 Send response test330 section 01:09:38.895456 connection close instruction "swsclose" found in response 01:09:38.895726 Response sent (221 bytes) and written to log/4/server.response 01:09:38.895798 instructed to close connection after server-reply 01:09:38.895862 ====> Client disconnect 0 01:09:41.173455 ====> Client connect 01:09:41.173604 accept_connection 3 returned 4 01:09:41.173693 accept_connection 3 returned 0 01:09:41.254437 Read 148 bytes 01:09:41.254644 Process 148 bytes request 01:09:41.254750 Got request: GET http://goto.second.host.now/3300002 HTTP/1.1 01:09:41.254832 Serve test number 330 part 2 01:09:41.255052 - request found to be complete (330) 01:09:41.255309 Wrote request (148 bytes) input to log/4/server.input 01:09:41.255420 Send response test330 section 01:09:41.255706 connection close instruction "swsclose" found in response 01:09:41.255939 Response sent (157 bytes) and written to log/4/server.response 01:09:41.256014 instructed to close connection after server-reply 01:09:41.256082 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 39232 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 330 === End of file server.cmd === Start of file server.input GET http://first.host.it.is/we/want/that/page/330 HTTP/1.1 Host: first.host.it.is User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive Cookie: test=yes GET http://goto.second.host.now/3300002 HTTP/1.1 Host: goto.second.host.now User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 302 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Location: http://goto.second.host.now/3300002 Content-Length: 8 Connection: close contents HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file server.response === Start of file stderr330 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 8 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 9 100 9 0 0 1 0 0:00:09 0:00:06 0:00:03 22 === End of file stderr330 === Start of file trace330 01:09:36.726359 * Trying 127.0.0.1:42621... 01:09:37.655490 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 51706 01:09:37.792525 * using HTTP/1.x 01:09:38.319344 => Send header, 172 bytes (0xac) 0000: GET http://first.host.it.is/CMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind333 ../src/curl -q --output log/8/curl333.out --include --trace-ascii log/8/trace333 --trace-time --no-proxy "hey" http://127.0.0.1:47/333 > log/8/stdout333 2> log/8/stderr333 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind331 ../src/curl -q --output log/3/curl331.out --include --trace-ascii log/3/trace331 --trace-time -x http://127.0.0.1:46853 http://moo/we/want/331 -b none http://moo/we/want/3310002 > log/3/stdout331 2> log/3/stderr331 we/want/that/page/330 HTTP/1.1 003c: Host: first.host.it.is 0054: User-Agent: curl/8.17.0 006d: Accept: */* 007a: Proxy-Connection: Keep-Alive 0098: Cookie: test=yes 00aa: 01:09:38.686559 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 302 OK. 01:09:39.003449 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:09:39.110028 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 01:09:39.172638 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:09:39.179760 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:09:39.227564 <= Recv header, 46 bytes (0x2e) 0000: Location: http://goto.second.host.now/3300002. 01:09:39.255458 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 8. 01:09:39.300966 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:09:39.385831 <= Recv header, 1 bytes (0x1) 0000: . 01:09:39.622734 * Request completely sent off 01:09:39.868283 * shutting down connection #0 01:09:40.344692 * Issue another request to this URL: 'http://goto.second.host.now/3300002' 01:09:40.513820 * Hostname 127.0.0.1 was found in DNS cache 01:09:40.553149 * Trying 127.0.0.1:42621... 01:09:40.587849 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 51710 01:09:40.594320 * using HTTP/1.x 01:09:40.642111 => Send header, 148 bytes (0x94) 0000: GET http://goto.second.host.now/3300002 HTTP/1.1 0032: Host: goto.second.host.now 004e: User-Agent: curl/8.17.0 0067: Accept: */* 0074: Proxy-Connection: Keep-Alive 0092: 01:09:40.690351 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:09:40.697321 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:09:40.706428 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 01:09:40.715305 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:09:40.720294 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:09:40.726671 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 9. 01:09:40.745042 <= Recv header, 1 bytes (0x1) 0000: . 01:09:40.767354 <= Recv data, 9 bytes (0x9) 0000: contents. 01:09:40.993027 * Connection #1 to host 127.0.0.1:42621 left intact === End of file trace330 === Start of file valgrind330 ==235962== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind330 test 0333...[Try a non-boolean command line option with --no-] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind333 ../src/curl -q --output log/8/curl333.out --include --trace-ascii log/8/trace333 --trace-time --no-proxy "hey" http://127.0.0.1:47/333 > log/8/stdout333 2> log/8/stderr333 valgrind ERROR ==236547== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 333 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind333 ../src/curl -q --output log/8/curl333.out --include --trace-ascii log/8/trace333 --trace-time --no-proxy "hey" http://127.0.0.1:47/333 > log/8/stdout333 2> log/8/stderr333 === End of file commands.log === Start of file server.cmd Testnum 333 === End of file server.cmd === Start of file stderr333 curl: option --no-proxy: the given option cannot be reversed with a --no- prefix curl: try 'curl --help' for more information === End of file stderr333 === Start of file valgrind333 ==236547== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind333 test 0331...[HTTP with cookie using host name 'moo'] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind331 ../src/curl -q --output log/3/curl331.out --include --trace-ascii log/3/trace331 --trace-time -x http://127.0.0.1:46853 http://moo/we/want/331 -b none http://moo/we/want/3310002 > log/3/stdout331 2> log/3/stderr331 valgrind ERROR ==236028== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 331 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind331 ../src/curl -q --output log/3/curl331.out --include --trace-ascii log/3/trace331 --trace-time -x http://127.0.0.1:46853 http://moo/we/want/331 -b none http://moo/we/want/3310002 > log/3/stdout331 2> log/3/stderr331 === End of file commands.log === Start of file curl331.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Content-Length: 4 Set-Cookie: moo=yes; hej === End of file curl331.out === Start of file http_server.log 01:08:48.944776 ====> Client connect 01:08:48.944931 accept_connection 3 returned 4 01:08:48.945004 accept_connection 3 returned 0 01:08:48.951861 Read 93 bytes 01:08:48.951957 Process 93 bytes request 01:08:48.952040 Got request: GET /verifiedserver HTTP/1.1 01:08:48.952102 Are-we-friendly question received 01:08:48.952205 Wrote request (93 bytes) input to log/3/server.input 01:08:48.952291 Identifying ourselves as friends 01:08:48.952456 Response sent (57 bytes) and written to log/3/server.response 01:08:48.952526 special request received, no persistency 01:08:48.952578 ====> Client disconnect 0 01:09:36.669571 ====> Client connect 01:09:36.669707 accept_connection 3 returned 4 01:09:36.669786 accept_connection 3 returned 0 01:09:37.885318 Read 118 bytes 01:09:37.885526 Process 118 bytes request 01:09:37.885631 Got request: GET http://moo/we/want/331 HTTP/1.1 01:09:37.885720 Serve test number 331 part 0 01:09:37.885926 - request found to be complete (331) 01:09:37.886214 Wrote request (118 bytes) input to log/3/server.input 01:09:37.886336 Send response test331 section 01:09:37.886741 Response sent (145 bytes) and written to log/3/server.response 01:09:37.886817 => persistent connection request ended, awaits new request 01:09:41.069173 Read 139 bytes 01:09:41.069381 Process 139 bytes request 01:09:41.069473 Got request: GET http://moo/we/want/3310002 HTTP/1.1 01:09:41.069542 Serve test number 331 part 2 01:09:41.069718 - request found to be complete (331) 01:09:41.069918 Wrote request (139 bytes) input to log/3/server.input 01:09:41.070006 Send response test331 section 01:09:41.070224 connection close instruction "swsclose" found in response 01:09:41.070419 Response sent (148 bytes) and written to log/3/server.response 01:09:41.070485 instructed to close connection after server-reply 01:09:41.070546 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 50604 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 331 === End of file server.cmd === Start of file server.input GET http://moo/we/want/331 HTTP/1.1 Host: moo User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://moo/we/want/3310002 HTTP/1.1 Host: moo User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive Cookie: moo=yes === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Content-Length: 4 Set-Cookie: moo=yes; hej HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/htmCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind329 ../src/curl -q --output log/7/curl329.out --include --trace-ascii log/7/trace329 --trace-time http://127.0.0.1:34897/we/want/329 -b log/7/jar329.txt -b log/7/jar329-2.txt -H "Host: host.foo.com" http://127.0.0.1:34897/we/want/3290002 > log/7/stdout329 2> log/7/stderr329 l Content-Length: 0 Funny-head: yesyes swsclose === End of file server.response === Start of file stderr331 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 100 4 0 4 0 0 0 0 --:--:-- 0:00:05 --:--:-- 1 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 === End of file stderr331 === Start of file stdout331 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Content-Length: 0 Funny-head: yesyes swsclose === End of file stdout331 === Start of file trace331 01:09:34.510740 * WARNING: failed to open cookie file "none" 01:09:36.953088 * Trying 127.0.0.1:46853... 01:09:37.614361 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 56464 01:09:37.759988 * using HTTP/1.x 01:09:38.310872 => Send header, 118 bytes (0x76) 0000: GET http://moo/we/want/331 HTTP/1.1 0025: Host: moo 0030: User-Agent: curl/8.17.0 0049: Accept: */* 0056: Proxy-Connection: Keep-Alive 0074: 01:09:38.675603 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:09:38.994887 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:09:39.106482 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:09:39.174809 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:09:39.202273 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 4. 01:09:39.480884 * Added cookie moo="yes" for domain moo, path /we/want/, expire 0 01:09:39.498514 <= Recv header, 21 bytes (0x15) 0000: Set-Cookie: moo=yes;. 01:09:39.581604 <= Recv header, 1 bytes (0x1) 0000: . 01:09:39.640107 <= Recv data, 4 bytes (0x4) 0000: hej. 01:09:40.188566 * Connection #0 to host 127.0.0.1:46853 left intact 01:09:40.894845 * WARNING: failed to open cookie file "none" 01:09:41.262789 * Reusing existing http: connection with proxy 127.0.0.1 01:09:41.456180 => Send header, 139 bytes (0x8b) 0000: GET http://moo/we/want/3310002 HTTP/1.1 0029: Host: moo 0034: User-Agent: curl/8.17.0 004d: Accept: */* 005a: Proxy-Connection: Keep-Alive 0078: Cookie: moo=yes 0089: 01:09:41.503866 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:09:41.516466 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:09:41.525678 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:09:41.533748 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:09:41.539462 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 0. 01:09:41.543678 <= Recv header, 28 bytes (0x1c) 0000: Funny-head: yesyes swsclose. 01:09:41.556986 <= Recv header, 1 bytes (0x1) 0000: . 01:09:41.609092 * Connection #0 to host 127.0.0.1:46853 left intact === End of file trace331 === Start of file valgrind331 ==236028== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind331 setenv TZ = GMT test 0329...[HTTP cookie with Max-Age=0] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind329 ../src/curl -q --output log/7/curl329.out --include --trace-ascii log/7/trace329 --trace-time http://127.0.0.1:34897/we/want/329 -b log/7/jar329.txt -b log/7/jar329-2.txt -H "Host: host.foo.com" http://127.0.0.1:34897/we/want/3290002 > log/7/stdout329 2> log/7/stderr329 valgrind ERROR ==235965== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 329 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind329 ../src/curl -q --output log/7/curl329.out --include --trace-ascii log/7/trace329 --trace-time http://127.0.0.1:34897/we/want/329 -b log/7/jar329.txt -b log/7/jar329-2.txt -H "Host: host.foo.com" http://127.0.0.1:34897/we/want/3290002 > log/7/stdout329 2> log/7/stderr329 === End of file commands.log === Start of file curl329.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Funny-head: yesyes Set-Cookie: testn1=yes; path=/we/want/; domain=.host.foo.com; Max-Age=-1; Set-Cookie: test=yes; path=/we/want/; domain=.host.foo.com; Max-Age=0; Content-Length: 4 boo === End of file curl329.out === Start of file http_server.log 01:08:48.595053 ====> Client connect 01:08:48.595218 accept_connection 3 returned 4 01:08:48.595302 accept_connection 3 returned 0 01:08:48.603819 Read 93 bytes 01:08:48.603914 Process 93 bytes request 01:08:48.604014 Got request: GET /verifiedserver HTTP/1.1 01:08:48.604089 Are-we-friendly question received 01:08:48.604205 Wrote request (93 bytes) input to log/7/server.input 01:08:48.604303 Identifying ourselves as friends 01:08:48.604477 Response sent (57 bytes) and written to log/7/server.response 01:08:48.604546 special request received, no persistency 01:08:48.604606 ====> Client disconnect 0 01:09:37.551375 ====> Client connect 01:09:37.551520 accept_connection 3 returned 4 01:09:37.551601 accept_connection 3 returned 0 01:09:38.878276 Read 116 bytes 01:09:38.878471 Process 116 bytes request 01:09:38.878571 Got request: GET /we/want/329 HTTP/1.1 01:09:38.878644 Serve test number 329 part 0 01:09:38.878854 - request found to be complete (329) 01:09:38.879158 Wrote request (116 bytes) input to log/7/server.input 01:09:38.879269 Send response test329 section 01:09:38.879648 Response sent (297 bytes) and written to log/7/server.response 01:09:38.879717 => persistent connection request ended, awaits new request 01:09:42.149085 Read 111 bytes 01:09:42.149306 Process 111 bytes request 01:09:42.149416 Got request: GET /we/want/3290002 HTTP/1.1 01:09:42.149496 Serve test number 329 part 2 01:09:42.149721 - request found to be complete (329) 01:09:42.149977 Wrote request (111 bytes) input to log/7/server.input 01:09:42.150078 Send response test329 section 01:09:42.150476 Response sent (62 bytes) and written to log/7/server.response 01:09:42.150552 => persistent connection request ended, awaits new request 01:09:42.627512 Connection closed by client 01:09:42.627721 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 58346 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file jar329.txt .host.foo.com TRUE /we/want/ FALSE 22147483647 test no .host.foo.com TRUE /we/want/ FALSE 22147483647 tester yes === End of file jar329.txt === Start of file server.cmd Testnum 329 === End of file server.cmd === Start of file server.input GET /we/want/329 HTTP/1.1 Host: host.foo.com User-Agent: curl/8.17.0 Accept: */* Cookie: tester=yes; test=no GET /we/want/3290002 HTTP/1.1 Host: host.foo.com User-Agent: curl/8.17.0 Accept: */* Cookie: tester=yes === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind334 ../src/curl -q --output log/2/curl334.out --include --trace-ascii log/2/trace334 --trace-time http://127.0.0.1:39863/want/334 > log/2/stdout334 2> log/2/stderr334 LZ: 185925 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Funny-head: yesyes Set-Cookie: testn1=yes; path=/we/want/; domain=.host.foo.com; Max-Age=-1; Set-Cookie: test=yes; path=/we/want/; domain=.host.foo.com; Max-Age=0; Content-Length: 4 boo HTTP/1.1 200 OK Funny-head: yesyes Content-Length: 4 moo === End of file server.response === Start of file stderr329 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 100 4 0 4 0 0 0 0 --:--:-- 0:00:05 --:--:-- 1 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 4 100 4 0 0 6 0 --:--:-- --:--:-- --:--:-- 21 === End of file stderr329 === Start of file stdout329 HTTP/1.1 200 OK Funny-head: yesyes Content-Length: 4 moo === End of file stdout329 === Start of file trace329 01:09:35.258662 * WARNING: failed to open cookie file "log/7/jar329-2.txt" 01:09:37.807317 * Trying 127.0.0.1:34897... 01:09:38.543482 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 59224 01:09:38.665349 * using HTTP/1.x 01:09:39.304351 => Send header, 116 bytes (0x74) 0000: GET /we/want/329 HTTP/1.1 001b: Host: host.foo.com 002f: User-Agent: curl/8.17.0 0048: Accept: */* 0055: Cookie: tester=yes; test=no 0072: 01:09:39.681850 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:09:39.995318 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:09:40.099756 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:09:40.151955 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:09:40.157698 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:09:40.444375 * Added cookie testn1="yes" for domain host.foo.com, path /we/want/, expire 1 01:09:40.457686 <= Recv header, 75 bytes (0x4b) 0000: Set-Cookie: testn1=yes; path=/we/want/; domain=.host.foo.com; Ma 0040: x-Age=-1; 01:09:40.550006 * Replaced cookie test="yes" for domain host.foo.com, path /we/want/, expire 1 01:09:40.553805 <= Recv header, 72 bytes (0x48) 0000: Set-Cookie: test=yes; path=/we/want/; domain=.host.foo.com; Max- 0040: Age=0; 01:09:40.585560 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 4 01:09:40.673215 <= Recv header, 2 bytes (0x2) 0000: 01:09:40.732064 <= Recv data, 4 bytes (0x4) 0000: boo. 01:09:41.287649 * Connection #0 to host 127.0.0.1:34897 left intact 01:09:42.032799 * WARNING: failed to open cookie file "log/7/jar329-2.txt" 01:09:42.437728 * Reusing existing http: connection with host 127.0.0.1 01:09:42.536341 => Send header, 111 bytes (0x6f) 0000: GET /we/want/3290002 HTTP/1.1 001f: Host: host.foo.com 0033: User-Agent: curl/8.17.0 004c: Accept: */* 0059: Cookie: tester=yes 006d: 01:09:42.576121 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:09:42.591544 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:09:42.601793 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 4 01:09:42.613331 <= Recv header, 2 bytes (0x2) 0000: 01:09:42.620288 <= Recv data, 4 bytes (0x4) 0000: moo. 01:09:42.680585 * Connection #0 to host 127.0.0.1:34897 left intact === End of file trace329 === Start of file valgrind329 ==235965== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind329 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 336 in state 4 Runner 2 (id 185908) running test 334 in state 4 Runner 3 (id 185910) running test 340 in state 4 Runner 4 (id 185912) running test 338 in state 4 Runner 5 (id 185914) running test 337 in state 4 Runner 6 (id 185916) running test 335 in state 4 Runner 7 (id 185918) running test 341 in state 4 Runner 8 (id 185920) running test 339 in state 4 test 0334...[HTTP 204 No content with chunked header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind334 ../src/curl -q --output log/2/curl334.out --include --trace-ascii log/2/trace334 --trace-time http://127.0.0.1:39863/want/334 > log/2/stdout334 2> log/2/stderr334 valgrind ERROR ==236706== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 334 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind334 ../src/curl -q --output log/2/curl334.out --include --trace-ascii log/2/trace334 --trace-time http://127.0.0.1:39863/want/334 > log/2/stdout334 2> log/2/stderr334 === End of file commands.log === Start of file curl334.out HTTP/1.1 204 No Content Date: Mon, 13 Nov 2000 13:41:09 GMT Server: myown/1.0 Transfer-Encoding: chunked === End of file curl334.out === Start of file http_server.log 01:09:10.880614 ====> Client connect 01:09:10.880766 accept_connection 3 returned 4 01:09:10.880842 accept_connection 3 returned 0 01:09:10.888322 Read 93 bytes 01:09:10.888441 Process 93 bytes request 01:09:10.888539 Got request: GET /verifiedserver HTTP/1.1 01:09:10.888611 Are-we-friendly question received 01:09:10.888739 Wrote request (93 bytes) input to log/2/server.input 01:09:10.888843 Identifying ourselves as friends 01:09:10.889019 Response sent (57 bytes) and written to log/2/server.response 01:09:10.889089 special request received, no persistency 01:09:10.889164 ====> Client disconnect 0 01:09:58.418442 ====> Client connect 01:09:58.418595 accept_connection 3 returned 4 01:09:58.418669 accept_connection 3 returned 0 01:09:59.385394 Read 87 bytes 01:09:59.385606 Process 87 bytes request 01:09:59.385706 Got request: GET /want/334 HTTP/1.1 01:09:59.385772 Serve test number 334 part 0 01:09:59.385923 - request found to be complete (334) 01:09:59.386146 Wrote request (87 bytes) input to log/2/server.input 01:09:59.386250 Send response test334 section 01:09:59.386546 Response sent (106 bytes) and written to log/2/server.response 01:09:59.386608 => persistent connection request ended, awaits new request 01:10:01.490149 Connection closed by client 01:10:01.490347 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 37806 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 334 === End of file server.cmd === Start of file server.input GET /want/334 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 204 No Content Date: Mon, 13 Nov 2000 13:41:09 GMT Server: myown/1.0 Transfer-Encoding: chunked === End of file server.response === Start of file stderr334 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left SpeCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind336 ../src/curl -q --output log/1/curl336.out --include --trace-ascii log/1/trace336 --trace-time ftp://127.0.0.1:37481/336 --range 3-6 > log/1/stdout336 2> log/1/stderr336 ed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr334 === Start of file trace334 01:09:57.494772 * Trying 127.0.0.1:39863... 01:09:58.348702 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 48420 01:09:58.479059 * using HTTP/1.x 01:09:58.806771 => Send header, 87 bytes (0x57) 0000: GET /want/334 HTTP/1.1 0018: Host: 127.0.0.1:39863 002f: User-Agent: curl/8.17.0 0048: Accept: */* 0055: 01:09:59.121950 <= Recv header, 24 bytes (0x18) 0000: HTTP/1.1 204 No Content. 01:09:59.435744 <= Recv header, 36 bytes (0x24) 0000: Date: Mon, 13 Nov 2000 13:41:09 GMT. 01:09:59.532373 <= Recv header, 18 bytes (0x12) 0000: Server: myown/1.0. 01:09:59.552187 <= Recv header, 27 bytes (0x1b) 0000: Transfer-Encoding: chunked. 01:09:59.628298 <= Recv header, 1 bytes (0x1) 0000: . 01:10:00.114358 * Connection #0 to host 127.0.0.1:39863 left intact === End of file trace334 === Start of file valgrind334 ==236706== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind334 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 336 in state 4 Runner 2 (id 185908) running test 342 in state 4 Runner 3 (id 185910) running test 340 in state 4 Runner 4 (id 185912) running test 338 in state 4 Runner 5 (id 185914) running test 337 in state 4 Runner 6 (id 185916) running test 335 in state 4 Runner 7 (id 185918) running test 341 in state 4 Runner 8 (id 185920) running test 339 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 336 in state 4 Runner 2 (id 185908) running test 342 in state 4 Runner 3 (id 185910) running test 340 in state 4 Runner 4 (id 185912) running test 338 in state 4 Runner 5 (id 185914) running test 337 in state 4 Runner 6 (id 185916) running test 335 in state 4 Runner 7 (id 185918) running test 341 in state 4 Runner 8 (id 185920) running test 339 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 336 in state 4 Runner 2 (id 185908) running test 342 in state 4 Runner 3 (id 185910) running test 340 in state 4 Runner 4 (id 185912) running test 338 in state 4 Runner 5 (id 185914) running test 337 in state 4 Runner 6 (id 185916) running test 335 in state 4 Runner 7 (id 185918) running test 341 in state 4 Runner 8 (id 185920) running test 339 in state 4 test 0336...[FTP range download when SIZE doesn't work] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind336 ../src/curl -q --output log/1/curl336.out --include --trace-ascii log/1/trace336 --trace-time ftp://127.0.0.1:37481/336 --range 3-6 > log/1/stdout336 2> log/1/stderr336 valgrind ERROR ==237093== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 336 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind336 ../src/curl -q --output log/1/curl336.out --include --trace-ascii log/1/trace336 --trace-time ftp://127.0.0.1:37481/336 --range 3-6 > log/1/stdout336 2> log/1/stderr336 === End of file commands.log === Start of file curl336.out data === End of file curl336.out === Start of file ftp_server.log 01:09:43.121199 ====> Client connect 01:09:43.124350 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:09:43.129174 < "USER anonymous" 01:09:43.129518 > "331 We are happy you popped in![CR][LF]" 01:09:43.131661 < "PASS ftp@example.com" 01:09:43.131921 > "230 Welcome you silly person[CR][LF]" 01:09:43.134516 < "PWD" 01:09:43.134795 > "257 "/" is current directory[CR][LF]" 01:09:43.136476 < "EPSV" 01:09:43.136672 ====> Passive DATA channel requested by client 01:09:43.136815 DATA sockfilt for passive data channel starting... 01:09:43.173768 DATA sockfilt for passive data channel started (pid 237081) 01:09:43.174911 DATA sockfilt for passive data channel listens on port 43805 01:09:43.175273 > "229 Entering Passive Mode (|||43805|)[CR][LF]" 01:09:43.175444 Client has been notified that DATA conn will be accepted on port 43805 01:09:43.177804 Client connects to port 43805 01:09:43.178044 ====> Client established passive DATA connection on port 43805 01:09:43.178698 < "TYPE I" 01:09:43.178958 > "200 I modify TYPE as you wanted[CR][LF]" 01:09:43.181206 < "SIZE verifiedserver" 01:09:43.181609 > "213 18[CR][LF]" 01:09:43.187513 < "RETR verifiedserver" 01:09:43.187922 > "150 Binary junk (18 bytes).[CR][LF]" 01:09:43.188451 =====> Closing passive DATA connection... 01:09:43.188619 Server disconnects passive DATA connection 01:09:43.189145 Server disconnected passive DATA connection 01:09:43.189313 DATA sockfilt for passive data channel quits (pid 237081) 01:09:43.196913 DATA sockfilt for passive data channel quit (pid 237081) 01:09:43.197182 =====> Closed passive DATA connection 01:09:43.197473 > "226 File transfer complete[CR][LF]" 01:09:43.243461 < "QUIT" 01:09:43.243879 > "221 bye bye baby[CR][LF]" 01:09:43.244995 MAIN sockfilt said DISC 01:09:43.250877 ====> Client disconnected 01:09:43.251355 Awaiting input 01:10:30.619676 ====> Client connect 01:10:30.620470 FTPD: Getting commands from log/1/server.cmd 01:10:30.621273 FTPD: set custom reply for EPSV command 01:10:30.621726 FTPD: set custom reply for SIZE command 01:10:30.621986 FTPD: run test case number: 336 01:10:30.623033 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:10:31.946189 < "USER anonymous" 01:10:31.950980 > "331 We are happy you popped in![CR][LF]" 01:10:32.074649 < "PASS ftp@example.com" 01:10:32.075105 > "230 Welcome you silly person[CR][LF]" 01:10:32.165904 < "PWD" 01:10:32.166761 > "257 "/" is current directory[CR][LF]" 01:10:32.378421 < "EPSV" 01:10:32.384312 > "500 no such command[CR][LF]" 01:10:32.501112 < "PASV" 01:10:32.501479 ====> Passive DATA channel requested by client 01:10:32.501653 DATA sockfilt for passive data channel starting... 01:10:32.590984 DATA sockfilt for passive data channel started (pid 238216) 01:10:32.593351 DATA sockfilt for passive data channel listens on port 40851 01:10:32.594087 > "227 Entering Passive Mode (127,0,0,1,159,147)[CR][LF]" 01:10:32.594318 Client has been notified that DATA conn will be accepted on port 40851 01:10:32.785118 Client connects to port 40851 01:10:32.785687 ====> Client established passive DATA connection on port 40851 01:10:32.928723 < "TYPE I" 01:10:32.929588 > "200 I modify TYPE as you wanted[CR][LF]" 01:10:32.979264 < "SIZE 336" 01:10:32.979701 > "500 no such command[CR][LF]" 01:10:33.063802 < "REST 3" 01:10:33.064240 > "350 Yeah yeah we set it there for you[CR][LF]" 01:10:33.064450 Set REST position to 3 01:10:33.092898 < "RETR 336" 01:10:33.095061 REST 3 was removed from size, makes 48 left 01:10:33.098008 > "150 Binary data connection for 336 () (48 bytes).[CR][LF]" 01:10:33.098776 =====> Closing passive DATA connection... 01:10:33.098966 Server disconnects passive DATA connection 01:10:33.100616 Server disconnected passive DATA connection 01:10:33.100811 DATA sockfilt for passive data channel quits (pid 238216) 01:10:33.104038 DATA sockfilt for passive data channel quit (pid 238216) 01:10:33.104297 =====> Closed passive DATA connection 01:10:33.104612 > "226 File transfer complete[CR][LF]" 01:10:33.669611 < "ABOR" 01:10:33.669931 ABOR wasn't handled 01:10:33.670528 > "500 ABOR is not dealt with![CR][LF]" 01:10:34.276203 < "QUIT" 01:10:34.280962 > "221 bye bye baby[CR][LF]" 01:10:34.461097 MAIN sockfilt said DISC 01:10:34.461603 ====> Client disconnected 01:10:34.461927 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:09:43.735673 ====> Client connect 01:09:43.736955 Received DATA (on stdin) 01:09:43.737034 > 160 bytes data, server => client 01:09:43.739495 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:09:43.739617 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:09:43.739713 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:09:43.743099 < 16 bytes data, client => server 01:09:43.743207 'USER anonymous\r\n' 01:09:43.745726 Received DATA (on stdin) 01:09:43.745818 > 33 bytes data, server => client 01:09:43.745898 '331 We are happy you popped in!\r\n' 01:09:43.746158 < 22 bytes data, client => server 01:09:43.746229 'PASS ftp@example.com\r\n' 01:09:43.746746 Received DATA (on stdin) 01:09:43.746808 > 30 bytes data, server => client 01:09:43.746879 '230 Welcome you silly person\r\n' 01:09:43.747085 < 5 bytes data, client => server 01:09:43.747144 'PWD\r\n' 01:09:43.749620 Received DATA (on stdin) 01:09:43.749685 > 30 bytes data, server => client 01:09:43.749760 '257 "/" is current directory\r\n' 01:09:43.750998 < 6 bytes data, client => server 01:09:43.751058 'EPSV\r\n' 01:09:43.790051 Received DATA (on stdin) 01:09:43.790195 > 39 bytes data, server => client 01:09:43.790284 '229 Entering Passive Mode (|||43805|)\r\n' 01:09:43.792687 < 8 bytes data, client => server 01:09:43.792761 'TYPE I\r\n' 01:09:43.793777 Received DATA (on stdin) 01:09:43.793835 > 33 bytes data, server => client 01:09:43.793908 '200 I modify TYPE as you wanted\r\n' 01:09:43.794228 < 21 bytes data, client => server 01:09:43.794296 'SIZE verifiedserver\r\n' 01:09:43.796429 Received DATA (on stdin) 01:09:43.796501 > 8 bytes data, server => client 01:09:43.796560 '213 18\r\n' 01:09:43.796966 < 21 bytes data, client => server 01:09:43.797035 'RETR verifiedserver\r\n' 01:09:43.802736 Received DATA (on stdin) 01:09:43.802813 > 29 bytes data, server => client 01:09:43.802885 '150 Binary junk (18 bytes).\r\n' 01:09:43.812284 Received DATA (on stdin) 01:09:43.812397 > 28 bytes data, server => client 01:09:43.812476 '226 File transfer complete\r\n' 01:09:43.857215 < 6 bytes data, client => server 01:09:43.857385 'QUIT\r\n' 01:09:43.858991 Received DATA (on stdin) 01:09:43.859086 > 18 bytes data, server => client 01:09:43.859162 '221 bye bye baby\r\n' 01:09:43.859750 ====> Client disconnect 01:09:43.860061 Received ACKD (on stdin) 01:10:31.234108 ====> Client connect 01:10:31.242312 Received DATA (on stdin) 01:10:31.242465 > 160 bytes data, server => client 01:10:31.242577 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:10:31.242678 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:10:31.242770 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:10:32.559644 < 16 bytes data, client => server 01:10:32.559839 'USER anonymous\r\n' 01:10:32.561347 Received DATA (on stdin) 01:10:32.561431 > 33 bytes data, server => client 01:10:32.566104 '331 We are happy you popped in!\r\n' 01:10:32.688183 < 22 bytes data, client => server 01:10:32.688392 'PASS ftp@example.com\r\n' 01:10:32.690117 Received DATA (on stdin) 01:10:32.690204 > 30 bytes data, server => client 01:10:32.690300 '230 Welcome you silly person\r\n' 01:10:32.779491 < 5 bytes data, client => server 01:10:32.779692 'PWD\r\n' 01:10:32.781103 Received DATA (on stdin) 01:10:32.781195 > 30 bytes data, server => client 01:10:32.781318 '257 "/" is current directory\r\n' 01:10:32.991520 < 6 bytes data, client => server 01:10:32.991728 'EPSV\r\n' 01:10:32.993565 Received DATA (on stdin) 01:10:32.993654 > 21 bytes data, server => client 01:10:32.999483 '500 no such command\r\n' 01:10:33.114645 < 6 bytes data, client => server 01:10:33.114855 'PASV\r\n' 01:10:33.208585 Received DATA (on stdin) 01:10:33.208759 > 47 bytes data, server => client 01:10:33.208876 '227 Entering Passive Mode (127,0,0,1,159,147)\r\n' 01:10:33.542345 < 8 bytes data, client => server 01:10:33.542515 'TYPE I\r\n' 01:10:33.543860 Received DATA (on stdin) 01:10:33.543946 > 33 bytes data, server => client 01:10:33.544055 '200 I modify TYPE as you wanted\r\n' 01:10:33.592770 < 10 bytes data, client => server 01:10:33.593010 'SIZE 336\r\n' 01:10:33.595655 Received DATA (on stdin) 01:10:33.595785 > 21 bytes data, server => client 01:10:33.595880 '500 no such command\r\n' 01:10:33.677426 < 8 bytes data, client => server 01:10:33.677614 'REST 3\r\n' 01:10:33.682291 Received DATA (on stdin) 01:10:33.682408 > 39 bytes data, server => client 01:10:33.682505 '350 Yeah yeah we set it there for you\r\n' 01:10:33.706540 < 10 bytes data, client => server 01:10:33.706718 'RETR 336\r\n' 01:10:33.712286 Received DATA (on stdin) 01:10:33.712409 > 51 bytes data, server => client 01:10:33.712556 '150 Binary data connection for 336 () (48 bytes).\r\n' 01:10:33.719622 Received DATA (on stdin) 01:10:33.719758 > 28 bytes data, server => client 01:10:33.719853 '226 File transfer complete\r\n' 01:10:34.283221 < 6 bytes data, client => server 01:10:34.283413 'ABOR\r\n' 01:10:34.284918 Received DATA (on stdin) 01:10:34.284997 > 29 bytes data, server => client 01:10:34.285103 '500 ABOR is not dealt with!\r\n' 01:10:34.889841 < 6 bytes data, client => server 01:10:34.890021 'QUIT\r\n' 01:10:34.891325 Received DATA (on stdin) 01:10:34.891399 > 18 bytes data, server => client 01:10:34.896074 '221 bye bye baby\r\n' 01:10:35.075535 ====> Client disconnect 01:10:35.076898 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:09:43.780535 Running IPv4 version 01:09:43.787221 Listening on port 43805 01:09:43.787630 Wrote pid 237081 to log/1/server/ftp_sockdata.pid 01:09:43.788302 Received PING (on stdin) 01:09:43.789148 Received PORT (on stdin) 01:09:43.792530 ====> Client connect 01:09:43.803025 Received DATA (on stdin) 01:09:43.803344 > 18 bytes data, server => client 01:09:43.803668 'WE ROOLZ: 202066\r\n' 01:09:43.803884 Received DISC (on stdin) 01:09:43.803992 ====> Client forcibly disconnected 01:09:43.809057 Received QUIT (on stdin) 01:09:43.809151 quits 01:09:43.809610 ============> sockfilt quits 01:10:32.185969 Running IPv4 version 01:10:32.200665 Listening on port 40851 01:10:32.201225 Wrote pid 238216 to log/1/server/ftp_sockdata.pid 01:10:32.202052 Received PING (on stdin) 01:10:32.207319 Received PORT (on stdin) 01:10:32.399550 ====> Client connect 01:10:32.713088 Received DATA (on stdin) 01:10:32.713472 > 5 bytes data, server => client 01:10:32.713829 'data\n' 01:10:32.714121 Received DATA (on stdin) 01:10:32.714191 > 7 bytes data, server => client 01:10:32.714260 ' to\n' 01:10:32.714358 Received DATA (on stdin) 01:10:32.714424 > 10 bytes data, server => client 01:10:32.714497 ' see\n' 01:10:32.714591 Received DATA (on stdin) 01:10:32.714658 > 9 bytes data, server => client 01:10:32.714728 'that FTP\n' 01:10:32.714809 Received DATA (on stdin) 01:10:32.714871 > 6 bytes data, server => client 01:10:32.714940 'works\n' 01:10:32.715023 Received DATA (on stdin) 01:10:32.715089 > 14 bytes data, server => client 01:10:32.715162 ' so does it?\n' 01:10:32.715245 Received DISC (on stdin) 01:10:32.715364 ====> Client forcibly disconnected 01:10:32.715791 Received QUIT (on stdin) 01:10:32.715869 quits 01:10:32.716361 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPSV 500 no such command REPLY SIZE 500 no such command Testnum 336 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.coCMD (768): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind340 ../src/curl -q --output log/3/curl340.out --include --trace-ascii log/3/trace340 --trace-time --ftp-method singlecwd ftp://127.0.0.1:37331/%00first/second/third/340 > log/3/stdout340 2> log/3/stderr340 m PWD EPSV PASV TYPE I SIZE 336 REST 3 RETR 336 ABOR QUIT === End of file server.input === Start of file stderr336 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:05 --:--:-- 1 100 4 0 4 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 === End of file stderr336 === Start of file trace336 01:10:30.267341 * Trying 127.0.0.1:37481... 01:10:31.194165 * Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 127.0.0.1 port 41304 01:10:31.467531 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:10:31.821432 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:10:31.848743 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:10:31.854449 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:10:31.859339 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:10:31.966668 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:10:32.048729 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:10:32.074849 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:10:32.144855 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:10:32.164837 => Send header, 5 bytes (0x5) 0000: PWD 01:10:32.181538 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:10:32.219853 * Entry path is '/' 01:10:32.324765 * Request has same path as previous transfer 01:10:32.376884 => Send header, 6 bytes (0x6) 0000: EPSV 01:10:32.392801 * Connect data stream passively 01:10:32.404640 <= Recv header, 21 bytes (0x15) 0000: 500 no such command 01:10:32.475470 * Failed EPSV attempt. Disabling EPSV 01:10:32.500003 => Send header, 6 bytes (0x6) 0000: PASV 01:10:32.599516 <= Recv header, 47 bytes (0x2f) 0000: 227 Entering Passive Mode (127,0,0,1,159,147) 01:10:32.641430 * Skip 127.0.0.1 for data connection, reuse 127.0.0.1 instead 01:10:32.718939 * Connecting to 127.0.0.1 (127.0.0.1) port 40851 01:10:32.779081 * Trying 127.0.0.1:40851... 01:10:32.878188 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 40851) from 127.0.0.1 port 41318 01:10:32.925384 => Send header, 8 bytes (0x8) 0000: TYPE I 01:10:32.944737 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:10:32.978088 => Send header, 10 bytes (0xa) 0000: SIZE 336 01:10:33.010234 <= Recv header, 21 bytes (0x15) 0000: 500 no such command 01:10:33.044839 * ftp server does not support SIZE 01:10:33.055366 * Instructs server to resume from offset 3 01:10:33.062731 => Send header, 8 bytes (0x8) 0000: REST 3 01:10:33.077883 <= Recv header, 39 bytes (0x27) 0000: 350 Yeah yeah we set it there for you 01:10:33.091845 => Send header, 10 bytes (0xa) 0000: RETR 336 01:10:33.102341 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 336 () (48 bytes). 01:10:33.143051 * Maxdownload = 4 01:10:33.153061 * Getting file with size: 4 01:10:33.306122 <= Recv data, 4 bytes (0x4) 0000: data 01:10:33.657146 * Remembering we are in dir "" 01:10:33.668548 => Send header, 6 bytes (0x6) 0000: ABOR 01:10:33.848176 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:10:33.890486 * partial download completed, closing connection 01:10:34.215933 * shutting down connection #0 === End of file trace336 === Start of file valgrind336 ==237093== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind336 test 0340...[FTP using %00 in path with singlecwd] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind340 ../src/curl -q --output log/3/curl340.out --include --trace-ascii log/3/trace340 --trace-time --ftp-method singlecwd ftp://127.0.0.1:37331/%00first/second/third/340 > log/3/stdout340 2> log/3/stderr340 valgrind ERROR ==237489== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 340 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind340 ../src/curl -q --output log/3/curl340.out --include --trace-ascii log/3/trace340 --trace-time --ftp-method singlecwd ftp://127.0.0.1:37331/%00first/second/third/340 > log/3/stdout340 2> log/3/stderr340 === End of file commands.log === Start of file ftp_server.log 01:09:45.548766 ====> Client connect 01:09:45.552040 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:09:45.557232 < "USER anonymous" 01:09:45.557854 > "331 We are happy you popped in![CR][LF]" 01:09:45.561903 < "PASS ftp@example.com" 01:09:45.562563 > "230 Welcome you silly person[CR][LF]" 01:09:45.563979 < "PWD" 01:09:45.567598 > "257 "/" is current directory[CR][LF]" 01:09:45.570021 < "EPSV" 01:09:45.570254 ====> Passive DATA channel requested by client 01:09:45.570408 DATA sockfilt for passive data channel starting... 01:09:45.613804 DATA sockfilt for passive data channel started (pid 237389) 01:09:45.615293 DATA sockfilt for passive data channel listens on port 45111 01:09:45.615674 > "229 Entering Passive Mode (|||45111|)[CR][LF]" 01:09:45.615853 Client has been notified that DATA conn will be accepted on port 45111 01:09:45.619133 Client connects to port 45111 01:09:45.619369 ====> Client established passive DATA connection on port 45111 01:09:45.620041 < "TYPE I" 01:09:45.621138 > "200 I modify TYPE as you wanted[CR][LF]" 01:09:45.621672 < "SIZE verifiedserver" 01:09:45.621987 > "213 18[CR][LF]" 01:09:45.623304 < "RETR verifiedserver" 01:09:45.625740 > "150 Binary junk (18 bytes).[CR][LF]" 01:09:45.626306 =====> Closing passive DATA connection... 01:09:45.626468 Server disconnects passive DATA connection 01:09:45.627888 Server disconnected passive DATA connection 01:09:45.628060 DATA sockfilt for passive data channel quits (pid 237389) 01:09:45.635800 DATA sockfilt for passive data channel quit (pid 237389) 01:09:45.636164 =====> Closed passive DATA connection 01:09:45.636493 > "226 File transfer complete[CR][LF]" 01:09:45.678556 < "QUIT" 01:09:45.681238 > "221 bye bye baby[CR][LF]" 01:09:45.681684 MAIN sockfilt said DISC 01:09:45.681904 ====> Client disconnected 01:09:45.682284 Awaiting input 01:10:33.168674 ====> Client connect 01:10:33.169423 FTPD: Getting commands from log/3/server.cmd 01:10:33.169766 FTPD: run test case number: 340 01:10:33.170680 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:10:34.490309 < "USER anonymous" 01:10:34.491093 > "331 We are happy you popped in![CR][LF]" 01:10:34.608399 < "PASS ftp@example.com" 01:10:34.611110 > "230 Welcome you silly person[CR][LF]" 01:10:34.713969 < "PWD" 01:10:34.714571 > "257 "/" is current directory[CR][LF]" 01:10:35.473824 MAIN sockfilt said DISC 01:10:35.474508 ====> Client disconnected 01:10:35.474820 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:09:45.162466 ====> Client connect 01:09:45.166023 Received DATA (on stdin) 01:09:45.166185 > 160 bytes data, server => client 01:09:45.166343 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:09:45.166458 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:09:45.166557 '_ {| |___ \r\n220 \___|\_CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind339 ../src/curl -q --output log/8/curl339.out --include --trace-ascii log/8/trace339 --trace-time http://127.0.0.1:39461/339 --etag-save log/8/etag339 > log/8/stdout339 2> log/8/stderr339 __/|_| \_\_____|\r\n' 01:09:45.171008 < 16 bytes data, client => server 01:09:45.171140 'USER anonymous\r\n' 01:09:45.172478 Received DATA (on stdin) 01:09:45.172561 > 33 bytes data, server => client 01:09:45.172974 '331 We are happy you popped in!\r\n' 01:09:45.175960 < 22 bytes data, client => server 01:09:45.176058 'PASS ftp@example.com\r\n' 01:09:45.177066 Received DATA (on stdin) 01:09:45.177142 > 30 bytes data, server => client 01:09:45.177259 '230 Welcome you silly person\r\n' 01:09:45.177527 < 5 bytes data, client => server 01:09:45.177597 'PWD\r\n' 01:09:45.179110 Received DATA (on stdin) 01:09:45.179190 > 30 bytes data, server => client 01:09:45.182726 '257 "/" is current directory\r\n' 01:09:45.184272 < 6 bytes data, client => server 01:09:45.184351 'EPSV\r\n' 01:09:45.230949 Received DATA (on stdin) 01:09:45.231088 > 39 bytes data, server => client 01:09:45.231181 '229 Entering Passive Mode (|||45111|)\r\n' 01:09:45.233819 < 8 bytes data, client => server 01:09:45.233897 'TYPE I\r\n' 01:09:45.235143 Received DATA (on stdin) 01:09:45.235212 > 33 bytes data, server => client 01:09:45.235319 '200 I modify TYPE as you wanted\r\n' 01:09:45.235682 < 21 bytes data, client => server 01:09:45.235772 'SIZE verifiedserver\r\n' 01:09:45.237044 Received DATA (on stdin) 01:09:45.237111 > 8 bytes data, server => client 01:09:45.237177 '213 18\r\n' 01:09:45.237615 < 21 bytes data, client => server 01:09:45.237692 'RETR verifiedserver\r\n' 01:09:45.238412 Received DATA (on stdin) 01:09:45.238478 > 29 bytes data, server => client 01:09:45.238576 '150 Binary junk (18 bytes).\r\n' 01:09:45.251598 Received DATA (on stdin) 01:09:45.251740 > 28 bytes data, server => client 01:09:45.251822 '226 File transfer complete\r\n' 01:09:45.292022 < 6 bytes data, client => server 01:09:45.292184 'QUIT\r\n' 01:09:45.293974 Received DATA (on stdin) 01:09:45.294092 > 18 bytes data, server => client 01:09:45.294435 '221 bye bye baby\r\n' 01:09:45.295879 ====> Client disconnect 01:09:45.299068 Received ACKD (on stdin) 01:10:32.783091 ====> Client connect 01:10:32.788951 Received DATA (on stdin) 01:10:32.789080 > 160 bytes data, server => client 01:10:32.789188 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:10:32.789286 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:10:32.789373 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:10:34.103809 < 16 bytes data, client => server 01:10:34.104008 'USER anonymous\r\n' 01:10:34.105451 Received DATA (on stdin) 01:10:34.105529 > 33 bytes data, server => client 01:10:34.105654 '331 We are happy you popped in!\r\n' 01:10:34.222069 < 22 bytes data, client => server 01:10:34.222285 'PASS ftp@example.com\r\n' 01:10:34.223561 Received DATA (on stdin) 01:10:34.223649 > 30 bytes data, server => client 01:10:34.225655 '230 Welcome you silly person\r\n' 01:10:34.321019 < 5 bytes data, client => server 01:10:34.328312 'PWD\r\n' 01:10:34.332278 Received DATA (on stdin) 01:10:34.332396 > 30 bytes data, server => client 01:10:34.332486 '257 "/" is current directory\r\n' 01:10:35.088277 ====> Client disconnect 01:10:35.089096 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:09:45.219036 Running IPv4 version 01:09:45.227021 Listening on port 45111 01:09:45.227507 Wrote pid 237389 to log/3/server/ftp_sockdata.pid 01:09:45.228273 Received PING (on stdin) 01:09:45.229438 Received PORT (on stdin) 01:09:45.233654 ====> Client connect 01:09:45.241507 Received DATA (on stdin) 01:09:45.241813 > 18 bytes data, server => client 01:09:45.242175 'WE ROOLZ: 202504\r\n' 01:09:45.242431 Received DISC (on stdin) 01:09:45.242551 ====> Client forcibly disconnected 01:09:45.245705 Received QUIT (on stdin) 01:09:45.245801 quits 01:09:45.246336 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 340 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD === End of file server.input === Start of file stderr340 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (3) path contains control characters === End of file stderr340 === Start of file trace340 01:10:32.836608 * Trying 127.0.0.1:37331... 01:10:33.746298 * Established connection to 127.0.0.1 (127.0.0.1 port 37331) from 127.0.0.1 port 32978 01:10:34.002571 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:10:34.360375 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:10:34.389628 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:10:34.397259 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:10:34.402972 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:10:34.510702 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:10:34.587049 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:10:34.608633 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:10:34.685860 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:10:34.706328 => Send header, 5 bytes (0x5) 0000: PWD 01:10:34.735925 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:10:34.775802 * Entry path is '/' 01:10:34.889533 * path contains control characters 01:10:35.243851 * shutting down connection #0 === End of file trace340 === Start of file valgrind340 ==237489== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind340 test 0339...[Check if --etag-save saved correct etag to a file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind339 ../src/curl -q --output log/8/curl339.out --include --trace-ascii log/8/trace339 --trace-time http://127.0.0.1:39461/339 --etag-save log/8/etag339 > log/8/stdout339 2> log/8/stderr339 valgrind ERROR ==237438== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 339 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind339 ../src/curl -q --output log/8/curl339.out --include --trace-ascii log/8/trace339 --trace-time http://127.0.0.1:39461/339 --etag-save log/8/etag339 > log/8/stdout339 2> log/8/stderr339 === End of file commands.log === Start of file curl339.out HTTP/1.1 200 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Trailer: chunky-trailer Connection: mooo ETag: W/"asdf" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccc chunky-trailer: header data === End of file curl339.out === Start of file etag339 W/"asdf" === End of file etag339 === Start of file http_server.log 01:09:44.935488 ====> Client connect 01:09:44.935651 accept_connection 3 returned 4 01:09:44.935745 accept_connection 3 returned 0 01:09:44.943654 Read 93 bytes 01:09:44.943759 Process 93 bytes request 01:09:44.943850 Got request: GET /verifiedserver HTTP/1.1 01:09:44.943916 Are-we-friendly question received 01:09:44.944032 Wrote request (93 bytes) input to log/8/server.input 01:09:44.944124 Identifying ourselves as friends 01:09:44.944293 Response sent (57 bytes) and written to log/8/server.response 01:09:44.944357 special request received, no persistency 01:09:44.944413 ====> Client disconnect 0 01:10:3CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind338 ../src/curl -q --output log/4/curl338.out --include --trace-ascii log/4/trace338 --trace-time http://127.0.0.1:42621/338 --next http://127.0.0.1:42621/338 --anyauth -u foo:moo > log/4/stdout338 2> log/4/stderr338 2.420996 ====> Client connect 01:10:32.421129 accept_connection 3 returned 4 01:10:32.421209 accept_connection 3 returned 0 01:10:33.460574 Read 82 bytes 01:10:33.460792 Process 82 bytes request 01:10:33.460895 Got request: GET /339 HTTP/1.1 01:10:33.460974 Serve test number 339 part 0 01:10:33.461164 - request found to be complete (339) 01:10:33.461413 Wrote request (82 bytes) input to log/8/server.input 01:10:33.461528 Send response test339 section 01:10:33.461986 Response sent (365 bytes) and written to log/8/server.response 01:10:33.462058 => persistent connection request ended, awaits new request 01:10:36.246789 Connection closed by client 01:10:36.247004 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 46996 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 339 === End of file server.cmd === Start of file server.input GET /339 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Trailer: chunky-trailer Connection: mooo ETag: W/"asdf" 40 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 30 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 21;heresatest=moooo cccccccccccccccccccccccccccccccc 0 chunky-trailer: header data === End of file server.response === Start of file stderr339 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 145 0 145 0 0 29 0 --:--:-- 0:00:04 --:--:-- 41 100 145 0 145 0 0 29 0 --:--:-- 0:00:04 --:--:-- 40 100 145 0 145 0 0 29 0 --:--:-- 0:00:04 --:--:-- 39 === End of file stderr339 === Start of file trace339 01:10:32.473787 * Trying 127.0.0.1:39461... 01:10:33.401859 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 60272 01:10:33.537433 * using HTTP/1.x 01:10:33.884852 => Send header, 82 bytes (0x52) 0000: GET /339 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:10:34.226795 <= Recv header, 28 bytes (0x1c) 0000: HTTP/1.1 200 funky chunky 01:10:34.561757 <= Recv header, 34 bytes (0x22) 0000: Server: fakeit/0.9 fakeitbad/1.0 01:10:34.742918 <= Recv header, 28 bytes (0x1c) 0000: Transfer-Encoding: chunked 01:10:34.775515 <= Recv header, 25 bytes (0x19) 0000: Trailer: chunky-trailer 01:10:34.834349 <= Recv header, 18 bytes (0x12) 0000: Connection: mooo 01:10:34.838757 <= Recv header, 16 bytes (0x10) 0000: ETag: W/"asdf" 01:10:34.966316 <= Recv header, 2 bytes (0x2) 0000: 01:10:35.033975 <= Recv data, 214 bytes (0xd6) 0000: 40 0004: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0046: 30 004a: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 007c: 21;heresatest=moooo 0091: cccccccccccccccccccccccccccccccc. 00b4: 0 00b7: chunky-trailer: header data 00d4: 01:10:35.777862 * Connection #0 to host 127.0.0.1:39461 left intact === End of file trace339 === Start of file valgrind339 ==237438== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind339 test 0338...[ANYAUTH connection reuse of non-authed connection] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind338 ../src/curl -q --output log/4/curl338.out --include --trace-ascii log/4/trace338 --trace-time http://127.0.0.1:42621/338 --next http://127.0.0.1:42621/338 --anyauth -u foo:moo > log/4/stdout338 2> log/4/stderr338 valgrind ERROR ==237360== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 338 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind338 ../src/curl -q --output log/4/curl338.out --include --trace-ascii log/4/trace338 --trace-time http://127.0.0.1:42621/338 --next http://127.0.0.1:42621/338 --anyauth -u foo:moo > log/4/stdout338 2> log/4/stderr338 === End of file commands.log === Start of file curl338.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Content-Type: text/html Funny-head: yesyes -foo- === End of file curl338.out === Start of file http_server.log 01:09:45.450311 ====> Client connect 01:09:45.450522 accept_connection 3 returned 4 01:09:45.450611 accept_connection 3 returned 0 01:09:45.459231 Read 93 bytes 01:09:45.459447 Process 93 bytes request 01:09:45.459563 Got request: GET /verifiedserver HTTP/1.1 01:09:45.459647 Are-we-friendly question received 01:09:45.459813 Wrote request (93 bytes) input to log/4/server.input 01:09:45.459948 Identifying ourselves as friends 01:09:45.460190 Response sent (57 bytes) and written to log/4/server.response 01:09:45.460267 special request received, no persistency 01:09:45.460337 ====> Client disconnect 0 01:10:32.992594 ====> Client connect 01:10:32.992734 accept_connection 3 returned 4 01:10:32.992816 accept_connection 3 returned 0 01:10:34.031261 Read 82 bytes 01:10:34.031466 Process 82 bytes request 01:10:34.031571 Got request: GET /338 HTTP/1.1 01:10:34.031654 Serve test number 338 part 0 01:10:34.032061 enabled connection monitoring 01:10:34.032223 - request found to be complete (338) 01:10:34.032387 enabled connection monitoring 01:10:34.032562 Wrote request (82 bytes) input to log/4/server.input 01:10:34.032682 Send response test338 section 01:10:34.033134 Response sent (238 bytes) and written to log/4/server.response 01:10:34.033208 => persistent connection request ended, awaits new request 01:10:36.980859 Read 82 bytes 01:10:36.981066 Process 82 bytes request 01:10:36.981173 Got request: GET /338 HTTP/1.1 01:10:36.981255 Serve test number 338 part 0 01:10:36.981414 enabled connection monitoring 01:10:36.981477 - request found to be complete (338) 01:10:36.981601 enabled connection monitoring 01:10:36.981707 Wrote request (82 bytes) input to log/4/server.input 01:10:36.981795 Send response test338 section 01:10:36.982196 Response sent (238 bytes) and written to log/4/server.response 01:10:36.982280 => persistent connection request ended, awaits new request 01:10:37.487014 Connection closed by client 01:10:37.487228 ====> Client disconnect 1 01:10:37.487363 Wrote request (13 bytes) input to log/4/server.input === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 38546 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd connection-monitor Testnum 338 === End of file server.cmd === Start of fCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind335 ../src/curl -q --output log/6/curl335.out --include --trace-ascii log/6/trace335 --trace-time http://digest:a-lot@data.from.server.requiring.digest.hohoho.com/335 --proxy http://foo:bar@127.0.0.1:38277 --proxy-digest --digest > log/6/stdout335 2> log/6/stderr335 ile server.input GET /338 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* GET /338 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* [DISCONNECT] === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Content-Type: text/html Funny-head: yesyes -foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr338 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 6 100 6 0 0 9 0 --:--:-- --:--:-- --:--:-- 27 100 6 100 6 0 0 9 0 --:--:-- --:--:-- --:--:-- 24 === End of file stderr338 === Start of file stdout338 -foo- === End of file stdout338 === Start of file trace338 01:10:32.045156 * Trying 127.0.0.1:42621... 01:10:32.973640 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 49632 01:10:33.092453 * using HTTP/1.x 01:10:33.455321 => Send header, 82 bytes (0x52) 0000: GET /338 HTTP/1.1 0013: Host: 127.0.0.1:42621 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:10:33.807781 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:10:34.126997 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:10:34.235633 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:10:34.265270 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:10:34.273853 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:10:34.282063 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:10:34.314576 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:10:34.372207 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:10:34.378931 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:10:34.459972 <= Recv header, 1 bytes (0x1) 0000: . 01:10:34.518596 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:10:35.095676 * Connection #0 to host 127.0.0.1:42621 left intact 01:10:36.242663 * Reusing existing http: connection with host 127.0.0.1 01:10:36.367955 => Send header, 82 bytes (0x52) 0000: GET /338 HTTP/1.1 0013: Host: 127.0.0.1:42621 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:10:36.400316 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:10:36.414552 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:10:36.426758 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:10:36.432322 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:10:36.439410 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:10:36.444553 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:10:36.450572 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:10:36.458048 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:10:36.462790 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:10:36.476869 <= Recv header, 1 bytes (0x1) 0000: . 01:10:36.482458 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:10:36.544124 * Connection #0 to host 127.0.0.1:42621 left intact === End of file trace338 === Start of file valgrind338 ==237360== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind338 test 0335...[HTTP with proxy Digest and site Digest with creds in URLs] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind335 ../src/curl -q --output log/6/curl335.out --include --trace-ascii log/6/trace335 --trace-time http://digest:a-lot@data.from.server.requiring.digest.hohoho.com/335 --proxy http://foo:bar@127.0.0.1:38277 --proxy-digest --digest > log/6/stdout335 2> log/6/stderr335 valgrind ERROR ==236919== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 335 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind335 ../src/curl -q --output log/6/curl335.out --include --trace-ascii log/6/trace335 --trace-time http://digest:a-lot@data.from.server.requiring.digest.hohoho.com/335 --proxy http://foo:bar@127.0.0.1:38277 --proxy-digest --digest > log/6/stdout335 2> log/6/stderr335 === End of file commands.log === Start of file curl335.out HTTP/1.1 407 Authorization Required to proxy me my dear swsclose Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345" HTTP/1.1 401 Authorization to the remote host as well swsbounce swsclose WWW-Authenticate: Digest realm="realmweirdo", nonce="123456" HTTP/1.1 200 OK swsclose Server: no Content-Length: 15 Nice auth sir === End of file curl335.out === Start of file http_server.log 01:09:36.060899 ====> Client connect 01:09:36.061069 accept_connection 3 returned 4 01:09:36.061150 accept_connection 3 returned 0 01:09:36.068418 Read 93 bytes 01:09:36.068563 Process 93 bytes request 01:09:36.068659 Got request: GET /verifiedserver HTTP/1.1 01:09:36.068733 Are-we-friendly question received 01:09:36.068865 Wrote request (93 bytes) input to log/6/server.input 01:09:36.068963 Identifying ourselves as friends 01:09:36.069140 Response sent (57 bytes) and written to log/6/server.response 01:09:36.069210 special request received, no persistency 01:09:36.069271 ====> Client disconnect 0 01:10:24.332741 ====> Client connect 01:10:24.332890 accept_connection 3 returned 4 01:10:24.332972 accept_connection 3 returned 0 01:10:25.517599 Read 192 bytes 01:10:25.517804 Process 192 bytes request 01:10:25.517899 Got request: GET http://data.from.server.requiring.digest.hohoho.com/335 HTTP/1.1 01:10:25.517975 Serve test number 335 part 0 01:10:25.518209 - request found to be complete (335) 01:10:25.518498 Wrote request (192 bytes) input to log/6/server.input 01:10:25.518603 Send response test335 section 01:10:25.518845 connection close instruction "swsclose" found in response 01:10:25.519034 Response sent (161 bytes) and written to log/6/server.response 01:10:25.519108 instructed to close connection after server-reply 01:10:25.519174 ====> Client disconnect 0 01:10:27.855442 ====> Client connect 01:10:27.855585 accept_connection 3 returned 4 01:10:27.855683 accept_connection 3 returned 0 01:10:34.673194 Read 329 bytes 01:10:34.673405 Process 329 bytes request 01:10:34.673497 Got request: GET http://data.from.server.requiring.digest.hohoho.com/335 HTTP/1.1 01:10:34.673565 Serve test number 335 part 0 01:10:34.679130 - request found to be complete (335) 01:10:34.679405 Received Digest request, sending back data 1000 01:10:34.679512 Wrote request (329 bytes) input to log/6/server.input 01:10:34.679597 Send response test335 section 01:10:34.679839 connection close instruction "swsclose" found in response 01:10:34.679914 enable "swsbounce" in the next request 01:10:34.680102 Response sent (167 bytes) and written to log/6/server.response 01:10:34.680163 instructed to close connection after server-reply 01:10:34.680216 ====> Client disconnect 0 01:10:34.959146 ====> Client connect 01:10:34.959287 accept_connection 3 returned 4 01:10:34.959364 accept_connection 3 returned 0 01:10:35.055091 Read 464 bytes 01:10:35.055278 Process 464 bytes request 01:10:35.055372 Got request: GET http://data.from.server.requiring.digest.hohoho.com/335 HTTP/1.1 01:10:35.055442 Serve test number 335 part 0 01:10:35.055686 - request found to be complete (335) 01:10:35.055889 Received Digest request, sending back data 1000 01:10:35.055983 Wrote request (464 bytes) input to log/6/server.input 01:10:35.056109 BOUNCE part number to 1001 01:10:35.056193 Send response test335 section 01:10:35.056446 connection close instruction "swsclose" found in response 01:10:35.056589 Response sent (71 bytes) and written to log/6/server.response 01:10:35.056654 instructed to close connection after server-reply 01:10:35.056716 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 33548 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 335 === End of file server.cmd === Start of file server.input GET http://data.from.server.requiring.digest.hohoho.com/335 HTTP/1.1 Host: data.from.server.requiring.digest.hohoho.com User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://data.from.server.requiring.digest.hohoho.com/335 HTTP/1.1 Host: data.from.server.requiring.digest.hohoho.com Proxy-Authorization: Digest username="foo", realm="weirdorealm", nonce="12345", uri="/335", response="f61609cd8f5bb205ef4e169b2c5626cb" User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://data.from.server.requiring.digest.hohoho.com/335 HTTP/1.1 Host: data.from.server.requiring.digest.hohoho.com Proxy-Authorization: Digest username="foo", realm="weirdorealm", nonce="12345", uri="/335", response="f61609cd8f5bb205ef4e169b2c5626cb" Authorization: Digest username="digest", realm="realmweirdo", nonce="123456", uri="/335", response="ea0f4cb7a119a1a6f6c6c6c2e4190860" User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 407 Authorization Required to proxy me my dear swsclose Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345" And you should ignore this data. HTTP/1.1 401 Authorization to the remote host as well swsbounce swsclose WWW-Authenticate: Digest realm="realmweirdo", nonce="123456" you should ignore this data too HTTP/1.1 200 OK swsclose Server: no Content-Length: 15 Nice auth sir === End of file server.response === Start of file stderr335 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:12 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:13 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:13 --:--:-- 0 100 15 100 15 0 0 1 0 0:00:15 0:00:13 0:00:02 53 === End of file stderr335 === Start of file trace335 01:10:24.385966 * Trying 127.0.0.1:38277... 01:10:25.310163 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 48086 01:10:25.434244 * using HTTP/1.x 01:10:25.530270 * Proxy auth using Digest with user 'foo' 01:10:25.556599 * Server auth using Digest with user 'digest' 01:10:25.944254 => Send header, 192 bytes (0xc0) 0000: GET http://data.from.server.requiring.digest.hohoho.com/335 HTTP 0040: /1.1 0046: Host: data.from.server.requiring.digest.hohoho.com 007a: User-Agent: curl/8.17.0 0093: Accept: */* 00a0: Proxy-Connection: Keep-Alive 00be: 01:10:26.322790 <= Recv header, 65 bytes (0x41) 0000: HTTP/1.1 407 Authorization Required to proxy me my dear swsclose 0040: . 01:10:26.809348 <= Recv header, 62 bytes (0x3e) 0000: Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345". 01:10:26.933344 * no chunk, no close, no size. Assume close to signal end 01:10:27.033119 <= Recv header, 1 bytes (0x1) 0000: . 01:10:27.277476 * Request completely sent off 01:10:27.538566 * shutting down connection #0 01:10:28.005980 * Issue another request to this URL: 'http://digest:a-lot@data.from.server.requiring.digest.hohoho.com/335' 01:10:28.193947 * Hostname 127.0.0.1 was found in DNS cache 01:10:28.234298 * Trying 127.0.0.1:38277... 01:10:28.274724 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 48098 01:10:28.281539 * using HTTP/1.x 01:10:35.020312 * Proxy auth using Digest with user 'foo' 01:10:35.025158 * Server auth using Digest with user 'digest' 01:10:35.062345 => Send header, 329 bytes (0x149) 0000: GET http://data.from.server.requiring.digest.hohoho.com/335 HTTP 0040: /1.1 0046: Host: data.from.server.requiring.digest.hohoho.com 007a: Proxy-Authorization: Digest username="foo", realm="weirdorealm", 00ba: nonce="12345", uri="/335", response="f61609cd8f5bb205ef4e169b2c 00fa: 5626cb" 0103: User-Agent: curl/8.17.0 011c: Accept: */* 0129: Proxy-Connection: Keep-Alive 0147: 01:10:35.136398 <= Recv header, 73 bytes (0x49) 0000: HTTP/1.1 401 Authorization to the remote host as well swsbounce 0040: swsclose. 01:10:35.176629 <= Recv header, 61 bytes (0x3d) 0000: WWW-Authenticate: Digest realm="realmweirdo", nonce="123456". 01:10:35.195799 * no chunk, no close, no size. Assume close to signal end 01:10:35.223516 <= Recv header, 1 bytes (0x1) 0000: . 01:10:35.256017 * Request completely sent off 01:10:35.276529 * shutting down connection #1 01:10:35.311846 * Issue another request to this URL: 'http://digest:a-lot@data.from.server.requiring.digest.hohoho.com/335' 01:10:35.338594 * Hostname 127.0.0.1 was found in DNS cache 01:10:35.342894 * Trying 127.0.0.1:38277... 01:10:35.349318 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 36848 01:10:35.351276 * using HTTP/1.x 01:10:35.379220 * Proxy auth using Digest with user 'foo' 01:10:35.430185 * Server auth using Digest with user 'digest' 01:10:35.442214 => Send header, 464 bytes (0x1d0) 0000: GET http://data.from.server.requiring.digest.hohoho.com/335 HTTP 0040: /1.1 0046: Host: data.from.server.requiring.digest.hohoho.com 007a: Proxy-Authorization: Digest username="foo", realm="weirdorealm", 00ba: nonce="12345", uri="/335", response="f61609cd8f5bb205ef4e169b2c 00fa: 5626cb" 0103: Authorization: Digest username="digest", realm="realmweirdo", no 0143: nce="123456", uri="/335", response="ea0f4cb7a119a1a6f6c6c6c2e419 0183: 0860" 018a: User-Agent: curl/8.17.0 01a3: Accept: */* 01b0: Proxy-Connection: Keep-Alive 01ce: 01:10:35.504386 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 01:10:35.523645 <= Recv header, 11 bytes (0xb) 0000: Server: no. 01:10:35.557427 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 15. 01:10:35.583746 <= Recv header, 1 bytes (0x1) 0000: . 01:10:35.605115 <= Recv data, 15 bytes (0xf) 0000: Nice auth sirCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind337 ../src/curl -q --output log/5/curl337.out --include --trace-ascii log/5/trace337 --trace-time ftp://127.0.0.1:33729/337 --range 3-6 > log/5/stdout337 2> log/5/stderr337 !. 01:10:35.841634 * Connection #2 to host 127.0.0.1:38277 left intact === End of file trace335 === Start of file valgrind335 ==236919== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind335 test 0337...[FTP range download with SIZE returning extra crap] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind337 ../src/curl -q --output log/5/curl337.out --include --trace-ascii log/5/trace337 --trace-time ftp://127.0.0.1:33729/337 --range 3-6 > log/5/stdout337 2> log/5/stderr337 valgrind ERROR ==237345== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 337 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind337 ../src/curl -q --output log/5/curl337.out --include --trace-ascii log/5/trace337 --trace-time ftp://127.0.0.1:33729/337 --range 3-6 > log/5/stdout337 2> log/5/stderr337 === End of file commands.log === Start of file curl337.out data === End of file curl337.out === Start of file ftp_server.log 01:09:44.597925 ====> Client connect 01:09:44.598899 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:09:44.608838 < "USER anonymous" 01:09:44.609346 > "331 We are happy you popped in![CR][LF]" 01:09:44.611959 < "PASS ftp@example.com" 01:09:44.612905 > "230 Welcome you silly person[CR][LF]" 01:09:44.613447 < "PWD" 01:09:44.613997 > "257 "/" is current directory[CR][LF]" 01:09:44.617219 < "EPSV" 01:09:44.617448 ====> Passive DATA channel requested by client 01:09:44.617611 DATA sockfilt for passive data channel starting... 01:09:44.658922 DATA sockfilt for passive data channel started (pid 237251) 01:09:44.660098 DATA sockfilt for passive data channel listens on port 39247 01:09:44.660889 > "229 Entering Passive Mode (|||39247|)[CR][LF]" 01:09:44.661071 Client has been notified that DATA conn will be accepted on port 39247 01:09:44.662363 Client connects to port 39247 01:09:44.662549 ====> Client established passive DATA connection on port 39247 01:09:44.663432 < "TYPE I" 01:09:44.663687 > "200 I modify TYPE as you wanted[CR][LF]" 01:09:44.668648 < "SIZE verifiedserver" 01:09:44.669376 > "213 18[CR][LF]" 01:09:44.670339 < "RETR verifiedserver" 01:09:44.671051 > "150 Binary junk (18 bytes).[CR][LF]" 01:09:44.671688 =====> Closing passive DATA connection... 01:09:44.671872 Server disconnects passive DATA connection 01:09:44.673326 Server disconnected passive DATA connection 01:09:44.673507 DATA sockfilt for passive data channel quits (pid 237251) 01:09:44.677321 DATA sockfilt for passive data channel quit (pid 237251) 01:09:44.677526 =====> Closed passive DATA connection 01:09:44.678154 > "226 File transfer complete[CR][LF]" 01:09:44.734209 < "QUIT" 01:09:44.740304 > "221 bye bye baby[CR][LF]" 01:09:44.741633 MAIN sockfilt said DISC 01:09:44.742004 ====> Client disconnected 01:09:44.742311 Awaiting input 01:10:32.764278 ====> Client connect 01:10:32.765056 FTPD: Getting commands from log/5/server.cmd 01:10:32.765841 FTPD: set custom reply for EPSV command 01:10:32.766309 FTPD: set custom reply for SIZE command 01:10:32.766571 FTPD: run test case number: 337 01:10:32.771246 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:10:34.112492 < "USER anonymous" 01:10:34.113297 > "331 We are happy you popped in![CR][LF]" 01:10:34.221560 < "PASS ftp@example.com" 01:10:34.222010 > "230 Welcome you silly person[CR][LF]" 01:10:34.317023 < "PWD" 01:10:34.317497 > "257 "/" is current directory[CR][LF]" 01:10:34.541105 < "EPSV" 01:10:34.541874 > "500 no such command[CR][LF]" 01:10:34.641295 < "PASV" 01:10:34.641661 ====> Passive DATA channel requested by client 01:10:34.641828 DATA sockfilt for passive data channel starting... 01:10:34.715850 DATA sockfilt for passive data channel started (pid 238219) 01:10:34.717171 DATA sockfilt for passive data channel listens on port 42623 01:10:34.717696 > "227 Entering Passive Mode (127,0,0,1,166,127)[CR][LF]" 01:10:34.717878 Client has been notified that DATA conn will be accepted on port 42623 01:10:34.920930 Client connects to port 42623 01:10:34.921512 ====> Client established passive DATA connection on port 42623 01:10:35.059795 < "TYPE I" 01:10:35.060211 > "200 I modify TYPE as you wanted[CR][LF]" 01:10:35.112804 < "SIZE 337" 01:10:35.113217 > "213 file: 213, Size =51[CR][LF]" 01:10:35.208187 < "REST 3" 01:10:35.208625 > "350 Yeah yeah we set it there for you[CR][LF]" 01:10:35.208836 Set REST position to 3 01:10:35.241781 < "RETR 337" 01:10:35.244123 REST 3 was removed from size, makes 48 left 01:10:35.247937 > "150 Binary data connection for 337 () (48 bytes).[CR][LF]" 01:10:35.248650 =====> Closing passive DATA connection... 01:10:35.248820 Server disconnects passive DATA connection 01:10:35.251332 Server disconnected passive DATA connection 01:10:35.251518 DATA sockfilt for passive data channel quits (pid 238219) 01:10:35.259883 DATA sockfilt for passive data channel quit (pid 238219) 01:10:35.260163 =====> Closed passive DATA connection 01:10:35.260467 > "226 File transfer complete[CR][LF]" 01:10:35.811718 < "ABOR" 01:10:35.812019 ABOR wasn't handled 01:10:35.812305 > "500 ABOR is not dealt with![CR][LF]" 01:10:36.421945 < "QUIT" 01:10:36.422382 > "221 bye bye baby[CR][LF]" 01:10:36.605378 MAIN sockfilt said DISC 01:10:36.605886 ====> Client disconnected 01:10:36.606190 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:09:45.212403 ====> Client connect 01:09:45.215743 Received DATA (on stdin) 01:09:45.215852 > 160 bytes data, server => client 01:09:45.215973 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:09:45.216085 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:09:45.216185 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:09:45.222430 < 16 bytes data, client => server 01:09:45.222575 'USER anonymous\r\n' 01:09:45.225490 Received DATA (on stdin) 01:09:45.225596 > 33 bytes data, server => client 01:09:45.225683 '331 We are happy you popped in!\r\n' 01:09:45.226058 < 22 bytes data, client => server 01:09:45.226136 'PASS ftp@example.com\r\n' 01:09:45.227077 Received DATA (on stdin) 01:09:45.227149 > 30 bytes data, server => client 01:09:45.227253 '230 Welcome you silly person\r\n' 01:09:45.227573 < 5 bytes data, client => server 01:09:45.227641 'PWD\r\n' 01:09:45.228550 Received DATA (on stdin) 01:09:45.228616 > 30 bytes data, server => client 01:09:45.228725 '257 "/" is current directory\r\n' 01:09:45.231519 < 6 bytes data, client => server 01:09:45.231598 'EPSV\r\n' 01:09:45.275268 Received DATA (on stdin) 01:09:45.275423 > 39 bytes data, server => client 01:09:45.275513 '229 Entering Passive Mode (|||39247|)\r\n' 01:09:45.277846 < 8 bytes data, client => server 01:09:45.277941 'TYPE I\r\n' 01:09:45.278497 Received DATA (on stdin) 01:09:45.278577 > 33 bytes data, server => client 01:09:45.278677 '200 I modify TYPE as you wanted\r\n' 01:09:45.282724 < 21 bytes data, client => server 01:09:45.282835 'SIZE verifiedserver\r\n' 01:09:45.283897 Received DATA (on stdin) 01:09:45.283975 > 8 bytes data, server => client 01:09:45.284078 '213 18\r\n' 01:09:45.284560 < 21 bytes data, client => server 01:09:45.284656 'RETR verifiedserver\r\n' 01:09:45.285529 Received DATA (on stdin) 01:09:45.285607 > 29 bytes data, server => client 01:09:45.285732 '150 Binary junk (18 bytes).\r\n' 01:09:45.292638 Received DATA (on stdin) 01:09:45.292740 > 28 bytes data, server => client 01:09:45.292860 '226 File transfer complete\r\n' 01:09:45.347781 < 6 bytes data, client => server 01:09:45.347975 'QUIT\r\n' 01:09:45.349449 Received DATA (on stdin) 01:09:45.349533 > 18 bytes data, server => client 01:09:45.354773 '221 bye bye baby\r\n' 01:09:45.356352 ====> Client disconnect 01:09:45.356708 Received ACKD (on stdin) 01:10:33.376132 ====> Client connect 01:10:33.385644 Received DATA (on stdin) 01:10:33.385796 > 160 bytes data, server => client 01:10:33.386294 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:10:33.386400 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:10:33.386490 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:10:34.725952 < 16 bytes data, client => server 01:10:34.726154 'USER anonymous\r\n' 01:10:34.727655 Received DATA (on stdin) 01:10:34.727744 > 33 bytes data, server => client 01:10:34.727859 '331 We are happy you popped in!\r\n' 01:10:34.835129 < 22 bytes data, client => server 01:10:34.835325 'PASS ftp@example.com\r\n' 01:10:34.838947 Received DATA (on stdin) 01:10:34.839039 > 30 bytes data, server => client 01:10:34.839131 '230 Welcome you silly person\r\n' 01:10:34.930624 < 5 bytes data, client => server 01:10:34.930815 'PWD\r\n' 01:10:34.935618 Received DATA (on stdin) 01:10:34.935729 > 30 bytes data, server => client 01:10:34.935818 '257 "/" is current directory\r\n' 01:10:35.154690 < 6 bytes data, client => server 01:10:35.154877 'EPSV\r\n' 01:10:35.156245 Received DATA (on stdin) 01:10:35.156328 > 21 bytes data, server => client 01:10:35.156433 '500 no such command\r\n' 01:10:35.254788 < 6 bytes data, client => server 01:10:35.254999 'PASV\r\n' 01:10:35.332410 Received DATA (on stdin) 01:10:35.332575 > 47 bytes data, server => client 01:10:35.332687 '227 Entering Passive Mode (127,0,0,1,166,127)\r\n' 01:10:35.673625 < 8 bytes data, client => server 01:10:35.673792 'TYPE I\r\n' 01:10:35.674917 Received DATA (on stdin) 01:10:35.675003 > 33 bytes data, server => client 01:10:35.675096 '200 I modify TYPE as you wanted\r\n' 01:10:35.726575 < 10 bytes data, client => server 01:10:35.726813 'SIZE 337\r\n' 01:10:35.727920 Received DATA (on stdin) 01:10:35.727996 > 25 bytes data, server => client 01:10:35.728080 '213 file: 213, Size =51\r\n' 01:10:35.821975 < 8 bytes data, client => server 01:10:35.822186 'REST 3\r\n' 01:10:35.823324 Received DATA (on stdin) 01:10:35.823406 > 39 bytes data, server => client 01:10:35.823496 '350 Yeah yeah we set it there for you\r\n' 01:10:35.852463 < 10 bytes data, client => server 01:10:35.852643 'RETR 337\r\n' 01:10:35.864869 Received DATA (on stdin) 01:10:35.865005 > 51 bytes data, server => client 01:10:35.865103 '150 Binary data connection for 337 () (48 bytes).\r\n' 01:10:35.875170 Received DATA (on stdin) 01:10:35.875294 > 28 bytes data, server => client 01:10:35.875379 '226 File transfer complete\r\n' 01:10:36.422323 < 6 bytes data, client => server 01:10:36.422501 'ABOR\r\n' 01:10:36.427006 Received DATA (on stdin) 01:10:36.427119 > 29 bytes data, server => client 01:10:36.427219 '500 ABOR is not dealt with!\r\n' 01:10:37.035381 < 6 bytes data, client => server 01:10:37.035538 'QUIT\r\n' 01:10:37.037373 Received DATA (on stdin) 01:10:37.037457 > 18 bytes data, server => client 01:10:37.037535 '221 bye bye baby\r\n' 01:10:37.219825 ====> Client disconnect 01:10:37.222283 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:09:44.263484 Running IPv4 version 01:09:44.271928 Listening on port 39247 01:09:44.272480 Wrote pid 237251 to log/5/server/ftp_sockdata.pid 01:09:44.273379 Received PING (on stdin) 01:09:44.274341 Received PORT (on stdin) 01:09:44.277102 ====> Client connect 01:09:44.286942 Received DATA (on stdin) 01:09:44.287353 > 18 bytes data, server => client 01:09:44.287768 'WE ROOLZ: 202313\r\n' 01:09:44.288047 Received DISC (on stdin) 01:09:44.288604 ====> Client forcibly disconnected 01:09:44.288788 Received QUIT (on stdin) 01:09:44.288866 quits 01:09:44.289433 ============> sockfilt quits 01:10:34.322334 Running IPv4 version 01:10:34.329102 Listening on port 42623 01:10:34.329577 Wrote pid 238219 to log/5/server/ftp_sockdata.pid 01:10:34.330257 Received PING (on stdin) 01:10:34.331294 Received PORT (on stdin) 01:10:34.532015 ====> Client connect 01:10:34.863780 Received DATA (on stdin) 01:10:34.864158 > 5 bytes data, server => client 01:10:34.864509 'data\n' 01:10:34.864824 Received DATA (on stdin) 01:10:34.864894 > 7 bytes data, server => client 01:10:34.864964 ' to\n' 01:10:34.865061 Received DATA (on stdin) 01:10:34.865126 > 10 bytes data, server => client 01:10:34.865196 ' see\n' 01:10:34.865288 Received DATA (on stdin) 01:10:34.865354 > 9 bytes data, server => client 01:10:34.865423 'that FTP\n' 01:10:34.865505 Received DATA (on stdin) 01:10:34.865570 > 6 bytes data, server => client 01:10:34.865651 'works\n' 01:10:34.865734 Received DATA (on stdin) 01:10:34.865799 > 14 bytes data, server => client 01:10:34.865871 ' so does it?\n' 01:10:34.865954 Received DISC (on stdin) 01:10:34.871349 ====> Client forcibly disconnected 01:10:34.871557 Received QUIT (on stdin) 01:10:34.871634 quits 01:10:34.872149 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPSV 500 no such command REPLY SIZE 213 file: 213, Size =51 Testnum 337 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV PASV TYPE I SIZE 337 REST 3 RETR 337 ABOR QUIT === End of file server.input === Start of file stderr337 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:05 --:--:-- 1 100 4 0 4 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 === End of file stderr337 === Start of file trace337 01:10:32.426580 * Trying 127.0.0.1:33729... 01:10:33.359469 * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 43192 01:10:33.621386 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:10:33.977930 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:10:34.007089 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:10:34.019707 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:10:34.025033 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:10:34.132410 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:10:34.198236 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:10:34.221731 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:10:34.295601 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:10:34.315912 => Send header, 5 bytes (0x5) 0000: PWD 01:10:34.332372 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:10:34.370567 * Entry path is '/' 01:10:34.487222 * Request has same path as previous transfer 01:10:34.540014 => Send header, 6 bytes (0x6) 0000: EPSV 01:10:34.555459 * Connect data stream passively 01:10:34.565100 <= Recv header, 21 bytes (0x15) 0000: 500 no such command 01:10:34.614754 * Failed EPSV attempt. Disabling EPSV 01:10:34.640104 => Send header, 6 bytes (0x6) 0000: PASV 01:10:34.725992 <= Recv header, 47 bytes (0x2f) 0000: 227 Entering Passive Mode (127,0,0,1,166,127) 01:10:34.769886 * Skip 127.0.0.1 for data connection, reuse 127.0.0.1 instead 01:10:34.849351 * Connecting to 127.0.0.1 (127.0.0.1) port 42623 01:10:34.911354 * Trying 127.0.0.1:42623... 01:10:35.007622 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 42623) from 127.0.0.1 port 51836 01:10:35.058973 => Send header, 8 bytes (0x8) 0000: TYPE I 01:10:35.078634 log/7/stdout341 2> log/7/stderr341 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind342 ../src/curl -q --output log/2/curl342.out --include --trace-ascii log/2/trace342 --trace-time http://127.0.0.1:39863/342 --etag-compare log/2/etag342 > log/2/stdout342 2> log/2/stderr342 = Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:10:35.111911 => Send header, 10 bytes (0xa) 0000: SIZE 337 01:10:35.141841 <= Recv header, 25 bytes (0x19) 0000: 213 file: 213, Size =51 01:10:35.199204 * Instructs server to resume from offset 3 01:10:35.207297 => Send header, 8 bytes (0x8) 0000: REST 3 01:10:35.223213 <= Recv header, 39 bytes (0x27) 0000: 350 Yeah yeah we set it there for you 01:10:35.237780 => Send header, 10 bytes (0xa) 0000: RETR 337 01:10:35.251874 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 337 () (48 bytes). 01:10:35.276077 * Maxdownload = 4 01:10:35.286131 * Getting file with size: 4 01:10:35.440859 <= Recv data, 4 bytes (0x4) 0000: data 01:10:35.793971 * Remembering we are in dir "" 01:10:35.805310 => Send header, 6 bytes (0x6) 0000: ABOR 01:10:35.984193 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:10:36.030103 * partial download completed, closing connection 01:10:36.361893 * shutting down connection #0 === End of file trace337 === Start of file valgrind337 ==237345== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind337 test 0341...[A non existing file with --etag-compare is just a blank] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind341 ../src/curl -q --output log/7/curl341.out --include --trace-ascii log/7/trace341 --trace-time http://127.0.0.1:34897/341 --etag-compare log/7/etag341 > log/7/stdout341 2> log/7/stderr341 valgrind ERROR ==237799== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 341 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind341 ../src/curl -q --output log/7/curl341.out --include --trace-ascii log/7/trace341 --trace-time http://127.0.0.1:34897/341 --etag-compare log/7/etag341 > log/7/stdout341 2> log/7/stderr341 === End of file commands.log === Start of file curl341.out HTTP/1.1 200 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Trailer: chunky-trailer Connection: mooo ETag: "asdf" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccc chunky-trailer: header data === End of file curl341.out === Start of file http_server.log 01:09:46.318122 ====> Client connect 01:09:46.318323 accept_connection 3 returned 4 01:09:46.318407 accept_connection 3 returned 0 01:09:46.329061 Read 93 bytes 01:09:46.329215 Process 93 bytes request 01:09:46.329315 Got request: GET /verifiedserver HTTP/1.1 01:09:46.329389 Are-we-friendly question received 01:09:46.329531 Wrote request (93 bytes) input to log/7/server.input 01:09:46.329651 Identifying ourselves as friends 01:09:46.329894 Response sent (57 bytes) and written to log/7/server.response 01:09:46.329961 special request received, no persistency 01:09:46.330020 ====> Client disconnect 0 01:10:34.016978 ====> Client connect 01:10:34.017117 accept_connection 3 returned 4 01:10:34.017199 accept_connection 3 returned 0 01:10:35.130100 Read 101 bytes 01:10:35.130287 Process 101 bytes request 01:10:35.130380 Got request: GET /341 HTTP/1.1 01:10:35.130459 Serve test number 341 part 0 01:10:35.130657 - request found to be complete (341) 01:10:35.130911 Wrote request (101 bytes) input to log/7/server.input 01:10:35.131027 Send response test341 section 01:10:35.131404 Response sent (354 bytes) and written to log/7/server.response 01:10:35.131472 => persistent connection request ended, awaits new request 01:10:37.854763 Connection closed by client 01:10:37.854977 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 46158 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 341 === End of file server.cmd === Start of file server.input GET /341 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* If-None-Match: "" === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Trailer: chunky-trailer Connection: mooo ETag: "asdf" 40 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 30 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 21;heresatest=moooo cccccccccccccccccccccccccccccccc 0 chunky-trailer: header data === End of file server.response === Start of file stderr341 Warning: Failed to open log/7/etag341: No such file or directory % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 145 0 145 0 0 29 0 --:--:-- 0:00:04 --:--:-- 41 100 145 0 145 0 0 29 0 --:--:-- 0:00:04 --:--:-- 40 === End of file stderr341 === Start of file trace341 01:10:34.069112 * Trying 127.0.0.1:34897... 01:10:34.991118 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 45218 01:10:35.112114 * using HTTP/1.x 01:10:35.556414 => Send header, 101 bytes (0x65) 0000: GET /341 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: If-None-Match: "" 0063: 01:10:35.928021 <= Recv header, 28 bytes (0x1c) 0000: HTTP/1.1 200 funky chunky 01:10:36.234459 <= Recv header, 34 bytes (0x22) 0000: Server: fakeit/0.9 fakeitbad/1.0 01:10:36.419532 <= Recv header, 28 bytes (0x1c) 0000: Transfer-Encoding: chunked 01:10:36.452074 <= Recv header, 25 bytes (0x19) 0000: Trailer: chunky-trailer 01:10:36.502285 <= Recv header, 18 bytes (0x12) 0000: Connection: mooo 01:10:36.507811 <= Recv header, 14 bytes (0xe) 0000: ETag: "asdf" 01:10:36.587933 <= Recv header, 2 bytes (0x2) 0000: 01:10:36.648049 <= Recv data, 205 bytes (0xcd) 0000: 40.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0040: aaa.30.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.21;heres 0080: atest=moooo.cccccccccccccccccccccccccccccccc..0.chunky-trailer: 00c0: header data.. 01:10:37.372331 * Connection #0 to host 127.0.0.1:34897 left intact === End of file trace341 === Start of file valgrind341 ==237799== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind341 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 343 in state 4 Runner 2 (id 185908) running test 342 in state 4 Runner 3 (id 185910) running test 344 in state 4 Runner 4 (id 185912) running test 346 in state 4 Runner 5 (id 185914) running test 348 in state 4 Runner 6 (id 185916) running test 347 in state 4 Runner 7 (id 185918) running test 349 in state 4 Runner 8 (id 185920) running test 345 in state 4 test 0342...[Check if --etag-compare set correct etag in header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind342 ../src/curl -q --output log/2/curl342.out --include --trace-ascii log/2/trace342 --trace-time http://127.0.0.1:39863/342 --etag-comCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind343 ../src/curl -q --output log/1/curl343.out --include --trace-ascii log/1/trace343 --trace-time http://127.0.0.1:40641/343 --etag-compare log/1/etag343 --etag-save log/1/out343 > log/1/stdout343 2> log/1/stderr343 pare log/2/etag342 > log/2/stdout342 2> log/2/stderr342 valgrind ERROR ==238032== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 342 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind342 ../src/curl -q --output log/2/curl342.out --include --trace-ascii log/2/trace342 --trace-time http://127.0.0.1:39863/342 --etag-compare log/2/etag342 > log/2/stdout342 2> log/2/stderr342 === End of file commands.log === Start of file curl342.out HTTP/1.1 304 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 0 Connection: close Content-Type: text/html Funny-head: yesyes === End of file curl342.out === Start of file etag342 "21025-dc7-39462498" === End of file etag342 === Start of file http_server.log 01:10:04.597551 ====> Client connect 01:10:04.597703 accept_connection 3 returned 4 01:10:04.597776 accept_connection 3 returned 0 01:10:04.603751 Read 93 bytes 01:10:04.603828 Process 93 bytes request 01:10:04.603912 Got request: GET /verifiedserver HTTP/1.1 01:10:04.603973 Are-we-friendly question received 01:10:04.604076 Wrote request (93 bytes) input to log/2/server.input 01:10:04.604161 Identifying ourselves as friends 01:10:04.604330 Response sent (57 bytes) and written to log/2/server.response 01:10:04.604390 special request received, no persistency 01:10:04.604442 ====> Client disconnect 0 01:10:53.068599 ====> Client connect 01:10:53.068742 accept_connection 3 returned 4 01:10:53.068823 accept_connection 3 returned 0 01:10:54.063267 Read 119 bytes 01:10:54.063463 Process 119 bytes request 01:10:54.063560 Got request: GET /342 HTTP/1.1 01:10:54.063631 Serve test number 342 part 0 01:10:54.063803 - request found to be complete (342) 01:10:54.064056 Wrote request (119 bytes) input to log/2/server.input 01:10:54.064176 Send response test342 section 01:10:54.064576 Response sent (250 bytes) and written to log/2/server.response 01:10:54.064642 => persistent connection request ended, awaits new request 01:10:55.710249 Connection closed by client 01:10:55.710416 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 59984 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 342 === End of file server.cmd === Start of file server.input GET /342 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* If-None-Match: "21025-dc7-39462498" === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 304 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 0 Connection: close Content-Type: text/html Funny-head: yesyes === End of file server.response === Start of file stderr342 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr342 === Start of file trace342 01:10:52.155782 * Trying 127.0.0.1:39863... 01:10:52.984017 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 53680 01:10:53.089519 * using HTTP/1.x 01:10:53.483005 => Send header, 119 bytes (0x77) 0000: GET /342 HTTP/1.1 0013: Host: 127.0.0.1:39863 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: If-None-Match: "21025-dc7-39462498" 0075: 01:10:53.803251 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 304 OK. 01:10:54.087605 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:10:54.181761 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:10:54.200949 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:10:54.207571 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:10:54.213677 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:10:54.228706 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 0. 01:10:54.268343 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:10:54.300503 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:10:54.304903 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:10:54.381496 <= Recv header, 1 bytes (0x1) 0000: . 01:10:54.458534 * we are done reading and this is set to close, stop send 01:10:54.485984 * abort upload 01:10:54.912322 * shutting down connection #0 === End of file trace342 === Start of file valgrind342 ==238032== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind342 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 343 in state 4 Runner 2 (id 185908) running test 350 in state 4 Runner 3 (id 185910) running test 344 in state 4 Runner 4 (id 185912) running test 346 in state 4 Runner 5 (id 185914) running test 348 in state 4 Runner 6 (id 185916) running test 347 in state 4 Runner 7 (id 185918) running test 349 in state 4 Runner 8 (id 185920) running test 345 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 343 in state 4 Runner 2 (id 185908) running test 350 in state 4 Runner 3 (id 185910) running test 344 in state 4 Runner 4 (id 185912) running test 346 in state 4 Runner 5 (id 185914) running test 348 in state 4 Runner 6 (id 185916) running test 347 in state 4 Runner 7 (id 185918) running test 349 in state 4 Runner 8 (id 185920) running test 345 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 343 in state 4 Runner 2 (id 185908) running test 350 in state 4 Runner 3 (id 185910) running test 344 in state 4 Runner 4 (id 185912) running test 346 in state 4 Runner 5 (id 185914) running test 348 in state 4 Runner 6 (id 185916) running test 347 in state 4 Runner 7 (id 185918) running test 349 in state 4 Runner 8 (id 185920) running test 345 in state 4 test 0343...[Both --etag-compare and --etag-save to save new Etag] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind343 ../src/curl -q --output log/1/curl343.out --include --trace-ascii log/1/trace343 --trace-time http://127.0.0.1:40641/343 --etag-compare log/1/etag343 --etag-save log/1/out343 > log/1/stdout343 2> log/1/stderr343 valgrind ERROR ==238290== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 343 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind343 ../src/curl -q --output log/1/curl343.out --include --trace-ascii CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind344 ../src/curl -q --output log/3/curl344.out --include --trace-ascii log/3/trace344 --trace-time http://127.0.0.1:46853/344 --etag-compare log/3/etag344 --etag-save log/3/etag344 > log/3/stdout344 2> log/3/stderr344 log/1/trace343 --trace-time http://127.0.0.1:40641/343 --etag-compare log/1/etag343 --etag-save log/1/out343 > log/1/stdout343 2> log/1/stderr343 === End of file commands.log === Start of file curl343.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-11111" Accept-Ranges: bytes Content-Length: 0 Connection: close Content-Type: text/html Funny-head: yesyes === End of file curl343.out === Start of file etag343 "21025-dc7-39462498" === End of file etag343 === Start of file http_server.log 01:10:39.016688 ====> Client connect 01:10:39.016860 accept_connection 3 returned 4 01:10:39.016942 accept_connection 3 returned 0 01:10:39.049398 Read 93 bytes 01:10:39.049591 Process 93 bytes request 01:10:39.049682 Got request: GET /verifiedserver HTTP/1.1 01:10:39.049748 Are-we-friendly question received 01:10:39.049885 Wrote request (93 bytes) input to log/1/server.input 01:10:39.049987 Identifying ourselves as friends 01:10:39.050170 Response sent (57 bytes) and written to log/1/server.response 01:10:39.050232 special request received, no persistency 01:10:39.050288 ====> Client disconnect 0 01:11:27.691651 ====> Client connect 01:11:27.691794 accept_connection 3 returned 4 01:11:27.691874 accept_connection 3 returned 0 01:11:28.796473 Read 119 bytes 01:11:28.796687 Process 119 bytes request 01:11:28.796784 Got request: GET /343 HTTP/1.1 01:11:28.796856 Serve test number 343 part 0 01:11:28.797035 - request found to be complete (343) 01:11:28.797285 Wrote request (119 bytes) input to log/1/server.input 01:11:28.797394 Send response test343 section 01:11:28.797762 Response sent (247 bytes) and written to log/1/server.response 01:11:28.797833 => persistent connection request ended, awaits new request 01:11:30.714545 Connection closed by client 01:11:30.714721 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 56242 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file out343 "21025-dc7-11111" === End of file out343 === Start of file server.cmd Testnum 343 === End of file server.cmd === Start of file server.input GET /343 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* If-None-Match: "21025-dc7-39462498" === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-11111" Accept-Ranges: bytes Content-Length: 0 Connection: close Content-Type: text/html Funny-head: yesyes === End of file server.response === Start of file stderr343 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr343 === Start of file trace343 01:11:26.739327 * Trying 127.0.0.1:40641... 01:11:27.653984 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 34656 01:11:27.789371 * using HTTP/1.x 01:11:28.223203 => Send header, 119 bytes (0x77) 0000: GET /343 HTTP/1.1 0013: Host: 127.0.0.1:40641 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: If-None-Match: "21025-dc7-39462498" 0075: 01:11:28.572290 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:11:28.893246 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:11:28.998208 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:11:29.026695 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:11:29.036592 <= Recv header, 24 bytes (0x18) 0000: ETag: "21025-dc7-11111". 01:11:29.086797 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:11:29.119836 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 0. 01:11:29.168969 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:11:29.205085 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:11:29.210287 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:11:29.298530 <= Recv header, 1 bytes (0x1) 0000: . 01:11:29.388374 * we are done reading and this is set to close, stop send 01:11:29.420723 * abort upload 01:11:29.901183 * shutting down connection #0 === End of file trace343 === Start of file valgrind343 ==238290== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind343 test 0344...[Both --etag-compare and -save store new Etag using non-existing file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind344 ../src/curl -q --output log/3/curl344.out --include --trace-ascii log/3/trace344 --trace-time http://127.0.0.1:46853/344 --etag-compare log/3/etag344 --etag-save log/3/etag344 > log/3/stdout344 2> log/3/stderr344 valgrind ERROR ==238488== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 344 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind344 ../src/curl -q --output log/3/curl344.out --include --trace-ascii log/3/trace344 --trace-time http://127.0.0.1:46853/344 --etag-compare log/3/etag344 --etag-save log/3/etag344 > log/3/stdout344 2> log/3/stderr344 === End of file commands.log === Start of file curl344.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-11111" Accept-Ranges: bytes Content-Length: 0 Connection: close Content-Type: text/html Funny-head: yesyes === End of file curl344.out === Start of file etag344 "21025-dc7-11111" === End of file etag344 === Start of file http_server.log 01:10:39.140605 ====> Client connect 01:10:39.140804 accept_connection 3 returned 4 01:10:39.140896 accept_connection 3 returned 0 01:10:39.149550 Read 93 bytes 01:10:39.149764 Process 93 bytes request 01:10:39.149874 Got request: GET /verifiedserver HTTP/1.1 01:10:39.149951 Are-we-friendly question received 01:10:39.150133 Wrote request (93 bytes) input to log/3/server.input 01:10:39.150258 Identifying ourselves as friends 01:10:39.150459 Response sent (57 bytes) and written to log/3/server.response 01:10:39.150528 special request received, no persistency 01:10:39.150592 ====> Client disconnect 0 01:11:27.325694 ====> Client connect 01:11:27.325835 accept_connection 3 returned 4 01:11:27.325916 accept_connection 3 returned 0 01:11:28.416020 Read 101 bytes 01:11:28.416220 Process 101 bytes request 01:11:28.416315 Got request: GET /344 HTTP/1.1 01:11:28.416388 Serve test number 344 part 0 01:11:28.416564 - request found to be complete (344) 01:11:28.416809 Wrote request (101 bytes) input to log/3/server.input 01:11:28.416928 Send response test344 section 01:11:28.417335 Response sent (247 bytes) and written to log/3/server.response 01:11:28.417403 => persistent connection request ended, awaits new request 01:11:30.335033 Connection closed by client 01:11:30.335238 ====> Client disconnect 0 ===CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind347 ../src/curl -q --output log/6/curl347.out --include --trace-ascii log/6/trace347 --trace-time http://127.0.0.1:38277/347 --etag-save log/6/etag347 > log/6/stdout347 2> log/6/stderr347 End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 39866 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 344 === End of file server.cmd === Start of file server.input GET /344 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* If-None-Match: "" === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-11111" Accept-Ranges: bytes Content-Length: 0 Connection: close Content-Type: text/html Funny-head: yesyes === End of file server.response === Start of file stderr344 Warning: Failed to open log/3/etag344: No such file or directory % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr344 === Start of file trace344 01:11:27.394021 * Trying 127.0.0.1:46853... 01:11:28.289387 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 53990 01:11:28.411358 * using HTTP/1.x 01:11:28.840101 => Send header, 101 bytes (0x65) 0000: GET /344 HTTP/1.1 0013: Host: 127.0.0.1:46853 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: If-None-Match: "" 0063: 01:11:29.196581 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:11:29.512115 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:11:29.617411 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:11:29.643375 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:11:29.651563 <= Recv header, 24 bytes (0x18) 0000: ETag: "21025-dc7-11111". 01:11:29.702631 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:11:29.736502 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 0. 01:11:29.785021 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:11:29.821029 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:11:29.826230 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:11:29.911264 <= Recv header, 1 bytes (0x1) 0000: . 01:11:29.997641 * we are done reading and this is set to close, stop send 01:11:30.029295 * abort upload 01:11:30.514606 * shutting down connection #0 === End of file trace344 === Start of file valgrind344 ==238488== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind344 test 0347...[--etag-save with blank incoming header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind347 ../src/curl -q --output log/6/curl347.out --include --trace-ascii log/6/trace347 --trace-time http://127.0.0.1:38277/347 --etag-save log/6/etag347 > log/6/stdout347 2> log/6/stderr347 valgrind ERROR ==238681== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 347 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind347 ../src/curl -q --output log/6/curl347.out --include --trace-ascii log/6/trace347 --trace-time http://127.0.0.1:38277/347 --etag-save log/6/etag347 > log/6/stdout347 2> log/6/stderr347 === End of file commands.log === Start of file curl347.out HTTP/1.1 200 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Trailer: chunky-trailer Connection: mooo ETag: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccc chunky-trailer: header data === End of file curl347.out === Start of file http_server.log 01:10:40.120567 ====> Client connect 01:10:40.120733 accept_connection 3 returned 4 01:10:40.120808 accept_connection 3 returned 0 01:10:40.128012 Read 93 bytes 01:10:40.128101 Process 93 bytes request 01:10:40.128194 Got request: GET /verifiedserver HTTP/1.1 01:10:40.128261 Are-we-friendly question received 01:10:40.128373 Wrote request (93 bytes) input to log/6/server.input 01:10:40.128463 Identifying ourselves as friends 01:10:40.128620 Response sent (57 bytes) and written to log/6/server.response 01:10:40.128683 special request received, no persistency 01:10:40.128739 ====> Client disconnect 0 01:11:27.514115 ====> Client connect 01:11:27.514268 accept_connection 3 returned 4 01:11:27.514350 accept_connection 3 returned 0 01:11:28.549139 Read 82 bytes 01:11:28.549341 Process 82 bytes request 01:11:28.549444 Got request: GET /347 HTTP/1.1 01:11:28.549517 Serve test number 347 part 0 01:11:28.549695 - request found to be complete (347) 01:11:28.549957 Wrote request (82 bytes) input to log/6/server.input 01:11:28.550079 Send response test347 section 01:11:28.550467 Response sent (358 bytes) and written to log/6/server.response 01:11:28.550536 => persistent connection request ended, awaits new request 01:11:31.399422 Connection closed by client 01:11:31.399641 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 36854 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 347 === End of file server.cmd === Start of file server.input GET /347 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Trailer: chunky-trailer Connection: mooo ETag: 40 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 30 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 21;heresatest=moooo cccccccccccccccccccccccccccccccc 0 chunky-trailer: header data === End of file server.response === Start of file stderr347 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 145 0 145 0 0 29 0 --:--:-- 0:00:04 --:--:-- 40 100 145 0 145 0 0 29 0 --:--:-- 0:00:04 --:--:-- 39 === End of file stderr347 === Start of file trace347 01:11:27.571521 * Trying 127.0.0.1:38277... 01:11:28.488278 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 53308 01:11:28.623738 * using HTTP/1.x 01:11:28.976052 => Send header, 82 bytes (0xCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind345 ../src/curl -q --output log/8/curl345.out --include --trace-ascii log/8/trace345 --trace-time http://127.0.0.1:39461/345 --etag-compare log/8/etag345 --etag-save log/8/etag345 > log/8/stdout345 2> log/8/stderr345 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind346 ../src/curl -q --output log/4/curl346.out --include --trace-ascii log/4/trace346 --trace-time -x http://127.0.0.1:42621/346 -U puser: -u suser: http://remote.example/346 > log/4/stdout346 2> log/4/stderr346 52) 0000: GET /347 HTTP/1.1 0013: Host: 127.0.0.1:38277 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:11:29.326282 <= Recv header, 28 bytes (0x1c) 0000: HTTP/1.1 200 funky chunky 01:11:29.657764 <= Recv header, 34 bytes (0x22) 0000: Server: fakeit/0.9 fakeitbad/1.0 01:11:29.847324 <= Recv header, 28 bytes (0x1c) 0000: Transfer-Encoding: chunked 01:11:29.878470 <= Recv header, 25 bytes (0x19) 0000: Trailer: chunky-trailer 01:11:29.936194 <= Recv header, 18 bytes (0x12) 0000: Connection: mooo 01:11:29.940533 <= Recv header, 9 bytes (0x9) 0000: ETag: 01:11:30.046973 <= Recv header, 2 bytes (0x2) 0000: 01:11:30.107730 <= Recv data, 214 bytes (0xd6) 0000: 40 0004: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0046: 30 004a: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 007c: 21;heresatest=moooo 0091: cccccccccccccccccccccccccccccccc. 00b4: 0 00b7: chunky-trailer: header data 00d4: 01:11:30.890695 * Connection #0 to host 127.0.0.1:38277 left intact === End of file trace347 === Start of file valgrind347 ==238681== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind347 test 0345...[Both --etag-compare and -save store new Etag using one pre-existing file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind345 ../src/curl -q --output log/8/curl345.out --include --trace-ascii log/8/trace345 --trace-time http://127.0.0.1:39461/345 --etag-compare log/8/etag345 --etag-save log/8/etag345 > log/8/stdout345 2> log/8/stderr345 valgrind ERROR ==238626== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 345 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind345 ../src/curl -q --output log/8/curl345.out --include --trace-ascii log/8/trace345 --trace-time http://127.0.0.1:39461/345 --etag-compare log/8/etag345 --etag-save log/8/etag345 > log/8/stdout345 2> log/8/stderr345 === End of file commands.log === Start of file curl345.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-11111" Accept-Ranges: bytes Content-Length: 0 Connection: close Content-Type: text/html Funny-head: yesyes === End of file curl345.out === Start of file etag345 "21025-dc7-11111" === End of file etag345 === Start of file http_server.log 01:10:39.755191 ====> Client connect 01:10:39.755372 accept_connection 3 returned 4 01:10:39.755456 accept_connection 3 returned 0 01:10:39.762988 Read 93 bytes 01:10:39.763166 Process 93 bytes request 01:10:39.763272 Got request: GET /verifiedserver HTTP/1.1 01:10:39.763352 Are-we-friendly question received 01:10:39.763526 Wrote request (93 bytes) input to log/8/server.input 01:10:39.763648 Identifying ourselves as friends 01:10:39.763854 Response sent (57 bytes) and written to log/8/server.response 01:10:39.763935 special request received, no persistency 01:10:39.764005 ====> Client disconnect 0 01:11:28.051841 ====> Client connect 01:11:28.051991 accept_connection 3 returned 4 01:11:28.052075 accept_connection 3 returned 0 01:11:29.161011 Read 119 bytes 01:11:29.161215 Process 119 bytes request 01:11:29.161314 Got request: GET /345 HTTP/1.1 01:11:29.161385 Serve test number 345 part 0 01:11:29.161561 - request found to be complete (345) 01:11:29.161820 Wrote request (119 bytes) input to log/8/server.input 01:11:29.161935 Send response test345 section 01:11:29.162353 Response sent (247 bytes) and written to log/8/server.response 01:11:29.162424 => persistent connection request ended, awaits new request 01:11:31.154908 Connection closed by client 01:11:31.155113 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 60284 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 345 === End of file server.cmd === Start of file server.input GET /345 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* If-None-Match: "21025-dc7-39462498" === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-11111" Accept-Ranges: bytes Content-Length: 0 Connection: close Content-Type: text/html Funny-head: yesyes === End of file server.response === Start of file stderr345 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr345 === Start of file trace345 01:11:28.100203 * Trying 127.0.0.1:39461... 01:11:29.008749 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 56704 01:11:29.131627 * using HTTP/1.x 01:11:29.583209 => Send header, 119 bytes (0x77) 0000: GET /345 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: If-None-Match: "21025-dc7-39462498" 0075: 01:11:29.933337 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:11:30.260046 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:11:30.369587 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:11:30.396307 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:11:30.405259 <= Recv header, 24 bytes (0x18) 0000: ETag: "21025-dc7-11111". 01:11:30.459474 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:11:30.493235 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 0. 01:11:30.543525 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:11:30.603587 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:11:30.615811 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:11:30.714143 <= Recv header, 1 bytes (0x1) 0000: . 01:11:30.801265 * we are done reading and this is set to close, stop send 01:11:30.832357 * abort upload 01:11:31.328822 * shutting down connection #0 === End of file trace345 === Start of file valgrind345 ==238626== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind345 test 0346...[HTTP GET over proxy with credentials using blank passwords] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind346 ../src/curl -q --output log/4/curl346.out --include --trace-ascii log/4/trace346 --trace-time -x http://127.0.0.1:42621/346 -U puser: -u suser: http://remote.example/346 > log/4/stdout346 2> log/4/stderr346 valgrind ERROR ==238664== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 346 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind346 ../src/curl -q --outpuCMD (5632): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind349 ../src/curl -q --output log/7/curl349.out --include --trace-ascii log/7/trace349 --trace-time http://127.0.0.1:34897/349 --fail-with-body > log/7/stdout349 2> log/7/stderr349 t log/4/curl346.out --include --trace-ascii log/4/trace346 --trace-time -x http://127.0.0.1:42621/346 -U puser: -u suser: http://remote.example/346 > log/4/stdout346 2> log/4/stderr346 === End of file commands.log === Start of file curl346.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl346.out === Start of file http_server.log 01:10:41.054491 ====> Client connect 01:10:41.054684 accept_connection 3 returned 4 01:10:41.054772 accept_connection 3 returned 0 01:10:41.062766 Read 93 bytes 01:10:41.062902 Process 93 bytes request 01:10:41.063005 Got request: GET /verifiedserver HTTP/1.1 01:10:41.063085 Are-we-friendly question received 01:10:41.063229 Wrote request (93 bytes) input to log/4/server.input 01:10:41.063344 Identifying ourselves as friends 01:10:41.063548 Response sent (57 bytes) and written to log/4/server.response 01:10:41.063618 special request received, no persistency 01:10:41.063680 ====> Client disconnect 1 01:10:41.063768 Wrote request (13 bytes) input to log/4/server.input 01:11:29.174237 ====> Client connect 01:11:29.174378 accept_connection 3 returned 4 01:11:29.174457 accept_connection 3 returned 0 01:11:30.402406 Read 200 bytes 01:11:30.402605 Process 200 bytes request 01:11:30.402700 Got request: GET http://remote.example/346 HTTP/1.1 01:11:30.402769 Serve test number 346 part 0 01:11:30.402938 - request found to be complete (346) 01:11:30.403190 Wrote request (200 bytes) input to log/4/server.input 01:11:30.403299 Send response test346 section 01:11:30.403707 Response sent (256 bytes) and written to log/4/server.response 01:11:30.403771 => persistent connection request ended, awaits new request 01:11:32.411362 Connection closed by client 01:11:32.411541 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 49646 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 346 === End of file server.cmd === Start of file server.input GET http://remote.example/346 HTTP/1.1 Host: remote.example Proxy-Authorization: Basic cHVzZXI6 Authorization: Basic c3VzZXI6 User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr346 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr346 === Start of file trace346 01:11:28.235788 * Trying 127.0.0.1:42621... 01:11:29.154003 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 37072 01:11:29.279341 * using HTTP/1.x 01:11:29.423725 * Proxy auth using Basic with user 'puser' 01:11:29.456490 * Server auth using Basic with user 'suser' 01:11:29.827458 => Send header, 200 bytes (0xc8) 0000: GET http://remote.example/346 HTTP/1.1 0028: Host: remote.example 003e: Proxy-Authorization: Basic cHVzZXI6 0063: Authorization: Basic c3VzZXI6 0082: User-Agent: curl/8.17.0 009b: Accept: */* 00a8: Proxy-Connection: Keep-Alive 00c6: 01:11:30.199249 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:11:30.522579 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:11:30.634956 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:11:30.661349 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:11:30.669793 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:11:30.677457 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:11:30.709869 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:11:30.768978 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:11:30.805965 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:11:30.811221 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:11:30.898519 <= Recv header, 1 bytes (0x1) 0000: . 01:11:30.958694 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:11:31.075235 * we are done reading and this is set to close, stop send 01:11:31.107846 * abort upload 01:11:31.596308 * shutting down connection #0 === End of file trace346 === Start of file valgrind346 ==238664== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind346 test 0349...[HTTP GET --fail-with-body on HTTP error return] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind349 ../src/curl -q --output log/7/curl349.out --include --trace-ascii log/7/trace349 --trace-time http://127.0.0.1:34897/349 --fail-with-body > log/7/stdout349 2> log/7/stderr349 valgrind ERROR ==239132== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 349 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind349 ../src/curl -q --output log/7/curl349.out --include --trace-ascii log/7/trace349 --trace-time http://127.0.0.1:34897/349 --fail-with-body > log/7/stdout349 2> log/7/stderr349 === End of file commands.log === Start of file curl349.out HTTP/1.0 404 BAD BOY swsclose Content-Type: text/html This silly page doesn't reaaaaaly exist so you should not get it. === End of file curl349.out === Start of file http_server.log 01:10:41.689084 ====> Client connect 01:10:41.689255 accept_connection 3 returned 4 01:10:41.689337 accept_connection 3 returned 0 01:10:41.694630 Read 93 bytes 01:10:41.694804 Process 93 bytes request 01:10:41.694918 Got request: GET /verifiedserver HTTP/1.1 01:10:41.694995 Are-we-friendly question received 01:10:41.695143 Wrote request (93 bytes) input to log/7/server.input 01:10:41.695260 Identifying ourselves as friends 01:10:41.695435 Response sent (57 bytes) and written to log/7/server.response 01:10:41.695506 special request received, no persistency 01:10:41.695579 ====> Client disconnect 0 01:11:29.128234 ====> Client connect 01:11:29.128380 accept_connection 3 returned 4 01:11:29.128467 accept_connection 3 returned 0 01:11:30.157370 Read 82 bytes 01:11:30.157538 Process 82 bytes request 01:11:30.157635 Got request: GET /349 HTTP/1.1 01:11:30.157708 Serve test number 349 part 0 01:11:30.157882 - request found to be complete (349) 01:11:30.158159 Wrote request (82 bytes) input to log/7/server.input 01:11:30.158275 Send response test349 section 01:11:30.158475 connection close instruction "swsclose" found in response 01:11:30.158637 Response sent (121 bytes) and written to log/7/server.response 01:11:30.158702 instructeCMD (17920): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind348 ../src/curl -q --output log/5/curl348.out --include --trace-ascii log/5/trace348 --trace-time ftp://127.0.0.1:33729/348 -T log/5/test348.txt > log/5/stdout348 2> log/5/stderr348 d to close connection after server-reply 01:11:30.158761 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 45222 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 349 === End of file server.cmd === Start of file server.input GET /349 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.0 404 BAD BOY swsclose Content-Type: text/html This silly page doesn't reaaaaaly exist so you should not get it. === End of file server.response === Start of file stderr349 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 66 0 66 0 0 14 0 --:--:-- 0:00:04 --:--:-- 20 100 66 0 66 0 0 14 0 --:--:-- 0:00:04 --:--:-- 19 curl: (22) The requested URL returned error: 404 === End of file stderr349 === Start of file trace349 01:11:29.179135 * Trying 127.0.0.1:34897... 01:11:30.103237 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 44614 01:11:30.230513 * using HTTP/1.x 01:11:30.586055 => Send header, 82 bytes (0x52) 0000: GET /349 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:11:30.932982 * HTTP 1.0, assume close after body 01:11:30.955935 <= Recv header, 30 bytes (0x1e) 0000: HTTP/1.0 404 BAD BOY swsclose. 01:11:31.317458 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:11:31.487763 <= Recv header, 1 bytes (0x1) 0000: . 01:11:31.551253 <= Recv data, 66 bytes (0x42) 0000: This silly page doesn't reaaaaaly exist so you should not get it 0040: .. 01:11:31.683124 * abort upload 01:11:31.708620 <= Recv data, 0 bytes (0x0) 01:11:32.207155 * shutting down connection #0 === End of file trace349 === Start of file valgrind349 ==239132== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind349 test 0348...[FTP upload file with 552 disk full response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind348 ../src/curl -q --output log/5/curl348.out --include --trace-ascii log/5/trace348 --trace-time ftp://127.0.0.1:33729/348 -T log/5/test348.txt > log/5/stdout348 2> log/5/stderr348 valgrind ERROR ==238843== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 348 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind348 ../src/curl -q --output log/5/curl348.out --include --trace-ascii log/5/trace348 --trace-time ftp://127.0.0.1:33729/348 -T log/5/test348.txt > log/5/stdout348 2> log/5/stderr348 === End of file commands.log === Start of file ftp_server.log 01:10:40.877599 ====> Client connect 01:10:40.878619 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:10:40.884306 < "USER anonymous" 01:10:40.884697 > "331 We are happy you popped in![CR][LF]" 01:10:40.885911 < "PASS ftp@example.com" 01:10:40.886752 > "230 Welcome you silly person[CR][LF]" 01:10:40.887231 < "PWD" 01:10:40.889453 > "257 "/" is current directory[CR][LF]" 01:10:40.890134 < "EPSV" 01:10:40.890332 ====> Passive DATA channel requested by client 01:10:40.890469 DATA sockfilt for passive data channel starting... 01:10:40.939293 DATA sockfilt for passive data channel started (pid 238654) 01:10:40.941038 DATA sockfilt for passive data channel listens on port 41871 01:10:40.941480 > "229 Entering Passive Mode (|||41871|)[CR][LF]" 01:10:40.941670 Client has been notified that DATA conn will be accepted on port 41871 01:10:40.945943 Client connects to port 41871 01:10:40.946141 ====> Client established passive DATA connection on port 41871 01:10:40.947223 < "TYPE I" 01:10:40.947600 > "200 I modify TYPE as you wanted[CR][LF]" 01:10:40.948364 < "SIZE verifiedserver" 01:10:40.948669 > "213 18[CR][LF]" 01:10:40.949623 < "RETR verifiedserver" 01:10:40.949888 > "150 Binary junk (18 bytes).[CR][LF]" 01:10:40.950512 =====> Closing passive DATA connection... 01:10:40.950693 Server disconnects passive DATA connection 01:10:40.951348 Server disconnected passive DATA connection 01:10:40.951529 DATA sockfilt for passive data channel quits (pid 238654) 01:10:40.954131 DATA sockfilt for passive data channel quit (pid 238654) 01:10:40.954334 =====> Closed passive DATA connection 01:10:40.954661 > "226 File transfer complete[CR][LF]" 01:10:41.012191 < "QUIT" 01:10:41.012677 > "221 bye bye baby[CR][LF]" 01:10:41.018008 MAIN sockfilt said DISC 01:10:41.018972 ====> Client disconnected 01:10:41.019324 Awaiting input 01:11:28.777599 ====> Client connect 01:11:28.778412 FTPD: Getting commands from log/5/server.cmd 01:11:28.778772 FTPD: instructed to use respond to STOR with '552 disk full' 01:11:28.779019 FTPD: run test case number: 348 01:11:28.780170 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:11:30.113177 < "USER anonymous" 01:11:30.113603 > "331 We are happy you popped in![CR][LF]" 01:11:30.225103 < "PASS ftp@example.com" 01:11:30.227701 > "230 Welcome you silly person[CR][LF]" 01:11:30.317813 < "PWD" 01:11:30.318281 > "257 "/" is current directory[CR][LF]" 01:11:30.543327 < "EPSV" 01:11:30.543713 ====> Passive DATA channel requested by client 01:11:30.543886 DATA sockfilt for passive data channel starting... 01:11:30.633475 DATA sockfilt for passive data channel started (pid 239595) 01:11:30.634691 DATA sockfilt for passive data channel listens on port 42057 01:11:30.637639 > "229 Entering Passive Mode (|||42057|)[CR][LF]" 01:11:30.637896 Client has been notified that DATA conn will be accepted on port 42057 01:11:30.838742 Client connects to port 42057 01:11:30.839308 ====> Client established passive DATA connection on port 42057 01:11:30.941892 < "TYPE I" 01:11:30.947642 > "200 I modify TYPE as you wanted[CR][LF]" 01:11:30.993920 < "STOR 348" 01:11:30.994270 STOR test number 348 in log/5/upload.348 01:11:30.994560 > "125 Gimme gimme gimme![CR][LF]" 01:11:31.321578 > Appending 51 bytes to file 01:11:31.322360 =====> Closing passive DATA connection... 01:11:31.322546 Server disconnects passive DATA connection 01:11:31.322881 Server disconnected passive DATA connection 01:11:31.323075 DATA sockfilt for passive data channel quits (pid 239595) 01:11:31.326359 DATA sockfilt for passive data channel quit (pid 239595) 01:11:31.326543 =====> Closed passive DATA connection 01:11:31.326728 received 51 bytes upload 01:11:31.327019 > "552 disk full[CR][LF]" 01:11:33.016316 < "QUIT" 01:11:33.020953 > "221 bye bye baby[CR][LF]" 01:11:33.157571 MAIN sockfilt said DISC 01:11:33.158100 ====> Client disconnected 01:11:33.158406 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:10:41.489826 ====> Client connect 01:10:41.493612 Received DATA (on stdin) 01:10:41.493710 > 160 bytes data, server => client 01:10:41.493830 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:10:41.493942 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:10:41.494040 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:10:41.498183 < 16 bytes data, client => server 01:10:41.498318 'USER anonymous\r\n' 01:10:41.499655 Received DATA (on stdin) 01:10:41.499733 > 33 bytes data, server => client 01:10:41.499814 '331 We are happy you popped in!\r\n' 01:10:41.500101 < 22 bytes data, client => server 01:10:41.500174 'PASS ftp@example.com\r\n' 01:10:41.500871 Received DATA (on stdin) 01:10:41.500935 > 30 bytes data, server => client 01:10:41.501029 '230 Welcome you silly person\r\n' 01:10:41.501261 < 5 bytes data, client => server 01:10:41.501324 'PWD\r\n' 01:10:41.502253 Received DATA (on stdin) 01:10:41.502320 > 30 bytes data, server => client 01:10:41.502396 '257 "/" is current directory\r\n' 01:10:41.504423 < 6 bytes data, client => server 01:10:41.504490 'EPSV\r\n' 01:10:41.556679 Received DATA (on stdin) 01:10:41.556840 > 39 bytes data, server => client 01:10:41.556951 '229 Entering Passive Mode (|||41871|)\r\n' 01:10:41.561595 < 8 bytes data, client => server 01:10:41.561665 'TYPE I\r\n' 01:10:41.562175 Received DATA (on stdin) 01:10:41.562230 > 33 bytes data, server => client 01:10:41.562336 '200 I modify TYPE as you wanted\r\n' 01:10:41.562748 < 21 bytes data, client => server 01:10:41.562839 'SIZE verifiedserver\r\n' 01:10:41.563395 Received DATA (on stdin) 01:10:41.563474 > 8 bytes data, server => client 01:10:41.563553 '213 18\r\n' 01:10:41.564046 < 21 bytes data, client => server 01:10:41.564134 'RETR verifiedserver\r\n' 01:10:41.564597 Received DATA (on stdin) 01:10:41.564672 > 29 bytes data, server => client 01:10:41.564766 '150 Binary junk (18 bytes).\r\n' 01:10:41.569688 Received DATA (on stdin) 01:10:41.569853 > 28 bytes data, server => client 01:10:41.569952 '226 File transfer complete\r\n' 01:10:41.625653 < 6 bytes data, client => server 01:10:41.625825 'QUIT\r\n' 01:10:41.628207 Received DATA (on stdin) 01:10:41.628308 > 18 bytes data, server => client 01:10:41.628403 '221 bye bye baby\r\n' 01:10:41.632344 ====> Client disconnect 01:10:41.633460 Received ACKD (on stdin) 01:11:29.388960 ====> Client connect 01:11:29.394725 Received DATA (on stdin) 01:11:29.394853 > 160 bytes data, server => client 01:11:29.394967 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:11:29.395069 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:11:29.395156 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:11:30.726818 < 16 bytes data, client => server 01:11:30.727025 'USER anonymous\r\n' 01:11:30.728199 Received DATA (on stdin) 01:11:30.728287 > 33 bytes data, server => client 01:11:30.728388 '331 We are happy you popped in!\r\n' 01:11:30.838131 < 22 bytes data, client => server 01:11:30.838315 'PASS ftp@example.com\r\n' 01:11:30.840156 Received DATA (on stdin) 01:11:30.840259 > 30 bytes data, server => client 01:11:30.842661 '230 Welcome you silly person\r\n' 01:11:30.931182 < 5 bytes data, client => server 01:11:30.931370 'PWD\r\n' 01:11:30.935500 Received DATA (on stdin) 01:11:30.935609 > 30 bytes data, server => client 01:11:30.935704 '257 "/" is current directory\r\n' 01:11:31.156779 < 6 bytes data, client => server 01:11:31.156966 'EPSV\r\n' 01:11:31.249696 Received DATA (on stdin) 01:11:31.249838 > 39 bytes data, server => client 01:11:31.252839 '229 Entering Passive Mode (|||42057|)\r\n' 01:11:31.555310 < 8 bytes data, client => server 01:11:31.555512 'TYPE I\r\n' 01:11:31.556935 Received DATA (on stdin) 01:11:31.557019 > 33 bytes data, server => client 01:11:31.562674 '200 I modify TYPE as you wanted\r\n' 01:11:31.607396 < 10 bytes data, client => server 01:11:31.607588 'STOR 348\r\n' 01:11:31.609537 Received DATA (on stdin) 01:11:31.609623 > 24 bytes data, server => client 01:11:31.609708 '125 Gimme gimme gimme!\r\n' 01:11:31.941901 Received DATA (on stdin) 01:11:31.942053 > 15 bytes data, server => client 01:11:31.942132 '552 disk full\r\n' 01:11:33.629746 < 6 bytes data, client => server 01:11:33.629947 'QUIT\r\n' 01:11:33.631349 Received DATA (on stdin) 01:11:33.631437 > 18 bytes data, server => client 01:11:33.635955 '221 bye bye baby\r\n' 01:11:33.771899 ====> Client disconnect 01:11:33.773251 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:10:40.543225 Running IPv4 version 01:10:40.552172 Listening on port 41871 01:10:40.552683 Wrote pid 238654 to log/5/server/ftp_sockdata.pid 01:10:40.553553 Received PING (on stdin) 01:10:40.554969 Received PORT (on stdin) 01:10:40.560572 ====> Client connect 01:10:40.564885 Received DATA (on stdin) 01:10:40.565319 > 18 bytes data, server => client 01:10:40.565761 'WE ROOLZ: 202313\r\n' 01:10:40.565977 Received DISC (on stdin) 01:10:40.566078 ====> Client forcibly disconnected 01:10:40.566432 Received QUIT (on stdin) 01:10:40.566503 quits 01:10:40.566929 ============> sockfilt quits 01:11:30.228309 Running IPv4 version 01:11:30.246401 Listening on port 42057 01:11:30.246963 Wrote pid 239595 to log/5/server/ftp_sockdata.pid 01:11:30.247746 Received PING (on stdin) 01:11:30.248658 Received PORT (on stdin) 01:11:30.453076 ====> Client connect 01:11:30.935686 < 51 bytes data, client => server 01:11:30.936221 'data\n to\n see\nthat FTP\nworks\n so does it?\n' 01:11:30.937375 Received DISC (on stdin) 01:11:30.937525 ====> Client forcibly disconnected 01:11:30.937893 Received QUIT (on stdin) 01:11:30.937978 quits 01:11:30.938502 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd STOR 552 disk full Testnum 348 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I STOR 348 QUIT === End of file server.input === Start of file stderr348 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 51 0 0 100 51 0 10 0:00:05 0:00:04 0:00:01 13 100 51 0 0 100 51 0 9 0:00:05 0:00:05 --:--:-- 12 curl: (70) Exceeded storage allocation === End of file stderr348 === Start of file test348.txt data to see that FTP works so does it? === End of file test348.txt === Start of file trace348 01:11:28.445511 * Trying 127.0.0.1:33729... 01:11:29.363837 * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 36664 01:11:29.623626 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:11:29.980057 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:11:30.009343 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:11:30.019583 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:11:30.025565 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:11:30.133059 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:11:30.201493 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:11:30.224638 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:11:30.296385 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:11:30.316596 => Send header, 5 bytes (0x5) 0000: PWD 01:11:30.334029 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:11:30.371954 * Entry path is '/' 01:11:30.489369 * Request has same path as previous transfer 01:11:30.542204 => Send header, 6 bytes (0x6) 0000: EPSV 01:11:30.559477 * Connect data stream passively 01:11:30.642060 <= Recv header, 39 bytes (CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind350 ../src/curl -q --output log/2/curl350.out --include --trace-ascii log/2/trace350 --trace-time ftp://127.0.0.1:39881// --ftp-method multicwd > log/2/stdout350 2> log/2/stderr350 0x27) 0000: 229 Entering Passive Mode (|||42057|) 01:11:30.767778 * Connecting to 127.0.0.1 (127.0.0.1) port 42057 01:11:30.832096 * Trying 127.0.0.1:42057... 01:11:30.922093 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 42057) from 127.0.0.1 port 52182 01:11:30.940738 => Send header, 8 bytes (0x8) 0000: TYPE I 01:11:30.955756 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:11:30.992824 => Send header, 10 bytes (0xa) 0000: STOR 348 01:11:31.028516 <= Recv header, 24 bytes (0x18) 0000: 125 Gimme gimme gimme 01:11:31.336400 => Send data, 51 bytes (0x33) 0000: data. to. see.that FTP.works. so does it?. 01:11:31.532296 * upload completely sent off: 51 bytes 01:11:31.697136 * Remembering we are in dir "" 01:11:31.883902 <= Recv header, 15 bytes (0xf) 0000: 552 disk full 01:11:31.944053 * Exceeded storage allocation 01:11:32.182874 * Connection #0 to host 127.0.0.1:33729 left intact === End of file trace348 === Start of file upload.348 data to see that FTP works so does it? === End of file upload.348 === Start of file valgrind348 ==238843== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind348 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 351 in state 4 Runner 2 (id 185908) running test 350 in state 4 Runner 3 (id 185910) running test 352 in state 4 Runner 4 (id 185912) running test 355 in state 4 Runner 5 (id 185914) running test 360 in state 4 Runner 6 (id 185916) running test 353 in state 4 Runner 7 (id 185918) running test 357 in state 4 Runner 8 (id 185920) running test 354 in state 4 test 0350...[FTP root dir list multicwd] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind350 ../src/curl -q --output log/2/curl350.out --include --trace-ascii log/2/trace350 --trace-time ftp://127.0.0.1:39881// --ftp-method multicwd > log/2/stdout350 2> log/2/stderr350 valgrind ERROR ==239410== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 350 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind350 ../src/curl -q --output log/2/curl350.out --include --trace-ascii log/2/trace350 --trace-time ftp://127.0.0.1:39881// --ftp-method multicwd > log/2/stdout350 2> log/2/stderr350 === End of file commands.log === Start of file curl350.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl350.out === Start of file ftp_server.log 01:10:58.754564 ====> Client connect 01:10:58.755526 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:10:58.763356 < "USER anonymous" 01:10:58.763625 > "331 We are happy you popped in![CR][LF]" 01:10:58.764639 < "PASS ftp@example.com" 01:10:58.765131 > "230 Welcome you silly person[CR][LF]" 01:10:58.766074 < "PWD" 01:10:58.766336 > "257 "/" is current directory[CR][LF]" 01:10:58.768494 < "EPSV" 01:10:58.768701 ====> Passive DATA channel requested by client 01:10:58.768844 DATA sockfilt for passive data channel starting... 01:10:58.808127 DATA sockfilt for passive data channel started (pid 239404) 01:10:58.809191 DATA sockfilt for passive data channel listens on port 38299 01:10:58.809920 > "229 Entering Passive Mode (|||38299|)[CR][LF]" 01:10:58.810091 Client has been notified that DATA conn will be accepted on port 38299 01:10:58.811334 Client connects to port 38299 01:10:58.811526 ====> Client established passive DATA connection on port 38299 01:10:58.812402 < "TYPE I" 01:10:58.812914 > "200 I modify TYPE as you wanted[CR][LF]" 01:10:58.813581 < "SIZE verifiedserver" 01:10:58.814022 > "213 18[CR][LF]" 01:10:58.815073 < "RETR verifiedserver" 01:10:58.815605 > "150 Binary junk (18 bytes).[CR][LF]" 01:10:58.816115 =====> Closing passive DATA connection... 01:10:58.816269 Server disconnects passive DATA connection 01:10:58.817530 Server disconnected passive DATA connection 01:10:58.817698 DATA sockfilt for passive data channel quits (pid 239404) 01:10:58.820671 DATA sockfilt for passive data channel quit (pid 239404) 01:10:58.820837 =====> Closed passive DATA connection 01:10:58.821332 > "226 File transfer complete[CR][LF]" 01:10:58.865038 < "QUIT" 01:10:58.865313 > "221 bye bye baby[CR][LF]" 01:10:58.866257 MAIN sockfilt said DISC 01:10:58.867510 ====> Client disconnected 01:10:58.867766 Awaiting input 01:11:46.837506 ====> Client connect 01:11:46.838244 FTPD: Getting commands from log/2/server.cmd 01:11:46.838581 FTPD: run test case number: 350 01:11:46.839593 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:11:48.107774 < "USER anonymous" 01:11:48.108195 > "331 We are happy you popped in![CR][LF]" 01:11:48.205166 < "PASS ftp@example.com" 01:11:48.205562 > "230 Welcome you silly person[CR][LF]" 01:11:48.294621 < "PWD" 01:11:48.295059 > "257 "/" is current directory[CR][LF]" 01:11:48.470480 < "CWD /" 01:11:48.474245 > "250 CWD command successful.[CR][LF]" 01:11:48.535390 < "EPSV" 01:11:48.535634 ====> Passive DATA channel requested by client 01:11:48.535783 DATA sockfilt for passive data channel starting... 01:11:48.621343 DATA sockfilt for passive data channel started (pid 240707) 01:11:48.622514 DATA sockfilt for passive data channel listens on port 42525 01:11:48.622866 > "229 Entering Passive Mode (|||42525|)[CR][LF]" 01:11:48.623041 Client has been notified that DATA conn will be accepted on port 42525 01:11:48.800925 Client connects to port 42525 01:11:48.801502 ====> Client established passive DATA connection on port 42525 01:11:48.907087 < "TYPE A" 01:11:48.907783 > "200 I modify TYPE as you wanted[CR][LF]" 01:11:48.954675 < "LIST" 01:11:48.954992 > "150 here comes a directory[CR][LF]" 01:11:48.955171 pass LIST data on data connection 01:11:48.956268 send total 20 as data 01:11:48.956505 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 01:11:48.956718 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 01:11:48.956925 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 01:11:48.957136 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 01:11:48.957348 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 01:11:48.960917 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 01:11:48.961133 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 01:11:48.961362 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 01:11:48.961572 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 01:11:48.961776 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 01:11:48.962246 =====> Closing passive DATA connection... 01:11:48.962401 Server disconnects passive DATA connection 01:11:48.965963 Server disconnected passive DATA connection 01:11:48.966137 DATA sockfilt for passive data channel quits (pid 240707) 01:11:48.969506 DATA sockfilt for passive data channel quit (pid 240707) 01:11:48.969664 =====> Closed passive DATA connection 01:11:48.970183 > "226 ASCII transfer complete[CR][LF]" 01:11:50.890450 < "QUIT" 01:11:50.894237 > "221 bye bye baby[CR][LF]" 01:11:51.009776 MAIN sockfilt said DISC 01:11:51.010251 ====> Client disconnected 01:11:51.010521 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:10:59.368930 ====> Client connect 01:10:59.370124 Received DATA (on stdin) 01:10:59.370197 > 160 bytes data, server => client 01:10:59.370301 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:10:59.370396 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:10:59.370479 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:10:59.377473 < 16 bytes data, client => server 01:10:59.377556 'USER anonymous\r\n' 01:10:59.378300 Received DATA (on stdin) 01:10:59.378365 > 33 bytes data, server => client 01:10:59.378446 '331 We are happy you popped in!\r\n' 01:10:59.378806 < 22 bytes data, client => server 01:10:59.378889 'PASS ftp@example.com\r\n' 01:10:59.379660 Received DATA (on stdin) 01:10:59.379727 > 30 bytes data, server => client 01:10:59.380051 '230 Welcome you silly person\r\n' 01:10:59.380340 < 5 bytes data, client => server 01:10:59.380403 'PWD\r\n' 01:10:59.381236 Received DATA (on stdin) 01:10:59.381300 > 30 bytes data, server => client 01:10:59.381379 '257 "/" is current directory\r\n' 01:10:59.382742 < 6 bytes data, client => server 01:10:59.382814 'EPSV\r\n' 01:10:59.424164 Received DATA (on stdin) 01:10:59.424294 > 39 bytes data, server => client 01:10:59.424403 '229 Entering Passive Mode (|||38299|)\r\n' 01:10:59.426573 < 8 bytes data, client => server 01:10:59.426646 'TYPE I\r\n' 01:10:59.427337 Received DATA (on stdin) 01:10:59.427401 > 33 bytes data, server => client 01:10:59.427500 '200 I modify TYPE as you wanted\r\n' 01:10:59.427826 < 21 bytes data, client => server 01:10:59.427899 'SIZE verifiedserver\r\n' 01:10:59.428559 Received DATA (on stdin) 01:10:59.428623 > 8 bytes data, server => client 01:10:59.428927 '213 18\r\n' 01:10:59.429330 < 21 bytes data, client => server 01:10:59.429402 'RETR verifiedserver\r\n' 01:10:59.430036 Received DATA (on stdin) 01:10:59.430100 > 29 bytes data, server => client 01:10:59.430195 '150 Binary junk (18 bytes).\r\n' 01:10:59.435759 Received DATA (on stdin) 01:10:59.435831 > 28 bytes data, server => client 01:10:59.435929 '226 File transfer complete\r\n' 01:10:59.479138 < 6 bytes data, client => server 01:10:59.479225 'QUIT\r\n' 01:10:59.480218 Received DATA (on stdin) 01:10:59.480285 > 18 bytes data, server => client 01:10:59.480356 '221 bye bye baby\r\n' 01:10:59.480880 ====> Client disconnect 01:10:59.481145 Received ACKD (on stdin) 01:11:47.451818 ====> Client connect 01:11:47.454444 Received DATA (on stdin) 01:11:47.454522 > 160 bytes data, server => client 01:11:47.454632 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:11:47.454734 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:11:47.454826 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:11:48.717526 < 16 bytes data, client => server 01:11:48.717702 'USER anonymous\r\n' 01:11:48.723029 Received DATA (on stdin) 01:11:48.723109 > 33 bytes data, server => client 01:11:48.723196 '331 We are happy you popped in!\r\n' 01:11:48.818708 < 22 bytes data, client => server 01:11:48.818865 'PASS ftp@example.com\r\n' 01:11:48.820450 Received DATA (on stdin) 01:11:48.820527 > 30 bytes data, server => client 01:11:48.820614 '230 Welcome you silly person\r\n' 01:11:48.908534 < 5 bytes data, client => server 01:11:48.908698 'PWD\r\n' 01:11:48.912124 Received DATA (on stdin) 01:11:48.912201 > 30 bytes data, server => client 01:11:48.912287 '257 "/" is current directory\r\n' 01:11:49.083950 < 7 bytes data, client => server 01:11:49.084137 'CWD /\r\n' 01:11:49.085460 Received DATA (on stdin) 01:11:49.085537 > 29 bytes data, server => client 01:11:49.089158 '250 CWD command successful.\r\n' 01:11:49.149323 < 6 bytes data, client => server 01:11:49.149419 'EPSV\r\n' 01:11:49.237891 Received DATA (on stdin) 01:11:49.238030 > 39 bytes data, server => client 01:11:49.238124 '229 Entering Passive Mode (|||42525|)\r\n' 01:11:49.520630 < 8 bytes data, client => server 01:11:49.520804 'TYPE A\r\n' 01:11:49.522029 Received DATA (on stdin) 01:11:49.522113 > 33 bytes data, server => client 01:11:49.522224 '200 I modify TYPE as you wanted\r\n' 01:11:49.565726 < 6 bytes data, client => server 01:11:49.565838 'LIST\r\n' 01:11:49.572139 Received DATA (on stdin) 01:11:49.572212 > 28 bytes data, server => client 01:11:49.572292 '150 here comes a directory\r\n' 01:11:49.584484 Received DATA (on stdin) 01:11:49.584559 > 29 bytes data, server => client 01:11:49.584659 '226 ASCII transfer complete\r\n' 01:11:51.503904 < 6 bytes data, client => server 01:11:51.504087 'QUIT\r\n' 01:11:51.505409 Received DATA (on stdin) 01:11:51.505488 > 18 bytes data, server => client 01:11:51.509061 '221 bye bye baby\r\n' 01:11:51.624101 ====> Client disconnect 01:11:51.625312 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:10:58.414000 Running IPv4 version 01:10:58.421179 Listening on port 38299 01:10:58.421612 Wrote pid 239404 to log/2/server/ftp_sockdata.pid 01:10:58.422357 Received PING (on stdin) 01:10:58.423267 Received PORT (on stdin) 01:10:58.425903 ====> Client connect 01:10:58.431154 Received DATA (on stdin) 01:10:58.431417 > 18 bytes data, server => client 01:10:58.431755 'WE ROOLZ: 202189\r\n' 01:10:58.431977 Received DISC (on stdin) 01:10:58.432092 ====> Client forcibly disconnected 01:10:58.432657 Received QUIT (on stdin) 01:10:58.432732 quits 01:10:58.433185 ============> sockfilt quits 01:11:48.216707 Running IPv4 version 01:11:48.230952 Listening on port 42525 01:11:48.231445 Wrote pid 240707 to log/2/server/ftp_sockdata.pid 01:11:48.235577 Received PING (on stdin) 01:11:48.236483 Received PORT (on stdin) 01:11:48.413098 ====> Client connect 01:11:48.571110 Received DATA (on stdin) 01:11:48.571483 > 10 bytes data, server => client 01:11:48.571857 'total 20\r\n' 01:11:48.572123 Received DATA (on stdin) 01:11:48.572197 > 57 bytes data, server => client 01:11:48.572302 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 01:11:48.572400 Received DATA (on stdin) 01:11:48.572467 > 58 bytes data, server => client 01:11:48.572570 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 01:11:48.572652 Received DATA (on stdin) 01:11:48.572716 > 61 bytes data, server => client 01:11:48.572832 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 01:11:48.572907 '\n' 01:11:48.572992 Received DATA (on stdin) 01:11:48.573056 > 62 bytes data, server => client 01:11:48.573155 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 01:11:48.573218 '\n' 01:11:48.578780 Received DATA (on stdin) 01:11:48.578852 > 70 bytes data, server => client 01:11:48.578953 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 01:11:48.579023 'usr/bin\r\n' 01:11:48.579106 Received DATA (on stdin) 01:11:48.579171 > 59 bytes data, server => client 01:11:48.579271 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 01:11:48.579359 Received DATA (on stdin) 01:11:48.579426 > 69 bytes data, server => client 01:11:48.579531 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 01:11:48.579600 'd.html\r\n' 01:11:48.579697 Received DATA (on stdin) 01:11:48.579764 > 59 bytes data, server => client 01:11:48.579867 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 01:11:48.579952 Received DATA (on stdin) 01:11:48.580018 > 59 bytes data, server => client 01:11:48.580121 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 01:11:48.580204 Received DATA (on stdin) 01:11:48.580268 > 59 bytes data, server => client 01:11:48.580369 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 01:11:48.580451 Received DISCCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind351 ../src/curl -q --output log/1/curl351.out --include --trace-ascii log/1/trace351 --trace-time ftp://127.0.0.1:37481// --ftp-method nocwd > log/1/stdout351 2> log/1/stderr351 (on stdin) 01:11:48.580568 ====> Client forcibly disconnected 01:11:48.580912 Received QUIT (on stdin) 01:11:48.580984 quits 01:11:48.581497 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 350 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD / EPSV TYPE A LIST QUIT === End of file server.input === Start of file stderr350 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 623 0 623 0 0 128 0 --:--:-- 0:00:04 --:--:-- 169 100 623 0 623 0 0 120 0 --:--:-- 0:00:05 --:--:-- 154 === End of file stderr350 === Start of file trace350 01:11:46.533900 * Trying 127.0.0.1:39881... 01:11:47.407415 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 37210 01:11:47.648368 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:11:47.981853 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:11:48.008234 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:11:48.017073 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:11:48.022339 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:11:48.122451 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:11:48.185071 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:11:48.205373 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:11:48.275165 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:11:48.293539 => Send header, 5 bytes (0x5) 0000: PWD 01:11:48.308203 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:11:48.342861 * Entry path is '/' 01:11:48.469413 => Send header, 7 bytes (0x7) 0000: CWD / 01:11:48.481891 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 01:11:48.534771 => Send header, 6 bytes (0x6) 0000: EPSV 01:11:48.548531 * Connect data stream passively 01:11:48.627169 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||42525|) 01:11:48.733975 * Connecting to 127.0.0.1 (127.0.0.1) port 42525 01:11:48.792726 * Trying 127.0.0.1:42525... 01:11:48.877774 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 42525) from 127.0.0.1 port 40278 01:11:48.906071 => Send header, 8 bytes (0x8) 0000: TYPE A 01:11:48.922851 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:11:48.951166 => Send header, 6 bytes (0x6) 0000: LIST 01:11:48.976441 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 01:11:49.009300 * Maxdownload = -1 01:11:49.158127 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 01:11:49.556923 * abort upload 01:11:49.579808 <= Recv data, 0 bytes (0x0) 01:11:49.748555 * Remembering we are in dir "/" 01:11:49.928405 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 01:11:50.206644 * Connection #0 to host 127.0.0.1:39881 left intact === End of file trace350 === Start of file valgrind350 ==239410== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind350 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 351 in state 4 Runner 2 (id 185908) running test 361 in state 4 Runner 3 (id 185910) running test 352 in state 4 Runner 4 (id 185912) running test 355 in state 4 Runner 5 (id 185914) running test 360 in state 4 Runner 6 (id 185916) running test 353 in state 4 Runner 7 (id 185918) running test 357 in state 4 Runner 8 (id 185920) running test 354 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 351 in state 4 Runner 2 (id 185908) running test 361 in state 4 Runner 3 (id 185910) running test 352 in state 4 Runner 4 (id 185912) running test 355 in state 4 Runner 5 (id 185914) running test 360 in state 4 Runner 6 (id 185916) running test 353 in state 4 Runner 7 (id 185918) running test 357 in state 4 Runner 8 (id 185920) running test 354 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 351 in state 4 Runner 2 (id 185908) running test 361 in state 4 Runner 3 (id 185910) running test 352 in state 4 Runner 4 (id 185912) running test 355 in state 4 Runner 5 (id 185914) running test 360 in state 4 Runner 6 (id 185916) running test 353 in state 4 Runner 7 (id 185918) running test 357 in state 4 Runner 8 (id 185920) running test 354 in state 4 test 0351...[FTP root dir list nocwd] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind351 ../src/curl -q --output log/1/curl351.out --include --trace-ascii log/1/trace351 --trace-time ftp://127.0.0.1:37481// --ftp-method nocwd > log/1/stdout351 2> log/1/stderr351 valgrind ERROR ==239699== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 351 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind351 ../src/curl -q --output log/1/curl351.out --include --trace-ascii log/1/trace351 --trace-time ftp://127.0.0.1:37481// --ftp-method nocwd > log/1/stdout351 2> log/1/stderr351 === End of file commands.log === Start of file curl351.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl351.out === Start of file ftp_server.log 01:11:34.038112 ====> Client connect 01:11:34.039171 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:11:34.048245 < "USER anonymous" 01:11:34.049411 > "331 We are happy you popped in![CR][LF]" 01:11:34.050035 < "PASS ftp@example.com" 01:11:34.050996 > "230 Welcome you silly person[CR][LF]" 01:11:34.051544 < "PWD" 01:11:34.052106 > "257 "/" is current directory[CR][LF]" 01:11:34.054709 < "EPSV" 01:11:34.054933 ====> Passive DATA channel requested by client 01:11:34.055093 DATA sockfilt for passive data channel starting... 01:11:34.099819 DATA sockfilt for passive data channel started (pid 239653) 01:11:34.101079 DATA sockfilt for passive data channel listens on port 41031 01:11:34.104322 > "229 Entering Passive Mode (|||41031|)[CR][LF]" 01:11:34.104542 Client has been notified that DATA conn will be accepted on port 41031 01:11:34.105262 Client connects to port 41031 01:11:34.105477 ====> Client established passive DATA connection on port 41031 01:11:34.106145 < "TYPE I" 01:11:34.106766 > "200 I modify TYPE as you wanted[CR][LF]" 01:11:34.107864 < "SIZE verifiedserver" 01:11:34.108190 > "213 18[CR][LF]" 01:11:34.109717 < "RETR verifiedserver" 01:11:34.110041 > "150 Binary junk (18 bytes).[CR][LF]" 01:11:34.110577 =====> Closing passive DATA connection... 01:11:34.110740 Server disconnects passive DATA connection 01:11:34.117546 Server disconnected passive DATA connection 01:11:34.117849 DATA sockfilt for passive data channel quits (pid 239653) 01:11:34.121190 DATA sockfilt for passive data channel quit (pid 239653) 01:11:34.121372 =====> Closed passive DATA connection 01:11:34.121680 > "226 File transfer complete[CR][LF]" 01:11:34.165471 < "QUIT" 01:11:34.165921 > "221 bye bye baby[CR][LF]" 01:11:34.167315 MAIN sockfilt said DISC 01:11:34.167668 ====> Client disconnected 01:11:34.167953 Awaiting input 01:12:22.215438 ====> Client connect 01:12:22.216212 FTPD: Getting commands from log/1/server.cmd 01:12:22.216563 FTPD: run test case number: 351 01:12:22.217588 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:12:23.576572 < "USER anonymous" 01:12:23.580956 > "331 We are happy you popped in![CR][LF]" 01:12:23.694303 < "PASS ftp@example.com" 01:12:23.694746 > "230 Welcome you silly person[CR][LF]" 01:12:23.790648 < "PWD" 01:12:23.794289 > "257 "/" is current directory[CR][LF]" 01:12:23.985108 < "EPSV" 01:12:23.985453 ====> Passive DATA channel requested by client 01:12:23.985610 DATA sockfilt for passive data channel starting... 01:12:24.061588 DATA sockfilt for passive data channel started (pid 240935) 01:12:24.063016 DATA sockfilt for passive data channel listens on port 40303 01:12:24.063372 > "229 Entering Passive Mode (|||40303|)[CR][LF]" 01:12:24.063547 Client has been notified that DATA conn will be accepted on port 40303 01:12:24.278490 Client connects to port 40303 01:12:24.279072 ====> Client established passive DATA connection on port 40303 01:12:24.401761 < "TYPE A" 01:12:24.402208 > "200 I modify TYPE as you wanted[CR][LF]" 01:12:24.480118 < "LIST /" 01:12:24.484284 > "150 here comes a directory[CR][LF]" 01:12:24.484605 pass LIST data on data connection 01:12:24.485755 send total 20 as data 01:12:24.486009 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 01:12:24.486221 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 01:12:24.486434 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 01:12:24.486646 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 01:12:24.486851 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 01:12:24.487057 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 01:12:24.487264 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 01:12:24.490875 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 01:12:24.491138 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 01:12:24.491347 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 01:12:24.491851 =====> Closing passive DATA connection... 01:12:24.492017 Server disconnects passive DATA connection 01:12:24.498848 Server disconnected passive DATA connection 01:12:24.499125 DATA sockfilt for passive data channel quits (pid 240935) 01:12:24.502382 DATA sockfilt for passive data channel quit (pid 240935) 01:12:24.502582 =====> Closed passive DATA connection 01:12:24.503280 > "226 ASCII transfer complete[CR][LF]" 01:12:26.687137 < "QUIT" 01:12:26.687569 > "221 bye bye baby[CR][LF]" 01:12:26.823428 MAIN sockfilt said DISC 01:12:26.824322 ====> Client disconnected 01:12:26.824781 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:11:34.652372 ====> Client connect 01:11:34.653664 Received DATA (on stdin) 01:11:34.653770 > 160 bytes data, server => client 01:11:34.653893 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:11:34.654005 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:11:34.654099 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:11:34.661957 < 16 bytes data, client => server 01:11:34.662142 'USER anonymous\r\n' 01:11:34.663245 Received DATA (on stdin) 01:11:34.663324 > 33 bytes data, server => client 01:11:34.663435 '331 We are happy you popped in!\r\n' 01:11:34.663759 < 22 bytes data, client => server 01:11:34.663841 'PASS ftp@example.com\r\n' 01:11:34.664927 Received DATA (on stdin) 01:11:34.664998 > 30 bytes data, server => client 01:11:34.665103 '230 Welcome you silly person\r\n' 01:11:34.665425 < 5 bytes data, client => server 01:11:34.665513 'PWD\r\n' 01:11:34.666425 Received DATA (on stdin) 01:11:34.666497 > 30 bytes data, server => client 01:11:34.666612 '257 "/" is current directory\r\n' 01:11:34.668822 < 6 bytes data, client => server 01:11:34.668905 'EPSV\r\n' 01:11:34.716052 Received DATA (on stdin) 01:11:34.716194 > 39 bytes data, server => client 01:11:34.716306 '229 Entering Passive Mode (|||41031|)\r\n' 01:11:34.719711 < 8 bytes data, client => server 01:11:34.719808 'TYPE I\r\n' 01:11:34.721057 Received DATA (on stdin) 01:11:34.721140 > 33 bytes data, server => client 01:11:34.721253 '200 I modify TYPE as you wanted\r\n' 01:11:34.721935 < 21 bytes data, client => server 01:11:34.722012 'SIZE verifiedserver\r\n' 01:11:34.723149 Received DATA (on stdin) 01:11:34.723225 > 8 bytes data, server => client 01:11:34.723295 '213 18\r\n' 01:11:34.723824 < 21 bytes data, client => server 01:11:34.723902 'RETR verifiedserver\r\n' 01:11:34.726940 Received DATA (on stdin) 01:11:34.727021 > 29 bytes data, server => client 01:11:34.727101 '150 Binary junk (18 bytes).\r\n' 01:11:34.736565 Received DATA (on stdin) 01:11:34.736678 > 28 bytes data, server => client 01:11:34.736765 '226 File transfer complete\r\n' 01:11:34.778717 < 6 bytes data, client => server 01:11:34.778919 'QUIT\r\n' 01:11:34.780801 Received DATA (on stdin) 01:11:34.780885 > 18 bytes data, server => client 01:11:34.780973 '221 bye bye baby\r\n' 01:11:34.781850 ====> Client disconnect 01:11:34.782168 Received ACKD (on stdin) 01:12:22.829653 ====> Client connect 01:12:22.835398 Received DATA (on stdin) 01:12:22.835543 > 160 bytes data, server => client 01:12:22.835653 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:12:22.835754 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:12:22.835844 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:12:24.189841 < 16 bytes data, client => server 01:12:24.190042 'USER anonymous\r\n' 01:12:24.191496 Received DATA (on stdin) 01:12:24.191580 > 33 bytes data, server => client 01:12:24.195868 '331 We are happy you popped in!\r\n' 01:12:24.307638 < 22 bytes data, client => server 01:12:24.307841 'PASS ftp@example.com\r\n' 01:12:24.309523 Received DATA (on stdin) 01:12:24.309609 > 30 bytes data, server => client 01:12:24.309698 '230 Welcome you silly person\r\n' 01:12:24.403978 < 5 bytes data, client => server 01:12:24.404186 'PWD\r\n' 01:12:24.405613 Received DATA (on stdin) 01:12:24.405701 > 30 bytes data, server => client 01:12:24.409202 '257 "/" is current directory\r\n' 01:12:24.598461 < 6 bytes data, client => server 01:12:24.598671 'EPSV\r\n' 01:12:24.678733 Received DATA (on stdin) 01:12:24.678893 > 39 bytes data, server => client 01:12:24.678995 '229 Entering Passive Mode (|||40303|)\r\n' 01:12:25.012193 < 8 bytes data, cCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind360 ../src/curl -q --output log/5/curl360.out --include --trace-ascii log/5/trace360 --trace-time http://127.0.0.1:46263/360 --fail-with-body --fail --no-progress-meter > log/5/stdout360 2> log/5/stderr360 lient => server 01:12:25.012407 'TYPE A\r\n' 01:12:25.016999 Received DATA (on stdin) 01:12:25.017124 > 33 bytes data, server => client 01:12:25.017219 '200 I modify TYPE as you wanted\r\n' 01:12:25.093869 < 8 bytes data, client => server 01:12:25.094085 'LIST /\r\n' 01:12:25.095054 Received DATA (on stdin) 01:12:25.095132 > 28 bytes data, server => client 01:12:25.102072 '150 here comes a directory\r\n' 01:12:25.117377 Received DATA (on stdin) 01:12:25.117525 > 29 bytes data, server => client 01:12:25.117632 '226 ASCII transfer complete\r\n' 01:12:27.300533 < 6 bytes data, client => server 01:12:27.300722 'QUIT\r\n' 01:12:27.305386 Received DATA (on stdin) 01:12:27.305508 > 18 bytes data, server => client 01:12:27.305587 '221 bye bye baby\r\n' 01:12:27.437632 ====> Client disconnect 01:12:27.438599 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:11:34.704425 Running IPv4 version 01:11:34.712576 Listening on port 41031 01:11:34.713104 Wrote pid 239653 to log/1/server/ftp_sockdata.pid 01:11:34.713882 Received PING (on stdin) 01:11:34.714990 Received PORT (on stdin) 01:11:34.719527 ====> Client connect 01:11:34.725672 Received DATA (on stdin) 01:11:34.726015 > 18 bytes data, server => client 01:11:34.726400 'WE ROOLZ: 202066\r\n' 01:11:34.726645 Received DISC (on stdin) 01:11:34.726761 ====> Client forcibly disconnected 01:11:34.732731 Received QUIT (on stdin) 01:11:34.732843 quits 01:11:34.733370 ============> sockfilt quits 01:12:24.666592 Running IPv4 version 01:12:24.674425 Listening on port 40303 01:12:24.674966 Wrote pid 240935 to log/1/server/ftp_sockdata.pid 01:12:24.675748 Received PING (on stdin) 01:12:24.676852 Received PORT (on stdin) 01:12:24.892689 ====> Client connect 01:12:25.102299 Received DATA (on stdin) 01:12:25.102681 > 10 bytes data, server => client 01:12:25.103059 'total 20\r\n' 01:12:25.103328 Received DATA (on stdin) 01:12:25.103398 > 57 bytes data, server => client 01:12:25.103501 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 01:12:25.103599 Received DATA (on stdin) 01:12:25.103665 > 58 bytes data, server => client 01:12:25.103769 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 01:12:25.103852 Received DATA (on stdin) 01:12:25.103917 > 61 bytes data, server => client 01:12:25.104036 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 01:12:25.104111 '\n' 01:12:25.104197 Received DATA (on stdin) 01:12:25.104270 > 62 bytes data, server => client 01:12:25.104390 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 01:12:25.104458 '\n' 01:12:25.104542 Received DATA (on stdin) 01:12:25.104608 > 70 bytes data, server => client 01:12:25.104714 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 01:12:25.104785 'usr/bin\r\n' 01:12:25.104869 Received DATA (on stdin) 01:12:25.104935 > 59 bytes data, server => client 01:12:25.105039 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 01:12:25.105128 Received DATA (on stdin) 01:12:25.105197 > 69 bytes data, server => client 01:12:25.105298 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 01:12:25.112061 'd.html\r\n' 01:12:25.112228 Received DATA (on stdin) 01:12:25.112299 > 59 bytes data, server => client 01:12:25.112420 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 01:12:25.112517 Received DATA (on stdin) 01:12:25.112585 > 59 bytes data, server => client 01:12:25.112690 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 01:12:25.112777 Received DATA (on stdin) 01:12:25.112844 > 59 bytes data, server => client 01:12:25.112950 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 01:12:25.113039 Received DISC (on stdin) 01:12:25.113167 ====> Client forcibly disconnected 01:12:25.113842 Received QUIT (on stdin) 01:12:25.113920 quits 01:12:25.114462 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 351 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE A LIST / QUIT === End of file server.input === Start of file stderr351 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 623 0 623 0 0 109 0 --:--:-- 0:00:05 --:--:-- 141 === End of file stderr351 === Start of file trace351 01:12:21.883381 * Trying 127.0.0.1:37481... 01:12:22.814793 * Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 127.0.0.1 port 47116 01:12:23.076432 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:12:23.449306 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:12:23.477434 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:12:23.484061 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:12:23.489082 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:12:23.596880 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:12:23.673165 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:12:23.694428 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:12:23.768638 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:12:23.789540 => Send header, 5 bytes (0x5) 0000: PWD 01:12:23.807710 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:12:23.846820 * Entry path is '/' 01:12:23.984032 => Send header, 6 bytes (0x6) 0000: EPSV 01:12:24.000676 * Connect data stream passively 01:12:24.083540 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||40303|) 01:12:24.206227 * Connecting to 127.0.0.1 (127.0.0.1) port 40303 01:12:24.271488 * Trying 127.0.0.1:40303... 01:12:24.365396 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 40303) from 127.0.0.1 port 38858 01:12:24.397765 => Send header, 8 bytes (0x8) 0000: TYPE A 01:12:24.438634 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:12:24.478903 => Send header, 8 bytes (0x8) 0000: LIST / 01:12:24.521253 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 01:12:24.559954 * Maxdownload = -1 01:12:24.722122 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 01:12:25.166473 * abort upload 01:12:25.195542 <= Recv data, 0 bytes (0x0) 01:12:25.581754 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 01:12:25.907267 * Connection #0 to host 127.0.0.1:37481 left intact === End of file trace351 === Start of file valgrind351 ==239699== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind351 test 0360...[Error on both --fail-with-body and --fail] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind360 ../src/curl -q --output log/5/curl360.out --include --trace-ascii log/5/trCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind355 ../src/curl -q --output log/4/curl355.out --include --trace-ascii log/4/trace355 --trace-time http://127.0.0.1:42621/355 --alt-svc "" > log/4/stdout355 2> log/4/stderr355 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind352 ../src/curl -q --output log/3/curl352.out --include --trace-ascii log/3/trace352 --trace-time ftp://127.0.0.1:37331// --ftp-method singlecwd > log/3/stdout352 2> log/3/stderr352 ace360 --trace-time http://127.0.0.1:46263/360 --fail-with-body --fail --no-progress-meter > log/5/stdout360 2> log/5/stderr360 valgrind ERROR ==240351== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 360 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind360 ../src/curl -q --output log/5/curl360.out --include --trace-ascii log/5/trace360 --trace-time http://127.0.0.1:46263/360 --fail-with-body --fail --no-progress-meter > log/5/stdout360 2> log/5/stderr360 === End of file commands.log === Start of file curl360.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl360.out === Start of file http_server.log 01:11:36.481955 ====> Client connect 01:11:36.482209 accept_connection 3 returned 4 01:11:36.482315 accept_connection 3 returned 0 01:11:36.489325 Read 93 bytes 01:11:36.489549 Process 93 bytes request 01:11:36.489657 Got request: GET /verifiedserver HTTP/1.1 01:11:36.489740 Are-we-friendly question received 01:11:36.489926 Wrote request (93 bytes) input to log/5/server.input 01:11:36.490071 Identifying ourselves as friends 01:11:36.490317 Response sent (57 bytes) and written to log/5/server.response 01:11:36.490395 special request received, no persistency 01:11:36.490477 ====> Client disconnect 0 01:12:23.243267 ====> Client connect 01:12:23.243412 accept_connection 3 returned 4 01:12:23.243489 accept_connection 3 returned 0 01:12:24.267928 Read 82 bytes 01:12:24.268118 Process 82 bytes request 01:12:24.268204 Got request: GET /360 HTTP/1.1 01:12:24.268277 Serve test number 360 part 0 01:12:24.268435 - request found to be complete (360) 01:12:24.268653 Wrote request (82 bytes) input to log/5/server.input 01:12:24.268777 Send response test360 section 01:12:24.269089 Response sent (267 bytes) and written to log/5/server.response 01:12:24.269158 => persistent connection request ended, awaits new request 01:12:26.180514 Connection closed by client 01:12:26.180717 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 54486 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 360 === End of file server.cmd === Start of file server.input GET /360 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr360 Warning: --fail deselects --fail-with-body here === End of file stderr360 === Start of file trace360 01:12:23.268161 * Trying 127.0.0.1:46263... 01:12:24.188297 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 35938 01:12:24.321601 * using HTTP/1.x 01:12:24.692421 => Send header, 82 bytes (0x52) 0000: GET /360 HTTP/1.1 0013: Host: 127.0.0.1:46263 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:12:25.061729 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:12:25.370132 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:12:25.470963 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:12:25.497793 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:12:25.505798 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:12:25.513212 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:12:25.545452 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:12:25.604492 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:12:25.640253 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:12:25.645856 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:12:25.728696 <= Recv header, 2 bytes (0x2) 0000: 01:12:25.786872 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:12:25.896602 * we are done reading and this is set to close, stop send 01:12:25.927050 * abort upload 01:12:26.368796 * shutting down connection #0 === End of file trace360 === Start of file valgrind360 ==240351== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind360 test 0355...[load Alt-Svc from file and use] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind355 ../src/curl -q --output log/4/curl355.out --include --trace-ascii log/4/trace355 --trace-time http://127.0.0.1:42621/355 --alt-svc "" > log/4/stdout355 2> log/4/stderr355 valgrind ERROR ==240076== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 355 === Start of file altsvc-355 h1 example.com 80 h1 127.0.0.1 42621 "20290222 22:19:28" 0 0 === End of file altsvc-355 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind355 ../src/curl -q --output log/4/curl355.out --include --trace-ascii log/4/trace355 --trace-time http://127.0.0.1:42621/355 --alt-svc "" > log/4/stdout355 2> log/4/stderr355 === End of file commands.log === Start of file curl355.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl355.out === Start of file http_server.log 01:11:36.527956 ====> Client connect 01:11:36.528128 accept_connection 3 returned 4 01:11:36.528211 accept_connection 3 returned 0 01:11:36.534431 Read 93 bytes 01:11:36.534570 Process 93 bytes request 01:11:36.534686 Got request: GET /verifiedserver HTTP/1.1 01:11:36.534771 Are-we-friendly question received 01:11:36.534909 Wrote request (93 bytes) input to log/4/server.input 01:11:36.535023 Identifying ourselves as friends 01:11:36.535241 Response sent (57 bytes) and written to log/4/server.response 01:11:36.535316 special request received, no persistency 01:11:36.535381 ====> Client disconnect 0 01:12:24.284984 ====> Client connect 01:12:24.285127 accept_connection 3 returned 4 01:12:24.285207 accept_connection 3 returned 0 01:12:25.334740 Read 82 bytes 01:12:25.334919 Process 82 bytes request 01:12:25.335015 Got request: GET /355 HTTP/1.1 01:12:25.335086 Serve test number 355 part 0 01:12:25.335251 - request found to be complete (355) 01:12:25.335504 Wrote request (82 bytes) input to log/4/server.input 01:12:25.335612 Send response test355 section 01:12:25.335925 Response sent (138 bytes) and written to log/4/server.response 01:12:25.335995 => persistent connection request ended, awaits new request 01:12:27.306050 Connection closed by client 01:12:27.306213 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 58792 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 355 === End of file server.cmd === Start of file server.input GET /355 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr355 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr355 === Start of file trace355 01:12:23.343606 * Trying 127.0.0.1:42621... 01:12:24.267573 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 48132 01:12:24.395998 * using HTTP/1.x 01:12:24.763880 => Send header, 82 bytes (0x52) 0000: GET /355 HTTP/1.1 0013: Host: 127.0.0.1:42621 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:12:25.130179 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:12:25.458201 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:12:25.584459 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:12:25.664171 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:12:25.702626 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:12:25.709028 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:12:25.791279 <= Recv header, 1 bytes (0x1) 0000: . 01:12:25.849669 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:12:25.959570 * we are done reading and this is set to close, stop send 01:12:25.990601 * abort upload 01:12:26.489264 * shutting down connection #0 === End of file trace355 === Start of file valgrind355 ==240076== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind355 test 0352...[FTP root dir list singlecwd] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind352 ../src/curl -q --output log/3/curl352.out --include --trace-ascii log/3/trace352 --trace-time ftp://127.0.0.1:37331// --ftp-method singlecwd > log/3/stdout352 2> log/3/stderr352 valgrind ERROR ==239828== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 352 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind352 ../src/curl -q --output log/3/curl352.out --include --trace-ascii log/3/trace352 --trace-time ftp://127.0.0.1:37331// --ftp-method singlecwd > log/3/stdout352 2> log/3/stderr352 === End of file commands.log === Start of file curl352.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl352.out === Start of file ftp_server.log 01:11:34.747301 ====> Client connect 01:11:34.748318 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:11:34.753813 < "USER anonymous" 01:11:34.754160 > "331 We are happy you popped in![CR][LF]" 01:11:34.754889 < "PASS ftp@example.com" 01:11:34.755147 > "230 Welcome you silly person[CR][LF]" 01:11:34.755836 < "PWD" 01:11:34.756120 > "257 "/" is current directory[CR][LF]" 01:11:34.758274 < "EPSV" 01:11:34.758490 ====> Passive DATA channel requested by client 01:11:34.758635 DATA sockfilt for passive data channel starting... 01:11:34.810375 DATA sockfilt for passive data channel started (pid 239707) 01:11:34.811964 DATA sockfilt for passive data channel listens on port 39087 01:11:34.812591 > "229 Entering Passive Mode (|||39087|)[CR][LF]" 01:11:34.812803 Client has been notified that DATA conn will be accepted on port 39087 01:11:34.816004 Client connects to port 39087 01:11:34.816396 ====> Client established passive DATA connection on port 39087 01:11:34.818046 < "TYPE I" 01:11:34.819677 > "200 I modify TYPE as you wanted[CR][LF]" 01:11:34.820601 < "SIZE verifiedserver" 01:11:34.821159 > "213 18[CR][LF]" 01:11:34.822636 < "RETR verifiedserver" 01:11:34.823019 > "150 Binary junk (18 bytes).[CR][LF]" 01:11:34.823657 =====> Closing passive DATA connection... 01:11:34.823840 Server disconnects passive DATA connection 01:11:34.827534 Server disconnected passive DATA connection 01:11:34.827754 DATA sockfilt for passive data channel quits (pid 239707) 01:11:34.834763 DATA sockfilt for passive data channel quit (pid 239707) 01:11:34.834992 =====> Closed passive DATA connection 01:11:34.835308 > "226 File transfer complete[CR][LF]" 01:11:34.877629 < "QUIT" 01:11:34.878455 > "221 bye bye baby[CR][LF]" 01:11:34.879408 MAIN sockfilt said DISC 01:11:34.879623 ====> Client disconnected 01:11:34.879918 Awaiting input 01:12:22.697903 ====> Client connect 01:12:22.698677 FTPD: Getting commands from log/3/server.cmd 01:12:22.699020 FTPD: run test case number: 352 01:12:22.704318 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:12:24.026838 < "USER anonymous" 01:12:24.027262 > "331 We are happy you popped in![CR][LF]" 01:12:24.153101 < "PASS ftp@example.com" 01:12:24.157609 > "230 Welcome you silly person[CR][LF]" 01:12:24.251895 < "PWD" 01:12:24.252353 > "257 "/" is current directory[CR][LF]" 01:12:24.436892 < "CWD /" 01:12:24.440959 > "250 CWD command successful.[CR][LF]" 01:12:24.511766 < "EPSV" 01:12:24.512097 ====> Passive DATA channel requested by client 01:12:24.512239 DATA sockfilt for passive data channel starting... 01:12:24.594225 DATA sockfilt for passive data channel started (pid 240941) 01:12:24.601744 DATA sockfilt for passive data channel listens on port 36651 01:12:24.602249 > "229 Entering Passive Mode (|||36651|)[CR][LF]" 01:12:24.602426 Client has been notified that DATA conn will be accepted on port 36651 01:12:24.790918 Client connects to port 36651 01:12:24.791469 ====> Client established passive DATA connection on port 36651 01:12:24.908783 < "TYPE A" 01:12:24.914287 > "200 I modify TYPE as you wanted[CR][LF]" 01:12:24.960446 < "LIST" 01:12:24.960891 > "150 here comes a directory[CR][LF]" 01:12:24.961094 pass LIST data on data connection 01:12:24.962201 send total 20 as data 01:12:24.962436 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 01:12:24.962649 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 01:12:24.962861 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 01:12:24.963069 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 01:12:24.963274 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 01:12:24.963479 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 01:12:24.963686 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 01:12:24.963909 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 01:12:24.964110 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 01:12:24.967693 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 01:12:24.968174 =====> Closing passive DATA connection... 01:12:24.968330 Server disconnects passive DATA connection 01:12:24.971518 Server disconnected passive DATA connection 01:12:24.971732 DATA sockfilt for passive data channel quits (pid 240941) 01:12:24.975047 DATA sockfilt for passive data channel quit (pid 240941) 01:12:24.975221 =====> Closed passive DATA connection 01:12:24.975861 > "226 ASCII transfer complete[CR][LF]" 01:12:27.163349 < "QUIT" 01:12:27.167611 > "221 bye bye baby[CR][LF]" 01:12:27.304351 MAIN sockfilt said DISC 01:12:27.304865 ====> Client disconnected 01:12:27.305173 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:11:34.361579 ====> Client connect 01:11:34.362823 Received DATA (on stdin) 01:11:34.362924 > 160 bytes data, server => client 01:11:34.363046 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:11:34.363158 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:11:34.363250 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:11:34.367766 < 16 bytes data, client => server 01:11:34.367865 'USER anonymous\r\n' 01:11:34.368736 Received DATA (on stdin) 01:11:34.368829 > 33 bytes data, server => client 01:11:34.368927 '331 We are happy you popped in!\r\n' 01:11:34.369166 < 22 bytes data, client => server 01:11:34.369255 'PASS ftp@example.com\r\n' 01:11:34.369742 Received DATA (on stdin) 01:11:34.369821 > 30 bytes data, server => client 01:11:34.369915 '230 Welcome you silly person\r\n' 01:11:34.370120 < 5 bytes data, client => server 01:11:34.370196 'PWD\r\n' 01:11:34.370718 Received DATA (on stdin) 01:11:34.370796 > 30 bytes data, server => client 01:11:34.370890 '257 "/" is current directory\r\n' 01:11:34.372518 < 6 bytes data, client => server 01:11:34.372604 'EPSV\r\n' 01:11:34.427761 Received DATA (on stdin) 01:11:34.427956 > 39 bytes data, server => client 01:11:34.428068 '229 Entering Passive Mode (|||39087|)\r\n' 01:11:34.433210 < 8 bytes data, client => server 01:11:34.433352 'TYPE I\r\n' 01:11:34.433442 Received DATA (on stdin) 01:11:34.433515 > 33 bytes data, server => client 01:11:34.433608 '200 I modify TYPE as you wanted\r\n' 01:11:34.434587 < 21 bytes data, client => server 01:11:34.434672 'SIZE verifiedserver\r\n' 01:11:34.435587 Received DATA (on stdin) 01:11:34.435669 > 8 bytes data, server => client 01:11:34.436024 '213 18\r\n' 01:11:34.436696 < 21 bytes data, client => server 01:11:34.436781 'RETR verifiedserver\r\n' 01:11:34.438679 Received DATA (on stdin) 01:11:34.438758 > 29 bytes data, server => client 01:11:34.438862 '150 Binary junk (18 bytes).\r\n' 01:11:34.450190 Received DATA (on stdin) 01:11:34.450307 > 28 bytes data, server => client 01:11:34.450403 '226 File transfer complete\r\n' 01:11:34.490994 < 6 bytes data, client => server 01:11:34.491170 'QUIT\r\n' 01:11:34.492694 Received DATA (on stdin) 01:11:34.492781 > 18 bytes data, server => client 01:11:34.492892 '221 bye bye baby\r\n' 01:11:34.493936 ====> Client disconnect 01:11:34.495993 Received ACKD (on stdin) 01:12:22.312096 ====> Client connect 01:12:22.314476 Received DATA (on stdin) 01:12:22.314575 > 160 bytes data, server => client 01:12:22.319227 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:12:22.319356 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:12:22.319446 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:12:23.640021 < 16 bytes data, client => server 01:12:23.640224 'USER anonymous\r\n' 01:12:23.642045 Received DATA (on stdin) 01:12:23.642128 > 33 bytes data, server => client 01:12:23.642218 '331 We are happy you popped in!\r\n' 01:12:23.766523 < 22 bytes data, client => server 01:12:23.766703 'PASS ftp@example.com\r\n' 01:12:23.768010 Received DATA (on stdin) 01:12:23.768091 > 30 bytes data, server => client 01:12:23.772480 '230 Welcome you silly person\r\n' 01:12:23.865326 < 5 bytes data, client => server 01:12:23.865519 'PWD\r\n' 01:12:23.867102 Received DATA (on stdin) 01:12:23.867182 > 30 bytes data, server => client 01:12:23.867266 '257 "/" is current directory\r\n' 01:12:24.050162 < 7 bytes data, client => server 01:12:24.050383 'CWD /\r\n' 01:12:24.051865 Received DATA (on stdin) 01:12:24.051951 > 29 bytes data, server => client 01:12:24.055937 '250 CWD command successful.\r\n' 01:12:24.125199 < 6 bytes data, client => server 01:12:24.125370 'EPSV\r\n' 01:12:24.217213 Received DATA (on stdin) 01:12:24.217344 > 39 bytes data, server => client 01:12:24.217440 '229 Entering Passive Mode (|||36651|)\r\n' 01:12:24.522148 < 8 bytes data, client => server 01:12:24.522326 'TYPE A\r\n' 01:12:24.523697 Received DATA (on stdin) 01:12:24.523784 > 33 bytes data, server => client 01:12:24.529193 '200 I modify TYPE as you wanted\r\n' 01:12:24.573813 < 6 bytes data, client => server 01:12:24.574014 'LIST\r\n' 01:12:24.578719 Received DATA (on stdin) 01:12:24.578825 > 28 bytes data, server => client 01:12:24.578906 '150 here comes a directory\r\n' 01:12:24.589995 Received DATA (on stdin) 01:12:24.590119 > 29 bytes data, server => client 01:12:24.590224 '226 ASCII transfer complete\r\n' 01:12:26.776732 < 6 bytes data, client => server 01:12:26.776922 'QUIT\r\n' 01:12:26.778283 Received DATA (on stdin) 01:12:26.778358 > 18 bytes data, server => client 01:12:26.782523 '221 bye bye baby\r\n' 01:12:26.918540 ====> Client disconnect 01:12:26.919911 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:11:34.414117 Running IPv4 version 01:11:34.423314 Listening on port 39087 01:11:34.423917 Wrote pid 239707 to log/3/server/ftp_sockdata.pid 01:11:34.424652 Received PING (on stdin) 01:11:34.425693 Received PORT (on stdin) 01:11:34.430432 ====> Client connect 01:11:34.437950 Received DATA (on stdin) 01:11:34.438395 > 18 bytes data, server => client 01:11:34.438857 'WE ROOLZ: 202504\r\n' 01:11:34.439152 Received DISC (on stdin) 01:11:34.439279 ====> Client forcibly disconnected 01:11:34.442663 Received QUIT (on stdin) 01:11:34.442757 quits 01:11:34.443336 ============> sockfilt quits 01:12:24.194537 Running IPv4 version 01:12:24.207114 Listening on port 36651 01:12:24.207627 Wrote pid 240941 to log/3/server/ftp_sockdata.pid 01:12:24.208394 Received PING (on stdin) 01:12:24.215506 Received PORT (on stdin) 01:12:24.403690 ====> Client connect 01:12:24.576975 Received DATA (on stdin) 01:12:24.577354 > 10 bytes data, server => client 01:12:24.577729 'total 20\r\n' 01:12:24.578007 Received DATA (on stdin) 01:12:24.578084 > 57 bytes data, server => client 01:12:24.578202 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 01:12:24.578308 Received DATA (on stdin) 01:12:24.578377 > 58 bytes data, server => client 01:12:24.578481 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 01:12:24.578566 Received DATA (on stdin) 01:12:24.578630 > 61 bytes data, server => client 01:12:24.578762 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 01:12:24.578840 '\n' 01:12:24.578923 Received DATA (on stdin) 01:12:24.578987 > 62 bytes data, server => client 01:12:24.579087 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 01:12:24.579148 '\n' 01:12:24.579230 Received DATA (on stdin) 01:12:24.579294 > 70 bytes data, server => client 01:12:24.579396 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 01:12:24.579461 'usr/bin\r\n' 01:12:24.579539 Received DATA (on stdin) 01:12:24.579603 > 59 bytes data, server => client 01:12:CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind354 ../src/curl -q --output log/8/curl354.out --include --trace-ascii log/8/trace354 --trace-time ftp://127.0.0.1:33545/354 > log/8/stdout354 2> log/8/stderr354 24.579702 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 01:12:24.579784 Received DATA (on stdin) 01:12:24.579854 > 69 bytes data, server => client 01:12:24.579954 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 01:12:24.580020 'd.html\r\n' 01:12:24.580115 Received DATA (on stdin) 01:12:24.580178 > 59 bytes data, server => client 01:12:24.580280 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 01:12:24.585379 Received DATA (on stdin) 01:12:24.585475 > 59 bytes data, server => client 01:12:24.585577 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 01:12:24.585671 Received DATA (on stdin) 01:12:24.585735 > 59 bytes data, server => client 01:12:24.585835 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 01:12:24.585917 Received DISC (on stdin) 01:12:24.586040 ====> Client forcibly disconnected 01:12:24.586439 Received QUIT (on stdin) 01:12:24.586515 quits 01:12:24.587023 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 352 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD / EPSV TYPE A LIST QUIT === End of file server.input === Start of file stderr352 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 623 0 623 0 0 118 0 --:--:-- 0:00:05 --:--:-- 155 100 623 0 623 0 0 110 0 --:--:-- 0:00:05 --:--:-- 141 === End of file stderr352 === Start of file trace352 01:12:22.362028 * Trying 127.0.0.1:37331... 01:12:23.284220 * Established connection to 127.0.0.1 (127.0.0.1 port 37331) from 127.0.0.1 port 59428 01:12:23.538560 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:12:23.896518 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:12:23.923958 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:12:23.930576 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:12:23.936086 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:12:24.050104 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:12:24.131961 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:12:24.153310 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:12:24.228374 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:12:24.250847 => Send header, 5 bytes (0x5) 0000: PWD 01:12:24.266735 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:12:24.304831 * Entry path is '/' 01:12:24.435694 => Send header, 7 bytes (0x7) 0000: CWD / 01:12:24.450195 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 01:12:24.510727 => Send header, 6 bytes (0x6) 0000: EPSV 01:12:24.527505 * Connect data stream passively 01:12:24.607769 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||36651|) 01:12:24.715887 * Connecting to 127.0.0.1 (127.0.0.1) port 36651 01:12:24.783306 * Trying 127.0.0.1:36651... 01:12:24.875608 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 36651) from 127.0.0.1 port 52076 01:12:24.907664 => Send header, 8 bytes (0x8) 0000: TYPE A 01:12:24.927272 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:12:24.959366 => Send header, 6 bytes (0x6) 0000: LIST 01:12:24.989372 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 01:12:25.030323 * Maxdownload = -1 01:12:25.203583 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 01:12:25.655883 * abort upload 01:12:25.683150 <= Recv data, 0 bytes (0x0) 01:12:25.872651 * Remembering we are in dir "/" 01:12:26.076292 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 01:12:26.395985 * Connection #0 to host 127.0.0.1:37331 left intact === End of file trace352 === Start of file valgrind352 ==239828== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind352 test 0354...[FTP without password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind354 ../src/curl -q --output log/8/curl354.out --include --trace-ascii log/8/trace354 --trace-time ftp://127.0.0.1:33545/354 > log/8/stdout354 2> log/8/stderr354 valgrind ERROR ==240035== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 354 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind354 ../src/curl -q --output log/8/curl354.out --include --trace-ascii log/8/trace354 --trace-time ftp://127.0.0.1:33545/354 > log/8/stdout354 2> log/8/stderr354 === End of file commands.log === Start of file curl354.out data to see that FTP works so does it? === End of file curl354.out === Start of file ftp_server.log 01:11:35.678174 ====> Client connect 01:11:35.679310 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:11:35.691929 < "USER anonymous" 01:11:35.694315 > "331 We are happy you popped in![CR][LF]" 01:11:35.695443 < "PASS ftp@example.com" 01:11:35.696491 > "230 Welcome you silly person[CR][LF]" 01:11:35.697187 < "PWD" 01:11:35.697520 > "257 "/" is current directory[CR][LF]" 01:11:35.701113 < "EPSV" 01:11:35.701374 ====> Passive DATA channel requested by client 01:11:35.701544 DATA sockfilt for passive data channel starting... 01:11:35.751739 DATA sockfilt for passive data channel started (pid 239915) 01:11:35.753462 DATA sockfilt for passive data channel listens on port 36007 01:11:35.756906 > "229 Entering Passive Mode (|||36007|)[CR][LF]" 01:11:35.757132 Client has been notified that DATA conn will be accepted on port 36007 01:11:35.757838 Client connects to port 36007 01:11:35.758059 ====> Client established passive DATA connection on port 36007 01:11:35.758729 < "TYPE I" 01:11:35.759308 > "200 I modify TYPE as you wanted[CR][LF]" 01:11:35.760365 < "SIZE verifiedserver" 01:11:35.760706 > "213 18[CR][LF]" 01:11:35.762196 < "RETR verifiedserver" 01:11:35.762515 > "150 Binary junk (18 bytes).[CR][LF]" 01:11:35.763066 =====> Closing passive DATA connection... 01:11:35.763238 Server disconnects passive DATA connection 01:11:35.769699 Server disconnected passive DATA connection 01:11:35.770014 DATA sockfilt for passive data channel quits (pid 239915) 01:11:35.773413 DATA sockfilt for passive data channel quit (pid 239915) 01:11:35.773652 =====> Closed passive DATA connection 01:11:35.774424 > "226 File transfer complete[CR][LF]" 01:11:35.827752 < "QUIT" 01:11:35.834323 > "221 bye bye baby[CR][LF]" 01:11:35.835809 MAIN sockfilt said DISC 01:11:35.836099 ====> Client disconnected 01:11:35.836407 Awaiting input 01:12:23.264502 ====> Client connect 01:12:23.265248 FTPD: Getting commands from log/8/server.cmd 01:12:23.266211 FTPD: set custom reply for USER command 01:12:23.266498 FTPD: run test case number: 354 01:12:23.270955 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:12:24.616078 < "USER anonymous" 01:12:24.616878 > "200 fine, proceed without password[CR][LF]" 01:12:24.743895 < "PWD" 01:12:24.744359 > "257 "/" is current directory[CR][LF]" 01:12:25.018356 < "EPSV" 01:12:25.018728 ====> Passive DATA channel requested by client 01:12:25.018900 DATA sockfilt for passive data channel starting... 01:12:25.110143 DATA sockfilt for passive data channel started (pid 240944) 01:12:25.111429 DATA sockfilt for passive data channel listens on port 40853 01:12:25.111861 > "229 Entering Passive Mode (|||40853|)[CR][LF]" 01:12:25.112057 Client has been notified that DATA conn will be accepted on port 40853 01:12:25.364260 Client connects to port 40853 01:12:25.364833 ====> Client established passive DATA connection on port 40853 01:12:25.486693 < "TYPE I" 01:12:25.487130 > "200 I modify TYPE as you wanted[CR][LF]" 01:12:25.541324 < "SIZE 354" 01:12:25.547597 > "213 51[CR][LF]" 01:12:25.631807 < "RETR 354" 01:12:25.633086 > "150 Binary data connection for 354 () (51 bytes).[CR][LF]" 01:12:25.633800 =====> Closing passive DATA connection... 01:12:25.633973 Server disconnects passive DATA connection 01:12:25.637556 Server disconnected passive DATA connection 01:12:25.637782 DATA sockfilt for passive data channel quits (pid 240944) 01:12:25.644170 DATA sockfilt for passive data channel quit (pid 240944) 01:12:25.644583 =====> Closed passive DATA connection 01:12:25.644962 > "226 File transfer complete[CR][LF]" 01:12:27.698399 < "QUIT" 01:12:27.698841 > "221 bye bye baby[CR][LF]" 01:12:27.831818 MAIN sockfilt said DISC 01:12:27.832317 ====> Client disconnected 01:12:27.832626 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:11:36.292398 ====> Client connect 01:11:36.294229 Received DATA (on stdin) 01:11:36.294355 > 160 bytes data, server => client 01:11:36.294486 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:11:36.294609 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:11:36.294717 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:11:36.305144 < 16 bytes data, client => server 01:11:36.305330 'USER anonymous\r\n' 01:11:36.307098 Received DATA (on stdin) 01:11:36.307193 > 33 bytes data, server => client 01:11:36.308430 '331 We are happy you popped in!\r\n' 01:11:36.309307 < 22 bytes data, client => server 01:11:36.309407 'PASS ftp@example.com\r\n' 01:11:36.310395 Received DATA (on stdin) 01:11:36.310478 > 30 bytes data, server => client 01:11:36.310602 '230 Welcome you silly person\r\n' 01:11:36.310905 < 5 bytes data, client => server 01:11:36.310985 'PWD\r\n' 01:11:36.312527 Received DATA (on stdin) 01:11:36.312613 > 30 bytes data, server => client 01:11:36.312702 '257 "/" is current directory\r\n' 01:11:36.315053 < 6 bytes data, client => server 01:11:36.315140 'EPSV\r\n' 01:11:36.368446 Received DATA (on stdin) 01:11:36.368598 > 39 bytes data, server => client 01:11:36.368749 '229 Entering Passive Mode (|||36007|)\r\n' 01:11:36.372294 < 8 bytes data, client => server 01:11:36.372378 'TYPE I\r\n' 01:11:36.373613 Received DATA (on stdin) 01:11:36.373687 > 33 bytes data, server => client 01:11:36.373803 '200 I modify TYPE as you wanted\r\n' 01:11:36.374474 < 21 bytes data, client => server 01:11:36.374560 'SIZE verifiedserver\r\n' 01:11:36.375678 Received DATA (on stdin) 01:11:36.375754 > 8 bytes data, server => client 01:11:36.375830 '213 18\r\n' 01:11:36.376304 < 21 bytes data, client => server 01:11:36.376392 'RETR verifiedserver\r\n' 01:11:36.379469 Received DATA (on stdin) 01:11:36.379550 > 29 bytes data, server => client 01:11:36.379642 '150 Binary junk (18 bytes).\r\n' 01:11:36.388568 Received DATA (on stdin) 01:11:36.388706 > 28 bytes data, server => client 01:11:36.388860 '226 File transfer complete\r\n' 01:11:36.441111 < 6 bytes data, client => server 01:11:36.441293 'QUIT\r\n' 01:11:36.442855 Received DATA (on stdin) 01:11:36.442947 > 18 bytes data, server => client 01:11:36.449527 '221 bye bye baby\r\n' 01:11:36.450306 ====> Client disconnect 01:11:36.451249 Received ACKD (on stdin) 01:12:23.878718 ====> Client connect 01:12:23.881936 Received DATA (on stdin) 01:12:23.882055 > 160 bytes data, server => client 01:12:23.885790 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:12:23.885906 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:12:23.885994 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:12:25.229293 < 16 bytes data, client => server 01:12:25.229484 'USER anonymous\r\n' 01:12:25.231020 Received DATA (on stdin) 01:12:25.231099 > 36 bytes data, server => client 01:12:25.231215 '200 fine, proceed without password\r\n' 01:12:25.357333 < 5 bytes data, client => server 01:12:25.357495 'PWD\r\n' 01:12:25.362052 Received DATA (on stdin) 01:12:25.362158 > 30 bytes data, server => client 01:12:25.362251 '257 "/" is current directory\r\n' 01:12:25.631756 < 6 bytes data, client => server 01:12:25.631946 'EPSV\r\n' 01:12:25.726326 Received DATA (on stdin) 01:12:25.726492 > 39 bytes data, server => client 01:12:25.726590 '229 Entering Passive Mode (|||40853|)\r\n' 01:12:26.100049 < 8 bytes data, client => server 01:12:26.100238 'TYPE I\r\n' 01:12:26.101924 Received DATA (on stdin) 01:12:26.102014 > 33 bytes data, server => client 01:12:26.102119 '200 I modify TYPE as you wanted\r\n' 01:12:26.154690 < 10 bytes data, client => server 01:12:26.154885 'SIZE 354\r\n' 01:12:26.158736 Received DATA (on stdin) 01:12:26.158849 > 8 bytes data, server => client 01:12:26.162081 '213 51\r\n' 01:12:26.245429 < 10 bytes data, client => server 01:12:26.245631 'RETR 354\r\n' 01:12:26.247578 Received DATA (on stdin) 01:12:26.247667 > 51 bytes data, server => client 01:12:26.247773 '150 Binary data connection for 354 () (51 bytes).\r\n' 01:12:26.259417 Received DATA (on stdin) 01:12:26.259614 > 28 bytes data, server => client 01:12:26.259703 '226 File transfer complete\r\n' 01:12:28.308823 < 6 bytes data, client => server 01:12:28.309031 'QUIT\r\n' 01:12:28.315384 Received DATA (on stdin) 01:12:28.315506 > 18 bytes data, server => client 01:12:28.315590 '221 bye bye baby\r\n' 01:12:28.446030 ====> Client disconnect 01:12:28.446854 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:11:35.358209 Running IPv4 version 01:11:35.364556 Listening on port 36007 01:11:35.365083 Wrote pid 239915 to log/8/server/ftp_sockdata.pid 01:11:35.365925 Received PING (on stdin) 01:11:35.367317 Received PORT (on stdin) 01:11:35.372097 ====> Client connect 01:11:35.378152 Received DATA (on stdin) 01:11:35.378489 > 18 bytes data, server => client 01:11:35.378899 'WE ROOLZ: 220580\r\n' 01:11:35.379169 Received DISC (on stdin) 01:11:35.379291 ====> Client forcibly disconnected 01:11:35.384850 Received QUIT (on stdin) 01:11:35.384970 quits 01:11:35.385537 ============> sockfilt quits 01:12:25.704604 Running IPv4 version 01:12:25.722675 Listening on port 40853 01:12:25.723294 Wrote pid 240944 to log/8/server/ftp_sockdata.pid 01:12:25.724111 Received PING (on stdin) 01:12:25.725208 Received PORT (on stdin) 01:12:25.975364 ====> Client connect 01:12:26.248727 Received DATA (on stdin) 01:12:26.249125 > 5 bytes data, server => client 01:12:26.249486 'data\n' 01:12:26.249789 Received DATA (on stdin) 01:12:26.249859 > 7 bytes data, server => client 01:12:26.249929 ' to\n' 01:12:26.250031 Received DATA (on stdin) 01:12:26.250096 > 10 bytes data, server => client 01:12:26.250165 ' see\n' 01:12:26.250259 Received DATA (on stdin) 01:12:26.250324 > 9 bytes data, server => client 01:12:26.250403 'that FTP\n' 01:12:26.250496 Received DATA (oCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind353 ../src/curl -q --output log/6/curl353.out --include --trace-ascii log/6/trace353 --trace-time ftp://127.0.0.1:39413/ --ftp-method singlecwd > log/6/stdout353 2> log/6/stderr353 n stdin) 01:12:26.250566 > 6 bytes data, server => client 01:12:26.250634 'works\n' 01:12:26.250715 Received DATA (on stdin) 01:12:26.250780 > 14 bytes data, server => client 01:12:26.250855 ' so does it?\n' 01:12:26.250941 Received DISC (on stdin) 01:12:26.251062 ====> Client forcibly disconnected 01:12:26.255391 Received QUIT (on stdin) 01:12:26.255538 quits 01:12:26.256098 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY USER 200 fine, proceed without password Testnum 354 === End of file server.cmd === Start of file server.input USER anonymous PWD EPSV TYPE I SIZE 354 RETR 354 QUIT === End of file server.input === Start of file stderr354 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 51 100 51 0 0 9 0 0:00:05 0:00:05 --:--:-- 11 === End of file stderr354 === Start of file trace354 01:12:22.924879 * Trying 127.0.0.1:33545... 01:12:23.849001 * Established connection to 127.0.0.1 (127.0.0.1 port 33545) from 127.0.0.1 port 57670 01:12:24.109142 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:12:24.483739 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:12:24.512649 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:12:24.520674 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:12:24.526030 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:12:24.635884 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:12:24.713647 <= Recv header, 36 bytes (0x24) 0000: 200 fine, proceed without password 01:12:24.744101 => Send header, 5 bytes (0x5) 0000: PWD 01:12:24.813587 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:12:24.852009 * Entry path is '/' 01:12:24.959864 * Request has same path as previous transfer 01:12:25.017298 => Send header, 6 bytes (0x6) 0000: EPSV 01:12:25.037982 * Connect data stream passively 01:12:25.118603 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||40853|) 01:12:25.290925 * Connecting to 127.0.0.1 (127.0.0.1) port 40853 01:12:25.354649 * Trying 127.0.0.1:40853... 01:12:25.453139 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 40853) from 127.0.0.1 port 52000 01:12:25.485591 => Send header, 8 bytes (0x8) 0000: TYPE I 01:12:25.505781 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:12:25.540221 => Send header, 10 bytes (0xa) 0000: SIZE 354 01:12:25.579767 <= Recv header, 8 bytes (0x8) 0000: 213 51 01:12:25.629612 => Send header, 10 bytes (0xa) 0000: RETR 354 01:12:25.646927 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 354 () (51 bytes). 01:12:25.699699 * Maxdownload = -1 01:12:25.710645 * Getting file with size: 51 01:12:25.863908 <= Recv data, 51 bytes (0x33) 0000: data. to. see.that FTP.works. so does it?. 01:12:26.186634 * abort upload 01:12:26.213355 <= Recv data, 0 bytes (0x0) 01:12:26.389167 * Remembering we are in dir "" 01:12:26.587194 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:12:26.917597 * Connection #0 to host 127.0.0.1:33545 left intact === End of file trace354 === Start of file valgrind354 ==240035== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind354 test 0353...[FTP home dir list singlecwd] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind353 ../src/curl -q --output log/6/curl353.out --include --trace-ascii log/6/trace353 --trace-time ftp://127.0.0.1:39413/ --ftp-method singlecwd > log/6/stdout353 2> log/6/stderr353 valgrind ERROR ==239999== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 353 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind353 ../src/curl -q --output log/6/curl353.out --include --trace-ascii log/6/trace353 --trace-time ftp://127.0.0.1:39413/ --ftp-method singlecwd > log/6/stdout353 2> log/6/stderr353 === End of file commands.log === Start of file curl353.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl353.out === Start of file ftp_server.log 01:11:35.509256 ====> Client connect 01:11:35.510392 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:11:35.521804 < "USER anonymous" 01:11:35.522248 > "331 We are happy you popped in![CR][LF]" 01:11:35.527109 < "PASS ftp@example.com" 01:11:35.527566 > "230 Welcome you silly person[CR][LF]" 01:11:35.528497 < "PWD" 01:11:35.530800 > "257 "/" is current directory[CR][LF]" 01:11:35.531295 < "EPSV" 01:11:35.531491 ====> Passive DATA channel requested by client 01:11:35.531631 DATA sockfilt for passive data channel starting... 01:11:35.579656 DATA sockfilt for passive data channel started (pid 239872) 01:11:35.582908 DATA sockfilt for passive data channel listens on port 37765 01:11:35.583446 > "229 Entering Passive Mode (|||37765|)[CR][LF]" 01:11:35.583650 Client has been notified that DATA conn will be accepted on port 37765 01:11:35.587069 Client connects to port 37765 01:11:35.587385 ====> Client established passive DATA connection on port 37765 01:11:35.588413 < "TYPE I" 01:11:35.588755 > "200 I modify TYPE as you wanted[CR][LF]" 01:11:35.590172 < "SIZE verifiedserver" 01:11:35.590532 > "213 18[CR][LF]" 01:11:35.592277 < "RETR verifiedserver" 01:11:35.592954 > "150 Binary junk (18 bytes).[CR][LF]" 01:11:35.593564 =====> Closing passive DATA connection... 01:11:35.593735 Server disconnects passive DATA connection 01:11:35.598454 Server disconnected passive DATA connection 01:11:35.598846 DATA sockfilt for passive data channel quits (pid 239872) 01:11:35.602597 DATA sockfilt for passive data channel quit (pid 239872) 01:11:35.602904 =====> Closed passive DATA connection 01:11:35.603291 > "226 File transfer complete[CR][LF]" 01:11:35.644780 < "QUIT" 01:11:35.645233 > "221 bye bye baby[CR][LF]" 01:11:35.649713 MAIN sockfilt said DISC 01:11:35.650168 ====> Client disconnected 01:11:35.650474 Awaiting input 01:12:23.307800 ====> Client connect 01:12:23.308594 FTPD: Getting commands from log/6/server.cmd 01:12:23.308951 FTPD: run test case number: 353 01:12:23.309979 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:12:24.728494 < "USER anonymous" 01:12:24.728927 > "331 We are happy you popped in![CR][LF]" 01:12:24.845390 < "PASS ftp@example.com" 01:12:24.846144 > "230 Welcome you silly person[CR][LF]" 01:12:24.941896 < "PWD" 01:12:24.947642 > "257 "/" is current directory[CR][LF]" 01:12:25.161529 < "EPSV" 01:12:25.161872 ====> Passive DATA channel requested by client 01:12:25.162037 DATA sockfilt for passive data channel starting... 01:12:25.246496 DATA sockfilt for passive data channel started (pid 240947) 01:12:25.251653 DATA sockfilt for passive data channel listens on port 45671 01:12:25.252202 > "229 Entering Passive Mode (|||45671|)[CR][LF]" 01:12:25.252395 Client has been notified that DATA conn will be accepted on port 45671 01:12:25.469910 Client connects to port 45671 01:12:25.470499 ====> Client established passive DATA connection on port 45671 01:12:25.588260 < "TYPE A" 01:12:25.590337 > "200 I modify TYPE as you wanted[CR][LF]" 01:12:25.648018 < "LIST" 01:12:25.648468 > "150 here comes a directory[CR][LF]" 01:12:25.648688 pass LIST data on data connection 01:12:25.649836 send total 20 as data 01:12:25.650086 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 01:12:25.650303 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 01:12:25.650523 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 01:12:25.650738 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 01:12:25.657755 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 01:12:25.658025 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 01:12:25.658239 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 01:12:25.658466 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 01:12:25.658666 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 01:12:25.658873 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 01:12:25.659389 =====> Closing passive DATA connection... 01:12:25.659543 Server disconnects passive DATA connection 01:12:25.659941 Server disconnected passive DATA connection 01:12:25.660125 DATA sockfilt for passive data channel quits (pid 240947) 01:12:25.667489 DATA sockfilt for passive data channel quit (pid 240947) 01:12:25.667845 =====> Closed passive DATA connection 01:12:25.674334 > "226 ASCII transfer complete[CR][LF]" 01:12:27.864398 < "QUIT" 01:12:27.864826 > "221 bye bye baby[CR][LF]" 01:12:28.004827 MAIN sockfilt said DISC 01:12:28.005366 ====> Client disconnected 01:12:28.005690 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:11:35.123367 ====> Client connect 01:11:35.124881 Received DATA (on stdin) 01:11:35.125020 > 160 bytes data, server => client 01:11:35.125146 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:11:35.125265 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:11:35.125366 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:11:35.134188 < 16 bytes data, client => server 01:11:35.134341 'USER anonymous\r\n' 01:11:35.136829 Received DATA (on stdin) 01:11:35.136919 > 33 bytes data, server => client 01:11:35.137020 '331 We are happy you popped in!\r\n' 01:11:35.137331 < 22 bytes data, client => server 01:11:35.137416 'PASS ftp@example.com\r\n' 01:11:35.141998 Received DATA (on stdin) 01:11:35.142073 > 30 bytes data, server => client 01:11:35.142414 '230 Welcome you silly person\r\n' 01:11:35.142689 < 5 bytes data, client => server 01:11:35.142753 'PWD\r\n' 01:11:35.143361 Received DATA (on stdin) 01:11:35.143424 > 30 bytes data, server => client 01:11:35.143593 '257 "/" is current directory\r\n' 01:11:35.145498 < 6 bytes data, client => server 01:11:35.145582 'EPSV\r\n' 01:11:35.198555 Received DATA (on stdin) 01:11:35.198726 > 39 bytes data, server => client 01:11:35.198845 '229 Entering Passive Mode (|||37765|)\r\n' 01:11:35.202313 < 8 bytes data, client => server 01:11:35.202415 'TYPE I\r\n' 01:11:35.203621 Received DATA (on stdin) 01:11:35.203701 > 33 bytes data, server => client 01:11:35.203800 '200 I modify TYPE as you wanted\r\n' 01:11:35.204248 < 21 bytes data, client => server 01:11:35.204336 'SIZE verifiedserver\r\n' 01:11:35.205521 Received DATA (on stdin) 01:11:35.205619 > 8 bytes data, server => client 01:11:35.205698 '213 18\r\n' 01:11:35.206300 < 21 bytes data, client => server 01:11:35.206387 'RETR verifiedserver\r\n' 01:11:35.207242 Received DATA (on stdin) 01:11:35.207324 > 29 bytes data, server => client 01:11:35.207440 '150 Binary junk (18 bytes).\r\n' 01:11:35.218205 Received DATA (on stdin) 01:11:35.218369 > 28 bytes data, server => client 01:11:35.218458 '226 File transfer complete\r\n' 01:11:35.257961 < 6 bytes data, client => server 01:11:35.258127 'QUIT\r\n' 01:11:35.260107 Received DATA (on stdin) 01:11:35.260200 > 18 bytes data, server => client 01:11:35.260280 '221 bye bye baby\r\n' 01:11:35.260934 ====> Client disconnect 01:11:35.265498 Received ACKD (on stdin) 01:12:22.922016 ====> Client connect 01:12:22.924415 Received DATA (on stdin) 01:12:22.924528 > 160 bytes data, server => client 01:12:22.924633 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:12:22.924730 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:12:22.924817 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:12:24.339519 < 16 bytes data, client => server 01:12:24.339677 'USER anonymous\r\n' 01:12:24.345406 Received DATA (on stdin) 01:12:24.345531 > 33 bytes data, server => client 01:12:24.345625 '331 We are happy you popped in!\r\n' 01:12:24.458761 < 22 bytes data, client => server 01:12:24.458954 'PASS ftp@example.com\r\n' 01:12:24.460310 Received DATA (on stdin) 01:12:24.460389 > 30 bytes data, server => client 01:12:24.460500 '230 Welcome you silly person\r\n' 01:12:24.555335 < 5 bytes data, client => server 01:12:24.555522 'PWD\r\n' 01:12:24.556830 Received DATA (on stdin) 01:12:24.556908 > 30 bytes data, server => client 01:12:24.562591 '257 "/" is current directory\r\n' 01:12:24.774901 < 6 bytes data, client => server 01:12:24.775099 'EPSV\r\n' 01:12:24.867201 Received DATA (on stdin) 01:12:24.867342 > 39 bytes data, server => client 01:12:24.867444 '229 Entering Passive Mode (|||45671|)\r\n' 01:12:25.201629 < 8 bytes data, client => server 01:12:25.201807 'TYPE A\r\n' 01:12:25.203185 Received DATA (on stdin) 01:12:25.203271 > 33 bytes data, server => client 01:12:25.204667 '200 I modify TYPE as you wanted\r\n' 01:12:25.261589 < 6 bytes data, client => server 01:12:25.261765 'LIST\r\n' 01:12:25.262947 Received DATA (on stdin) 01:12:25.263044 > 28 bytes data, server => client 01:12:25.263146 '150 here comes a directory\r\n' 01:12:25.282669 Received DATA (on stdin) 01:12:25.282840 > 29 bytes data, server => client 01:12:25.289302 '226 ASCII transfer complete\r\n' 01:12:27.477985 < 6 bytes data, client => server 01:12:27.478213 'QUIT\r\n' 01:12:27.479308 Received DATA (on stdin) 01:12:27.479398 > 18 bytes data, server => client 01:12:27.479495 '221 bye bye baby\r\n' 01:12:27.619030 ====> Client disconnect 01:12:27.620435 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:11:35.183364 Running IPv4 version 01:11:35.192386 Listening on port 37765 01:11:35.192937 Wrote pid 239872 to log/6/server/ftp_sockdata.pid 01:11:35.193831 Received PING (on stdin) 01:11:35.194825 Received PORT (on stdin) 01:11:35.200738 ====> Client connect 01:11:35.207882 Received DATA (on stdin) 01:11:35.208313 > 18 bytes data, server => client 01:11:35.208788 'WE ROOLZ: 201819\r\n' 01:11:35.209114 Received DISC (on stdin) 01:11:35.212286 ====> Client forcibly disconnected 01:11:35.213683 Received QUIT (on stdin) 01:11:35.213771 quits 01:11:35.214381 ============> sockfilt quits 01:12:25.841508 Running IPv4 version 01:12:25.859308 Listening on port 45671 01:12:25.859867 Wrote pid 240947 to log/6/server/ftp_sockdata.pid 01:12:25.860652 Received PING (on stdin) 01:12:25.865382 Received PORT (on stdin) 01:12:26.084137 ====> Client connect 01:12:26.264622 Received DATA (on stdin) 01:12:26.265013 > 10 bytes data, server => client 01:12:26.265421 'total 20\r\n' 01:12:26.265707 Received DATA (on stdin) 01:12:26.265779 > 57 bytes data, server => client 01:12:26.265880 'drwxr-xr-x 8 98 CMD (5632): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind361 ../src/curl -q --output log/2/curl361.out --include --trace-ascii log/2/trace361 --trace-time http://127.0.0.1:39863/361 http://127.0.0.1:39863/361 --fail-with-body > log/2/stdout361 2> log/2/stderr361 98 512 Oct 22 13:06 .\r\n' 01:12:26.265976 Received DATA (on stdin) 01:12:26.266042 > 58 bytes data, server => client 01:12:26.266142 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 01:12:26.266224 Received DATA (on stdin) 01:12:26.266288 > 61 bytes data, server => client 01:12:26.266402 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 01:12:26.266477 '\n' 01:12:26.272254 Received DATA (on stdin) 01:12:26.272358 > 62 bytes data, server => client 01:12:26.272478 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 01:12:26.272549 '\n' 01:12:26.272652 Received DATA (on stdin) 01:12:26.272720 > 70 bytes data, server => client 01:12:26.272825 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 01:12:26.272895 'usr/bin\r\n' 01:12:26.272981 Received DATA (on stdin) 01:12:26.273046 > 59 bytes data, server => client 01:12:26.273148 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 01:12:26.273235 Received DATA (on stdin) 01:12:26.273303 > 69 bytes data, server => client 01:12:26.273408 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 01:12:26.273476 'd.html\r\n' 01:12:26.273578 Received DATA (on stdin) 01:12:26.273644 > 59 bytes data, server => client 01:12:26.273746 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 01:12:26.273830 Received DATA (on stdin) 01:12:26.273894 > 59 bytes data, server => client 01:12:26.273996 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 01:12:26.274092 Received DATA (on stdin) 01:12:26.274161 > 59 bytes data, server => client 01:12:26.274265 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 01:12:26.274347 Received DISC (on stdin) 01:12:26.274469 ====> Client forcibly disconnected 01:12:26.278714 Received QUIT (on stdin) 01:12:26.278843 quits 01:12:26.279395 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 353 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE A LIST QUIT === End of file server.input === Start of file stderr353 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 623 0 623 0 0 118 0 --:--:-- 0:00:05 --:--:-- 153 100 623 0 623 0 0 109 0 --:--:-- 0:00:05 --:--:-- 139 === End of file stderr353 === Start of file trace353 01:12:22.977785 * Trying 127.0.0.1:39413... 01:12:23.886125 * Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 57004 01:12:24.179179 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:12:24.594781 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:12:24.625234 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:12:24.633992 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:12:24.639316 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:12:24.745767 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:12:24.822838 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:12:24.847804 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:12:24.920822 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:12:24.942595 => Send header, 5 bytes (0x5) 0000: PWD 01:12:24.960792 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:12:25.006285 * Entry path is '/' 01:12:25.107691 * Request has same path as previous transfer 01:12:25.164375 => Send header, 6 bytes (0x6) 0000: EPSV 01:12:25.181367 * Connect data stream passively 01:12:25.260517 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||45671|) 01:12:25.385783 * Connecting to 127.0.0.1 (127.0.0.1) port 45671 01:12:25.463618 * Trying 127.0.0.1:45671... 01:12:25.555556 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 45671) from 127.0.0.1 port 47808 01:12:25.588989 => Send header, 8 bytes (0x8) 0000: TYPE A 01:12:25.609646 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:12:25.647513 => Send header, 6 bytes (0x6) 0000: LIST 01:12:25.680469 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 01:12:25.717144 * Maxdownload = -1 01:12:25.879895 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 01:12:26.320101 * abort upload 01:12:26.348142 <= Recv data, 0 bytes (0x0) 01:12:26.567490 * Remembering we are in dir "" 01:12:26.768893 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 01:12:27.093754 * Connection #0 to host 127.0.0.1:39413 left intact === End of file trace353 === Start of file valgrind353 ==239999== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind353 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 362 in state 4 Runner 2 (id 185908) running test 361 in state 4 Runner 3 (id 185910) running test 367 in state 4 Runner 4 (id 185912) running test 366 in state 4 Runner 5 (id 185914) running test 365 in state 4 Runner 6 (id 185916) running test 369 in state 4 Runner 7 (id 185918) running test 357 in state 4 Runner 8 (id 185920) running test 368 in state 4 test 0361...[HTTP GET --fail-with-body on HTTP error return - twice] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind361 ../src/curl -q --output log/2/curl361.out --include --trace-ascii log/2/trace361 --trace-time http://127.0.0.1:39863/361 http://127.0.0.1:39863/361 --fail-with-body > log/2/stdout361 2> log/2/stderr361 valgrind ERROR ==240753== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 361 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind361 ../src/curl -q --output log/2/curl361.out --include --trace-ascii log/2/trace361 --trace-time http://127.0.0.1:39863/361 http://127.0.0.1:39863/361 --fail-with-body > log/2/stdout361 2> log/2/stderr361 === End of file commands.log === Start of file curl361.out HTTP/1.0 404 BAD BOY swsclose Content-Type: text/html This silly page doesn't reaaaaaly exist so you should not get it. === End of file curl361.out === Start of file http_server.log 01:11:54.731787 ====> Client connect 01:11:54.731939 accept_connection 3 returned 4 01:11:54.732010 accept_connection 3 returned 0 01:11:54.738352 Read 93 bytes 01:11:54.738436 Process 93 bytes request 01:11:54.738523 Got request: GET /verifiedserver HTTP/1.1 01:11:54.738585 Are-we-friendly question received 01:11:54.738690 Wrote request (93 bytes) input to log/2/server.input 01:11:54.738786 Identifying ourselves as friends 01:11:54.738961 Response sent (57 bytes) and written CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind365 ../src/curl -q --output log/5/curl365.out --include --trace-ascii log/5/trace365 --trace-time http://127.0.0.1:46263/365 > log/5/stdout365 2> log/5/stderr365 to log/2/server.response 01:11:54.739020 special request received, no persistency 01:11:54.739071 ====> Client disconnect 0 01:12:42.401136 ====> Client connect 01:12:42.401266 accept_connection 3 returned 4 01:12:42.401342 accept_connection 3 returned 0 01:12:43.365902 Read 82 bytes 01:12:43.366081 Process 82 bytes request 01:12:43.366173 Got request: GET /361 HTTP/1.1 01:12:43.366243 Serve test number 361 part 0 01:12:43.366411 - request found to be complete (361) 01:12:43.366653 Wrote request (82 bytes) input to log/2/server.input 01:12:43.366758 Send response test361 section 01:12:43.366960 connection close instruction "swsclose" found in response 01:12:43.367154 Response sent (121 bytes) and written to log/2/server.response 01:12:43.367220 instructed to close connection after server-reply 01:12:43.367280 ====> Client disconnect 0 01:12:45.972577 ====> Client connect 01:12:45.972699 accept_connection 3 returned 4 01:12:45.972773 accept_connection 3 returned 0 01:12:46.032207 Read 82 bytes 01:12:46.032393 Process 82 bytes request 01:12:46.032482 Got request: GET /361 HTTP/1.1 01:12:46.032546 Serve test number 361 part 0 01:12:46.032709 - request found to be complete (361) 01:12:46.032901 Wrote request (82 bytes) input to log/2/server.input 01:12:46.032994 Send response test361 section 01:12:46.033207 connection close instruction "swsclose" found in response 01:12:46.033398 Response sent (121 bytes) and written to log/2/server.response 01:12:46.033460 instructed to close connection after server-reply 01:12:46.033516 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 48786 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 361 === End of file server.cmd === Start of file server.input GET /361 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* GET /361 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.0 404 BAD BOY swsclose Content-Type: text/html This silly page doesn't reaaaaaly exist so you should not get it. HTTP/1.0 404 BAD BOY swsclose Content-Type: text/html This silly page doesn't reaaaaaly exist so you should not get it. === End of file server.response === Start of file stderr361 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 66 0 66 0 0 15 0 --:--:-- 0:00:04 --:--:-- 22 100 66 0 66 0 0 15 0 --:--:-- 0:00:04 --:--:-- 21 curl: (22) The requested URL returned error: 404 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 66 0 66 0 0 233 0 --:--:-- --:--:-- --:--:-- 356 curl: (22) The requested URL returned error: 404 === End of file stderr361 === Start of file stdout361 HTTP/1.0 404 BAD BOY swsclose Content-Type: text/html This silly page doesn't reaaaaaly exist so you should not get it. === End of file stdout361 === Start of file trace361 01:12:41.481210 * Trying 127.0.0.1:39863... 01:12:42.332992 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 39250 01:12:42.462035 * using HTTP/1.x 01:12:42.787613 => Send header, 82 bytes (0x52) 0000: GET /361 HTTP/1.1 0013: Host: 127.0.0.1:39863 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:12:43.093143 * HTTP 1.0, assume close after body 01:12:43.117503 <= Recv header, 30 bytes (0x1e) 0000: HTTP/1.0 404 BAD BOY swsclose. 01:12:43.456176 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:12:43.611344 <= Recv header, 1 bytes (0x1) 0000: . 01:12:43.670877 <= Recv data, 66 bytes (0x42) 0000: This silly page doesn't reaaaaaly exist so you should not get it 0040: .. 01:12:43.793538 * abort upload 01:12:43.817354 <= Recv data, 0 bytes (0x0) 01:12:44.289670 * shutting down connection #0 01:12:45.303460 * Hostname 127.0.0.1 was found in DNS cache 01:12:45.352787 * Trying 127.0.0.1:39863... 01:12:45.384129 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 33774 01:12:45.398380 * using HTTP/1.x 01:12:45.419231 => Send header, 82 bytes (0x52) 0000: GET /361 HTTP/1.1 0013: Host: 127.0.0.1:39863 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:12:45.444382 * HTTP 1.0, assume close after body 01:12:45.445983 <= Recv header, 30 bytes (0x1e) 0000: HTTP/1.0 404 BAD BOY swsclose. 01:12:45.459905 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:12:45.470887 <= Recv header, 1 bytes (0x1) 0000: . 01:12:45.475215 <= Recv data, 66 bytes (0x42) 0000: This silly page doesn't reaaaaaly exist so you should not get it 0040: .. 01:12:45.491881 * abort upload 01:12:45.493584 <= Recv data, 0 bytes (0x0) 01:12:45.526886 * shutting down connection #1 === End of file trace361 === Start of file valgrind361 ==240753== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind361 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 362 in state 4 Runner 2 (id 185908) running test 370 in state 4 Runner 3 (id 185910) running test 367 in state 4 Runner 4 (id 185912) running test 366 in state 4 Runner 5 (id 185914) running test 365 in state 4 Runner 6 (id 185916) running test 369 in state 4 Runner 7 (id 185918) running test 357 in state 4 Runner 8 (id 185920) running test 368 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 362 in state 4 Runner 2 (id 185908) running test 370 in state 4 Runner 3 (id 185910) running test 367 in state 4 Runner 4 (id 185912) running test 366 in state 4 Runner 5 (id 185914) running test 365 in state 4 Runner 6 (id 185916) running test 369 in state 4 Runner 7 (id 185918) running test 357 in state 4 Runner 8 (id 185920) running test 368 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 362 in state 4 Runner 2 (id 185908) running test 370 in state 4 Runner 3 (id 185910) running test 367 in state 4 Runner 4 (id 185912) running test 366 in state 4 Runner 5 (id 185914) running test 365 in state 4 Runner 6 (id 185916) running test 369 in state 4 Runner 7 (id 185918) running test 357 in state 4 Runner 8 (id 185920) running test 368 in state 4 test 0365...[HTTP/1.1 with chunked AND Content-Length headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind365 ../src/curl -q --output log/5/curl365.out --include --trace-ascii log/5/trace365 --trace-time http://127.0.0.1:46263/365 > log/5/stdout365 2> log/5/stderr365 valgrind ERROR ==241193== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 365 === Start of file comCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind362 ../src/curl -q --output log/1/curl362.out --include --trace-ascii log/1/trace362 --trace-time ftp://127.0.0.1:37481/362 -T log/1/test362.txt --continue-at - > log/1/stdout362 2> log/1/stderr362 mands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind365 ../src/curl -q --output log/5/curl365.out --include --trace-ascii log/5/trace365 --trace-time http://127.0.0.1:46263/365 > log/5/stdout365 2> log/5/stderr365 === End of file commands.log === Start of file curl365.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 123456 Transfer-Encoding: chunked Content-Type: text/html Funny-head: yesyes chunked data fun === End of file curl365.out === Start of file http_server.log 01:12:30.229665 ====> Client connect 01:12:30.229838 accept_connection 3 returned 4 01:12:30.229918 accept_connection 3 returned 0 01:12:30.237314 Read 93 bytes 01:12:30.237428 Process 93 bytes request 01:12:30.237547 Got request: GET /verifiedserver HTTP/1.1 01:12:30.237626 Are-we-friendly question received 01:12:30.237788 Wrote request (93 bytes) input to log/5/server.input 01:12:30.237908 Identifying ourselves as friends 01:12:30.238092 Response sent (57 bytes) and written to log/5/server.response 01:12:30.238158 special request received, no persistency 01:12:30.238225 ====> Client disconnect 0 01:13:17.352853 ====> Client connect 01:13:17.353007 accept_connection 3 returned 4 01:13:17.353090 accept_connection 3 returned 0 01:13:18.344851 Read 82 bytes 01:13:18.345054 Process 82 bytes request 01:13:18.345153 Got request: GET /365 HTTP/1.1 01:13:18.345228 Serve test number 365 part 0 01:13:18.345432 - request found to be complete (365) 01:13:18.345695 Wrote request (82 bytes) input to log/5/server.input 01:13:18.345807 Send response test365 section 01:13:18.346151 Response sent (198 bytes) and written to log/5/server.response 01:13:18.346221 => persistent connection request ended, awaits new request 01:13:20.951003 Connection closed by client 01:13:20.951201 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 35954 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 365 === End of file server.cmd === Start of file server.input GET /365 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 123456 Transfer-Encoding: chunked Content-Type: text/html Funny-head: yesyes 10 chunked data fun 0 === End of file server.response === Start of file stderr365 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 16 0 16 0 0 3 0 --:--:-- 0:00:04 --:--:-- 4 100 16 0 16 0 0 3 0 --:--:-- 0:00:04 --:--:-- 4 === End of file stderr365 === Start of file trace365 01:13:17.412579 * Trying 127.0.0.1:46263... 01:13:18.302954 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 43352 01:13:18.427852 * using HTTP/1.x 01:13:18.769686 => Send header, 82 bytes (0x52) 0000: GET /365 HTTP/1.1 0013: Host: 127.0.0.1:46263 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:13:19.116198 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:13:19.429790 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:13:19.533237 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:13:19.575503 <= Recv header, 23 bytes (0x17) 0000: Content-Length: 123456. 01:13:19.663710 <= Recv header, 27 bytes (0x1b) 0000: Transfer-Encoding: chunked. 01:13:19.722009 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:13:19.727821 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:13:19.800474 <= Recv header, 1 bytes (0x1) 0000: . 01:13:19.858199 <= Recv data, 27 bytes (0x1b) 0000: 10 0004: chunked data fun 0016: 0 0019: 01:13:20.493998 * Connection #0 to host 127.0.0.1:46263 left intact === End of file trace365 === Start of file valgrind365 ==241193== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind365 test 0362...[FTP resume upload file with nothing to start from] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind362 ../src/curl -q --output log/1/curl362.out --include --trace-ascii log/1/trace362 --trace-time ftp://127.0.0.1:37481/362 -T log/1/test362.txt --continue-at - > log/1/stdout362 2> log/1/stderr362 valgrind ERROR ==241147== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 362 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind362 ../src/curl -q --output log/1/curl362.out --include --trace-ascii log/1/trace362 --trace-time ftp://127.0.0.1:37481/362 -T log/1/test362.txt --continue-at - > log/1/stdout362 2> log/1/stderr362 === End of file commands.log === Start of file ftp_server.log 01:12:30.243479 ====> Client connect 01:12:30.255804 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:12:30.257314 < "USER anonymous" 01:12:30.257711 > "331 We are happy you popped in![CR][LF]" 01:12:30.259530 < "PASS ftp@example.com" 01:12:30.260164 > "230 Welcome you silly person[CR][LF]" 01:12:30.261110 < "PWD" 01:12:30.261689 > "257 "/" is current directory[CR][LF]" 01:12:30.264551 < "EPSV" 01:12:30.264787 ====> Passive DATA channel requested by client 01:12:30.264945 DATA sockfilt for passive data channel starting... 01:12:30.313719 DATA sockfilt for passive data channel started (pid 241078) 01:12:30.315357 DATA sockfilt for passive data channel listens on port 46597 01:12:30.315819 > "229 Entering Passive Mode (|||46597|)[CR][LF]" 01:12:30.316008 Client has been notified that DATA conn will be accepted on port 46597 01:12:30.318663 Client connects to port 46597 01:12:30.318965 ====> Client established passive DATA connection on port 46597 01:12:30.321214 < "TYPE I" 01:12:30.321576 > "200 I modify TYPE as you wanted[CR][LF]" 01:12:30.323245 < "SIZE verifiedserver" 01:12:30.323626 > "213 18[CR][LF]" 01:12:30.325159 < "RETR verifiedserver" 01:12:30.327586 > "150 Binary junk (18 bytes).[CR][LF]" 01:12:30.328275 =====> Closing passive DATA connection... 01:12:30.328490 Server disconnects passive DATA connection 01:12:30.330305 Server disconnected passive DATA connection 01:12:30.330538 DATA sockfilt for passive data channel quits (pid 241078) 01:12:30.337720 DATA sockfilt for passive data channel quit (pid 241078) 01:12:30.338082 =====> Closed passive DATA connection 01:12:30.338449 > "226 File transfer complete[CR][LF]" 01:12:30.388895 < "QUIT" 01:12:30.390961 > "221 bye bye baby[CR][LF]" 01:12:30.391894 MAIN sockfilt said DISC 01:12:30.392244 ====> Client disconnected 01:12:30.392551 Awaiting input 01:13:17.663509 ====> Client connect 01:13:17.664286 FTPD: Getting commands from log/1/server.cmd 01:13:17.664633 FTPD: run test case number: 362 01:13:17.665646 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:13:18.955112 < "USER anonymous" 01:13:18.955539 > "331 We are happy you popped in![CR][LF]" 01:13:19.079175 < "PASS ftp@example.com" 01:13:19.079600 > "230 Welcome you silly person[CR][LF]" 01:13:19.173184 < "PWD" 01:13:19.174053 > "257 "/" is current directory[CR][LF]" 01:13:19.382732 < "EPSV" 01:13:19.383077 ====> Passive DATA channel requested by client 01:13:19.383242 DATA sockfilt for passive data channel starting... 01:13:19.467696 DATA sockfilt for passive data channel started (pid 242082) 01:13:19.469000 DATA sockfilt for passive data channel listens on port 34491 01:13:19.469462 > "229 Entering Passive Mode (|||34491|)[CR][LF]" 01:13:19.469643 Client has been notified that DATA conn will be accepted on port 34491 01:13:19.674191 Client connects to port 34491 01:13:19.674731 ====> Client established passive DATA connection on port 34491 01:13:19.778395 < "TYPE I" 01:13:19.778849 > "200 I modify TYPE as you wanted[CR][LF]" 01:13:19.831636 < "SIZE 362" 01:13:19.833577 > "550 362: No such file or directory.[CR][LF]" 01:13:19.889762 < "STOR 362" 01:13:19.890103 STOR test number 362 in log/1/upload.362 01:13:19.890387 > "125 Gimme gimme gimme![CR][LF]" 01:13:20.184714 > Appending 51 bytes to file 01:13:20.641927 =====> Closing passive DATA connection... 01:13:20.642220 Server knows passive DATA connection is already disconnected 01:13:20.642403 DATA sockfilt for passive data channel quits (pid 242082) 01:13:20.645700 DATA sockfilt for passive data channel quit (pid 242082) 01:13:20.645899 =====> Closed passive DATA connection 01:13:20.646098 received 51 bytes upload 01:13:20.646401 > "226 File transfer complete[CR][LF]" 01:13:21.914206 < "QUIT" 01:13:21.914795 > "221 bye bye baby[CR][LF]" 01:13:22.034272 MAIN sockfilt said DISC 01:13:22.034852 ====> Client disconnected 01:13:22.035200 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:12:30.857527 ====> Client connect 01:12:30.859140 Received DATA (on stdin) 01:12:30.859279 > 160 bytes data, server => client 01:12:30.865503 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:12:30.865678 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:12:30.865781 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:12:30.870921 < 16 bytes data, client => server 01:12:30.871023 'USER anonymous\r\n' 01:12:30.872486 Received DATA (on stdin) 01:12:30.872568 > 33 bytes data, server => client 01:12:30.872663 '331 We are happy you popped in!\r\n' 01:12:30.873484 < 22 bytes data, client => server 01:12:30.873571 'PASS ftp@example.com\r\n' 01:12:30.874298 Received DATA (on stdin) 01:12:30.874371 > 30 bytes data, server => client 01:12:30.874553 '230 Welcome you silly person\r\n' 01:12:30.875059 < 5 bytes data, client => server 01:12:30.875131 'PWD\r\n' 01:12:30.875895 Received DATA (on stdin) 01:12:30.875975 > 30 bytes data, server => client 01:12:30.876085 '257 "/" is current directory\r\n' 01:12:30.878511 < 6 bytes data, client => server 01:12:30.878592 'EPSV\r\n' 01:12:30.930808 Received DATA (on stdin) 01:12:30.930963 > 39 bytes data, server => client 01:12:30.931070 '229 Entering Passive Mode (|||46597|)\r\n' 01:12:30.934901 < 8 bytes data, client => server 01:12:30.935021 'TYPE I\r\n' 01:12:30.936346 Received DATA (on stdin) 01:12:30.936432 > 33 bytes data, server => client 01:12:30.936534 '200 I modify TYPE as you wanted\r\n' 01:12:30.937016 < 21 bytes data, client => server 01:12:30.937101 'SIZE verifiedserver\r\n' 01:12:30.938379 Received DATA (on stdin) 01:12:30.938455 > 8 bytes data, server => client 01:12:30.938533 '213 18\r\n' 01:12:30.939079 < 21 bytes data, client => server 01:12:30.939169 'RETR verifiedserver\r\n' 01:12:30.940100 Received DATA (on stdin) 01:12:30.940176 > 29 bytes data, server => client 01:12:30.940295 '150 Binary junk (18 bytes).\r\n' 01:12:30.952909 Received DATA (on stdin) 01:12:30.953087 > 28 bytes data, server => client 01:12:30.953183 '226 File transfer complete\r\n' 01:12:31.002111 < 6 bytes data, client => server 01:12:31.002294 'QUIT\r\n' 01:12:31.003888 Received DATA (on stdin) 01:12:31.003977 > 18 bytes data, server => client 01:12:31.005576 '221 bye bye baby\r\n' 01:12:31.006315 ====> Client disconnect 01:12:31.006634 Received ACKD (on stdin) 01:13:18.277634 ====> Client connect 01:13:18.281943 Received DATA (on stdin) 01:13:18.282073 > 160 bytes data, server => client 01:13:18.282187 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:13:18.282291 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:13:18.282379 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:13:19.566364 < 16 bytes data, client => server 01:13:19.566546 'USER anonymous\r\n' 01:13:19.571940 Received DATA (on stdin) 01:13:19.572052 > 33 bytes data, server => client 01:13:19.572144 '331 We are happy you popped in!\r\n' 01:13:19.692685 < 22 bytes data, client => server 01:13:19.692901 'PASS ftp@example.com\r\n' 01:13:19.698607 Received DATA (on stdin) 01:13:19.698713 > 30 bytes data, server => client 01:13:19.698811 '230 Welcome you silly person\r\n' 01:13:19.786458 < 5 bytes data, client => server 01:13:19.786657 'PWD\r\n' 01:13:19.788068 Received DATA (on stdin) 01:13:19.788159 > 30 bytes data, server => client 01:13:19.788281 '257 "/" is current directory\r\n' 01:13:19.996003 < 6 bytes data, client => server 01:13:19.996205 'EPSV\r\n' 01:13:20.083804 Received DATA (on stdin) 01:13:20.083974 > 39 bytes data, server => client 01:13:20.084078 '229 Entering Passive Mode (|||34491|)\r\n' 01:13:20.390595 < 8 bytes data, client => server 01:13:20.390784 'TYPE I\r\n' 01:13:20.393225 Received DATA (on stdin) 01:13:20.393320 > 33 bytes data, server => client 01:13:20.393413 '200 I modify TYPE as you wanted\r\n' 01:13:20.442224 < 10 bytes data, client => server 01:13:20.442404 'SIZE 362\r\n' 01:13:20.447963 Received DATA (on stdin) 01:13:20.448075 > 37 bytes data, server => client 01:13:20.448170 '550 362: No such file or directory.\r\n' 01:13:20.503216 < 10 bytes data, client => server 01:13:20.503476 'STOR 362\r\n' 01:13:20.504768 Received DATA (on stdin) 01:13:20.504845 > 24 bytes data, server => client 01:13:20.504925 '125 Gimme gimme gimme!\r\n' 01:13:21.260770 Received DATA (on stdin) 01:13:21.260917 > 28 bytes data, server => client 01:13:21.261000 '226 File transfer complete\r\n' 01:13:22.505088 < 6 bytes data, client => server 01:13:22.505304 'QUIT\r\n' 01:13:22.529164 Received DATA (on stdin) 01:13:22.529287 > 18 bytes data, server => client 01:13:22.529368 '221 bye bye baby\r\n' 01:13:22.645349 ====> Client disconnect 01:13:22.649856 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:12:30.917417 Running IPv4 version 01:12:30.926369 Listening on port 46597 01:12:30.926926 Wrote pid 241078 to log/1/server/ftp_sockdata.pid 01:12:30.927822 Received PING (on stdin) 01:12:30.929127 Received PORT (on stdin) 01:12:30.933002 ====> Client connect 01:12:30.943267 Received DATA (on stdin) 01:12:30.943700 > 18 bytes data, server => client 01:12:30.944105 'WE ROOLZ: 202066\r\n' 01:12:30.944378 Received DISC (on stdin) 01:12:30.944505 ====> Client forcibly disconnected 01:12:30.948718 Received QUIT (on stdin) 01:12:30.948817 quits 01:12:30.949454 ============> sockfilt quits 01:13:19.062991 Running IPv4 version 01:13:19.077201 Listening on port 34491 01:13:19.077704 Wrote pid 242082 to log/1/server/ftp_sockdata.pid 01:13:19.078405 Received PING (on stdin) 01:13:19.082705 Received PORT (on stdin) 01:13:19.288269 ====> Client connect 01:13:19.796779 < 51 bytes data, client => server 01:13:19.797266 'data\n to\n see\nthat FTP\nworks\n so does it?\n' 01:13:20.255309 ====> Client disconnect 01:13:20.255735 Received ACKD (on stdin) 01:13:20.257024 Received QUIT (on stdin) 0CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind367 ../src/curl -q --output log/3/curl367.out --include --trace-ascii log/3/trace367 --trace-time http://:example@127.0.0.1:46853/367 > log/3/stdout367 2> log/3/stderr367 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind366 ../src/curl -q --output log/4/curl366.out --include --trace-ascii log/4/trace366 --trace-time http://127.0.0.1:42621/366 --retry 2 --retry-max-time 10 > log/4/stdout366 2> log/4/stderr366 1:13:20.257124 quits 01:13:20.257659 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 362 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE 362 STOR 362 QUIT === End of file server.input === Start of file stderr362 ** Resuming transfer from byte position -1 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 51 0 0 100 51 0 10 0:00:05 0:00:04 0:00:01 13 100 51 0 0 100 51 0 9 0:00:05 0:00:05 --:--:-- 12 === End of file stderr362 === Start of file test362.txt data to see that FTP works so does it? === End of file test362.txt === Start of file trace362 01:13:17.342224 * Trying 127.0.0.1:37481... 01:13:18.235864 * Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 127.0.0.1 port 47652 01:13:18.477952 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:13:18.828092 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:13:18.855373 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:13:18.862931 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:13:18.868519 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:13:18.973043 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:13:19.055331 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:13:19.079520 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:13:19.151953 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:13:19.172093 => Send header, 5 bytes (0x5) 0000: PWD 01:13:19.189163 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:13:19.226167 * Entry path is '/' 01:13:19.328737 * Request has same path as previous transfer 01:13:19.381649 => Send header, 6 bytes (0x6) 0000: EPSV 01:13:19.397162 * Connect data stream passively 01:13:19.482828 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||34491|) 01:13:19.605170 * Connecting to 127.0.0.1 (127.0.0.1) port 34491 01:13:19.667744 * Trying 127.0.0.1:34491... 01:13:19.757951 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 34491) from 127.0.0.1 port 53780 01:13:19.776236 => Send header, 8 bytes (0x8) 0000: TYPE I 01:13:19.791001 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:13:19.827876 => Send header, 10 bytes (0xa) 0000: SIZE 362 01:13:19.861995 <= Recv header, 37 bytes (0x25) 0000: 550 362: No such file or directory. 01:13:19.888863 => Send header, 10 bytes (0xa) 0000: STOR 362 01:13:19.901979 <= Recv header, 24 bytes (0x18) 0000: 125 Gimme gimme gimme 01:13:20.200736 => Send data, 51 bytes (0x33) 0000: data. to. see.that FTP.works. so does it?. 01:13:20.395032 * upload completely sent off: 51 bytes 01:13:20.560970 * Remembering we are in dir "" 01:13:20.744669 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:13:21.069866 * Connection #0 to host 127.0.0.1:37481 left intact === End of file trace362 === Start of file upload.362 data to see that FTP works so does it? === End of file upload.362 === Start of file valgrind362 ==241147== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind362 test 0367...[Empty user name provided in URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind367 ../src/curl -q --output log/3/curl367.out --include --trace-ascii log/3/trace367 --trace-time http://:example@127.0.0.1:46853/367 > log/3/stdout367 2> log/3/stderr367 valgrind ERROR ==241225== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 367 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind367 ../src/curl -q --output log/3/curl367.out --include --trace-ascii log/3/trace367 --trace-time http://:example@127.0.0.1:46853/367 > log/3/stdout367 2> log/3/stderr367 === End of file commands.log === Start of file curl367.out HTTP/1.1 200 OK Content-Length: 6 Connection: close -foo- === End of file curl367.out === Start of file http_server.log 01:12:30.427150 ====> Client connect 01:12:30.427338 accept_connection 3 returned 4 01:12:30.427425 accept_connection 3 returned 0 01:12:30.438206 Read 93 bytes 01:12:30.438454 Process 93 bytes request 01:12:30.438569 Got request: GET /verifiedserver HTTP/1.1 01:12:30.438647 Are-we-friendly question received 01:12:30.438804 Wrote request (93 bytes) input to log/3/server.input 01:12:30.438907 Identifying ourselves as friends 01:12:30.439102 Response sent (57 bytes) and written to log/3/server.response 01:12:30.439165 special request received, no persistency 01:12:30.439220 ====> Client disconnect 0 01:13:18.272637 ====> Client connect 01:13:18.272785 accept_connection 3 returned 4 01:13:18.272867 accept_connection 3 returned 0 01:13:19.410390 Read 117 bytes 01:13:19.410577 Process 117 bytes request 01:13:19.410680 Got request: GET /367 HTTP/1.1 01:13:19.410759 Serve test number 367 part 0 01:13:19.410943 - request found to be complete (367) 01:13:19.411210 Wrote request (117 bytes) input to log/3/server.input 01:13:19.411331 Send response test367 section 01:13:19.411663 Response sent (59 bytes) and written to log/3/server.response 01:13:19.411737 => persistent connection request ended, awaits new request 01:13:21.313742 Connection closed by client 01:13:21.313953 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 51438 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 367 === End of file server.cmd === Start of file server.input GET /367 HTTP/1.1 Host: 127.0.0.1:46853 Authorization: Basic OmV4YW1wbGU= User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Content-Length: 6 Connection: close -foo- === End of file server.response === Start of file stderr367 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr367 === Start of file trace367 01:13:18.314419 * Trying 127.0.0.1:46853... 01:13:19.242440 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 57724 01:13:19.367170 * using HTTP/1.x 01:13:19.536398 * Server auth using Basic with user '' 01:13:19.834794 => Send header, 117 bytes (0x75) 0000: GET /367 HTTPCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind368 ../src/curl -q --output log/8/curl368.out --include --trace-ascii log/8/trace368 --trace-time http://127.0.0.1:39461/368 -r 4 > log/8/stdout368 2> log/8/stderr368 /1.1 0013: Host: 127.0.0.1:46853 002a: Authorization: Basic OmV4YW1wbGU= 004d: User-Agent: curl/8.17.0 0066: Accept: */* 0073: 01:13:20.196314 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:13:20.547505 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:13:20.685482 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:13:20.788288 <= Recv header, 1 bytes (0x1) 0000: . 01:13:20.845533 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:13:20.955046 * we are done reading and this is set to close, stop send 01:13:20.985876 * abort upload 01:13:21.493480 * shutting down connection #0 === End of file trace367 === Start of file valgrind367 ==241225== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind367 test 0366...[HTTP --retry-max-time with too long Retry-After] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind366 ../src/curl -q --output log/4/curl366.out --include --trace-ascii log/4/trace366 --trace-time http://127.0.0.1:42621/366 --retry 2 --retry-max-time 10 > log/4/stdout366 2> log/4/stderr366 valgrind ERROR ==241206== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 366 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind366 ../src/curl -q --output log/4/curl366.out --include --trace-ascii log/4/trace366 --trace-time http://127.0.0.1:42621/366 --retry 2 --retry-max-time 10 > log/4/stdout366 2> log/4/stderr366 === End of file commands.log === Start of file curl366.out HTTP/1.1 503 BAD Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 21 Retry-After: 200 server not available === End of file curl366.out === Start of file http_server.log 01:12:31.339960 ====> Client connect 01:12:31.340133 accept_connection 3 returned 4 01:12:31.340222 accept_connection 3 returned 0 01:12:31.348424 Read 93 bytes 01:12:31.348539 Process 93 bytes request 01:12:31.348640 Got request: GET /verifiedserver HTTP/1.1 01:12:31.348727 Are-we-friendly question received 01:12:31.348858 Wrote request (93 bytes) input to log/4/server.input 01:12:31.348962 Identifying ourselves as friends 01:12:31.349138 Response sent (57 bytes) and written to log/4/server.response 01:12:31.349209 special request received, no persistency 01:12:31.349271 ====> Client disconnect 0 01:13:19.212730 ====> Client connect 01:13:19.212875 accept_connection 3 returned 4 01:13:19.212960 accept_connection 3 returned 0 01:13:20.243547 Read 82 bytes 01:13:20.243724 Process 82 bytes request 01:13:20.243816 Got request: GET /366 HTTP/1.1 01:13:20.243885 Serve test number 366 part 0 01:13:20.244044 - request found to be complete (366) 01:13:20.244273 Wrote request (82 bytes) input to log/4/server.input 01:13:20.244380 Send response test366 section 01:13:20.244660 Response sent (111 bytes) and written to log/4/server.response 01:13:20.244724 => persistent connection request ended, awaits new request 01:13:22.837140 Connection closed by client 01:13:22.837356 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 48136 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 366 === End of file server.cmd === Start of file server.input GET /366 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 503 BAD Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 21 Retry-After: 200 server not available === End of file server.response === Start of file stderr366 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 Warning: The Retry-After: time would make this command line exceed the maximum Warning: allowed time for retries. === End of file stderr366 === Start of file trace366 01:13:18.284606 * Trying 127.0.0.1:42621... 01:13:19.165393 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 33702 01:13:19.286047 * using HTTP/1.x 01:13:19.667121 => Send header, 82 bytes (0x52) 0000: GET /366 HTTP/1.1 0013: Host: 127.0.0.1:42621 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:13:20.020193 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 503 BAD. 01:13:20.332957 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:13:20.448083 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 21. 01:13:20.526766 <= Recv header, 17 bytes (0x11) 0000: Retry-After: 200. 01:13:20.608402 <= Recv header, 1 bytes (0x1) 0000: . 01:13:20.668615 <= Recv data, 21 bytes (0x15) 0000: server not available. 01:13:21.222205 * Connection #0 to host 127.0.0.1:42621 left intact === End of file trace366 === Start of file valgrind366 ==241206== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind366 test 0368...[Append dash if -r range specified without one] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind368 ../src/curl -q --output log/8/curl368.out --include --trace-ascii log/8/trace368 --trace-time http://127.0.0.1:39461/368 -r 4 > log/8/stdout368 2> log/8/stderr368 valgrind ERROR ==241418== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 368 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind368 ../src/curl -q --output log/8/curl368.out --include --trace-ascii log/8/trace368 --trace-time http://127.0.0.1:39461/368 -r 4 > log/8/stdout368 2> log/8/stderr368 === End of file commands.log === Start of file curl368.out HTTP/1.1 200 OK Accept-Ranges: bytes Content-Length: 6 Connection: close -foo- === End of file curl368.out === Start of file http_server.log 01:12:31.075938 ====> Client connect 01:12:31.076189 accept_connection 3 returned 4 01:12:31.076292 accept_connection 3 returned 0 01:12:31.080724 Read 93 bytes 01:12:31.080843 Process 93 bytes request 01:12:31.080949 Got request: GET /verifiedserver HTTP/1.1 01:12:31.081026 Are-we-friendly question received 01:12:31.081171 Wrote request (93 bytes) input to log/8/server.input 01:12:31.081294 Identifying ourselves as friends 01:12:31.081488 Response sent (57 bytes) and written to log/8/server.response 01:12:31.081566 special request received, no persistency 01:12:31.081636 ====> Client disconnect 0 01:13:18.578186 ====> Client connect 01:13:18.578317 accept_connection 3 returned 4 01:13:18.578394 accept_connection 3 returned 0 01:13:19.626004 Read 99 bytes 01:13:19.626199 Process 99 bytes request 01:13:19.626294 Got request: GET /368 HTTP/1.1 01:13:19.626364 Serve test number 368 part 0 01:13:19.626537 - request found to be complete (368) 01:13:19.626778 Wrote request (99 byteCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind369 ../src/curl -q --output log/6/curl369.out --include --trace-ascii log/6/trace369 --trace-time http://127.0.0.1:38277/369 --etag-save log/6/nowhere/etag369 --next http://127.0.0.1:38277/369 --include --output log/6/curl369.out > log/6/stdout369 2> log/6/stderr369 s) input to log/8/server.input 01:13:19.626892 Send response test368 section 01:13:19.627210 Response sent (80 bytes) and written to log/8/server.response 01:13:19.627277 => persistent connection request ended, awaits new request 01:13:21.452553 Connection closed by client 01:13:21.452735 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 49042 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 368 === End of file server.cmd === Start of file server.input GET /368 HTTP/1.1 Host: 127.0.0.1:39461 Range: bytes=4- User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK Accept-Ranges: bytes Content-Length: 6 Connection: close -foo- === End of file server.response === Start of file stderr368 Warning: A specified range MUST include at least one dash (-). Appending one Warning: for you % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr368 === Start of file trace368 01:13:18.639132 * Trying 127.0.0.1:39461... 01:13:19.553778 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 48258 01:13:19.689061 * using HTTP/1.x 01:13:20.051125 => Send header, 99 bytes (0x63) 0000: GET /368 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: Range: bytes=4- 003b: User-Agent: curl/8.17.0 0054: Accept: */* 0061: 01:13:20.385347 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:13:20.669911 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:13:20.781030 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:13:20.850572 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:13:20.934943 <= Recv header, 1 bytes (0x1) 0000: . 01:13:20.992808 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:13:21.104193 * we are done reading and this is set to close, stop send 01:13:21.136786 * abort upload 01:13:21.639231 * shutting down connection #0 === End of file trace368 === Start of file valgrind368 ==241418== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind368 test 0369...[--etag-save with bad path then working transfer] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind369 ../src/curl -q --output log/6/curl369.out --include --trace-ascii log/6/trace369 --trace-time http://127.0.0.1:38277/369 --etag-save log/6/nowhere/etag369 --next http://127.0.0.1:38277/369 --include --output log/6/curl369.out > log/6/stdout369 2> log/6/stderr369 valgrind ERROR ==241482== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 369 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind369 ../src/curl -q --output log/6/curl369.out --include --trace-ascii log/6/trace369 --trace-time http://127.0.0.1:38277/369 --etag-save log/6/nowhere/etag369 --next http://127.0.0.1:38277/369 --include --output log/6/curl369.out > log/6/stdout369 2> log/6/stderr369 === End of file commands.log === Start of file curl369.out HTTP/1.1 200 OK Content-Length: 4 Content-Type: text/html hej === End of file curl369.out === Start of file http_server.log 01:12:31.261614 ====> Client connect 01:12:31.261803 accept_connection 3 returned 4 01:12:31.261896 accept_connection 3 returned 0 01:12:31.273871 Read 93 bytes 01:12:31.274043 Process 93 bytes request 01:12:31.274157 Got request: GET /verifiedserver HTTP/1.1 01:12:31.274240 Are-we-friendly question received 01:12:31.274401 Wrote request (93 bytes) input to log/6/server.input 01:12:31.274525 Identifying ourselves as friends 01:12:31.274720 Response sent (57 bytes) and written to log/6/server.response 01:12:31.274799 special request received, no persistency 01:12:31.274872 ====> Client disconnect 0 01:13:19.091866 ====> Client connect 01:13:19.092024 accept_connection 3 returned 4 01:13:19.092107 accept_connection 3 returned 0 01:13:20.125510 Read 82 bytes 01:13:20.125718 Process 82 bytes request 01:13:20.125818 Got request: GET /369 HTTP/1.1 01:13:20.125892 Serve test number 369 part 0 01:13:20.126067 - request found to be complete (369) 01:13:20.126320 Wrote request (82 bytes) input to log/6/server.input 01:13:20.126431 Send response test369 section 01:13:20.126743 Response sent (63 bytes) and written to log/6/server.response 01:13:20.126814 => persistent connection request ended, awaits new request 01:13:22.563901 Connection closed by client 01:13:22.564106 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 36158 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 369 === End of file server.cmd === Start of file server.input GET /369 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Content-Length: 4 Content-Type: text/html hej === End of file server.response === Start of file stderr369 Warning: Failed creating file for saving etags: "log/6/nowhere/etag369". Skip Warning: this transfer % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 === End of file stderr369 === Start of file trace369 01:13:19.144281 * Trying 127.0.0.1:38277... 01:13:20.055954 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 46744 01:13:20.176729 * using HTTP/1.x 01:13:20.551938 => Send header, 82 bytes (0x52) 0000: GET /369 HTTP/1.1 0013: Host: 127.0.0.1:38277 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:13:20.905281 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:13:21.220455 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 4. 01:13:21.355899 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:13:21.478234 <= Recv header, 1 bytes (0x1) 0000: . 01:13:21.537923 <= Recv data, 4 bytes (0x4) 0000: hej. 01:13:22.101391 * Connection #0 to host 127.0.0.1:38277 left intact === End ofCMD (6656): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind370 ../src/curl -q --output log/2/curl370.out --include --trace-ascii log/2/trace370 --trace-time http://127.0.0.1:47/370 --etag-save log/2/nowhere/etag370 > log/2/stdout370 2> log/2/stderr370 CMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind378 ../src/curl -q --output log/6/curl378.out --include --trace-ascii log/6/trace378 --trace-time -T log/6/378 -d input http://never-accessed > log/6/stdout378 2> log/6/stderr378 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind371 ../src/curl -q --output log/5/curl371.out --include --trace-ascii log/5/trace371 --trace-time http://127.0.0.1:46263/371 -o log/5/dump -o log/5/dump2 --no-progress-meter > log/5/stdout371 2> log/5/stderr371 file trace369 === Start of file valgrind369 ==241482== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind369 test 0370...[--etag-save with bad path - no transfer] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind370 ../src/curl -q --output log/2/curl370.out --include --trace-ascii log/2/trace370 --trace-time http://127.0.0.1:47/370 --etag-save log/2/nowhere/etag370 > log/2/stdout370 2> log/2/stderr370 valgrind ERROR ==241906== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 370 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind370 ../src/curl -q --output log/2/curl370.out --include --trace-ascii log/2/trace370 --trace-time http://127.0.0.1:47/370 --etag-save log/2/nowhere/etag370 > log/2/stdout370 2> log/2/stderr370 === End of file commands.log === Start of file server.cmd Testnum 370 === End of file server.cmd === Start of file stderr370 Warning: Failed creating file for saving etags: "log/2/nowhere/etag370". Skip Warning: this transfer curl: no transfer performed === End of file stderr370 === Start of file valgrind370 ==241906== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind370 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 372 in state 4 Runner 2 (id 185908) running test 379 in state 4 Runner 3 (id 185910) running test 373 in state 4 Runner 4 (id 185912) running test 374 in state 4 Runner 5 (id 185914) running test 371 in state 4 Runner 6 (id 185916) running test 378 in state 4 Runner 7 (id 185918) running test 357 in state 4 Runner 8 (id 185920) running test 376 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 372 in state 4 Runner 2 (id 185908) running test 379 in state 4 Runner 3 (id 185910) running test 373 in state 4 Runner 4 (id 185912) running test 374 in state 4 Runner 5 (id 185914) running test 371 in state 4 Runner 6 (id 185916) running test 378 in state 4 Runner 7 (id 185918) running test 357 in state 4 Runner 8 (id 185920) running test 376 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 372 in state 4 Runner 2 (id 185908) running test 379 in state 4 Runner 3 (id 185910) running test 373 in state 4 Runner 4 (id 185912) running test 374 in state 4 Runner 5 (id 185914) running test 371 in state 4 Runner 6 (id 185916) running test 378 in state 4 Runner 7 (id 185918) running test 357 in state 4 Runner 8 (id 185920) running test 376 in state 4 test 0378...[Reject using -T and -d at once] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind378 ../src/curl -q --output log/6/curl378.out --include --trace-ascii log/6/trace378 --trace-time -T log/6/378 -d input http://never-accessed > log/6/stdout378 2> log/6/stderr378 valgrind ERROR ==242330== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 378 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind378 ../src/curl -q --output log/6/curl378.out --include --trace-ascii log/6/trace378 --trace-time -T log/6/378 -d input http://never-accessed > log/6/stdout378 2> log/6/stderr378 === End of file commands.log === Start of file server.cmd Testnum 378 === End of file server.cmd === Start of file stderr378 Warning: You can only select one HTTP request method! You asked for both PUT Warning: (-T, --upload-file) and POST (-d, --data). === End of file stderr378 === Start of file valgrind378 ==242330== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind378 test 0371...[using more -o than URLs in the command line] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind371 ../src/curl -q --output log/5/curl371.out --include --trace-ascii log/5/trace371 --trace-time http://127.0.0.1:46263/371 -o log/5/dump -o log/5/dump2 --no-progress-meter > log/5/stdout371 2> log/5/stderr371 valgrind ERROR ==242205== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 371 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind371 ../src/curl -q --output log/5/curl371.out --include --trace-ascii log/5/trace371 --trace-time http://127.0.0.1:46263/371 -o log/5/dump -o log/5/dump2 --no-progress-meter > log/5/stdout371 2> log/5/stderr371 === End of file commands.log === Start of file curl371.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl371.out === Start of file http_server.log 01:13:24.360346 ====> Client connect 01:13:24.360524 accept_connection 3 returned 4 01:13:24.360610 accept_connection 3 returned 0 01:13:24.368903 Read 93 bytes 01:13:24.369028 Process 93 bytes request 01:13:24.369133 Got request: GET /verifiedserver HTTP/1.1 01:13:24.369210 Are-we-friendly question received 01:13:24.369346 Wrote request (93 bytes) input to log/5/server.input 01:13:24.369450 Identifying ourselves as friends 01:13:24.369627 Response sent (57 bytes) and written to log/5/server.response 01:13:24.369700 special request received, no persistency 01:13:24.369762 ====> Client disconnect 0 01:14:11.996360 ====> Client connect 01:14:11.996519 accept_connection 3 returned 4 01:14:11.996603 accept_connection 3 returned 0 01:14:13.048562 Read 82 bytes 01:14:13.048774 Process 82 bytes request 01:14:13.048871 Got request: GET /371 HTTP/1.1 01:14:13.048945 Serve test number 371 part 0 01:14:13.049134 - request found to be complete (371) 01:14:13.049400 Wrote request (82 bytes) input to log/5/server.input 01:14:13.049520 Send response test371 section 01:14:13.049874 Response sent (256 bytes) and written to log/5/server.response 01:14:13.049943 => persistent connection request ended, awaits new request 01:14:15.125883 Connection closed by client 01:14:15.126102 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 46176 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 371 === End of file server.cmd === Start of file server.input GET /371 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close CCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind372 ../src/curl -q --output log/1/curl372.out --include --trace-ascii log/1/trace372 --trace-time --raw http://127.0.0.1:40641/binary-zero-in-data-section/372 > log/1/stdout372 2> log/1/stderr372 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind374 ../src/curl -q --output log/4/curl374.out --include --trace-ascii log/4/trace374 --trace-time http://127.0.0.1:42621/gif/374 > log/4/stdout374 2> log/4/stderr374 ontent-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr371 Warning: Got more output options than URLs === End of file stderr371 === Start of file trace371 01:14:11.985275 * Trying 127.0.0.1:46263... 01:14:12.965874 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 50692 01:14:13.098576 * using HTTP/1.x 01:14:13.474166 => Send header, 82 bytes (0x52) 0000: GET /371 HTTP/1.1 0013: Host: 127.0.0.1:46263 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:14:13.880207 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:14:14.238936 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:14:14.345526 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:14:14.375159 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:14:14.382945 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:14:14.391485 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:14:14.429479 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:14:14.492597 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:14:14.532564 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:14:14.537780 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:14:14.622924 <= Recv header, 1 bytes (0x1) 0000: . 01:14:14.684428 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:14:14.801976 * we are done reading and this is set to close, stop send 01:14:14.834239 * abort upload 01:14:15.305680 * shutting down connection #0 === End of file trace371 === Start of file valgrind371 ==242205== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind371 test 0372...[Binary zero in data element.] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind372 ../src/curl -q --output log/1/curl372.out --include --trace-ascii log/1/trace372 --trace-time --raw http://127.0.0.1:40641/binary-zero-in-data-section/372 > log/1/stdout372 2> log/1/stderr372 valgrind ERROR ==242351== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 372 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind372 ../src/curl -q --output log/1/curl372.out --include --trace-ascii log/1/trace372 --trace-time --raw http://127.0.0.1:40641/binary-zero-in-data-section/372 > log/1/stdout372 2> log/1/stderr372 === End of file commands.log === Start of file curl372.out HTTP/1.1 200 OK Date: Thu, 22 Jul 2010 11:22:33 GMT Connection: close Content-Type: text/html X-Control: swsclose Content-Length: 2 === End of file curl372.out === Start of file http_server.log 01:13:26.142831 ====> Client connect 01:13:26.143022 accept_connection 3 returned 4 01:13:26.143105 accept_connection 3 returned 0 01:13:26.151970 Read 93 bytes 01:13:26.152200 Process 93 bytes request 01:13:26.152313 Got request: GET /verifiedserver HTTP/1.1 01:13:26.152392 Are-we-friendly question received 01:13:26.152557 Wrote request (93 bytes) input to log/1/server.input 01:13:26.152685 Identifying ourselves as friends 01:13:26.152919 Response sent (57 bytes) and written to log/1/server.response 01:13:26.152993 special request received, no persistency 01:13:26.153062 ====> Client disconnect 0 01:14:13.948989 ====> Client connect 01:14:13.949151 accept_connection 3 returned 4 01:14:13.949242 accept_connection 3 returned 0 01:14:15.030396 Read 110 bytes 01:14:15.030567 Process 110 bytes request 01:14:15.030660 Got request: GET /binary-zero-in-data-section/372 HTTP/1.1 01:14:15.030731 Serve test number 372 part 0 01:14:15.030908 - request found to be complete (372) 01:14:15.031150 Wrote request (110 bytes) input to log/1/server.input 01:14:15.031260 Send response test372 section 01:14:15.031470 connection close instruction "swsclose" found in response 01:14:15.031644 Response sent (142 bytes) and written to log/1/server.response 01:14:15.031714 instructed to close connection after server-reply 01:14:15.031785 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 41356 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 372 === End of file server.cmd === Start of file server.input GET /binary-zero-in-data-section/372 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Thu, 22 Jul 2010 11:22:33 GMT Connection: close Content-Type: text/html X-Control: swsclose Content-Length: 2 === End of file server.response === Start of file stderr372 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 2 0 2 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 2 0 2 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr372 === Start of file trace372 01:14:12.979712 * Trying 127.0.0.1:40641... 01:14:13.971877 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 36082 01:14:14.100111 * using HTTP/1.x 01:14:14.457104 => Send header, 110 bytes (0x6e) 0000: GET /binary-zero-in-data-section/372 HTTP/1.1 002f: Host: 127.0.0.1:40641 0046: User-Agent: curl/8.17.0 005f: Accept: */* 006c: 01:14:14.811715 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:14:15.125430 <= Recv header, 37 bytes (0x25) 0000: Date: Thu, 22 Jul 2010 11:22:33 GMT 01:14:15.275630 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:14:15.323395 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:14:15.329829 <= Recv header, 21 bytes (0x15) 0000: X-Control: swsclose 01:14:15.355436 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 2 01:14:15.446449 <= Recv header, 2 bytes (0x2) 0000: 01:14:15.505116 <= Recv data, 2 bytes (0x2) 0000: .. 01:14:15.620300 * we are done reading and this is set to close, stop send 01:14:15.651975 * abort upload 01:14:16.139344 * shutting down connection #0 === End of file trace372 === Start of file valgrind372 ==242351== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind372 test 0374...[Valid gif with two frames. No new line in data section.] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind374 ../src/curl -q --output log/4/curl374.out --include --trace-ascii log/4/trace374 --trace-time http://127.0.0.1:42621/gif/374 > log/4/stdout374 2> log/4/stderr374 valgrind ERROR ==242430== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 374 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind374 ../src/curl -q --output log/4/curl374.out --include --trace-ascii log/4/trace374 --trace-time http://127.0CMD (4608): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind376 ../src/curl -q --include --trace-ascii log/8/trace376 --trace-time http://127.0.0.1:39461/376 -o log/8/save-376 --remove-on-error > log/8/stdout376 2> log/8/stderr376 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind373 ../src/curl -q --output log/3/curl373.out --include --trace-ascii log/3/trace373 --trace-time http://127.0.0.1:46853/chunked-transfer-encoding/373 > log/3/stdout373 2> log/3/stderr373 .0.1:42621/gif/374 > log/4/stdout374 2> log/4/stderr374 === End of file commands.log === Start of file curl374.out HTTP/1.1 200 OK Date: Thu, 22 Jul 2010 11:22:33 GMT Connection: close Content-Type: image/gif X-Control: swsclose GIF89a¡þÿBîBï!ÿ NETSCAPE2.0!þ$Created by Fabian Keil with The GIMP!ù ÿ,Œ©Ëí£œ´Ú‹³Þ¼û¯!ù ,œ©Ëí£œ´Ú‹³Þ¼û¯!ù ÿ,”©Ëí£œ´Ú‹³Þ¼û¯!ù ÿ,„©Ëí£œ´Ú‹³Þ¼û¯; === End of file curl374.out === Start of file http_server.log 01:13:26.489226 ====> Client connect 01:13:26.489434 accept_connection 3 returned 4 01:13:26.489524 accept_connection 3 returned 0 01:13:26.498606 Read 93 bytes 01:13:26.498743 Process 93 bytes request 01:13:26.498841 Got request: GET /verifiedserver HTTP/1.1 01:13:26.498909 Are-we-friendly question received 01:13:26.499054 Wrote request (93 bytes) input to log/4/server.input 01:13:26.499164 Identifying ourselves as friends 01:13:26.499371 Response sent (57 bytes) and written to log/4/server.response 01:13:26.499441 special request received, no persistency 01:13:26.499504 ====> Client disconnect 0 01:14:13.992493 ====> Client connect 01:14:13.992633 accept_connection 3 returned 4 01:14:13.992712 accept_connection 3 returned 0 01:14:15.036196 Read 86 bytes 01:14:15.036377 Process 86 bytes request 01:14:15.036473 Got request: GET /gif/374 HTTP/1.1 01:14:15.036544 Serve test number 374 part 0 01:14:15.036721 - request found to be complete (374) 01:14:15.036976 Wrote request (86 bytes) input to log/4/server.input 01:14:15.037083 Send response test374 section 01:14:15.037355 connection close instruction "swsclose" found in response 01:14:15.037561 Response sent (358 bytes) and written to log/4/server.response 01:14:15.037632 instructed to close connection after server-reply 01:14:15.037695 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 55802 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 374 === End of file server.cmd === Start of file server.input GET /gif/374 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Thu, 22 Jul 2010 11:22:33 GMT Connection: close Content-Type: image/gif X-Control: swsclose GIF89a¡þÿBîBï!ÿ NETSCAPE2.0!þ$Created by Fabian Keil with The GIMP!ù ÿ,Œ©Ëí£œ´Ú‹³Þ¼û¯!ù ,œ©Ëí£œ´Ú‹³Þ¼û¯!ù ÿ,”©Ëí£œ´Ú‹³Þ¼û¯!ù ÿ,„©Ëí£œ´Ú‹³Þ¼û¯; === End of file server.response === Start of file stderr374 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 237 0 237 0 0 50 0 --:--:-- 0:00:04 --:--:-- 70 100 237 0 237 0 0 49 0 --:--:-- 0:00:04 --:--:-- 68 === End of file stderr374 === Start of file trace374 01:14:13.006599 * Trying 127.0.0.1:42621... 01:14:13.976580 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 35258 01:14:14.095088 * using HTTP/1.x 01:14:14.462696 => Send header, 86 bytes (0x56) 0000: GET /gif/374 HTTP/1.1 0017: Host: 127.0.0.1:42621 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 01:14:14.813276 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:14:15.124972 <= Recv header, 37 bytes (0x25) 0000: Date: Thu, 22 Jul 2010 11:22:33 GMT 01:14:15.275135 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:14:15.323167 <= Recv header, 25 bytes (0x19) 0000: Content-Type: image/gif 01:14:15.330152 <= Recv header, 21 bytes (0x15) 0000: X-Control: swsclose 01:14:15.409671 <= Recv header, 2 bytes (0x2) 0000: 01:14:15.471021 <= Recv data, 237 bytes (0xed) 0000: GIF89a..............B..B.!..NETSCAPE2.0.....!.$Created by Fabian 0040: Keil with The GIMP.!.......,.............................!..... 0080: ..,.............................!.......,....................... 00c0: ......!.......,.............................; 01:14:15.629403 * abort upload 01:14:15.655051 <= Recv data, 0 bytes (0x0) 01:14:16.153276 * shutting down connection #0 === End of file trace374 === Start of file valgrind374 ==242430== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind374 test 0376...[--remove-on-error] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind376 ../src/curl -q --include --trace-ascii log/8/trace376 --trace-time http://127.0.0.1:39461/376 -o log/8/save-376 --remove-on-error > log/8/stdout376 2> log/8/stderr376 valgrind ERROR ==242479== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 376 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind376 ../src/curl -q --include --trace-ascii log/8/trace376 --trace-time http://127.0.0.1:39461/376 -o log/8/save-376 --remove-on-error > log/8/stdout376 2> log/8/stderr376 === End of file commands.log === Start of file http_server.log 01:13:25.650356 ====> Client connect 01:13:25.650530 accept_connection 3 returned 4 01:13:25.650611 accept_connection 3 returned 0 01:13:25.657284 Read 93 bytes 01:13:25.657391 Process 93 bytes request 01:13:25.657498 Got request: GET /verifiedserver HTTP/1.1 01:13:25.657580 Are-we-friendly question received 01:13:25.657713 Wrote request (93 bytes) input to log/8/server.input 01:13:25.657832 Identifying ourselves as friends 01:13:25.658037 Response sent (57 bytes) and written to log/8/server.response 01:13:25.658114 special request received, no persistency 01:13:25.658182 ====> Client disconnect 0 01:14:13.354210 ====> Client connect 01:14:13.354352 accept_connection 3 returned 4 01:14:13.354432 accept_connection 3 returned 0 01:14:14.391670 Read 82 bytes 01:14:14.391881 Process 82 bytes request 01:14:14.391972 Got request: GET /376 HTTP/1.1 01:14:14.392041 Serve test number 376 part 0 01:14:14.392216 - request found to be complete (376) 01:14:14.392467 Wrote request (82 bytes) input to log/8/server.input 01:14:14.392579 Send response test376 section 01:14:14.392839 connection close instruction "swsclose" found in response 01:14:14.393129 Response sent (266 bytes) and written to log/8/server.response 01:14:14.393204 instructed to close connection after server-reply 01:14:14.393270 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 50210 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 376 === End of file server.cmd === Start of file server.input GET /376 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 75 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr376 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 8 75 8 6 0 0 1 0 0:01:15 0:00:04 0:01:11 1 curl: (18) end of response with 69 bytes missing Note: Removed output file: log/8/save-376 === End of file stderr376 === Start of file trace376 01:14:13.375743 * Trying 127.0.0.1:39461... 01:14:14.331502 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 54254 01:14:14.468798 * using HTTP/1.x 01:14:14.814832 => Send header, 82 bytes (0x52) 0000: GET /376 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:14:15.148317 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 01:14:15.473350 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:14:15.577999 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:14:15.605081 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:14:15.612996 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:14:15.620424 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:14:15.653963 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 75. 01:14:15.706431 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:14:15.741665 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:14:15.746802 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:14:15.828230 <= Recv header, 1 bytes (0x1) 0000: . 01:14:15.887605 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:14:16.017331 * abort upload 01:14:16.044567 <= Recv data, 0 bytes (0x0) 01:14:16.081440 * end of response with 69 bytes missing 01:14:16.439544 * closing connection #0 === End of file trace376 === Start of file valgrind376 ==242479== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind376 test 0373...[Chunked transfer encoding - Multiple valid chunks with binary zeros.] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind373 ../src/curl -q --output log/3/curl373.out --include --trace-ascii log/3/trace373 --trace-time http://127.0.0.1:46853/chunked-transfer-encoding/373 > log/3/stdout373 2> log/3/stderr373 valgrind ERROR ==242411== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 373 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind373 ../src/curl -q --output log/3/curl373.out --include --trace-ascii log/3/trace373 --trace-time http://127.0.0.1:46853/chunked-transfer-encoding/373 > log/3/stdout373 2> log/3/stderr373 === End of file commands.log === Start of file curl373.out HTTP/1.1 200 OK Date: Thu, 22 Jul 2010 11:22:33 GMT Connection: close Content-Type: text/html Transfer-Encoding: chunked X-Control: swsclose === End of file curl373.out === Start of file http_server.log 01:13:25.323883 ====> Client connect 01:13:25.324058 accept_connection 3 returned 4 01:13:25.324151 accept_connection 3 returned 0 01:13:25.331225 Read 93 bytes 01:13:25.331361 Process 93 bytes request 01:13:25.331457 Got request: GET /verifiedserver HTTP/1.1 01:13:25.331524 Are-we-friendly question received 01:13:25.331640 Wrote request (93 bytes) input to log/3/server.input 01:13:25.331736 Identifying ourselves as friends 01:13:25.331970 Response sent (57 bytes) and written to log/3/server.response 01:13:25.332040 special request received, no persistency 01:13:25.332098 ====> Client disconnect 0 01:14:13.060697 ====> Client connect 01:14:13.060830 accept_connection 3 returned 4 01:14:13.060907 accept_connection 3 returned 0 01:14:14.102025 Read 108 bytes 01:14:14.102203 Process 108 bytes request 01:14:14.102298 Got request: GET /chunked-transfer-encoding/373 HTTP/1.1 01:14:14.102371 Serve test number 373 part 0 01:14:14.102615 - request found to be complete (373) 01:14:14.102907 Wrote request (108 bytes) input to log/3/server.input 01:14:14.103020 Send response test373 section 01:14:14.103364 connection close instruction "swsclose" found in response 01:14:14.103777 Response sent (1206 bytes) and written to log/3/server.response 01:14:14.103861 instructed to close connection after server-reply 01:14:14.103933 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 59708 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 373 === End of file server.cmd === Start of file server.input GET /chunked-transfer-encoding/373 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Thu, 22 Jul 2010 11:22:33 GMT Connection: close Content-Type: text/html Transfer-Encoding: chunked X-Control: swsclose 100 100 100 100 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind357 ../src/curl -q --output log/7/curl357.out --include --trace-ascii log/7/trace357 --trace-time http://127.0.0.1:34897/we/want/357 -T log/7/test357.txt --expect100-timeout 99 > log/7/stdout357 2> log/7/stderr357 0 === End of file server.response === Start of file stderr373 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 1024 0 1024 0 0 201 0 --:--:-- 0:00:05 --:--:-- 281 100 1024 0 1024 0 0 197 0 --:--:-- 0:00:05 --:--:-- 272 === End of file stderr373 === Start of file trace373 01:14:13.068069 * Trying 127.0.0.1:46853... 01:14:14.040790 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 57500 01:14:14.166998 * using HTTP/1.x 01:14:14.527262 => Send header, 108 bytes (0x6c) 0000: GET /chunked-transfer-encoding/373 HTTP/1.1 002d: Host: 127.0.0.1:46853 0044: User-Agent: curl/8.17.0 005d: Accept: */* 006a: 01:14:14.880664 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:14:15.199948 <= Recv header, 37 bytes (0x25) 0000: Date: Thu, 22 Jul 2010 11:22:33 GMT 01:14:15.348901 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:14:15.396513 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:14:15.489671 <= Recv header, 28 bytes (0x1c) 0000: Transfer-Encoding: chunked 01:14:15.503214 <= Recv header, 21 bytes (0x15) 0000: X-Control: swsclose 01:14:15.583254 <= Recv header, 2 bytes (0x2) 0000: 01:14:15.644785 <= Recv data, 1057 bytes (0x421) 0000: 100 0005: ................................................................ 0045: ................................................................ 0085: ................................................................ 00c5: ................................................................ 0107: 100 010c: ................................................................ 014c: ................................................................ 018c: ................................................................ 01cc: ................................................................ 020e: 100 0213: ................................................................ 0253: ................................................................ 0293: ................................................................ 02d3: ................................................................ 0315: 100 031a: ................................................................ 035a: ................................................................ 039a: ................................................................ 03da: ................................................................ 041c: 0 041f: 01:14:15.980101 * we are done reading and this is set to close, stop send 01:14:16.014166 * abort upload 01:14:16.504514 * shutting down connection #0 === End of file trace373 === Start of file valgrind373 ==242411== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind373 test 0357...[HTTP PUT with Expect: 100-continue and 417 response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind357 ../src/curl -q --output log/7/curl357.out --include --trace-ascii log/7/trace357 --trace-time http://127.0.0.1:34897/we/want/357 -T log/7/test357.txt --expect100-timeout 99 > log/7/stdout357 2> log/7/stderr357 valgrind ERROR ==240353== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 357 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind357 ../src/curl -q --output log/7/curl357.out --include --trace-ascii log/7/trace357 --trace-time http://127.0.0.1:34897/we/want/357 -T log/7/test357.txt --expect100-timeout 99 > log/7/stdout357 2> log/7/stderr357 === End of file commands.log === Start of file curl357.out HTTP/1.1 417 BAD swsbounce Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 0 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 10 blablabla === End of file curl357.out === Start of file http_server.log 01:11:36.306535 ====> Client connect 01:11:36.306798 accept_connection 3 returned 4 01:11:36.306892 accept_connection 3 returned 0 01:11:36.311261 Read 93 bytes 01:11:36.311451 Process 93 bytes request 01:11:36.311556 Got request: GET /verifiedserver HTTP/1.1 01:11:36.311631 Are-we-friendly question received 01:11:36.311777 Wrote request (93 bytes) input to log/7/server.input 01:11:36.311896 Identifying ourselves as friends 01:11:36.312076 Response sent (57 bytes) and written to log/7/server.response 01:11:36.312166 special request received, no persistency 01:11:36.312231 ====> Client disconnect 0 01:12:24.621381 ====> Client connect 01:12:24.621531 accept_connection 3 returned 4 01:12:24.621607 accept_connection 3 returned 0 01:12:25.823141 Read 137 bytes 01:12:25.823340 Process 137 bytes request 01:12:25.823437 Got request: PUT /we/want/357 HTTP/1.1 01:12:25.823509 Serve test number 357 part 0 01:12:25.823824 instructed to reject Expect: 100-continue 01:12:25.823905 - request found to be complete (357) 01:12:25.824038 instructed to reject Expect: 100-continue 01:12:25.824123 Found Content-Length: 1053701 in the request 01:12:25.824223 Found Expect: 100-continue, ignore body 01:12:25.824381 Wrote request (137 bytes) input to log/7/server.input 01:12:25.824487 Send response test357 section 01:12:25.851061 enable "swsbounce" in the next request 01:12:25.851383 Response sent (107 bytes) and written to log/7/server.response 01:12:25.851456 => persistent connection request ended, awaits new request 01:12:27.629395 Connection closed by client 01:12:27.629609 ====> Client disconnect 0 01:12:28.120290 ====> Client connect 01:12:28.120439 accept_connection 3 returned 4 01:12:28.120529 accept_connection 3 returned 0 01:12:28.264520 Read 65482 bytes 01:12:28.264743 Process 65482 bytes request 01:12:28.264905 Got request: PUT /we/want/357 HTTP/1.1 01:12:28.264989 Serve test number 357 part 0 01:12:28.265187 instructed to reject Expect: 100-continue 01:12:28.265260 - request found to be complete (357) 01:12:28.265425 instructed to reject Expect: 100-continue 01:12:28.265504 Found Content-Length: 1053701 in the request 01:12:28.266135 Read 54 bytes 01:12:28.266211 Process 65536 bytes request [CONTINUED] 01:12:28.266280 - request found to be complete (357) 01:12:28.266434 instructed to reject Expect: 100-continue 01:12:36.001966 Read 65536 bytes 01:12:36.002169 Process 131072 bytes request [CONTINUED] 01:12:36.002235 - request found to be complete (357) 01:12:36.002410 instructed to reject Expect: 100-continue 01:12:42.841524 Read 65536 bytes 01:12:42.841730 Process 196608 bytes request [CONTINUED] 01:12:42.841798 - request found to be complete (357) 01:12:42.841965 instructed to reject Expect: 100-continue 01:12:49.400507 Read 65536 bytes 01:12:49.400689 Process 262144 bytes request [CONTINUED] 01:12:49.400754 - request found to be complete (357) 01:12:49.400924 instructed to reject Expect: 100-continue 01:12:56.191474 Read 65536 bytes 01:12:56.191677 Process 327680 bytes request [CONTINUED] 01:12:56.191744 - request found to be complete (357) 01:12:56.191921 instructed to reject Expect: 100-continue 01:13:02.834331 Read 65536 bytes 01:13:02.834501 Process 393216 bytes request [CONTINUED] 01:13:02.834566 - request found to be complete (357) 01:13:02.834744 instructed to reject Expect: 100-continue 01:13:09.876131 Read 65536 bytes 01:13:09.876325 Process 458752 bytes request [CONTINUED] 01:13:09.876385 - request found to be complete (357) 01:13:09.876553 instructed to reject Expect: 100-continue 01:13:16.918563 Read 65536 bytes 01:13:16.918783 Process 524288 bytes request [CONTINUED] 01:13:16.918852 - request found to be complete (357) 01:13:16.919030 instructed to reject Expect: 100-continue 01:13:24.167104 Read 65536 bytes 01:13:24.167318 Process 589824 bytes request [CONTINUED] 01:13:24.167388 - request found to be complete (357) 01:13:24.167565 instructed to reject Expect: 100-continue 01:13:31.565243 Read 65536 bytes 01:13:31.565449 Process 655360 bytes request [CONTINUED] 01:13:31.565516 - request found to be complete (357) 01:13:31.565714 instructed to reject Expect: 100-continue 01:13:38.339102 Read 47168 bytes 01:13:38.339329 Process 702528 bytes request [CONTINUED] 01:13:38.339397 - request found to be complete (357) 01:13:38.339582 instructed to reject Expect: 100-continue 01:13:38.348219 Read 18368 bytes 01:13:38.348299 Process 720896 bytes request [CONTINUED] 01:13:38.348362 - request found to be complete (357) 01:13:38.348505 instructed to reject Expect: 100-continue 01:13:44.845830 Read 65536 bytes 01:13:44.846018 Process 786432 bytes request [CONTINUED] 01:13:44.846087 - request found to be complete (357) 01:13:44.846265 instructed to reject Expect: 100-continue 01:13:51.573705 Read 65483 bytes 01:13:51.573897 Process 851915 bytes request [CONTINUED] 01:13:51.573965 - request found to be complete (357) 01:13:51.574150 instructed to reject Expect: 100-continue 01:13:51.587078 Read 53 bytes 01:13:51.587165 Process 851968 bytes request [CONTINUED] 01:13:51.587227 - request found to be complete (357) 01:13:51.587367 instructed to reject Expect: 100-continue 01:13:58.330519 Read 65536 bytes 01:13:58.330716 Process 917504 bytes request [CONTINUED] 01:13:58.330779 - request found to be complete (357) 01:13:58.330951 instructed to reject Expect: 100-continue 01:14:05.400003 Read 65536 bytes 01:14:05.400219 Process 983040 bytes request [CONTINUED] 01:14:05.400287 - request found to be complete (357) 01:14:05.400468 instructed to reject Expect: 100-continue 01:14:12.776285 Read 65483 bytes 01:14:12.776492 Process 1048523 bytes request [CONTINUED] 01:14:12.776559 - request found to be complete (357) 01:14:12.776733 instructed to reject Expect: 100-continue 01:14:12.791439 Read 53 bytes 01:14:12.791612 Process 1048576 bytes request [CONTINUED] 01:14:12.791682 - request found to be complete (357) 01:14:12.795218 instructed to reject Expect: 100-continue 01:14:20.161458 Read 5240 bytes 01:14:20.161683 Process 1053816 bytes request [CONTINUED] 01:14:20.161753 - request found to be complete (357) 01:14:20.161950 instructed to reject Expect: 100-continue 01:14:20.181963 Wrote request (1053816 bytes) input to log/7/server.input 01:14:20.182150 BOUNCE part number to 1 01:14:20.182224 Send response test357 section 01:14:20.208948 Response sent (107 bytes) and written to log/7/server.response 01:14:20.209066 => persistent connection request ended, awaits new request 01:14:21.880335 Connection closed by client 01:14:21.880541 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 37786 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd no-expect Testnum 357 === End of file server.cmd === Start of file server.input PUT /we/want/357 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* Content-Length: 1053701 Expect: 100-continue PUT /we/want/357 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* Content-Length: 1053701 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 417 BAD swsbounce Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 0 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 10 blablabla === End of file server.response === Start of file stderr357 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 1029k 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 1029k 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 6 1029k 0 0 6 65421 0 4812 0:03:38 0:00:13 0:03:25 8357 12 1029k 0 0 12 130957 0 6414 0:02:44 0:00:20 0:02:24 8938 18 1029k 0 0 18 196493 0 7263 0:02:25 0:00:27 0:01:58 9230 24 1029k 0 0 24 262029 0 7741 0:02:16 0:00:33 0:01:43 9330 31 1029k 0 0 31 327565 0 8091 0:02:10 0:00:40 0:01:30 9434 37 1029k 0 0 37 393101 0 8270 0:02:07 0:00:47 0:01:20 9655 43 1029k 0 0 43 458637 0 8403 0:02:05 0:00:54 0:01:11 9592 49 1029k 0 0 49 524173 0 8478 0:02:04 0:01:01 0:01:03 9423 55 1029k 0 0 55 589709 0 8519 0:02:03 0:01:09 0:00:54 9263 62 1029k 0 0 62 655245 0 8622 0:02:02 0:01:15 0:00:47 9227 68 1029k 0 0 68 720781 0 8736 0:02:00 0:01:22 0:00:38 9369 74 1029k 0 0 74 786317 0 8812 0:01:59 0:01:29 0:00:30 9455 80 1029k 0 0 80 851853 0 8874 0:01:58 0:01:35 0:00:23 9591 87 1029k 0 0 87 917389 0 8901 0:01:58 0:01:43 0:00:15 9684 93 1029k 0 0 93 982925 0 8900 0:01:58 0:01:50 0:00:08 9515 99 1029k 0 0 99 1023k 0 8900 0:01:58 0:01:57 0:00:01 9281 100 1029k 0 10 100 1029k 0 8871 0:01:58 0:01:58 --:--:-- 9051 100 1029k 0 10 100 1029k 0 8868 0:01:58 0:01:58 --:--:-- 8841 === End of file stderr357 === Start of file test357.txt xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx === End of file test357.txt === Start of file trace357 01:12:24.669036 * Trying 127.0.0.1:34897... 01:12:25.606400 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 48122 01:12:25.755042 * using HTTP/1.x 01:12:26.261721 => Send header, 137 bytes (0x89) 0000: PUT /we/want/357 HTTP/1.1 001b: Host: 127.0.0.1:34897 0032: User-Agent: curl/8.17.0 004b: Accept: */* 0058: Content-Length: 1053701 0071: Expect: 100-continue 0087: 01:12:26.678730 <= Recv header, 27 bytes (0x1b) 0000: HTTP/1.1 417 BAD swsbounce. 01:12:26.994029 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:12:27.102328 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:12:27.146815 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 0. 01:12:27.233575 * Got HTTP failure 417 while sending data 01:12:27.304051 * abort upload 01:12:27.348103 <= Recv header, 1 bytes (0x1) 0000: . 01:12:27.808110 * shutting down connection #0 01:12:28.294957 * Issue another request to this URL: 'http://127.0.0.1:34897/we/want/357' 01:12:28.457681 * Hostname 127.0.0.1 was found in DNS cache 01:12:28.500086 * Trying 127.0.0.1:34897... 01:12:28.539082 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 48136 01:12:28.547012 * using HTTP/1.x 01:12:28.652106 => Send header, 115 bytes (0x73) 0000: PUT /we/want/357 HTTP/1.1 001b: Host: 127.0.0.1:34897 0032: User-Agent: curl/8.17.0 004b: Accept: */* 0058: Content-Length: 1053701 0071: 01:12:28.675211 => Send data, 65421 bytes (0xff8d) 0000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 00c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 01c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 02c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 03c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 04c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 05c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 06c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 07c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 08c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 09c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0a00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0a40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0a80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0ac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0b00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0b40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0b80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0bc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0c00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0c40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0c80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0cc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0d00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0d40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0d80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0dc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0e00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0e40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0e80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0ec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0f00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0f40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0f80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0fc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 10c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 11c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 12c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 13c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 14c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 15c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 16c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 17c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 18c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 19c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1a00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1a40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1a80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1ac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1b00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1b40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1b80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1bc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1c00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1c40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1c80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1cc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1d00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1d40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1d80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1dc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1e00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1e40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1e80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1ec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1f00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1f40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1f80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1fc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 20c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 21c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 22c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 23c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 24c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 25c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 26c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 27c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 28c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 29c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2a00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2a40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2a80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2ac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2b00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2b40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2b80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2bc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2c00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2c40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2c80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2cc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2d00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2d40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2d80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2dc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2e00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2e40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2e80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2ec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2f00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2f40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2f80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2fc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 30c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 31c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 32c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 33c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 34c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 35c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 36c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 37c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 38c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 39c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3a00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3a40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3a80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3ac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3b00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3b40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3b80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3bc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3c00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3c40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3c80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3cc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3d00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3d40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3d80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3dc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3e00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3e40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3e80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3ec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3f00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3f40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3f80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3fc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 40c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 41c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 42c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 43c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 44c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 45c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 46c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 47c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 48c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 49c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4a00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4a40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4a80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4ac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4b00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4b40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4b80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4bc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4c00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4c40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4c80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4cc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4d00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4d40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4d80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4dc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4e00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4e40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4e80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4ec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4f00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4f40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4f80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4fc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 50c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 51c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 52c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 53c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 54c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 55c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 56c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 57c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 58c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 59c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5a00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5a40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5a80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5ac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5b00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5b40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5b80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5bc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5c00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5c40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5c80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5cc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5d00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5d40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5d80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5dc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5e00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5e40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5e80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5ec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5f00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5f40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5f80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5fc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 60c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 61c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 62c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 63c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 64c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 65c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 66c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 67c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 68c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 69c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6a00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6a40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6a80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6ac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6b00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6b40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6b80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6bc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6c00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6c40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6c80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6cc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6d00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6d40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6d80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6dc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6e00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6e40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6e80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6ec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6f00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6f40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6f80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6fc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 70c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 71c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 72c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 73c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 74c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 75c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 76c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 77c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 78c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 79c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7a00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7a40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7a80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7ac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7b00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7b40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7b80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7bc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7c00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7c40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7c80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7cc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7d00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7d40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7d80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7dc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7e00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7e40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7e80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7ec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7f00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7f40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7f80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7fc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 80c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 81c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 82c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 83c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 84c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 85c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 86c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 87c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 88c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 89c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8a00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8a40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8a80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8ac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8b00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8b40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8b80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8bc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8c00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8c40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8c80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8cc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8d00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8d40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8d80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8dc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8e00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8e40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8e80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8ec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8f00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8f40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8f80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8fc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 90c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 91c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 92c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 93c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 94c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 95c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 96c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 97c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 98c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 99c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9a00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9a40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9a80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9ac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9b00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9b40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9b80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9bc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9c00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9c40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9c80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9cc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9d00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9d40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9d80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9dc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9e00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9e40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9e80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9ec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9f00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9f40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9f80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9fc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a0c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a1c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a2c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a3c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a4c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a5c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a6c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a7c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a8c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a9c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx aa00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx aa40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx aa80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx aac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ab00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ab40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ab80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx abc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ac00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ac40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ac80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx acc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ad00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ad40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ad80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx adc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ae00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ae40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ae80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx aec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx af00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx af40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx af80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx afc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b0c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b1c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b2c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b3c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b4c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b5c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b6c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b7c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b8c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx b9c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ba00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ba40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ba80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bb00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bb40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bb80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bbc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bc00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bc40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bc80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bcc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bd00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bd40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bd80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bdc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx be00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx be40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx be80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bf00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bf40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bf80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bfc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c0c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c1c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c2c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c3c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c4c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c5c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c6c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c7c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c8c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx c9c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ca00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ca40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ca80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cb00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cb40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cb80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cbc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cc00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cc40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cc80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ccc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cd00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cd40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cd80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cdc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ce00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ce40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ce80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cf00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cf40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cf80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cfc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d0c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d1c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d2c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d3c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d4c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d5c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d6c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d7c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d8c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx d9c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx da00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx da40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx da80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx dac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx db00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx db40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx db80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx dbc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx dc00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx dc40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx dc80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx dcc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx dd00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx dd40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx dd80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ddc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx de00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx de40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx de80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx dec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx df00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx df40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx df80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx dfc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e0c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e1c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e2c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e3c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e4c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e5c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e6c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e7c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e8c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e9c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ea00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ea40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ea80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx eac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx eb00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx eb40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx eb80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ebc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ec00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ec40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ec80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ecc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ed00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ed40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ed80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx edc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ee00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ee40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ee80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx eec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ef00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ef40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ef80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx efc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f0c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f1c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f2c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f3c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f4c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f5c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f6c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f7c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f8c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f9c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fa00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fa40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fa80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fb00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fb40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fb80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fbc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fc00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fc40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fc80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fcc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fd00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fd40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fd80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fdc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fe00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fe40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fe80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ff00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ff40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ff80: xxxxxxxxxxxxx 01:12:36.388004 => Send data, 65536 bytes (0x10000) 0000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 00c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 01c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 02c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 03c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 04c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 05c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 06c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 07c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 08c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 09c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0a00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0a40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0a80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0ac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0b00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0b40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0b80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0bc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0c00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0c40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0c80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0cc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0d00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0d40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0d80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0dc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0e00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0e40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0e80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0ec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0f00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0f40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0f80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0fc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 10c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 11c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 12c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 13c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 14c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 15c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 16c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 17c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 18c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 19c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1a00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1a40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1a80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1ac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1b00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1b40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1b80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1bc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1c00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1c40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1c80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1cc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1d00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1d40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1d80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1dc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1e00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1e40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1e80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1ec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1f00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1f40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1f80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1fc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 20c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 21c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 22c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx === File too long: 15131 lines omitted here e640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e6c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e7c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e8c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e9c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ea00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ea40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ea80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx eac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx eb00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx eb40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx eb80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ebc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ec00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ec40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ec80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ecc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ed00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ed40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ed80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx edc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ee00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ee40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ee80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx eec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ef00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ef40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ef80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx efc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f0c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f1c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f2c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f3c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f4c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f5c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f6c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f7c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f8c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx f9c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fa00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fa40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fa80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fb00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fb40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fb80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fbc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fc00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fc40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fc80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fcc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fd00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fd40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fd80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fdc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fe00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fe40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fe80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ff00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ff40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ff80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ffc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 01:14:20.564509 => Send data, 5240 bytes (0x1478) 0000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 00c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 01c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 02c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 03c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0480: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 04c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0500: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0540: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0580: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 05c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0600: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0640: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0680: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 06c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0700: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0740: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0780: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 07c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0800: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0840: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0880: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 08c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0900: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0940: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0980: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 09c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0a00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0a40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0a80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0ac0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0b00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0b40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0b80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0bc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0c00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0c40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0c80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0cc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0d00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0d40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0d80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0dc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0e00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0e40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0e80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0ec0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0f00: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0f40: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0f80: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0fc0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1080: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 10c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1100: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCMD (4608): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind379 ../src/curl -q --include --trace-ascii log/2/trace379 --trace-time http://127.0.0.1:39863/379 -o log/2/save --remove-on-error --no-clobber > log/2/stdout379 2> log/2/stderr379 xxxxxxxxxxxxxxxxxxxxxxxxx 1140: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1180: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 11c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1200: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1240: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1280: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 12c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1300: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1340: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1380: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 13c0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1400: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1440: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. 01:14:21.245825 * upload completely sent off: 1053701 bytes 01:14:21.284602 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:14:21.296163 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:14:21.308723 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:14:21.316347 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 10. 01:14:21.336563 <= Recv header, 1 bytes (0x1) 0000: . 01:14:21.367079 <= Recv data, 10 bytes (0xa) 0000: blablabla. 01:14:21.607776 * Connection #1 to host 127.0.0.1:34897 left intact === End of file trace357 === Start of file valgrind357 ==240353== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind357 test 0379...[--remove-on-error with --no-clobber and an added number] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind379 ../src/curl -q --include --trace-ascii log/2/trace379 --trace-time http://127.0.0.1:39863/379 -o log/2/save --remove-on-error --no-clobber > log/2/stdout379 2> log/2/stderr379 valgrind ERROR ==243021== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 379 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind379 ../src/curl -q --include --trace-ascii log/2/trace379 --trace-time http://127.0.0.1:39863/379 -o log/2/save --remove-on-error --no-clobber > log/2/stdout379 2> log/2/stderr379 === End of file commands.log === Start of file http_server.log 01:13:34.716910 ====> Client connect 01:13:34.717077 accept_connection 3 returned 4 01:13:34.717159 accept_connection 3 returned 0 01:13:34.723685 Read 93 bytes 01:13:34.723778 Process 93 bytes request 01:13:34.723875 Got request: GET /verifiedserver HTTP/1.1 01:13:34.723946 Are-we-friendly question received 01:13:34.724069 Wrote request (93 bytes) input to log/2/server.input 01:13:34.724171 Identifying ourselves as friends 01:13:34.724369 Response sent (57 bytes) and written to log/2/server.response 01:13:34.724439 special request received, no persistency 01:13:34.724503 ====> Client disconnect 0 01:14:22.129618 ====> Client connect 01:14:22.129785 accept_connection 3 returned 4 01:14:22.129870 accept_connection 3 returned 0 01:14:23.275052 Read 82 bytes 01:14:23.275273 Process 82 bytes request 01:14:23.275368 Got request: GET /379 HTTP/1.1 01:14:23.275440 Serve test number 379 part 0 01:14:23.275623 - request found to be complete (379) 01:14:23.275883 Wrote request (82 bytes) input to log/2/server.input 01:14:23.276011 Send response test379 section 01:14:23.276282 connection close instruction "swsclose" found in response 01:14:23.276549 Response sent (266 bytes) and written to log/2/server.response 01:14:23.276617 instructed to close connection after server-reply 01:14:23.276677 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 40224 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file save exists before command runs === End of file save === Start of file server.cmd Testnum 379 === End of file server.cmd === Start of file server.input GET /379 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 75 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr379 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 8 75 8 6 0 0 1 0 0:01:15 0:00:05 0:01:10 1 curl: (18) end of response with 69 bytes missing Note: Removed output file: log/2/save.1 === End of file stderr379 === Start of file trace379 01:14:21.149290 * Trying 127.0.0.1:39863... 01:14:22.174821 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 47958 01:14:22.321926 * using HTTP/1.x 01:14:22.702167 => Send header, 82 bytes (0x52) 0000: GET /379 HTTP/1.1 0013: Host: 127.0.0.1:39863 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:14:23.093740 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 01:14:23.521321 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:14:23.641181 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:14:23.670303 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:14:23.678905 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:14:23.686911 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:14:23.720762 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 75. 01:14:23.776508 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:14:23.813846 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:14:23.819117 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:14:23.908456 <= Recv header, 1 bytes (0x1) 0000: . 01:14:23.970809 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:14:24.108511 * abort upload 01:14:24.136461 <= Recv data, 0 bytes (0x0) 01:14:24.177708 * end of response with 69 bytes missing 01:14:24.528420 * closing connection #0 === End of file trace379 === Start of file valgrind379 ==243021== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind379 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 383 in state 4 Runner 2 (id 185908) running test 388 in state 4 Runner 3 (id 185910) running test 386 in state 4 Runner 4 (id 185912) running test 384 in state 4 Runner 5 (id 185914) running test 381 in state 4 Runner 6 (id 185916) running test 380 in state 4 Runner 7 (id 185918) running test 387 in state 4 Runner 8 (id 185920) running test 385 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) runningCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind380 ../src/curl -q --output log/6/curl380.out --include --trace-ascii log/6/trace380 --trace-time --netrc --netrc-file log/6/netrc380 ftp://mary@127.0.0.1:39413/ > log/6/stdout380 2> log/6/stderr380 test 383 in state 4 Runner 2 (id 185908) running test 388 in state 4 Runner 3 (id 185910) running test 386 in state 4 Runner 4 (id 185912) running test 384 in state 4 Runner 5 (id 185914) running test 381 in state 4 Runner 6 (id 185916) running test 380 in state 4 Runner 7 (id 185918) running test 387 in state 4 Runner 8 (id 185920) running test 385 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 383 in state 4 Runner 2 (id 185908) running test 388 in state 4 Runner 3 (id 185910) running test 386 in state 4 Runner 4 (id 185912) running test 384 in state 4 Runner 5 (id 185914) running test 381 in state 4 Runner 6 (id 185916) running test 380 in state 4 Runner 7 (id 185918) running test 387 in state 4 Runner 8 (id 185920) running test 385 in state 4 test 0380...[pick netrc password based on user name in URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind380 ../src/curl -q --output log/6/curl380.out --include --trace-ascii log/6/trace380 --trace-time --netrc --netrc-file log/6/netrc380 ftp://mary@127.0.0.1:39413/ > log/6/stdout380 2> log/6/stderr380 valgrind ERROR ==243248== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 380 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind380 ../src/curl -q --output log/6/curl380.out --include --trace-ascii log/6/trace380 --trace-time --netrc --netrc-file log/6/netrc380 ftp://mary@127.0.0.1:39413/ > log/6/stdout380 2> log/6/stderr380 === End of file commands.log === Start of file curl380.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl380.out === Start of file ftp_server.log 01:14:11.844582 ====> Client connect 01:14:11.845565 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:14:11.855314 < "USER anonymous" 01:14:11.858343 > "331 We are happy you popped in![CR][LF]" 01:14:11.858988 < "PASS ftp@example.com" 01:14:11.859894 > "230 Welcome you silly person[CR][LF]" 01:14:11.860394 < "PWD" 01:14:11.860806 > "257 "/" is current directory[CR][LF]" 01:14:11.863519 < "EPSV" 01:14:11.863730 ====> Passive DATA channel requested by client 01:14:11.863872 DATA sockfilt for passive data channel starting... 01:14:11.906601 DATA sockfilt for passive data channel started (pid 243242) 01:14:11.907999 DATA sockfilt for passive data channel listens on port 43333 01:14:11.908340 > "229 Entering Passive Mode (|||43333|)[CR][LF]" 01:14:11.908505 Client has been notified that DATA conn will be accepted on port 43333 01:14:11.911697 Client connects to port 43333 01:14:11.911966 ====> Client established passive DATA connection on port 43333 01:14:11.912603 < "TYPE I" 01:14:11.913355 > "200 I modify TYPE as you wanted[CR][LF]" 01:14:11.914293 < "SIZE verifiedserver" 01:14:11.915549 > "213 18[CR][LF]" 01:14:11.916074 < "RETR verifiedserver" 01:14:11.918569 > "150 Binary junk (18 bytes).[CR][LF]" 01:14:11.919134 =====> Closing passive DATA connection... 01:14:11.919290 Server disconnects passive DATA connection 01:14:11.920771 Server disconnected passive DATA connection 01:14:11.920965 DATA sockfilt for passive data channel quits (pid 243242) 01:14:11.927355 DATA sockfilt for passive data channel quit (pid 243242) 01:14:11.927693 =====> Closed passive DATA connection 01:14:11.928021 > "226 File transfer complete[CR][LF]" 01:14:11.969581 < "QUIT" 01:14:11.969995 > "221 bye bye baby[CR][LF]" 01:14:11.974320 MAIN sockfilt said DISC 01:14:11.974759 ====> Client disconnected 01:14:11.975031 Awaiting input 01:14:59.558093 ====> Client connect 01:14:59.558857 FTPD: Getting commands from log/6/server.cmd 01:14:59.559196 FTPD: run test case number: 380 01:14:59.564298 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:15:00.861325 < "USER mary" 01:15:00.861811 > "331 We are happy you popped in![CR][LF]" 01:15:00.980348 < "PASS yram" 01:15:00.984259 > "230 Welcome you silly person[CR][LF]" 01:15:01.078427 < "PWD" 01:15:01.078873 > "257 "/" is current directory[CR][LF]" 01:15:01.278183 < "EPSV" 01:15:01.278520 ====> Passive DATA channel requested by client 01:15:01.278681 DATA sockfilt for passive data channel starting... 01:15:01.354275 DATA sockfilt for passive data channel started (pid 244553) 01:15:01.358237 DATA sockfilt for passive data channel listens on port 39121 01:15:01.358732 > "229 Entering Passive Mode (|||39121|)[CR][LF]" 01:15:01.358937 Client has been notified that DATA conn will be accepted on port 39121 01:15:01.577570 Client connects to port 39121 01:15:01.578127 ====> Client established passive DATA connection on port 39121 01:15:01.690169 < "TYPE A" 01:15:01.690619 > "200 I modify TYPE as you wanted[CR][LF]" 01:15:01.741759 < "LIST" 01:15:01.742446 > "150 here comes a directory[CR][LF]" 01:15:01.742638 pass LIST data on data connection 01:15:01.743734 send total 20 as data 01:15:01.743968 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 01:15:01.747553 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 01:15:01.747812 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 01:15:01.748035 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 01:15:01.748248 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 01:15:01.748457 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 01:15:01.748681 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 01:15:01.748897 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 01:15:01.749126 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 01:15:01.749338 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 01:15:01.749827 =====> Closing passive DATA connection... 01:15:01.749982 Server disconnects passive DATA connection 01:15:01.754184 Server disconnected passive DATA connection 01:15:01.754421 DATA sockfilt for passive data channel quits (pid 244553) 01:15:01.760568 DATA sockfilt for passive data channel quit (pid 244553) 01:15:01.760857 =====> Closed passive DATA connection 01:15:01.761185 > "226 ASCII transfer complete[CR][LF]" 01:15:03.947023 < "QUIT" 01:15:03.947784 > "221 bye bye baby[CR][LF]" 01:15:04.086946 MAIN sockfilt said DISC 01:15:04.090841 ====> Client disconnected 01:15:04.091306 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:14:11.458526 ====> Client connect 01:14:11.460119 Received DATA (on stdin) 01:14:11.460193 > 160 bytes data, server => client 01:14:11.460301 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:14:11.460395 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:14:11.460485 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:14:11.468538 < 16 bytes data, client => server 01:14:11.468694 'USER anonymous\r\n' 01:14:11.469982 Received DATA (on stdin) 01:14:11.470052 > 33 bytes data, server => client 01:14:11.472004 '331 We are happy you popped in!\r\n' 01:14:11.472349 < 22 bytes data, client => server 01:14:11.472435 'PASS ftp@example.com\r\n' 01:14:11.473552 Received DATA (on stdin) 01:14:11.473626 > 30 bytes data, server => client 01:14:11.473729 '230 Welcome you silly person\r\n' 01:14:11.473978 < 5 bytes data, client => server 01:14:11.474042 'PWD\r\n' 01:14:11.474955 Received DATA (on stdin) 01:14:11.475020 > 30 bytes data, server => client 01:14:11.475360 '257 "/" is current directory\r\n' 01:14:11.477328 < 6 bytes data, client => server 01:14:11.477402 'EPSV\r\n' 01:14:11.523093 Received DATA (on stdin) 01:14:11.523226 > 39 bytes data, server => client 01:14:11.523318 '229 Entering Passive Mode (|||43333|)\r\n' 01:14:11.525629 < 8 bytes data, client => server 01:14:11.525714 'TYPE I\r\n' 01:14:11.527173 Received DATA (on stdin) 01:14:11.527241 > 33 bytes data, server => client 01:14:11.527546 '200 I modify TYPE as you wanted\r\n' 01:14:11.528153 < 21 bytes data, client => server 01:14:11.528227 'SIZE verifiedserver\r\n' 01:14:11.528920 Received DATA (on stdin) 01:14:11.528997 > 8 bytes data, server => client 01:14:11.529200 '213 18\r\n' 01:14:11.529693 < 21 bytes data, client => server 01:14:11.529771 'RETR verifiedserver\r\n' 01:14:11.530672 Received DATA (on stdin) 01:14:11.530737 > 29 bytes data, server => client 01:14:11.530836 '150 Binary junk (18 bytes).\r\n' 01:14:11.542313 Received DATA (on stdin) 01:14:11.542459 > 28 bytes data, server => client 01:14:11.542556 '226 File transfer complete\r\n' 01:14:11.582788 < 6 bytes data, client => server 01:14:11.582968 'QUIT\r\n' 01:14:11.584733 Received DATA (on stdin) 01:14:11.584807 > 18 bytes data, server => client 01:14:11.584881 '221 bye bye baby\r\n' 01:14:11.588494 ====> Client disconnect 01:14:11.588950 Received ACKD (on stdin) 01:14:59.172012 ====> Client connect 01:14:59.174439 Received DATA (on stdin) 01:14:59.174543 > 160 bytes data, server => client 01:14:59.178874 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:14:59.179003 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:14:59.179094 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:15:00.474317 < 11 bytes data, client => server 01:15:00.474510 'USER mary\r\n' 01:15:00.476335 Received DATA (on stdin) 01:15:00.476433 > 33 bytes data, server => client 01:15:00.476532 '331 We are happy you popped in!\r\n' 01:15:00.593421 < 11 bytes data, client => server 01:15:00.593627 'PASS yram\r\n' 01:15:00.594981 Received DATA (on stdin) 01:15:00.595080 > 30 bytes data, server => client 01:15:00.598846 '230 Welcome you silly person\r\n' 01:15:00.691522 < 5 bytes data, client => server 01:15:00.691710 'PWD\r\n' 01:15:00.693329 Received DATA (on stdin) 01:15:00.693410 > 30 bytes data, server => client 01:15:00.693501 '257 "/" is current directory\r\n' 01:15:00.891263 < 6 bytes data, client => server 01:15:00.891450 'EPSV\r\n' 01:15:00.978409 Received DATA (on stdin) 01:15:00.978569 > 39 bytes data, server => client 01:15:00.978673 '229 Entering Passive Mode (|||39121|)\r\n' 01:15:01.303193 < 8 bytes data, client => server 01:15:01.303400 'TYPE A\r\n' 01:15:01.305095 Received DATA (on stdin) 01:15:01.305181 > 33 bytes data, server => client 01:15:01.305271 '200 I modify TYPE as you wanted\r\n' 01:15:01.354961 < 6 bytes data, client => server 01:15:01.355159 'LIST\r\n' 01:15:01.356332 Received DATA (on stdin) 01:15:01.356409 > 28 bytes data, server => client 01:15:01.356512 '150 here comes a directory\r\n' 01:15:01.375669 Received DATA (on stdin) 01:15:01.375806 > 29 bytes data, server => client 01:15:01.375927 '226 ASCII transfer complete\r\n' 01:15:03.560096 < 6 bytes data, client => server 01:15:03.560296 'QUIT\r\n' 01:15:03.561626 Received DATA (on stdin) 01:15:03.561715 > 18 bytes data, server => client 01:15:03.561821 '221 bye bye baby\r\n' 01:15:03.700824 ====> Client disconnect 01:15:03.701718 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:14:11.511579 Running IPv4 version 01:14:11.519298 Listening on port 43333 01:14:11.519810 Wrote pid 243242 to log/6/server/ftp_sockdata.pid 01:14:11.520585 Received PING (on stdin) 01:14:11.521658 Received PORT (on stdin) 01:14:11.525886 ====> Client connect 01:14:11.533805 Received DATA (on stdin) 01:14:11.534133 > 18 bytes data, server => client 01:14:11.534530 'WE ROOLZ: 201819\r\n' 01:14:11.534786 Received DISC (on stdin) 01:14:11.534906 ====> Client forcibly disconnected 01:14:11.538514 Received QUIT (on stdin) 01:14:11.538645 quits 01:14:11.539177 ============> sockfilt quits 01:15:01.958933 Running IPv4 version 01:15:01.966782 Listening on port 39121 01:15:01.967313 Wrote pid 244553 to log/6/server/ftp_sockdata.pid 01:15:01.968120 Received PING (on stdin) 01:15:01.971730 Received PORT (on stdin) 01:15:02.189189 ====> Client connect 01:15:02.358212 Received DATA (on stdin) 01:15:02.358606 > 10 bytes data, server => client 01:15:02.358981 'total 20\r\n' 01:15:02.361747 Received DATA (on stdin) 01:15:02.361826 > 57 bytes data, server => client 01:15:02.361930 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 01:15:02.362040 Received DATA (on stdin) 01:15:02.362104 > 58 bytes data, server => client 01:15:02.362205 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 01:15:02.362289 Received DATA (on stdin) 01:15:02.362354 > 61 bytes data, server => client 01:15:02.362474 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 01:15:02.362549 '\n' 01:15:02.362634 Received DATA (on stdin) 01:15:02.362699 > 62 bytes data, server => client 01:15:02.362802 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 01:15:02.362863 '\n' 01:15:02.362947 Received DATA (on stdin) 01:15:02.363013 > 70 bytes data, server => client 01:15:02.363116 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 01:15:02.363183 'usr/bin\r\n' 01:15:02.363264 Received DATA (on stdin) 01:15:02.363329 > 59 bytes data, server => client 01:15:02.363430 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 01:15:02.363513 Received DATA (on stdin) 01:15:02.363577 > 69 bytes data, server => client 01:15:02.363678 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 01:15:02.363744 'd.html\r\n' 01:15:02.363839 Received DATA (on stdin) 01:15:02.363904 > 59 bytes data, server => client 01:15:02.364005 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 01:15:02.364087 Received DATA (on stdin) 01:15:02.364152 > 59 bytes data, server => client 01:15:02.364252 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 01:15:02.364334 Received DATA (on stdin) 01:15:02.364398 > 59 bytes data, server => client 01:15:02.364499 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 01:15:02.364581 Received DISC (on stdin) 01:15:02.364699 ====> Client forcibly disconnected 01:15:02.371721 Received QUIT (on stdin) 01:15:02.371832 quits 01:15:02.372356 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file netrc380 # the following two lines were created while testing curl machine 127.0.0.1 login frankenstein password wrongone machine 127.0.0.1 login mary password yram === End of file netrc380 === Start of file server.cmd Testnum 380 === End of file server.cmd === Start of file server.input USER mary PASS yram PWD EPSV TYPE A LIST QUIT === End of file server.input === Start of file stderr380 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 623 0 623 0 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind381 ../src/curl -q --output log/5/curl381.out --include --trace-ascii log/5/trace381 --trace-time --netrc-optional --netrc-file log/5/netrc381 ftp://mary:drfrank@127.0.0.1:33729/ > log/5/stdout381 2> log/5/stderr381 0 115 0 --:--:-- 0:00:05 --:--:-- 161 100 623 0 623 0 0 107 0 --:--:-- 0:00:05 --:--:-- 145 === End of file stderr380 === Start of file trace380 01:14:59.237387 * Trying 127.0.0.1:39413... 01:15:00.132084 * Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 43952 01:15:00.380127 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:15:00.734789 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:15:00.761421 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:15:00.769879 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:15:00.775495 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:15:00.881113 => Send header, 11 bytes (0xb) 0000: USER mary 01:15:00.957585 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:15:00.980495 => Send header, 11 bytes (0xb) 0000: PASS yram 01:15:01.053804 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:15:01.077329 => Send header, 5 bytes (0x5) 0000: PWD 01:15:01.093881 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:15:01.131163 * Entry path is '/' 01:15:01.224943 * Request has same path as previous transfer 01:15:01.277107 => Send header, 6 bytes (0x6) 0000: EPSV 01:15:01.293379 * Connect data stream passively 01:15:01.370096 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||39121|) 01:15:01.495231 * Connecting to 127.0.0.1 (127.0.0.1) port 39121 01:15:01.568744 * Trying 127.0.0.1:39121... 01:15:01.657505 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 39121) from 127.0.0.1 port 51174 01:15:01.689046 => Send header, 8 bytes (0x8) 0000: TYPE A 01:15:01.708078 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:15:01.740804 => Send header, 6 bytes (0x6) 0000: LIST 01:15:01.770584 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 01:15:01.805999 * Maxdownload = -1 01:15:01.963797 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 01:15:02.396031 * abort upload 01:15:02.424102 <= Recv data, 0 bytes (0x0) 01:15:02.617522 * Remembering we are in dir "" 01:15:02.829840 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 01:15:03.160767 * Connection #0 to host 127.0.0.1:39413 left intact === End of file trace380 === Start of file valgrind380 ==243248== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind380 test 0381...[netrc-optional lets URL creds override netrc] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind381 ../src/curl -q --output log/5/curl381.out --include --trace-ascii log/5/trace381 --trace-time --netrc-optional --netrc-file log/5/netrc381 ftp://mary:drfrank@127.0.0.1:33729/ > log/5/stdout381 2> log/5/stderr381 valgrind ERROR ==243510== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 381 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind381 ../src/curl -q --output log/5/curl381.out --include --trace-ascii log/5/trace381 --trace-time --netrc-optional --netrc-file log/5/netrc381 ftp://mary:drfrank@127.0.0.1:33729/ > log/5/stdout381 2> log/5/stderr381 === End of file commands.log === Start of file curl381.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl381.out === Start of file ftp_server.log 01:14:19.423504 ====> Client connect 01:14:19.424595 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:14:19.430099 < "USER anonymous" 01:14:19.431817 > "331 We are happy you popped in![CR][LF]" 01:14:19.432458 < "PASS ftp@example.com" 01:14:19.433324 > "230 Welcome you silly person[CR][LF]" 01:14:19.433817 < "PWD" 01:14:19.434261 > "257 "/" is current directory[CR][LF]" 01:14:19.437221 < "EPSV" 01:14:19.437426 ====> Passive DATA channel requested by client 01:14:19.437582 DATA sockfilt for passive data channel starting... 01:14:19.479354 DATA sockfilt for passive data channel started (pid 243429) 01:14:19.480589 DATA sockfilt for passive data channel listens on port 38083 01:14:19.481306 > "229 Entering Passive Mode (|||38083|)[CR][LF]" 01:14:19.481485 Client has been notified that DATA conn will be accepted on port 38083 01:14:19.485772 Client connects to port 38083 01:14:19.485998 ====> Client established passive DATA connection on port 38083 01:14:19.486933 < "TYPE I" 01:14:19.487544 > "200 I modify TYPE as you wanted[CR][LF]" 01:14:19.488341 < "SIZE verifiedserver" 01:14:19.488816 > "213 18[CR][LF]" 01:14:19.489921 < "RETR verifiedserver" 01:14:19.490476 > "150 Binary junk (18 bytes).[CR][LF]" 01:14:19.491041 =====> Closing passive DATA connection... 01:14:19.491223 Server disconnects passive DATA connection 01:14:19.492492 Server disconnected passive DATA connection 01:14:19.492666 DATA sockfilt for passive data channel quits (pid 243429) 01:14:19.496072 DATA sockfilt for passive data channel quit (pid 243429) 01:14:19.496261 =====> Closed passive DATA connection 01:14:19.496831 > "226 File transfer complete[CR][LF]" 01:14:19.551766 < "QUIT" 01:14:19.552192 > "221 bye bye baby[CR][LF]" 01:14:19.553194 MAIN sockfilt said DISC 01:14:19.553511 ====> Client disconnected 01:14:19.553793 Awaiting input 01:15:07.283496 ====> Client connect 01:15:07.287815 FTPD: Getting commands from log/5/server.cmd 01:15:07.288252 FTPD: run test case number: 381 01:15:07.289491 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:15:08.665677 < "USER mary" 01:15:08.671095 > "331 We are happy you popped in![CR][LF]" 01:15:08.795288 < "PASS drfrank" 01:15:08.796167 > "230 Welcome you silly person[CR][LF]" 01:15:08.897183 < "PWD" 01:15:08.900913 > "257 "/" is current directory[CR][LF]" 01:15:09.109562 < "EPSV" 01:15:09.109977 ====> Passive DATA channel requested by client 01:15:09.110168 DATA sockfilt for passive data channel starting... 01:15:09.184299 DATA sockfilt for passive data channel started (pid 244695) 01:15:09.188346 DATA sockfilt for passive data channel listens on port 45973 01:15:09.188818 > "229 Entering Passive Mode (|||45973|)[CR][LF]" 01:15:09.188996 Client has been notified that DATA conn will be accepted on port 45973 01:15:09.405796 Client connects to port 45973 01:15:09.406392 ====> Client established passive DATA connection on port 45973 01:15:09.535832 < "TYPE A" 01:15:09.536266 > "200 I modify TYPE as you wanted[CR][LF]" 01:15:09.591638 < "LIST" 01:15:09.592414 > "150 here comes a directory[CR][LF]" 01:15:09.592621 pass LIST data on data connection 01:15:09.593744 send total 20 as data 01:15:09.594007 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 01:15:09.597665 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 01:15:09.597955 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 01:15:09.598195 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 01:15:09.598432 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 01:15:09.598663 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 01:15:09.598892 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 01:15:09.599124 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 01:15:09.599382 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 01:15:09.599609 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 01:15:09.600140 =====> Closing passive DATA connection... 01:15:09.600308 Server disconnects passive DATA connection 01:15:09.606275 Server disconnected passive DATA connection 01:15:09.606655 DATA sockfilt for passive data channel quits (pid 244695) 01:15:09.610021 DATA sockfilt for passive data channel quit (pid 244695) 01:15:09.610261 =====> Closed passive DATA connection 01:15:09.610562 > "226 ASCII transfer complete[CR][LF]" 01:15:11.821663 < "QUIT" 01:15:11.822087 > "221 bye bye baby[CR][LF]" 01:15:11.960918 MAIN sockfilt said DISC 01:15:11.961443 ====> Client disconnected 01:15:11.961763 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:14:20.037434 ====> Client connect 01:14:20.039170 Received DATA (on stdin) 01:14:20.039253 > 160 bytes data, server => client 01:14:20.039357 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:14:20.039452 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:14:20.039536 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:14:20.043341 < 16 bytes data, client => server 01:14:20.043458 'USER anonymous\r\n' 01:14:20.044832 Received DATA (on stdin) 01:14:20.044906 > 33 bytes data, server => client 01:14:20.045532 '331 We are happy you popped in!\r\n' 01:14:20.045850 < 22 bytes data, client => server 01:14:20.045927 'PASS ftp@example.com\r\n' 01:14:20.047000 Received DATA (on stdin) 01:14:20.047068 > 30 bytes data, server => client 01:14:20.047170 '230 Welcome you silly person\r\n' 01:14:20.047466 < 5 bytes data, client => server 01:14:20.047532 'PWD\r\n' 01:14:20.048370 Received DATA (on stdin) 01:14:20.048437 > 30 bytes data, server => client 01:14:20.049086 '257 "/" is current directory\r\n' 01:14:20.051036 < 6 bytes data, client => server 01:14:20.051105 'EPSV\r\n' 01:14:20.095186 Received DATA (on stdin) 01:14:20.095322 > 39 bytes data, server => client 01:14:20.095429 '229 Entering Passive Mode (|||38083|)\r\n' 01:14:20.100670 < 8 bytes data, client => server 01:14:20.100753 'TYPE I\r\n' 01:14:20.101485 Received DATA (on stdin) 01:14:20.101551 > 33 bytes data, server => client 01:14:20.101670 '200 I modify TYPE as you wanted\r\n' 01:14:20.102065 < 21 bytes data, client => server 01:14:20.102143 'SIZE verifiedserver\r\n' 01:14:20.102953 Received DATA (on stdin) 01:14:20.103022 > 8 bytes data, server => client 01:14:20.103328 '213 18\r\n' 01:14:20.103768 < 21 bytes data, client => server 01:14:20.103843 'RETR verifiedserver\r\n' 01:14:20.104502 Received DATA (on stdin) 01:14:20.104567 > 29 bytes data, server => client 01:14:20.104666 '150 Binary junk (18 bytes).\r\n' 01:14:20.110804 Received DATA (on stdin) 01:14:20.110906 > 28 bytes data, server => client 01:14:20.111010 '226 File transfer complete\r\n' 01:14:20.163009 < 6 bytes data, client => server 01:14:20.163168 'QUIT\r\n' 01:14:20.166726 Received DATA (on stdin) 01:14:20.166805 > 18 bytes data, server => client 01:14:20.166880 '221 bye bye baby\r\n' 01:14:20.167415 ====> Client disconnect 01:14:20.167700 Received ACKD (on stdin) 01:15:07.890910 ====> Client connect 01:15:07.903966 Received DATA (on stdin) 01:15:07.904100 > 160 bytes data, server => client 01:15:07.904233 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:15:07.904347 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:15:07.904451 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:15:09.278456 < 11 bytes data, client => server 01:15:09.278657 'USER mary\r\n' 01:15:09.280313 Received DATA (on stdin) 01:15:09.280396 > 33 bytes data, server => client 01:15:09.288417 '331 We are happy you popped in!\r\n' 01:15:09.408227 < 14 bytes data, client => server 01:15:09.408457 'PASS drfrank\r\n' 01:15:09.409950 Received DATA (on stdin) 01:15:09.410039 > 30 bytes data, server => client 01:15:09.410163 '230 Welcome you silly person\r\n' 01:15:09.510121 < 5 bytes data, client => server 01:15:09.510322 'PWD\r\n' 01:15:09.511827 Received DATA (on stdin) 01:15:09.511905 > 30 bytes data, server => client 01:15:09.515430 '257 "/" is current directory\r\n' 01:15:09.722548 < 6 bytes data, client => server 01:15:09.722746 'EPSV\r\n' 01:15:09.803460 Received DATA (on stdin) 01:15:09.803602 > 39 bytes data, server => client 01:15:09.803699 '229 Entering Passive Mode (|||45973|)\r\n' 01:15:10.148863 < 8 bytes data, client => server 01:15:10.149040 'TYPE A\r\n' 01:15:10.155055 Received DATA (on stdin) 01:15:10.155196 > 33 bytes data, server => client 01:15:10.155304 '200 I modify TYPE as you wanted\r\n' 01:15:10.204515 < 6 bytes data, client => server 01:15:10.204730 'LIST\r\n' 01:15:10.206241 Received DATA (on stdin) 01:15:10.206329 > 28 bytes data, server => client 01:15:10.206443 '150 here comes a directory\r\n' 01:15:10.224731 Received DATA (on stdin) 01:15:10.224871 > 29 bytes data, server => client 01:15:10.224977 '226 ASCII transfer complete\r\n' 01:15:12.434952 < 6 bytes data, client => server 01:15:12.435157 'QUIT\r\n' 01:15:12.436242 Received DATA (on stdin) 01:15:12.436314 > 18 bytes data, server => client 01:15:12.436384 '221 bye bye baby\r\n' 01:15:12.572470 ====> Client disconnect 01:15:12.575662 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:14:19.084344 Running IPv4 version 01:14:19.091927 Listening on port 38083 01:14:19.092377 Wrote pid 243429 to log/5/server/ftp_sockdata.pid 01:14:19.093116 Received PING (on stdin) 01:14:19.094225 Received PORT (on stdin) 01:14:19.099917 ====> Client connect 01:14:19.105731 Received DATA (on stdin) 01:14:19.106079 > 18 bytes data, server => client 01:14:19.106455 'WE ROOLZ: 202313\r\n' 01:14:19.106695 Received DISC (on stdin) 01:14:19.107214 ====> Client forcibly disconnected 01:14:19.107381 Received QUIT (on stdin) 01:14:19.107456 quits 01:14:19.107969 ============> sockfilt quits 01:15:09.785438 Running IPv4 version 01:15:09.793585 Listening on port 45973 01:15:09.794107 Wrote pid 244695 to log/5/server/ftp_sockdata.pid 01:15:09.794900 Received PING (on stdin) 01:15:09.801723 Received PORT (on stdin) 01:15:10.019680 ====> Client connect 01:15:10.208215 Received DATA (on stdin) 01:15:10.208645 > 10 bytes data, server => client 01:15:10.209011 'total 20\r\n' 01:15:10.211836 Received DATA (on stdin) 01:15:10.211942 > 57 bytes data, server => client 01:15:10.212107 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 01:15:10.212242 Received DATA (on stdin) 01:15:10.212316 > 58 bytes data, server => client 01:15:10.212436 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 01:15:10.212531 Received DATA (on stdin) 01:15:10.212608 > 61 bytes data, server => client 01:15:10.212751 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 01:15:10.212839 '\n' 01:15:10.212941 Received DATA (on stdin) 01:15:10.213017 > 62 bytes data, seCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind384 ../src/curl -q --output log/4/curl384.out --include --trace-ascii log/4/trace384 --trace-time --json @- http://127.0.0.1:42621/384 -H "Accept: foobar/*" log/4/stdout384 2> log/4/stderr384 rver => client 01:15:10.213140 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 01:15:10.213212 '\n' 01:15:10.213308 Received DATA (on stdin) 01:15:10.213385 > 70 bytes data, server => client 01:15:10.213503 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 01:15:10.213584 'usr/bin\r\n' 01:15:10.213683 Received DATA (on stdin) 01:15:10.213755 > 59 bytes data, server => client 01:15:10.213877 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 01:15:10.213975 Received DATA (on stdin) 01:15:10.214050 > 69 bytes data, server => client 01:15:10.214166 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 01:15:10.214240 'd.html\r\n' 01:15:10.214348 Received DATA (on stdin) 01:15:10.214423 > 59 bytes data, server => client 01:15:10.214542 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 01:15:10.214640 Received DATA (on stdin) 01:15:10.214715 > 59 bytes data, server => client 01:15:10.214820 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 01:15:10.214905 Received DATA (on stdin) 01:15:10.214972 > 59 bytes data, server => client 01:15:10.218484 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 01:15:10.218603 Received DISC (on stdin) 01:15:10.218730 ====> Client forcibly disconnected 01:15:10.221064 Received QUIT (on stdin) 01:15:10.221160 quits 01:15:10.221710 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file netrc381 # the following two lines were created while testing curl machine 127.0.0.1 login frankenstein password wrongone machine 127.0.0.1 login mary password yram === End of file netrc381 === Start of file server.cmd Testnum 381 === End of file server.cmd === Start of file server.input USER mary PASS drfrank PWD EPSV TYPE A LIST QUIT === End of file server.input === Start of file stderr381 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 623 0 623 0 0 113 0 --:--:-- 0:00:05 --:--:-- 150 100 623 0 623 0 0 106 0 --:--:-- 0:00:05 --:--:-- 138 === End of file stderr381 === Start of file trace381 01:15:06.927907 * Trying 127.0.0.1:33729... 01:15:07.861377 * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 55564 01:15:08.119280 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:15:08.518210 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:15:08.552872 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:15:08.559126 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:15:08.564189 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:15:08.683876 => Send header, 11 bytes (0xb) 0000: USER mary 01:15:08.766557 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:15:08.795303 => Send header, 14 bytes (0xe) 0000: PASS drfrank 01:15:08.870104 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:15:08.896002 => Send header, 5 bytes (0x5) 0000: PWD 01:15:08.912623 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:15:08.943514 * Entry path is '/' 01:15:09.041519 * Request has same path as previous transfer 01:15:09.108409 => Send header, 6 bytes (0x6) 0000: EPSV 01:15:09.125458 * Connect data stream passively 01:15:09.206713 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||45973|) 01:15:09.336217 * Connecting to 127.0.0.1 (127.0.0.1) port 45973 01:15:09.399375 * Trying 127.0.0.1:45973... 01:15:09.503038 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 45973) from 127.0.0.1 port 60488 01:15:09.534743 => Send header, 8 bytes (0x8) 0000: TYPE A 01:15:09.554947 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:15:09.590373 => Send header, 6 bytes (0x6) 0000: LIST 01:15:09.623064 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 01:15:09.661356 * Maxdownload = -1 01:15:09.828799 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 01:15:10.277226 * abort upload 01:15:10.305628 <= Recv data, 0 bytes (0x0) 01:15:10.504003 * Remembering we are in dir "" 01:15:10.712101 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 01:15:11.038243 * Connection #0 to host 127.0.0.1:33729 left intact === End of file trace381 === Start of file valgrind381 ==243510== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind381 test 0384...[HTTP with --json from stdin] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind384 ../src/curl -q --output log/4/curl384.out --include --trace-ascii log/4/trace384 --trace-time --json @- http://127.0.0.1:42621/384 -H "Accept: foobar/*" log/4/stdout384 2> log/4/stderr384 valgrind ERROR ==243627== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 384 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind384 ../src/curl -q --output log/4/curl384.out --include --trace-ascii log/4/trace384 --trace-time --json @- http://127.0.0.1:42621/384 -H "Accept: foobar/*" log/4/stdout384 2> log/4/stderr384 === End of file commands.log === Start of file curl384.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl384.out === Start of file http_server.log 01:14:20.934943 ====> Client connect 01:14:20.935112 accept_connection 3 returned 4 01:14:20.935206 accept_connection 3 returned 0 01:14:20.943286 Read 93 bytes 01:14:20.943438 Process 93 bytes request 01:14:20.943544 Got request: GET /verifiedserver HTTP/1.1 01:14:20.943618 Are-we-friendly question received 01:14:20.943765 Wrote request (93 bytes) input to log/4/server.input 01:14:20.943884 Identifying ourselves as friends 01:14:20.944070 Response sent (57 bytes) and written to log/4/server.response 01:14:20.944142 special request received, no persistency 01:14:20.944205 ====> Client disconnect 0 01:15:08.989088 ====> Client connect 01:15:08.989249 accept_connection 3 returned 4 01:15:08.989333 accept_connection 3 returned 0 01:15:10.316322 Read 162 bytes 01:15:10.316536 Process 162 bytes request 01:15:10.316636 Got request: POST /384 HTTP/1.1 01:15:10.316709 Serve test number 384 part 0 01:15:10.316893 - request found to be complete (384) 01:15:10.317051 Found Content-Length: 22 in the request 01:15:10.317223 Wrote request (162 bytes) input to log/4/server.input 01:15:10.317333 Send response test384 section 01:15:10.317688 Response CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind383 ../src/curl -q --output log/1/curl383.out --include --trace-ascii log/1/trace383 --trace-time --json '{ "drink": "coffee" }' http://127.0.0.1:40641/383 > log/1/stdout383 2> log/1/stderr383 sent (256 bytes) and written to log/4/server.response 01:15:10.317757 => persistent connection request ended, awaits new request 01:15:12.359153 Connection closed by client 01:15:12.359360 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 35262 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 384 === End of file server.cmd === Start of file server.input POST /384 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: foobar/* Content-Type: application/json Content-Length: 22 { "drink": "coffee" } === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr384 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 22 0 0 100 22 0 5 0:00:04 0:00:03 0:00:01 8 100 28 100 6 100 22 1 4 0:00:06 0:00:05 0:00:01 7 100 28 100 6 100 22 1 4 0:00:06 0:00:05 0:00:01 7 === End of file stderr384 === Start of file stdin-for-384 { "drink": "coffee" } === End of file stdin-for-384 === Start of file trace384 01:15:08.028628 * Trying 127.0.0.1:42621... 01:15:09.005028 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 53876 01:15:09.141120 * using HTTP/1.x 01:15:09.744153 => Send header, 140 bytes (0x8c) 0000: POST /384 HTTP/1.1 0014: Host: 127.0.0.1:42621 002b: User-Agent: curl/8.17.0 0044: Accept: foobar/* 0056: Content-Type: application/json 0076: Content-Length: 22 008a: 01:15:09.846595 => Send data, 22 bytes (0x16) 0000: { "drink": "coffee" }. 01:15:09.925111 * upload completely sent off: 22 bytes 01:15:10.214719 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:15:10.542256 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:15:10.646465 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:15:10.672668 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:15:10.681251 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:15:10.689089 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:15:10.722343 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:15:10.773062 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:15:10.809957 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:15:10.815184 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:15:10.899307 <= Recv header, 1 bytes (0x1) 0000: . 01:15:10.958152 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:15:11.536910 * shutting down connection #0 === End of file trace384 === Start of file valgrind384 ==243627== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind384 test 0383...[HTTP with --json] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind383 ../src/curl -q --output log/1/curl383.out --include --trace-ascii log/1/trace383 --trace-time --json '{ "drink": "coffee" }' http://127.0.0.1:40641/383 > log/1/stdout383 2> log/1/stderr383 valgrind ERROR ==243618== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 383 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind383 ../src/curl -q --output log/1/curl383.out --include --trace-ascii log/1/trace383 --trace-time --json '{ "drink": "coffee" }' http://127.0.0.1:40641/383 > log/1/stdout383 2> log/1/stderr383 === End of file commands.log === Start of file curl383.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl383.out === Start of file http_server.log 01:14:20.898628 ====> Client connect 01:14:20.898807 accept_connection 3 returned 4 01:14:20.898891 accept_connection 3 returned 0 01:14:20.904371 Read 93 bytes 01:14:20.904592 Process 93 bytes request 01:14:20.904699 Got request: GET /verifiedserver HTTP/1.1 01:14:20.904776 Are-we-friendly question received 01:14:20.904933 Wrote request (93 bytes) input to log/1/server.input 01:14:20.905045 Identifying ourselves as friends 01:14:20.905240 Response sent (57 bytes) and written to log/1/server.response 01:14:20.905314 special request received, no persistency 01:14:20.905378 ====> Client disconnect 0 01:15:09.146938 ====> Client connect 01:15:09.147098 accept_connection 3 returned 4 01:15:09.147181 accept_connection 3 returned 0 01:15:10.474895 Read 169 bytes 01:15:10.475098 Process 169 bytes request 01:15:10.475197 Got request: POST /383 HTTP/1.1 01:15:10.475272 Serve test number 383 part 0 01:15:10.475448 - request found to be complete (383) 01:15:10.475604 Found Content-Length: 21 in the request 01:15:10.475776 Wrote request (169 bytes) input to log/1/server.input 01:15:10.475888 Send response test383 section 01:15:10.476247 Response sent (256 bytes) and written to log/1/server.response 01:15:10.476316 => persistent connection request ended, awaits new request 01:15:12.516341 Connection closed by client 01:15:12.516557 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 36092 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 383 === End of file server.cmd === Start of file server.input POST /383 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Content-Type: application/json Accept: application/json Content-Length: 21 { "drink": "coffee" } === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr383 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 21 0 0 100 21 0 5 0:00:04 0:00:04 --:--:CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind385 ../src/curl -q --output log/8/curl385.out --include --trace-ascii log/8/trace385 --trace-time --json '{ "drink": "coffee",' --json ' "crunch": "cookie" }' http://127.0.0.1:39461/385 -H "Content-Type: drinks/hot" > log/8/stdout385 2> log/8/stderr385 -- 7 100 27 100 6 100 21 1 4 0:00:06 0:00:05 0:00:01 7 100 27 100 6 100 21 1 3 0:00:07 0:00:05 0:00:02 6 === End of file stderr383 === Start of file trace383 01:15:08.153786 * Trying 127.0.0.1:40641... 01:15:09.158703 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 58926 01:15:09.292228 * using HTTP/1.x 01:15:09.901527 => Send header, 148 bytes (0x94) 0000: POST /383 HTTP/1.1 0014: Host: 127.0.0.1:40641 002b: User-Agent: curl/8.17.0 0044: Content-Type: application/json 0064: Accept: application/json 007e: Content-Length: 21 0092: 01:15:10.006573 => Send data, 21 bytes (0x15) 0000: { "drink": "coffee" } 01:15:10.089221 * upload completely sent off: 21 bytes 01:15:10.383003 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:15:10.702630 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:15:10.809505 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:15:10.835405 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:15:10.844297 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:15:10.851982 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:15:10.884262 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:15:10.933258 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:15:10.969241 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:15:10.974418 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:15:11.060343 <= Recv header, 1 bytes (0x1) 0000: . 01:15:11.122111 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:15:11.699116 * shutting down connection #0 === End of file trace383 === Start of file valgrind383 ==243618== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind383 test 0385...[HTTP with --json x 2] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind385 ../src/curl -q --output log/8/curl385.out --include --trace-ascii log/8/trace385 --trace-time --json '{ "drink": "coffee",' --json ' "crunch": "cookie" }' http://127.0.0.1:39461/385 -H "Content-Type: drinks/hot" > log/8/stdout385 2> log/8/stderr385 valgrind ERROR ==243718== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 385 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind385 ../src/curl -q --output log/8/curl385.out --include --trace-ascii log/8/trace385 --trace-time --json '{ "drink": "coffee",' --json ' "crunch": "cookie" }' http://127.0.0.1:39461/385 -H "Content-Type: drinks/hot" > log/8/stdout385 2> log/8/stderr385 === End of file commands.log === Start of file curl385.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl385.out === Start of file http_server.log 01:14:20.358975 ====> Client connect 01:14:20.359153 accept_connection 3 returned 4 01:14:20.359241 accept_connection 3 returned 0 01:14:20.368492 Read 93 bytes 01:14:20.368662 Process 93 bytes request 01:14:20.368769 Got request: GET /verifiedserver HTTP/1.1 01:14:20.368839 Are-we-friendly question received 01:14:20.368967 Wrote request (93 bytes) input to log/8/server.input 01:14:20.369065 Identifying ourselves as friends 01:14:20.369283 Response sent (57 bytes) and written to log/8/server.response 01:14:20.369347 special request received, no persistency 01:14:20.369403 ====> Client disconnect 0 01:15:08.500026 ====> Client connect 01:15:08.500171 accept_connection 3 returned 4 01:15:08.500248 accept_connection 3 returned 0 01:15:09.847829 Read 183 bytes 01:15:09.848013 Process 183 bytes request 01:15:09.848106 Got request: POST /385 HTTP/1.1 01:15:09.848178 Serve test number 385 part 0 01:15:09.848365 - request found to be complete (385) 01:15:09.848523 Found Content-Length: 41 in the request 01:15:09.848689 Wrote request (183 bytes) input to log/8/server.input 01:15:09.848799 Send response test385 section 01:15:09.849158 Response sent (256 bytes) and written to log/8/server.response 01:15:09.849227 => persistent connection request ended, awaits new request 01:15:11.906330 Connection closed by client 01:15:11.906509 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 54262 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 385 === End of file server.cmd === Start of file server.input POST /385 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Content-Type: drinks/hot Accept: application/json Content-Length: 41 { "drink": "coffee", "crunch": "cookie" } === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr385 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 41 0 0 100 41 0 10 0:00:04 0:00:04 --:--:-- 15 100 47 100 6 100 41 1 7 0:00:06 0:00:05 0:00:01 12 100 47 100 6 100 41 1 7 0:00:06 0:00:05 0:00:01 12 === End of file stderr385 === Start of file trace385 01:15:08.530654 * Trying 127.0.0.1:39461... 01:15:09.489781 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 56228 01:15:09.634540 * using HTTP/1.x 01:15:10.279154 => Send header, 142 bytes (0x8e) 0000: POST /385 HTTP/1.1 0014: Host: 127.0.0.1:39461 002b: User-Agent: curl/8.17.0 0044: Content-Type: drinks/hot 005e: Accept: application/json 0078: Content-Length: 41 008c: 01:15:10.400202 => Send data, 41 bytes (0x29) 0000: { "drink": "coffee", "crunch": "cookie" } 01:15:10.484011 * upload completely sent off: 41 bytes 01:15:10.780292 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:15:11.102098 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:15:11.208099 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:15:11.234613 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:15:11.243085 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:15:11.251082 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:15:11.283822 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:15:11.335095 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:15:11.371727 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:15:11.376944 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:15:11.460571 <= Recv header, 1 bytes (0x1) 0000: . 01:15:11.521123CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind386 ../src/curl -q --output log/3/curl386.out --include --trace-ascii log/3/trace386 --trace-time --json '{ "drink": "coffee" }' http://127.0.0.1:46853/386 --next http://127.0.0.1:46853/3860002 > log/3/stdout386 2> log/3/stderr386 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:15:12.085424 * shutting down connection #0 === End of file trace385 === Start of file valgrind385 ==243718== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind385 test 0386...[HTTP with --json + --next] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind386 ../src/curl -q --output log/3/curl386.out --include --trace-ascii log/3/trace386 --trace-time --json '{ "drink": "coffee" }' http://127.0.0.1:46853/386 --next http://127.0.0.1:46853/3860002 > log/3/stdout386 2> log/3/stderr386 valgrind ERROR ==243745== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 386 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind386 ../src/curl -q --output log/3/curl386.out --include --trace-ascii log/3/trace386 --trace-time --json '{ "drink": "coffee" }' http://127.0.0.1:46853/386 --next http://127.0.0.1:46853/3860002 > log/3/stdout386 2> log/3/stderr386 === End of file commands.log === Start of file curl386.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl386.out === Start of file http_server.log 01:14:20.460874 ====> Client connect 01:14:20.461043 accept_connection 3 returned 4 01:14:20.461129 accept_connection 3 returned 0 01:14:20.468009 Read 93 bytes 01:14:20.468150 Process 93 bytes request 01:14:20.468253 Got request: GET /verifiedserver HTTP/1.1 01:14:20.468329 Are-we-friendly question received 01:14:20.468501 Wrote request (93 bytes) input to log/3/server.input 01:14:20.468623 Identifying ourselves as friends 01:14:20.468828 Response sent (57 bytes) and written to log/3/server.response 01:14:20.468897 special request received, no persistency 01:14:20.468963 ====> Client disconnect 0 01:15:08.801867 ====> Client connect 01:15:08.802005 accept_connection 3 returned 4 01:15:08.802088 accept_connection 3 returned 0 01:15:10.148750 Read 169 bytes 01:15:10.148969 Process 169 bytes request 01:15:10.149069 Got request: POST /386 HTTP/1.1 01:15:10.149145 Serve test number 386 part 0 01:15:10.149347 - request found to be complete (386) 01:15:10.149511 Found Content-Length: 21 in the request 01:15:10.149684 Wrote request (169 bytes) input to log/3/server.input 01:15:10.149796 Send response test386 section 01:15:10.150255 Response sent (256 bytes) and written to log/3/server.response 01:15:10.150325 => persistent connection request ended, awaits new request 01:15:12.221205 Connection closed by client 01:15:12.221406 ====> Client disconnect 0 01:15:13.199147 ====> Client connect 01:15:13.199285 accept_connection 3 returned 4 01:15:13.199366 accept_connection 3 returned 0 01:15:13.282647 Read 86 bytes 01:15:13.282866 Process 86 bytes request 01:15:13.282974 Got request: GET /3860002 HTTP/1.1 01:15:13.283050 Serve test number 386 part 2 01:15:13.283239 - request found to be complete (386) 01:15:13.283444 Wrote request (86 bytes) input to log/3/server.input 01:15:13.283541 Send response test386 section 01:15:13.284302 Response sent (256 bytes) and written to log/3/server.response 01:15:13.284371 => persistent connection request ended, awaits new request 01:15:13.494858 Connection closed by client 01:15:13.495078 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 57510 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 386 === End of file server.cmd === Start of file server.input POST /386 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Content-Type: application/json Accept: application/json Content-Length: 21 { "drink": "coffee" }GET /3860002 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes hello === End of file server.response === Start of file stderr386 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 21 0 0 100 21 0 5 0:00:04 0:00:04 --:--:-- 7 100 27 100 6 100 21 1 3 0:00:07 0:00:05 0:00:02 7 100 27 100 6 100 21 1 3 0:00:07 0:00:05 0:00:02 6 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 6 100 6 0 0 13 0 --:--:-- --:--:-- --:--:-- 20 === End of file stderr386 === Start of file stdout386 hello === End of file stdout386 === Start of file trace386 01:15:08.804726 * Trying 127.0.0.1:46853... 01:15:09.810341 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 44702 01:15:09.945700 * using HTTP/1.x 01:15:10.575710 => Send header, 148 bytes (0x94) 0000: POST /386 HTTP/1.1 0014: Host: 127.0.0.1:46853 002b: User-Agent: curl/8.17.0 0044: Content-Type: application/json 0064: Accept: application/json 007e: Content-Length: 21 0092: 01:15:10.684683 => Send data, 21 bytes (0x15) 0000: { "drink": "coffee" } 01:15:10.764954 * upload completely sent off: 21 bytes 01:15:11.058715 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:15:11.378244 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:15:11.507983 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:15:11.533459 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:15:11.542430 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:15:11.550085 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:15:11.581955 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:15:11.630808 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:15:11.667303 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:15:11.672704 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:15:11.755819 <= Recv header, 1 bytes (0x1) 0000: . 01:15:11.815179 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:15:12.381932 * shutting down connection #0 01:15:13.528621 * Hostname 127.0.0.1 was found in DNS cache 01:15:13.579588 * Trying 127.0.0.1:46853... 01:15:13.610687 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 54630 01:15:CMD (15616): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind387 ../src/curl -q --output log/7/curl387.out --include --trace-ascii log/7/trace387 --trace-time http://127.0.0.1:34897/387 -sS --tr-encoding > log/7/stdout387 2> log/7/stderr387 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind388 ../src/curl -q --include --trace-ascii log/2/trace388 --trace-time http://127.0.0.1:39863/3880001 -u testuser:testpass --digest http://127.0.0.1:39863/3880002 > log/2/stdout388 2> log/2/stderr388 13.616420 * using HTTP/1.x 01:15:13.674379 => Send header, 86 bytes (0x56) 0000: GET /3860002 HTTP/1.1 0017: Host: 127.0.0.1:46853 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 01:15:13.708917 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:15:13.720579 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:15:13.729358 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:15:13.734302 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:15:13.740593 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:15:13.745378 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:15:13.751257 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:15:13.757549 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:15:13.763318 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:15:13.767699 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:15:13.775289 <= Recv header, 1 bytes (0x1) 0000: . 01:15:13.780435 <= Recv data, 6 bytes (0x6) 0000: hello. 01:15:13.802049 * we are done reading and this is set to close, stop send 01:15:13.822187 * abort upload 01:15:13.868697 * shutting down connection #1 === End of file trace386 === Start of file valgrind386 ==243745== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind386 test 0387...[Response with overly long compression chain] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind387 ../src/curl -q --output log/7/curl387.out --include --trace-ascii log/7/trace387 --trace-time http://127.0.0.1:34897/387 -sS --tr-encoding > log/7/stdout387 2> log/7/stderr387 valgrind ERROR ==244224== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 387 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind387 ../src/curl -q --output log/7/curl387.out --include --trace-ascii log/7/trace387 --trace-time http://127.0.0.1:34897/387 -sS --tr-encoding > log/7/stdout387 2> log/7/stderr387 === End of file commands.log === Start of file curl387.out HTTP/1.1 200 OK Content-Length: 6 === End of file curl387.out === Start of file http_server.log 01:14:27.038628 ====> Client connect 01:14:27.038798 accept_connection 3 returned 4 01:14:27.038877 accept_connection 3 returned 0 01:14:27.041110 Read 93 bytes 01:14:27.041184 Process 93 bytes request 01:14:27.041274 Got request: GET /verifiedserver HTTP/1.1 01:14:27.041339 Are-we-friendly question received 01:14:27.041447 Wrote request (93 bytes) input to log/7/server.input 01:14:27.041534 Identifying ourselves as friends 01:14:27.041709 Response sent (57 bytes) and written to log/7/server.response 01:14:27.041780 special request received, no persistency 01:14:27.041842 ====> Client disconnect 0 01:15:14.115280 ====> Client connect 01:15:14.115430 accept_connection 3 returned 4 01:15:14.115511 accept_connection 3 returned 0 01:15:15.229912 Read 108 bytes 01:15:15.230113 Process 108 bytes request 01:15:15.230221 Got request: GET /387 HTTP/1.1 01:15:15.230302 Serve test number 387 part 0 01:15:15.230537 - request found to be complete (387) 01:15:15.230839 Wrote request (108 bytes) input to log/7/server.input 01:15:15.230957 Send response test387 section 01:15:15.231656 Response sent (564 bytes) and written to log/7/server.response 01:15:15.231746 => persistent connection request ended, awaits new request 01:15:17.326438 Connection closed by client 01:15:17.326642 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 48064 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 387 === End of file server.cmd === Start of file server.input GET /387 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* TE: gzip Connection: TE === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Content-Length: 6 Transfer-Encoding: gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip -foo- === End of file server.response === Start of file stderr387 curl: (61) Reject response due to more than 5 content encodings === End of file stderr387 === Start of file trace387 01:15:14.095827 * Trying 127.0.0.1:34897... 01:15:15.096825 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 35500 01:15:15.237406 * using HTTP/1.x 01:15:15.656386 => Send header, 108 bytes (0x6c) 0000: GET /387 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: TE: gzip 005a: Connection: TE 006a: 01:15:16.121248 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:15:16.489525 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:15:17.173383 * Reject response due to more than 5 content encodings 01:15:17.596733 * closing connection #0 === End of file trace387 === Start of file valgrind387 ==244224== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind387 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 392 in state 4 Runner 2 (id 185908) running test 388 in state 4 Runner 3 (id 185910) running test 394 in state 4 Runner 4 (id 185912) running test 391 in state 4 Runner 5 (id 185914) running test 390 in state 4 Runner 6 (id 185916) running test 389 in state 4 Runner 7 (id 185918) running test 395 in state 4 Runner 8 (id 185920) running test 393 in state 4 test 0388...[HTTP with Digest and multiple qop values with leading space] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind388 ../src/curl -q --include --trace-ascii log/2/trace388 --trace-time http://127.0.0.1:39863/3880001 -u testuser:testpass --digest http://127.0.0.1:39863/3880002 > log/2/stdout388 2> log/2/stderr388 valgrind ERROR ==244360== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 388 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind388 ../src/curl -q --include --trace-ascii log/2/trace388 --trace-time http://127.0.0.1:39863/3880001 -u testuser:testpass --digest http://127.0.0.1:39863/3880002 > log/2/stdout388 2> log/2/stderr388 === End of file commands.log === Start of file http_server.log 01:14:29.072577 ====> Client connect 01:14:29.072732 accept_connection 3 returned 4 01:14:29.072805 accept_connection 3 returned 0 01:14:29.078996 Read 93 bytes 01:14:29.079096 Process 93 bytes request 01:14:29.079183 Got request: GET /verifiedserver HTTP/1.1 01:14:29.079247 Are-we-friendly question received 01:14:29.079362 Wrote request (93 bytes) input to log/2/server.input 01:14:29.079452 Identifying ourselves as friends 01:14:29.079631 Response sent (57 bytes) and written to log/2/server.response 01:14:29.079695 special request received, no persistency 01:14:29.079750 ====> Client disconnect 0 01:15:17.045890 ====> Client connect 01:15:17.046064 accept_connection 3 returned 4 01:15:17.046143 accept_connection 3 returned 0 01:15:18.290891 Read 86 bytes 01:15:18.291141 Process 86 bytes request 01:15:18.291252 Got request: GET /3880001 HTTP/1.1 01:15:18.291333 Serve test number 388 part 1 01:15:18.291638 - request found to be complete (388) 01:15:18.292035 Wrote request (86 bytes) input to log/2/server.input 01:15:18.292154 Send response test388 section 01:15:18.292482 connection close instruction "swsclose" found in response 01:15:18.292769 Response sent (245 bytes) and written to log/2/server.response 01:15:18.292843 instructed to close connection after server-reply 01:15:18.292911 ====> Client disconnect 0 01:15:21.019995 ====> Client connect 01:15:21.020125 accept_connection 3 returned 4 01:15:21.020206 accept_connection 3 returned 0 01:15:27.536988 Read 229 bytes 01:15:27.537195 Process 229 bytes request 01:15:27.537290 Got request: GET /3880001 HTTP/1.1 01:15:27.537359 Serve test number 388 part 1 01:15:27.537613 - request found to be complete (388) 01:15:27.537846 Received Digest request, sending back data 1001 01:15:27.537937 Wrote request (229 bytes) input to log/2/server.input 01:15:27.538027 Send response test388 section 01:15:27.538469 Response sent (149 bytes) and written to log/2/server.response 01:15:27.538540 => persistent connection request ended, awaits new request 01:15:28.551788 Read 86 bytes 01:15:28.551974 Process 86 bytes request 01:15:28.552068 Got request: GET /3880002 HTTP/1.1 01:15:28.552140 Serve test number 388 part 2 01:15:28.552404 - request found to be complete (388) 01:15:28.552674 Wrote request (86 bytes) input to log/2/server.input 01:15:28.552763 Send response test388 section 01:15:28.553049 connection close instruction "swsclose" found in response 01:15:28.553297 Response sent (245 bytes) and written to log/2/server.response 01:15:28.553364 instructed to close connection after server-reply 01:15:28.553426 ====> Client disconnect 0 01:15:28.896864 ====> Client connect 01:15:28.896998 accept_connection 3 returned 4 01:15:28.897077 accept_connection 3 returned 0 01:15:29.095372 Read 229 bytes 01:15:29.095579 Process 229 bytes request 01:15:29.095676 Got request: GET /3880002 HTTP/1.1 01:15:29.095745 Serve test number 388 part 2 01:15:29.096003 - request found to be complete (388) 01:15:29.096239 Received Digest request, sending back data 1002 01:15:29.096332 Wrote request (229 bytes) input to log/2/server.input 01:15:29.096422 Send response test388 section 01:15:29.096779 enable "swsbounce" in the next request 01:15:29.097047 Response sent (301 bytes) and written to log/2/server.response 01:15:29.097112 => persistent connection request ended, awaits new request 01:15:29.507611 Read 290 bytes 01:15:29.507819 Process 290 bytes request 01:15:29.507907 Got request: GET /3880002 HTTP/1.1 01:15:29.507972 Serve test number 388 part 2 01:15:29.508210 - request found to be complete (388) 01:15:29.508437 Received Digest request, sending back data 1002 01:15:29.508525 Wrote request (290 bytes) input to log/2/server.input 01:15:29.508598 BOUNCE part number to 1003 01:15:29.508662 Send response test388 section 01:15:29.509078 Response sent (156 bytes) and written to log/2/server.response 01:15:29.509140 => persistent connection request ended, awaits new request 01:15:29.738347 Connection closed by client 01:15:29.738523 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 48124 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 388 === End of file server.cmd === Start of file server.input GET /3880001 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* GET /3880001 HTTP/1.1 Host: 127.0.0.1:39863 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/3880001", response="ea598bbfdb5c54b7352c977e3885e44d" User-Agent: curl/8.17.0 Accept: */* GET /3880002 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* GET /3880002 HTTP/1.1 Host: 127.0.0.1:39863 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/3880002", response="921a8e6db782d6359db1f40d9ed7e6a6" User-Agent: curl/8.17.0 Accept: */* GET /3880002 HTTP/1.1 Host: 127.0.0.1:39863 Authorization: Digest username="testuser", realm="testrealm", nonce="999999", uri="/3880002", cnonce="ppcGj8unT7RjVtsI", nc=00000001, qop=auth, response="1f0c286ef51842d66033686c43a4e372", algorithm=MD5 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 This is not the real page HTTP/1.1 200 OK Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 23 This IS the real page HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 This is not the real page HTTP/1.1 401 Authorization re-negotiation please swsbounce Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="crazy, auth" Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 This is not the real page HTTP/1.1 200 OK Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 30 This IS the second real page === End of file server.response === Start of file stderr388 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 26 100 26 0 0 4 0 0:00:06 0:00:05 0:00:01 6 100 26 100 26 0 0 4 0 0:00:06 0:00:05 0:00:01 6 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:13 --:--:-- 0 100 23 100 23 0 0 1 0 0:00:23 0:00:13 0:00:10 3 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 26 100 26 0 0 85 0 --:--:-- --:--:-- --:--:-- 240 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 26 100 26 0 0 25 0 0:00:01 0:00:01 --:--:-- 129 100 30 100 30 0 0 23 0 0:00:01 0:00:01 --:--:-- 23 === End of file stderr388 === Start of file stdout388 HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 HTTP/1.1 200 OK Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 23 This IS the real page HTTP/1.1 401 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 HTTP/1.1 401 Authorization re-negotiation please swsbounce Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="crazy, auth" Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 HTTP/1.1 200 OK Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Type: text/html; charset=iso-8859-1 Content-Length: 30 This IS the second real page === End of file stdout388 === Start of file trace388 01:15:16.055572 * Trying 127.0.0.1:39863... 01:15:17.088653 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 47498 01:15:17.247260 * using HTTP/1.x 01:15:17.363278 * Server auth using Digest with user 'testuser' 01:15:17.719201 => Send header, 86 bytes (0x56) 0000: GET /3880001 HTTP/1.1 0017: Host: 127.0.0.1:39863 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 01:15:18.096612 <= Recv header, 46 bytes (0x2e) 0000: HTTP/1.1 401 Authorization Required swsclose 01:15:18.448188 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 01:15:18.743730 <= Recv header, 64 bytes (0x40) 0000: WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" 01:15:18.789835 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 01:15:18.829948 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 01:15:18.939649 * Ignoring the response-body 01:15:18.959957 * setting size while ignoring 01:15:18.977412 <= Recv header, 2 bytes (0x2) 0000: 01:15:19.527947 * Connection #0 to host 127.0.0.1:39863 left intact 01:15:19.647384 * Issue another request to this URL: 'http://127.0.0.1:39863/3880001' 01:15:19.834672 * Connection 0 seems to be dead 01:15:19.930738 * shutting down connection #0 01:15:20.347886 * Hostname 127.0.0.1 was found in DNS cache 01:15:20.399642 * Trying 127.0.0.1:39863... 01:15:20.449090 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 47514 01:15:20.455968 * using HTTP/1.x 01:15:26.895490 * Server auth using Digest with user 'testuser' 01:15:26.924429 => Send header, 229 bytes (0xe5) 0000: GET /3880001 HTTP/1.1 0017: Host: 127.0.0.1:39863 002e: Authorization: Digest username="testuser", realm="testrealm", no 006e: nce="1053604145", uri="/3880001", response="ea598bbfdb5c54b7352c 00ae: 977e3885e44d" 00bd: User-Agent: curl/8.17.0 00d6: Accept: */* 00e3: 01:15:26.979635 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:15:26.989856 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 01:15:26.998104 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 01:15:27.005161 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 23 01:15:27.024950 <= Recv header, 2 bytes (0x2) 0000: 01:15:27.036143 <= Recv data, 23 bytes (0x17) 0000: This IS the real page!. 01:15:27.135918 * Connection #1 to host 127.0.0.1:39863 left intact 01:15:27.879975 * Reusing existing http: connection with host 127.0.0.1 01:15:27.934324 * Server auth using Digest with user 'testuser' 01:15:27.937696 => Send header, 86 bytes (0x56) 0000: GET /3880002 HTTP/1.1 0017: Host: 127.0.0.1:39863 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 01:15:27.957152 <= Recv header, 46 bytes (0x2e) 0000: HTTP/1.1 401 Authorization Required swsclose 01:15:27.965444 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 01:15:27.978411 <= Recv header, 64 bytes (0x40) 0000: WWW-Authenticate: Digest realm="testrealm", nonce="1053604145" 01:15:27.986260 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 01:15:27.992027 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 01:15:28.000138 * Ignoring the response-body 01:15:28.003384 * setting size while ignoring 01:15:28.004351 <= Recv header, 2 bytes (0x2) 0000: 01:15:28.025567 * Connection #1 to host 127.0.0.1:39863 left intact 01:15:28.037617 * Issue another request to this URL: 'http://127.0.0.1:39863/3880002' 01:15:28.059232 * Connection 1 seems to be dead 01:15:28.065763 * shutting down connection #1 01:15:28.228526 * Hostname 127.0.0.1 was found in DNS cache 01:15:28.274650 * Trying 127.0.0.1:39863... 01:15:28.337960 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 46336 01:15:28.346491 * using HTTP/1.x 01:15:28.458599 * Server auth using Digest with user 'testuser' 01:15:28.483649 => Send header, 229 bytes (0xe5) 0000: GET /3880002 HTTP/1.1 0017: Host: 127.0.0.1:39863 002e: Authorization: Digest username="testuser", realm="testrealm", no 006e: nce="1053604145", uri="/3880002", response="921a8e6db782d6359db1 00ae: f40d9ed7e6a6" 00bd: User-Agent: curl/8.17.0 00d6: Accept: */* 00e3: 01:15:28.553694 <= Recv header, 60 bytes (0x3c) 0000: HTTP/1.1 401 Authorization re-negotiation please swsbounce 01:15:28.578624 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 01:15:28.666728 <= Recv header, 106 bytes (0x6a) 0000: WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce 0040: ="999999", stale=true, qop="crazy, auth" 01:15:28.681552 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 01:15:28.689309 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 01:15:28.699708 * Ignoring the response-body 01:15:28.701759 * setting size while ignoring 01:15:28.703488 <= Recv header, 2 bytes (0x2) 0000: 01:15:28.746968 * Connection #2 to host 127.0.0.1:39863 left intact 01:15:28.780657 * Issue another request to this URL: 'http://127.0.0.1:39863/3880002' 01:15:28.837565 * Reusing existing http: connection with host 127.0.0.1 01:15:28.890520 * Server auth using Digest with user 'testuser' 01:15:28.893541 => Send header, 290 bytes (0x122) 0000: GET /3880002 HTTP/1.1 0017: Host: 127.0.0.1:39863 002e: Authorization: Digest username="testuser", realm="testrealm", no 006e: nce="999999", uri="/3880002", cnonce="ppcGj8unT7RjVtsI", nc=0000 00ae: 0001, qop=auth, response="1f0c286ef51842d66033686c43a4e372", alg 00ee: orithm=MD5 00fa: User-Agent: curl/8.17.0 0113: Accept: */* 0120: 01:15:28.933376 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:15:28.937701 <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 01:15:28.944139 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 01:15:28.950415 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 30 01:15:28.955023 <= Recv header, 2 bytes (0x2) 0000: 01:15:28.957164 <= Recv data, 30 bytes (0x1e) 0000: This IS the second real page!. 01:15:28.977534 * Connection #2 to host 127.0.0.1:39863 left intact === End of file trace388 === Start of file valgrind388 ==244360== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind388 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 392 in state 4 Runner 2 (id 185908) running test 396 in state 4 Runner 3 (id 185910) running test 394 in state 4 Runner 4 (id 185912) running test 391 in state 4 Runner 5 (id 185914) running test 390 in state 4 Runner 6 (id 185916) running test 389 in state 4 Runner 7 (id 185918) running test 395 in state 4 Runner 8 (id 185920) running test 393 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 392 in state 4 Runner 2 (id 185908) running test 396 in state 4 Runner 3 (id 185910) running test 394 in stateCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind389 ../src/curl -q --output log/6/curl389.out --include --trace-ascii log/6/trace389 --trace-time -4 http://curlmachine.localhost:38277/389 > log/6/stdout389 2> log/6/stderr389 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind391 ../src/curl -q --output log/4/curl391.out --include --trace-ascii log/4/trace391 --trace-time http://127.0.0.1:42621/../../391 --path-as-is -L > log/4/stdout391 2> log/4/stderr391 CMD (16128): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind393 ../src/curl -q --output log/8/curl393.out --include --trace-ascii log/8/trace393 --trace-time http://127.0.0.1:39461/393 --max-filesize 2000000 > log/8/stdout393 2> log/8/stderr393 4 Runner 4 (id 185912) running test 391 in state 4 Runner 5 (id 185914) running test 390 in state 4 Runner 6 (id 185916) running test 389 in state 4 Runner 7 (id 185918) running test 395 in state 4 Runner 8 (id 185920) running test 393 in state 4 test 0389...[*.localhost is a local host] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind389 ../src/curl -q --output log/6/curl389.out --include --trace-ascii log/6/trace389 --trace-time -4 http://curlmachine.localhost:38277/389 > log/6/stdout389 2> log/6/stderr389 valgrind ERROR ==244599== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 389 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind389 ../src/curl -q --output log/6/curl389.out --include --trace-ascii log/6/trace389 --trace-time -4 http://curlmachine.localhost:38277/389 > log/6/stdout389 2> log/6/stderr389 === End of file commands.log === Start of file curl389.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl389.out === Start of file http_server.log 01:15:07.075186 ====> Client connect 01:15:07.075355 accept_connection 3 returned 4 01:15:07.075445 accept_connection 3 returned 0 01:15:07.083043 Read 93 bytes 01:15:07.083206 Process 93 bytes request 01:15:07.083312 Got request: GET /verifiedserver HTTP/1.1 01:15:07.083385 Are-we-friendly question received 01:15:07.083522 Wrote request (93 bytes) input to log/6/server.input 01:15:07.083628 Identifying ourselves as friends 01:15:07.083797 Response sent (57 bytes) and written to log/6/server.response 01:15:07.083863 special request received, no persistency 01:15:07.083919 ====> Client disconnect 0 01:15:55.074430 ====> Client connect 01:15:55.074570 accept_connection 3 returned 4 01:15:55.074653 accept_connection 3 returned 0 01:15:56.105064 Read 94 bytes 01:15:56.105292 Process 94 bytes request 01:15:56.105389 Got request: GET /389 HTTP/1.1 01:15:56.105459 Serve test number 389 part 0 01:15:56.105630 - request found to be complete (389) 01:15:56.105907 Wrote request (94 bytes) input to log/6/server.input 01:15:56.106021 Send response test389 section 01:15:56.106447 Response sent (256 bytes) and written to log/6/server.response 01:15:56.106516 => persistent connection request ended, awaits new request 01:15:58.016535 Connection closed by client 01:15:58.016737 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 36620 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 389 === End of file server.cmd === Start of file server.input GET /389 HTTP/1.1 Host: curlmachine.localhost:38277 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr389 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 2 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr389 === Start of file trace389 01:15:54.205693 * Host curlmachine.localhost:38277 was resolved. 01:15:54.615761 * IPv6: ::1 01:15:54.631432 * IPv4: 127.0.0.1 01:15:55.340714 * Trying 127.0.0.1:38277... 01:15:56.044909 * Established connection to curlmachine.localhost (127.0.0.1 port 38277) from 127.0.0.1 port 60132 01:15:56.171488 * using HTTP/1.x 01:15:56.527757 => Send header, 94 bytes (0x5e) 0000: GET /389 HTTP/1.1 0013: Host: curlmachine.localhost:38277 0036: User-Agent: curl/8.17.0 004f: Accept: */* 005c: 01:15:56.872443 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:15:57.180432 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:15:57.284706 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:15:57.310755 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:15:57.318650 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:15:57.325425 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:15:57.354650 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:15:57.411891 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:15:57.452058 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:15:57.457218 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:15:57.538931 <= Recv header, 1 bytes (0x1) 0000: . 01:15:57.596725 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:15:57.702775 * we are done reading and this is set to close, stop send 01:15:57.731822 * abort upload 01:15:58.206191 * shutting down connection #0 === End of file trace389 === Start of file valgrind389 ==244599== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind389 test 0391...[--path-as-is with redirect, keeping dotdots] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind391 ../src/curl -q --output log/4/curl391.out --include --trace-ascii log/4/trace391 --trace-time http://127.0.0.1:42621/../../391 --path-as-is -L > log/4/stdout391 2> log/4/stderr391 valgrind ERROR ==244915== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 391 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind391 ../src/curl -q --output log/4/curl391.out --include --trace-ascii log/4/trace391 --trace-time http://127.0.0.1:42621/../../391 --path-as-is -L > log/4/stdout391 2> log/4/stderr391 === End of file commands.log === Start of file curl391.out HTTP/1.1 301 OK Content-Length: 6 Content-Type: text/html Location: ../3910002 HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/html -muu- === End of file curl391.out === Start of file http_server.log 01:15:16.382719 ====> Client connect 01:15:16.382889 accept_connection 3 returned 4 01:15:16.382967 accept_connection 3 returned 0 01:15:16.391482 Read 93 bytes 01:15:16.391652 Process 93 bytes request 01:15:16.391767 Got request: GET /verifiedserver HTTP/1.1 01:15:16.391833 Are-we-friendly question received 01:15:16.391967 Wrote request (93 bytes) input to log/4/server.input 01:15:16.392060 Identifying ourselves as friends 01:15:16.392223 Response sent (57 bytes) and written to log/4/server.response 01:15:16.392286 special request received, no persistency 01:15:16.392342 ====> Client disconnect 0 01:16:03.929387 ====> Client connect 01:16:03.929542 accept_connection 3 returned 4 01:16:03.929628 accept_connection 3 returned 0 01:16:04.997922 Read 88 bytes 01:16:04.998172 Process 88 bytes request 01:16:04.998315 Got request: GET /../../391 HTTP/1.1 01:16:04.998401 Serve test number 391 part 0 01:16:04.998593 - request found to be complete (391) 01:16:04.998924 Wrote request (88 bytes) input to log/4/server.input 01:16:04.999076 Send response test391 section 01:16:04.999519 Response sent (86 bytes) and written to log/4/server.response 01:16:04.999589 => persistent connection request ended, awaits new request 01:16:07.315872 Read 86 bytes 01:16:07.316088 Process 86 bytes request 01:16:07.316188 Got request: GET /3910002 HTTP/1.1 01:16:07.316263 Serve test number 391 part 2 01:16:07.316451 - request found to be complete (391) 01:16:07.316661 Wrote request (86 bytes) input to log/4/server.input 01:16:07.316764 Send response test391 section 01:16:07.317124 Response sent (65 bytes) and written to log/4/server.response 01:16:07.317200 => persistent connection request ended, awaits new request 01:16:08.329917 Connection closed by client 01:16:08.330134 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 38416 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 391 === End of file server.cmd === Start of file server.input GET /../../391 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* GET /3910002 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 301 OK Content-Length: 6 Content-Type: text/html Location: ../3910002 -foo- HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/html -muu- === End of file server.response === Start of file stderr391 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 27 === End of file stderr391 === Start of file trace391 01:16:02.976870 * Trying 127.0.0.1:42621... 01:16:03.938534 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 40978 01:16:04.070305 * using HTTP/1.x 01:16:04.425618 => Send header, 88 bytes (0x58) 0000: GET /../../391 HTTP/1.1 0019: Host: 127.0.0.1:42621 0030: User-Agent: curl/8.17.0 0049: Accept: */* 0056: 01:16:04.785353 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 301 OK. 01:16:05.130340 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:16:05.267871 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:16:05.334419 <= Recv header, 21 bytes (0x15) 0000: Location: ../3910002. 01:16:05.408768 * Ignoring the response-body 01:16:05.426723 * setting size while ignoring 01:16:05.442376 <= Recv header, 1 bytes (0x1) 0000: . 01:16:05.983764 * Connection #0 to host 127.0.0.1:42621 left intact 01:16:06.199428 * Issue another request to this URL: 'http://127.0.0.1:42621/3910002' 01:16:06.628711 * Reusing existing http: connection with host 127.0.0.1 01:16:06.705302 => Send header, 86 bytes (0x56) 0000: GET /3910002 HTTP/1.1 0017: Host: 127.0.0.1:42621 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 01:16:06.745151 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:16:06.754602 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:16:06.762945 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:16:06.778768 <= Recv header, 1 bytes (0x1) 0000: . 01:16:06.791632 <= Recv data, 6 bytes (0x6) 0000: -muu-. 01:16:06.904545 * Connection #0 to host 127.0.0.1:42621 left intact === End of file trace391 === Start of file valgrind391 ==244915== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind391 test 0393...[HTTP max-filesize and out-of-range Content-Length] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind393 ../src/curl -q --output log/8/curl393.out --include --trace-ascii log/8/trace393 --trace-time http://127.0.0.1:39461/393 --max-filesize 2000000 > log/8/stdout393 2> log/8/stderr393 valgrind ERROR ==244993== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 393 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind393 ../src/curl -q --output log/8/curl393.out --include --trace-ascii log/8/trace393 --trace-time http://127.0.0.1:39461/393 --max-filesize 2000000 > log/8/stdout393 2> log/8/stderr393 === End of file commands.log === Start of file curl393.out HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes === End of file curl393.out === Start of file http_server.log 01:15:15.984613 ====> Client connect 01:15:15.984759 accept_connection 3 returned 4 01:15:15.984827 accept_connection 3 returned 0 01:15:15.991985 Read 93 bytes 01:15:15.992152 Process 93 bytes request 01:15:15.992244 Got request: GET /verifiedserver HTTP/1.1 01:15:15.992307 Are-we-friendly question received 01:15:15.992435 Wrote request (93 bytes) input to log/8/server.input 01:15:15.992538 Identifying ourselves as friends 01:15:15.992705 Response sent (57 bytes) and written to log/8/server.response 01:15:15.992767 special request received, no persistency 01:15:15.992823 ====> Client disconnect 0 01:16:04.323629 ====> Client connect 01:16:04.323776 accept_connection 3 returned 4 01:16:04.323861 accept_connection 3 returned 0 01:16:05.403651 Read 82 bytes 01:16:05.403837 Process 82 bytes request 01:16:05.403930 Got request: GET /393 HTTP/1.1 01:16:05.403996 Serve test number 393 part 0 01:16:05.404163 - request found to be complete (393) 01:16:05.404407 Wrote request (82 bytes) input to log/8/server.input 01:16:05.404516 Send response test393 section 01:16:05.404801 connection close instruction "swsclose" found in response 01:16:05.405005 Response sent (284 bytes) and written to log/8/server.response 01:16:05.405072 instructed to close connection after server-reply 01:16:05.405129 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 60480 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 393 === End of file server.cmCMD (2048): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind394 ../src/curl -q --output log/3/curl394.out --include --trace-ascii log/3/trace394 --trace-time http://127.0.0.1:46853/394 > log/3/stdout394 2> log/3/stderr394 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind392 ../src/curl -q --output log/1/curl392.out --include --trace-ascii log/1/trace392 --trace-time -4 http://localhost:40641/392 -b none http://localhost:40641/392 > log/1/stdout392 2> log/1/stderr392 d === Start of file server.input GET /393 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 36893488147419103232 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr393 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (63) Maximum file size exceeded === End of file stderr393 === Start of file trace393 01:16:04.339272 * Trying 127.0.0.1:39461... 01:16:05.325618 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 51078 01:16:05.484251 * using HTTP/1.x 01:16:05.829571 => Send header, 82 bytes (0x52) 0000: GET /393 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:16:06.162048 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 01:16:06.498900 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:16:06.596463 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:16:06.620892 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:16:06.628293 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:16:06.635328 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:16:06.686008 * Maximum file size exceeded 01:16:07.039374 * closing connection #0 === End of file trace393 === Start of file valgrind393 ==244993== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind393 test 0394...[HTTP with rubbish in Content-Length] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind394 ../src/curl -q --output log/3/curl394.out --include --trace-ascii log/3/trace394 --trace-time http://127.0.0.1:46853/394 > log/3/stdout394 2> log/3/stderr394 valgrind ERROR ==245309== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 394 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind394 ../src/curl -q --output log/3/curl394.out --include --trace-ascii log/3/trace394 --trace-time http://127.0.0.1:46853/394 > log/3/stdout394 2> log/3/stderr394 === End of file commands.log === Start of file curl394.out HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes === End of file curl394.out === Start of file http_server.log 01:15:17.069571 ====> Client connect 01:15:17.071051 accept_connection 3 returned 4 01:15:17.071261 accept_connection 3 returned 0 01:15:17.074050 Read 93 bytes 01:15:17.074159 Process 93 bytes request 01:15:17.074252 Got request: GET /verifiedserver HTTP/1.1 01:15:17.074318 Are-we-friendly question received 01:15:17.074449 Wrote request (93 bytes) input to log/3/server.input 01:15:17.074552 Identifying ourselves as friends 01:15:17.074718 Response sent (57 bytes) and written to log/3/server.response 01:15:17.074781 special request received, no persistency 01:15:17.074838 ====> Client disconnect 0 01:16:04.480643 ====> Client connect 01:16:04.480781 accept_connection 3 returned 4 01:16:04.480859 accept_connection 3 returned 0 01:16:05.507796 Read 82 bytes 01:16:05.508008 Process 82 bytes request 01:16:05.508107 Got request: GET /394 HTTP/1.1 01:16:05.508180 Serve test number 394 part 0 01:16:05.508366 - request found to be complete (394) 01:16:05.508625 Wrote request (82 bytes) input to log/3/server.input 01:16:05.508737 Send response test394 section 01:16:05.508974 connection close instruction "swsclose" found in response 01:16:05.509235 Response sent (268 bytes) and written to log/3/server.response 01:16:05.509301 instructed to close connection after server-reply 01:16:05.509365 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 54646 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 394 === End of file server.cmd === Start of file server.input GET /394 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: crap Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr394 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (8) Invalid Content-Length: value === End of file stderr394 === Start of file trace394 01:16:04.536093 * Trying 127.0.0.1:46853... 01:16:05.451431 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 32996 01:16:05.587772 * using HTTP/1.x 01:16:05.931848 => Send header, 82 bytes (0x52) 0000: GET /394 HTTP/1.1 0013: Host: 127.0.0.1:46853 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:16:06.273781 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 01:16:06.592292 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:16:06.697798 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:16:06.725530 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:16:06.733908 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:16:06.742084 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:16:06.798918 * Invalid Content-Length: value 01:16:07.166840 * closing connection #0 === End of file trace394 === Start of file valgrind394 ==245309== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind394 setenv TZ = GMT test 0392...[HTTP secure cookies over localhost] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind392 ../src/curl -q --output log/1/curl392.out --include --trace-ascii log/1/trace392 --trace-time -4 http://localhost:40641/392 -b none http://localhost:40641/392 > log/1/stdout392 2> log/1/stderr392 valgrind ERROR ==244928== error calling PR_SET_PTRACER, vgdb might block == Contents of fCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind395 ../src/curl -q --output log/7/curl395.out --include --trace-ascii log/7/trace395 --trace-time http://127.0.0.1:34897/395 > log/7/stdout395 2> log/7/stderr395 iles in the log/1/ dir after test 392 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind392 ../src/curl -q --output log/1/curl392.out --include --trace-ascii log/1/trace392 --trace-time -4 http://localhost:40641/392 -b none http://localhost:40641/392 > log/1/stdout392 2> log/1/stderr392 === End of file commands.log === Start of file curl392.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 4 Content-Type: text/html Funny-head: yesyes Set-Cookie: foobar=name; path=/; secure boo === End of file curl392.out === Start of file http_server.log 01:15:16.603349 ====> Client connect 01:15:16.603532 accept_connection 3 returned 4 01:15:16.603617 accept_connection 3 returned 0 01:15:16.611388 Read 93 bytes 01:15:16.611514 Process 93 bytes request 01:15:16.611614 Got request: GET /verifiedserver HTTP/1.1 01:15:16.611702 Are-we-friendly question received 01:15:16.611831 Wrote request (93 bytes) input to log/1/server.input 01:15:16.611938 Identifying ourselves as friends 01:15:16.612110 Response sent (57 bytes) and written to log/1/server.response 01:15:16.612176 special request received, no persistency 01:15:16.612234 ====> Client disconnect 0 01:16:05.265420 ====> Client connect 01:16:05.265574 accept_connection 3 returned 4 01:16:05.265657 accept_connection 3 returned 0 01:16:06.317371 Read 82 bytes 01:16:06.317580 Process 82 bytes request 01:16:06.317680 Got request: GET /392 HTTP/1.1 01:16:06.317756 Serve test number 392 part 0 01:16:06.317940 - request found to be complete (392) 01:16:06.318200 Wrote request (82 bytes) input to log/1/server.input 01:16:06.318328 Send response test392 section 01:16:06.318681 Response sent (191 bytes) and written to log/1/server.response 01:16:06.318751 => persistent connection request ended, awaits new request 01:16:09.492164 Read 103 bytes 01:16:09.492384 Process 103 bytes request 01:16:09.492489 Got request: GET /392 HTTP/1.1 01:16:09.492566 Serve test number 392 part 0 01:16:09.492742 - request found to be complete (392) 01:16:09.492946 Wrote request (103 bytes) input to log/1/server.input 01:16:09.493037 Send response test392 section 01:16:09.493409 Response sent (191 bytes) and written to log/1/server.response 01:16:09.493481 => persistent connection request ended, awaits new request 01:16:10.072114 Connection closed by client 01:16:10.072312 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 39134 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 392 === End of file server.cmd === Start of file server.input GET /392 HTTP/1.1 Host: localhost:40641 User-Agent: curl/8.17.0 Accept: */* GET /392 HTTP/1.1 Host: localhost:40641 User-Agent: curl/8.17.0 Accept: */* Cookie: foobar=name === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 4 Content-Type: text/html Funny-head: yesyes Set-Cookie: foobar=name; path=/; secure boo HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 4 Content-Type: text/html Funny-head: yesyes Set-Cookie: foobar=name; path=/; secure boo === End of file server.response === Start of file stderr392 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 100 4 0 4 0 0 0 0 --:--:-- 0:00:04 --:--:-- 1 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 4 100 4 0 0 5 0 --:--:-- --:--:-- --:--:-- 11 === End of file stderr392 === Start of file stdout392 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 4 Content-Type: text/html Funny-head: yesyes Set-Cookie: foobar=name; path=/; secure boo === End of file stdout392 === Start of file trace392 01:16:01.738493 * WARNING: failed to open cookie file "none" 01:16:03.709691 * Host localhost:40641 was resolved. 01:16:03.824757 * IPv6: ::1 01:16:03.837174 * IPv4: 127.0.0.1 01:16:04.561310 * Trying 127.0.0.1:40641... 01:16:05.218397 * Established connection to localhost (127.0.0.1 port 40641) from 127.0.0.1 port 35394 01:16:05.328812 * using HTTP/1.x 01:16:05.742280 => Send header, 82 bytes (0x52) 0000: GET /392 HTTP/1.1 0013: Host: localhost:40641 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:16:06.093786 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:16:06.407294 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:16:06.514887 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:16:06.558333 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 4 01:16:06.612664 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:16:06.618763 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:16:06.901583 * Added cookie foobar="name" for domain localhost, path /, expire 0 01:16:06.919830 <= Recv header, 41 bytes (0x29) 0000: Set-Cookie: foobar=name; path=/; secure 01:16:07.001601 <= Recv header, 2 bytes (0x2) 0000: 01:16:07.063553 <= Recv data, 4 bytes (0x4) 0000: boo. 01:16:07.631131 * Connection #0 to host localhost:40641 left intact 01:16:08.343337 * WARNING: failed to open cookie file "none" 01:16:08.708041 * Reusing existing http: connection with host localhost 01:16:08.881271 => Send header, 103 bytes (0x67) 0000: GET /392 HTTP/1.1 0013: Host: localhost:40641 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Cookie: foobar=name 0065: 01:16:08.916092 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:16:08.928542 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:16:08.937700 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:16:08.944365 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 4 01:16:08.950880 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:16:08.955756 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:16:09.037678 * Replaced cookie foobar="name" for domain localhost, path /, expire 0 01:16:09.042610 <= Recv header, 41 bytes (0x29) 0000: Set-Cookie: foobar=name; path=/; secure 01:16:09.053777 <= Recv header, 2 bytes (0x2) 0000: 01:16:09.059119 <= Recv data, 4 bytes (0x4) 0000: boo. 01:16:09.112803 * Connection #0 to host localhost:40641 left intact === End of file trace392 === Start of file valgrind392 ==244928== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind392 test 0395...[HTTP and out-of-range Content-Length] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind395 ../src/curl -q --output log/7/curl395.out --include --trace-ascii log/7/trace395 --trace-time http://127.0.0.1:34897/395 > log/7/stdout39CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind390 ../src/curl -q --include --trace-ascii log/5/trace390 --trace-time http://127.0.0.1:46263/390 file://localhost/build/curl/src/build-curl/tests/log/5/test390.txt ftp://127.0.0.1:33729/3900002 --parallel -o log/5/390.a -o log/5/390.b -o log/5/390.c > log/5/stdout390 2> log/5/stderr390 5 2> log/7/stderr395 valgrind ERROR ==245572== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 395 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind395 ../src/curl -q --output log/7/curl395.out --include --trace-ascii log/7/trace395 --trace-time http://127.0.0.1:34897/395 > log/7/stdout395 2> log/7/stderr395 === End of file commands.log === Start of file curl395.out HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 36893488147419103232 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl395.out === Start of file http_server.log 01:15:21.481154 ====> Client connect 01:15:21.481329 accept_connection 3 returned 4 01:15:21.481408 accept_connection 3 returned 0 01:15:21.488247 Read 93 bytes 01:15:21.488363 Process 93 bytes request 01:15:21.488461 Got request: GET /verifiedserver HTTP/1.1 01:15:21.488530 Are-we-friendly question received 01:15:21.488665 Wrote request (93 bytes) input to log/7/server.input 01:15:21.488766 Identifying ourselves as friends 01:15:21.488950 Response sent (57 bytes) and written to log/7/server.response 01:15:21.489015 special request received, no persistency 01:15:21.489072 ====> Client disconnect 0 01:16:08.393509 ====> Client connect 01:16:08.393654 accept_connection 3 returned 4 01:16:08.393743 accept_connection 3 returned 0 01:16:09.428836 Read 82 bytes 01:16:09.429026 Process 82 bytes request 01:16:09.429133 Got request: GET /395 HTTP/1.1 01:16:09.429213 Serve test number 395 part 0 01:16:09.429387 - request found to be complete (395) 01:16:09.429639 Wrote request (82 bytes) input to log/7/server.input 01:16:09.429756 Send response test395 section 01:16:09.429984 connection close instruction "swsclose" found in response 01:16:09.430263 Response sent (284 bytes) and written to log/7/server.response 01:16:09.430332 instructed to close connection after server-reply 01:16:09.430391 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 35510 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 395 === End of file server.cmd === Start of file server.input GET /395 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 36893488147419103232 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr395 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 6 0 6 0 0 1 0 --:--:-- 0:00:04 --:--:-- 1 100 6 0 6 0 0 1 0 --:--:-- 0:00:04 --:--:-- 1 100 6 0 6 0 0 1 0 --:--:-- 0:00:04 --:--:-- 1 === End of file stderr395 === Start of file trace395 01:16:08.446361 * Trying 127.0.0.1:34897... 01:16:09.366114 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 60498 01:16:09.506133 * using HTTP/1.x 01:16:09.852037 => Send header, 82 bytes (0x52) 0000: GET /395 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:16:10.188155 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 01:16:10.540370 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:16:10.646186 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:16:10.674936 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:16:10.683647 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:16:10.691816 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:16:10.753380 * Overflow Content-Length: value 01:16:10.765048 <= Recv header, 37 bytes (0x25) 0000: Content-Length: 36893488147419103232. 01:16:10.857490 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:16:10.894056 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:16:10.899788 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:16:11.051568 <= Recv header, 1 bytes (0x1) 0000: . 01:16:11.113484 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:16:11.244551 * abort upload 01:16:11.268072 <= Recv data, 0 bytes (0x0) 01:16:11.822387 * shutting down connection #0 === End of file trace395 === Start of file valgrind395 ==245572== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind395 test 0390...[curl HTTP, FILE and FTP in parallel] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind390 ../src/curl -q --include --trace-ascii log/5/trace390 --trace-time http://127.0.0.1:46263/390 file://localhost/build/curl/src/build-curl/tests/log/5/test390.txt ftp://127.0.0.1:33729/3900002 --parallel -o log/5/390.a -o log/5/390.b -o log/5/390.c > log/5/stdout390 2> log/5/stderr390 valgrind ERROR ==245007== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 390 === Start of file 390.a HTTP/1.1 200 OK Content-Length: 10001 Content-Type: text/html hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp === End of file 390.a === Start of file 390.b Content-Length: 10001 Accept-ranges: bytes Last-Modified: Sun, 09 Nov 2025 01:15:16 GMT hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile === End of file 390.b === Start of file 390.c hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp === End of file 390.c === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind390 ../src/curl -q --include --trace-ascii log/5/trace390 --trace-time http://127.0.0.1:46263/390 file://localhost/build/curl/src/build-curl/tests/log/5/test390.txt ftp://127.0.0.1:33729/3900002 --parallel -o log/5/390.a -o log/5/390.b -o log/5/390.c > log/5/stdout390 2> log/5/stderr390 === End of file commands.log === Start of file ftp_server.log 01:15:16.368144 ====> Client connect 01:15:16.369202 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:15:16.378137 < "USER anonymous" 01:15:16.378648 > "331 We are happy you popped in![CR][LF]" 01:15:16.381269 < "PASS ftp@example.com" 01:15:16.382237 > "230 Welcome you silly person[CR][LF]" 01:15:16.382806 < "PWD" 01:15:16.385200 > "257 "/" is current directory[CR][LF]" 01:15:16.385930 < "EPSV" 01:15:16.386131 ====> Passive DATA channel requested by client 01:15:16.386272 DATA sockfilt for passive data channel starting... 01:15:16.431128 DATA sockfilt for passive data channel started (pid 244921) 01:15:16.432903 DATA sockfilt for passive data channel listens on port 36697 01:15:16.434274 > "229 Entering Passive Mode (|||36697|)[CR][LF]" 01:15:16.434514 Client has been notified that DATA conn will be accepted on port 36697 01:15:16.437046 Client connects to port 36697 01:15:16.437302 ====> Client established passive DATA connection on port 36697 01:15:16.437954 < "TYPE I" 01:15:16.438249 > "200 I modify TYPE as you wanted[CR][LF]" 01:15:16.439612 < "SIZE verifiedserver" 01:15:16.439981 > "213 18[CR][LF]" 01:15:16.441417 < "RETR verifiedserver" 01:15:16.441752 > "150 Binary junk (18 bytes).[CR][LF]" 01:15:16.442293 =====> Closing passive DATA connection... 01:15:16.442457 Server disconnects passive DATA connection 01:15:16.447515 Server disconnected passive DATA connection 01:15:16.447745 DATA sockfilt for passive data channel quits (pid 244921) 01:15:16.454735 DATA sockfilt for passive data channel quit (pid 244921) 01:15:16.454924 =====> Closed passive DATA connection 01:15:16.455502 > "226 File transfer complete[CR][LF]" 01:15:16.493400 < "QUIT" 01:15:16.493816 > "221 bye bye baby[CR][LF]" 01:15:16.500870 MAIN sockfilt said DISC 01:15:16.501197 ====> Client disconnected 01:15:16.501493 Awaiting input 01:16:07.266443 ====> Client connect 01:16:07.267167 FTPD: Getting commands from log/5/server.cmd 01:16:07.267507 FTPD: run test case number: 390 01:16:07.268594 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:16:11.016271 < "USER anonymous" 01:16:11.023787 > "331 We are happy you popped in![CR][LF]" 01:16:11.117782 < "PASS ftp@example.com" 01:16:11.118225 > "230 Welcome you silly person[CR][LF]" 01:16:11.306638 < "PWD" 01:16:11.310901 > "257 "/" is current directory[CR][LF]" 01:16:11.498522 < "EPSV" 01:16:11.498867 ====> Passive DATA channel requested by client 01:16:11.499027 DATA sockfilt for passive data channel starting... 01:16:11.584382 DATA sockfilt for passive data channel started (pid 246204) 01:16:11.585702 DATA sockfilt for passive data channel listens on port 42757 01:16:11.586524 > "229 Entering Passive Mode (|||42757|)[CR][LF]" 01:16:11.586718 Client has been notified that DATA conn will be accepted on port 42757 01:16:11.774233 Client connects to port 42757 01:16:11.774844 ====> Client established passive DATA connection on port 42757 01:16:11.892838 < "TYPE I" 01:16:11.893294 > "200 I modify TYPE as you wanted[CR][LF]" 01:16:11.954276 < "SIZE 3900002" 01:16:11.961346 > "213 10001[CR][LF]" 01:16:12.050924 < "RETR 3900002" 01:16:12.057602 > "150 Binary data connection for 390 (2) (10001 bytes).[CR][LF]" 01:16:12.058565 =====> Closing passive DATA connection... 01:16:12.058748 Server disconnects passive DATA connection 01:16:12.093954 Server disconnected passive DATA connection 01:16:12.094547 DATA sockfilt for passive data channel quits (pid 246204) 01:16:12.098687 DATA sockfilt for passive data channel quit (pid 246204) 01:16:12.099248 =====> Closed passive DATA connection 01:16:12.104371 > "226 File transfer complete[CR][LF]" 01:16:14.174408 < "QUIT" 01:16:14.174823 > "221 bye bye baby[CR][LF]" 01:16:14.261331 MAIN sockfilt said DISC 01:16:14.261984 ====> Client disconnected 01:16:14.262277 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:15:16.982049 ====> Client connect 01:15:16.983261 Received DATA (on stdin) 01:15:16.983347 > 160 bytes data, server => client 01:15:16.983446 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:15:16.983534 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:15:16.983614 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:15:16.991129 < 16 bytes data, client => server 01:15:16.991270 'USER anonymous\r\n' 01:15:16.994188 Received DATA (on stdin) 01:15:16.994286 > 33 bytes data, server => client 01:15:16.994373 '331 We are happy you popped in!\r\n' 01:15:16.994681 < 22 bytes data, client => server 01:15:16.994756 'PASS ftp@example.com\r\n' 01:15:16.995761 Received DATA (on stdin) 01:15:16.995830 > 30 bytes data, server => client 01:15:16.995928 '230 Welcome you silly person\r\n' 01:15:16.996242 < 5 bytes data, client => server 01:15:16.996309 'PWD\r\n' 01:15:16.997244 Received DATA (on stdin) 01:15:16.997311 > 30 bytes data, server => client 01:15:16.997412 '257 "/" is current directory\r\n' 01:15:16.999640 < 6 bytes data, client => server 01:15:16.999713 'EPSV\r\n' 01:15:17.047510 Received DATA (on stdin) 01:15:17.047678 > 39 bytes data, server => client 01:15:17.047816 '229 Entering Passive Mode (|||36697|)\r\n' 01:15:17.050539 < 8 bytes data, client => server 01:15:17.050630 'TYPE I\r\n' 01:15:17.052403 Received DATA (on stdin) 01:15:17.052497 > 33 bytes data, server => client 01:15:17.052599 '200 I modify TYPE as you wanted\r\n' 01:15:17.053200 < 21 bytes data, client => server 01:15:17.053288 'SIZE verifiedserver\r\n' 01:15:17.054183 Received DATA (on stdin) 01:15:17.054262 > 8 bytes data, server => client 01:15:17.054330 '213 18\r\n' 01:15:17.055025 < 21 bytes data, client => server 01:15:17.055119 'RETR verifiedserver\r\n' 01:15:17.056840 Received DATA (on stdin) 01:15:17.056909 > 29 bytes data, server => client 01:15:17.056989 '150 Binary junk (18 bytes).\r\n' 01:15:17.069355 Received DATA (on stdin) 01:15:17.069454 > 28 bytes data, server => client 01:15:17.069555 '226 File transfer complete\r\n' 01:15:17.106044 < 6 bytes data, client => server 01:15:17.106193 'QUIT\r\n' 01:15:17.108382 Received DATA (on stdin) 01:15:17.108474 > 18 bytes data, server => client 01:15:17.108558 '221 bye bye baby\r\n' 01:15:17.113129 ====> Client disconnect 01:15:17.115408 Received ACKD (on stdin) 01:16:07.880266 ====> Client connect 01:16:07.882591 Received DATA (on stdin) 01:16:07.882694 > 160 bytes data, server => client 01:16:07.882798 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:16:07.882896 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:16:07.882986 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:16:11.629013 < 16 bytes data, client => server 01:16:11.629219 'USER anonymous\r\n' 01:16:11.630773 Received DATA (on stdin) 01:16:11.630858 > 33 bytes data, server => client 01:16:11.634189 '331 We are happy you popped in!\r\n' 01:16:11.730550 < 22 bytes data, client => server 01:16:11.730753 'PASS ftp@example.com\r\n' 01:16:11.734920 Received DATA (on stdin) 01:16:11.735018 > 30 bytes data, server => client 01:16:11.735108 '230 Welcome you silly person\r\n' 01:16:11.919590 < 5 bytes data, client => server 01:16:11.919765 'PWD\r\n' 01:16:11.921118 Received DATA (on stdin) 01:16:11.921197 > 30 bytes data, server => client 01:16:11.925309 '257 "/" is current directory\r\n' 01:16:12.111415 < 6 bytes data, client => server 01:16:12.111595 'EPSV\r\n' 01:16:12.200106 Received DATA (on stdin) 01:16:12.200253 > 39 bytes data, server => client 01:16:12.200386 '229 Entering Passive Mode (|||42757|)\r\n' 01:16:12.505643 < 8 bytes data, client => server 01:16:12.505843 'TYPE I\r\n' 01:16:12.511592 Received DATA (on stdin) 01:16:12.511738 > 33 bytes data, server => client 01:16:12.511845 '200 I modify TYPE as you wanted\r\n' 01:16:12.567167 < 14 bytes data, client => server 01:16:12.567350 'SIZE 3900002\r\n' 01:16:12.575008 Received DATA (on stdin) 01:16:12.575135 > 11 bytes data, server => client 01:16:12.575249 '213 10001\r\n' 01:16:12.663636 < 14 bytes data, client => server 01:16:12.663883 'RETR 3900002\r\n' 01:16:12.668255 Received DATA (on stdin) 01:16:12.668388 > 55 bytes data, server => client 01:16:12.673104 '150 Binary data connection for 390 (2) (10001 bytes).\r\n' 01:16:12.713693 Received DATA (on stdin) 01:16:12.713879 > 28 bytes data, server => client 01:16:12.719135 '226 File transfer complete\r\n' 01:16:14.787329 < 6 bytes data, client => server 01:16:14.787527 'QUIT\r\n' 01:16:14.789132 Received DATA (on stdin) 01:16:14.789209 > 18 bytes data, server => client 01:16:14.789290 '221 bye bye baby\r\n' 01:16:14.875120 ====> Client disconnect 01:16:14.875928 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:15:16.035718 Running IPv4 version 01:15:16.043608 Listening on port 36697 01:15:16.044122 Wrote pid 244921 to log/5/server/ftp_sockdata.pid 01:15:16.044932 Received PING (on stdin) 01:15:16.046333 Received PORT (on stdin) 01:15:16.050976 ====> Client connect 01:15:16.056192 Received DATA (on stdin) 01:15:16.056574 > 18 bytes data, server => client 01:15:16.057020 'WE ROOLZ: 202313\r\n' 01:15:16.057315 Received DISC (on stdin) 01:15:16.057450 ====> Client forcibly disconnected 01:15:16.065024 Received QUIT (on stdin) 01:15:16.065140 quits 01:15:16.065772 ============> sockfilt quits 01:16:11.179027 Running IPv4 version 01:16:11.193389 Listening on port 42757 01:16:11.193919 Wrote pid 246204 to log/5/server/ftp_sockdata.pid 01:16:11.194723 Received PING (on stdin) 01:16:11.199054 Received PORT (on stdin) 01:16:11.386627 ====> Client connect 01:16:11.672444 Received DATA (on stdin) 01:16:11.672904 > 10001 bytes data, server => client 01:16:11.673312 'hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!h' 01:16:11.673446 'ello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he' 01:16:11.673554 'llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hel' 01:16:11.673662 'lo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell' 01:16:11.673767 'o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello' 01:16:11.673871 ' ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ' 01:16:11.673976 'ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello f' 01:16:11.674080 'tp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft' 01:16:11.674184 'p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp' 01:16:11.674287 '!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!' 01:16:11.674390 'hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!h' 01:16:11.674493 'ello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he' 01:16:11.674597 'llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hel' 01:16:11.674702 'lo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell' 01:16:11.674804 'o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello' 01:16:11.678262 ' ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ' 01:16:11.678401 'ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello f' 01:16:11.678512 'tp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft' 01:16:11.678625 'p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp' 01:16:11.678737 '!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!' 01:16:11.678843 'hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!h' 01:16:11.678943 'ello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he' 01:16:11.679086 'llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hel' 01:16:11.679187 'lo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell' 01:16:11.679289 'o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello' 01:16:11.679394 ' ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ' 01:16:11.679499 'ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello f' 01:16:11.679601 'tp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft' 01:16:11.679700 'p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp' 01:16:11.679801 '!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!' 01:16:11.679899 'hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!h' 01:16:11.679998 'ello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he' 01:16:11.680097 'llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hel' 01:16:11.680195 'lo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell' 01:16:11.680299 'o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello' 01:16:11.680400 ' ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ' 01:16:11.680500 'ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello f' 01:16:11.680599 'tp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft' 01:16:11.680697 'p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp' 01:16:11.680795 '!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!' 01:16:11.680912 'hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!h' 01:16:11.681010 'ello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he' 01:16:11.681121 'llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hel' 01:16:11.681229 'lo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell' 01:16:11.681331 'o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello' 01:16:11.681426 ' ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ' 01:16:11.681523 'ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello f' 01:16:11.681631 'tp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft' 01:16:11.681729 'p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp' 01:16:11.681826 '!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!' 01:16:11.681927 'hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!h' 01:16:11.682026 'ello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he' 01:16:11.682122 'llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hel' 01:16:11.682216 'lo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell' 01:16:11.682311 'o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello' 01:16:11.682407 ' ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ' 01:16:11.682505 'ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello f' 01:16:11.682600 'tp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft' 01:16:11.682694 'p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp' 01:16:11.682788 '!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!' 01:16:11.682884 'hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!h' 01:16:11.682996 'ello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he' 01:16:11.683102 'llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hel' 01:16:11.683201 'lo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell' 01:16:11.683304 'o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello' 01:16:11.683407 ' ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ' 01:16:11.683507 'ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello f' 01:16:11.683609 'tp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft' 01:16:11.683720 'p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp' 01:16:11.683824 '!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!' 01:16:11.683920 'hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!h' 01:16:11.684017 'ello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he' 01:16:11.684112 'llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hel' 01:16:11.684207 'lo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell' 01:16:11.684305 'o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello' 01:16:11.684401 ' ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ' 01:16:11.684495 'ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello f' 01:16:11.684589 'tp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft' 01:16:11.684685 'p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp' 01:16:11.684790 '!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!' 01:16:11.691601 'hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!h' 01:16:11.691822 'ello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he' 01:16:11.691926 'llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hel' 01:16:11.692026 'lo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell' 01:16:11.692124 'o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello' 01:16:11.692223 ' ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ' 01:16:11.692323 'ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello f' 01:16:11.692422 'tp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft' 01:16:11.692527 'p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp' 01:16:11.692629 '!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!' 01:16:11.692729 'hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!h' 01:16:11.692849 'ello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he' 01:16:11.692948 'llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hel' 01:16:11.693047 'lo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell' 01:16:11.693146 'o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello' 01:16:11.693245 ' ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ' 01:16:11.693344 'ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello f' 01:16:11.693444 'tp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft' 01:16:11.693543 'p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp' 01:16:11.693641 '!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!' 01:16:11.693741 'hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!h' 01:16:11.693839 'ello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he' 01:16:11.693937 'llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hel' 01:16:11.694036 'lo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell' 01:16:11.694134 'o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello' 01:16:11.694233 ' ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ' 01:16:11.694333 'ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello f' 01:16:11.694433 'tp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft' 01:16:11.694531 'p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp' 01:16:11.694634 '!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!' 01:16:11.694735 'hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!h' 01:16:11.694833 'ello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he' 01:16:11.698291 'llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hel' 01:16:11.698478 'lo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell' 01:16:11.698579 'o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello' 01:16:11.698676 ' ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ' 01:16:11.698773 'ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello f' 01:16:11.698872 'tp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft' 01:16:11.698970 'p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp' 01:16:11.699068 '!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!' 01:16:11.699168 'hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!h' 01:16:11.699265 'ello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he' 01:16:11.699363 'llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hel' 01:16:11.699458 'lo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell' 01:16:11.699555 'o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello' 01:16:11.699656 ' ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ' 01:16:11.699755 'ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello f' 01:16:11.699849 'tp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft' 01:16:11.699945 'p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp' 01:16:11.700043 '!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!' 01:16:11.700140 'hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!h' 01:16:11.700239 'ello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he' 01:16:11.700338 'llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hel' 01:16:11.700438 'lo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell' 01:16:11.700535 'o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello' 01:16:11.700631 ' ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ' 01:16:11.700727 'ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello f' 01:16:11.700823 'tp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft' 01:16:11.700919 'p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp' 01:16:11.701013 '!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!' 01:16:11.701109 'hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!h' 01:16:11.701206 'ello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he' 01:16:11.701322 'llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hel' 01:16:11.701417 'lo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell' 01:16:11.701511 'o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello' 01:16:11.704999 ' ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ' 01:16:11.705140 'ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello f' 01:16:11.705240 'tp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft' 01:16:11.705338 'p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp' 01:16:11.705435 '!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!' 01:16:11.705533 'hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!h' 01:16:11.705630 'ello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he' 01:16:11.705726 'llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hel' 01:16:11.705827 'lo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell' 01:16:11.705937 'o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello' 01:16:11.706038 ' ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ' 01:16:11.706137 'ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello f' 01:16:11.706246 'tp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft' 01:16:11.706350 'p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp' 01:16:11.706450 '!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!' 01:16:11.706549 'hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!h' 01:16:11.706646 'ello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he' 01:16:11.706742 'llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hel' 01:16:11.706913 'lo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!\n' 01:16:11.707791 Received DISC (on stdin) 01:16:11.707957 ====> Client forcibly disconnected 01:16:11.709018 Received QUIT (on stdin) 01:16:11.709107 quits 01:16:11.709695 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file http_server.log 01:15:15.011861 ====> Client connect 01:15:15.012050 accept_connection 3 returned 4 01:15:15.012140 accept_connection 3 returned 0 01:15:15.018219 Read 93 bytes 01:15:15.018324 Process 93 bytes request 01:15:15.018432 Got request: GET /verifiedserver HTTP/1.1 01:15:15.018497 Are-we-friendly question received 01:15:15.018614 Wrote request (93 bytes) input to log/5/server.input 01:15:15.018708 Identifying ourselves as friends 01:15:15.018867 Response sent (57 bytes) and written to log/5/server.response 01:15:15.018930 special request received, no persistency 01:15:15.018987 ====> Client disconnect 0 01:16:03.878485 ====> Client connect 01:16:03.878625 accept_connection 3 returned 4 01:16:03.878712 accept_connection 3 returned 0 01:16:08.241335 Read 82 bytes 01:16:08.241572 Process 82 bytes request 01:16:08.241677 Got request: GET /390 HTTP/1.1 01:16:08.241751 Serve test number 390 part 0 01:16:08.242118 - request found to be complete (390) 01:16:08.242557 Wrote request (82 bytes) input to log/5/server.input 01:16:08.242662 Send response test390 section 01:16:08.244375 Response sent (10064 bytes) and written to log/5/server.response 01:16:08.244461 => persistent connection request ended, awaits new request 01:16:13.745851 Connection closed by client 01:16:13.746065 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 55526 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 390 === End of file server.cmd === Start of file server.input GET /390 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE 3900002 RETR 3900002 QUIT === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Content-Length: 10001 Content-Type: text/html hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp === End of file server.response === Start of file stderr390 DL% UL% Dled Uled Xfers Live Total Current Left Speed -- -- 10001 0 3 2 --:--:-- 0:00:08 --:--:-- 1206 -- -- 20002 0 3 1 --:--:-- 0:00:12 --:--:-- 1652 100 -- 30003 0 3 0 0:00:14 0:00:14 --:--:-- 2009 100 -- 30003 0 3 0 0:00:14 0:00:14 --:--:-- 2001 === End of file stderr390 === Start of file test390.txt hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile === End of file test390.txt === Start of file trace390 01:16:03.843696 * Trying 127.0.0.1:46263... 01:16:05.116395 <= Recv data, 10001 bytes (0x2711) 0000: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 0040: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 0080: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 00c0: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 0100: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 0140: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 0180: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 01c0: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 0200: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 0240: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 0280: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 02c0: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 0300: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 0340: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 0380: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 03c0: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 0400: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 0440: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 0480: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 04c0: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 0500: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 0540: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 0580: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 05c0: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 0600: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 0640: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 0680: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 06c0: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 0700: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 0740: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 0780: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 07c0: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 0800: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 0840: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 0880: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 08c0: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 0900: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 0940: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 0980: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 09c0: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 0a00: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 0a40: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 0a80: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 0ac0: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 0b00: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 0b40: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 0b80: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 0bc0: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 0c00: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 0c40: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 0c80: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 0cc0: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 0d00: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 0d40: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 0d80: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 0dc0: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 0e00: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 0e40: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 0e80: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 0ec0: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 0f00: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 0f40: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 0f80: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 0fc0: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 1000: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 1040: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 1080: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 10c0: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 1100: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 1140: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 1180: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 11c0: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 1200: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 1240: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 1280: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 12c0: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 1300: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 1340: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 1380: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 13c0: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 1400: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 1440: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 1480: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 14c0: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 1500: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 1540: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 1580: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 15c0: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 1600: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 1640: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 1680: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 16c0: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 1700: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 1740: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 1780: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 17c0: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 1800: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 1840: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 1880: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 18c0: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 1900: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 1940: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 1980: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 19c0: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 1a00: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 1a40: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 1a80: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 1ac0: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 1b00: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 1b40: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 1b80: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 1bc0: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 1c00: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 1c40: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 1c80: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 1cc0: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 1d00: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 1d40: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 1d80: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 1dc0: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 1e00: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 1e40: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 1e80: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 1ec0: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 1f00: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 1f40: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 1f80: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 1fc0: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 2000: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 2040: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 2080: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 20c0: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 2100: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 2140: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 2180: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 21c0: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 2200: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 2240: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 2280: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 22c0: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 2300: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 2340: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 2380: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 23c0: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 2400: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 2440: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 2480: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 24c0: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 2500: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 2540: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 2580: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 25c0: ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofil 2600: e!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!he 2640: llofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellof 2680: ile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile 26c0: hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hell 2700: ofile!hellofile!. 01:16:06.837942 * shutting down connection #1 01:16:07.258357 * Trying 127.0.0.1:33729... 01:16:08.220588 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 51506 01:16:08.312752 * using HTTP/1.x 01:16:08.661179 => Send header, 82 bytes (0x52) 0000: GET /390 HTTP/1.1 0013: Host: 127.0.0.1:46263 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:16:08.903004 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:16:09.011398 <= Recv header, 22 bytes (0x16) 0000: Content-Length: 10001. 01:16:09.132309 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:16:09.225040 <= Recv header, 1 bytes (0x1) 0000: . 01:16:09.278588 <= Recv data, 10001 bytes (0x2711) 0000: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 0040: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 0080: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 00c0: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 0100: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 0140: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 0180: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 01c0: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 0200: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 0240: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 0280: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 02c0: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 0300: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 0340: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 0380: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 03c0: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 0400: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 0440: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 0480: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 04c0: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 0500: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 0540: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 0580: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 05c0: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 0600: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 0640: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 0680: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 06c0: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 0700: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 0740: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 0780: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 07c0: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 0800: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 0840: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 0880: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 08c0: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 0900: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 0940: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 0980: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 09c0: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 0a00: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 0a40: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 0a80: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 0ac0: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 0b00: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 0b40: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 0b80: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 0bc0: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 0c00: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 0c40: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 0c80: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 0cc0: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 0d00: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 0d40: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 0d80: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 0dc0: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 0e00: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 0e40: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 0e80: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 0ec0: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 0f00: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 0f40: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 0f80: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 0fc0: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 1000: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 1040: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 1080: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 10c0: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 1100: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 1140: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 1180: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 11c0: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 1200: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 1240: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 1280: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 12c0: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 1300: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 1340: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 1380: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 13c0: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 1400: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 1440: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 1480: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 14c0: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 1500: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 1540: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 1580: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 15c0: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 1600: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 1640: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 1680: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 16c0: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 1700: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 1740: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 1780: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 17c0: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 1800: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 1840: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 1880: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 18c0: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 1900: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 1940: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 1980: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 19c0: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 1a00: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 1a40: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 1a80: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 1ac0: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 1b00: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 1b40: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 1b80: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 1bc0: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 1c00: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 1c40: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 1c80: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 1cc0: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 1d00: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 1d40: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 1d80: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 1dc0: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 1e00: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 1e40: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 1e80: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 1ec0: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 1f00: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 1f40: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 1f80: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 1fc0: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 2000: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 2040: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 2080: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 20c0: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 2100: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 2140: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 2180: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 21c0: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 2200: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 2240: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 2280: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 22c0: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 2300: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 2340: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 2380: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 23c0: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 2400: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 2440: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 2480: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 24c0: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 2500: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 2540: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 2580: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 25c0: ohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohtt 2600: p!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!he 2640: llohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!helloh 2680: ttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp 26c0: hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hellohttp!hell 2700: ohttp!hellohttp!. 01:16:10.638926 * Connection #0 to host 127.0.0.1:46263 left intact 01:16:10.672391 * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 40154 01:16:10.833672 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:16:10.904438 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:16:10.922091 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:16:10.933047 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:16:10.939152 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:16:11.026299 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:16:11.093262 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:16:11.117125 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:16:11.282330 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:16:11.305609 => Send header, 5 bytes (0x5) 0000: PWD 01:16:11.322735 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:16:11.363316 * Entry path is '/' 01:16:11.452699 * Request has same path as previous transfer 01:16:11.501034 => Send header, 6 bytes (0x6) 0000: EPSV 01:16:11.524279 * Connect data stream passively 01:16:11.606391 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||42757|) 01:16:11.713574 * Connecting to 127.0.0.1 (127.0.0.1) port 42757 01:16:11.770798 * Trying 127.0.0.1:42757... 01:16:11.856387 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 42757) from 127.0.0.1 port 38866 01:16:11.893717 => Send header, 8 bytes (0x8) 0000: TYPE I 01:16:11.916984 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:16:11.957663 => Send header, 14 bytes (0xe) 0000: SIZE 3900002 01:16:11.991521 <= Recv header, 11 bytes (0xb) 0000: 213 10001 01:16:12.053289 => Send header, 14 bytes (0xe) 0000: RETR 3900002 01:16:12.076235 <= Recv header, 55 bytes (0x37) 0000: 150 Binary data connection for 390 (2) (10001 bytes). 01:16:12.129785 * Maxdownload = -1 01:16:12.142999 * Getting file with size: 10001 01:16:12.217459 <= Recv data, 10001 bytes (0x2711) 0000: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 0040: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 0080: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 00c0: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 0100: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 0140: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 0180: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 01c0: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 0200: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 0240: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 0280: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 02c0: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 0300: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 0340: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 0380: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 03c0: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 0400: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 0440: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 0480: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 04c0: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 0500: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 0540: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 0580: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 05c0: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 0600: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 0640: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 0680: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 06c0: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 0700: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 0740: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 0780: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 07c0: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 0800: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 0840: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 0880: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 08c0: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 0900: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 0940: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 0980: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 09c0: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 0a00: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 0a40: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 0a80: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 0ac0: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 0b00: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 0b40: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 0b80: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 0bc0: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 0c00: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 0c40: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 0c80: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 0cc0: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 0d00: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 0d40: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 0d80: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 0dc0: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 0e00: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 0e40: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 0e80: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 0ec0: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 0f00: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 0f40: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 0f80: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 0fc0: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 1000: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 1040: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 1080: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 10c0: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 1100: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 1140: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 1180: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 11c0: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 1200: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 1240: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 1280: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind396 ../src/curl -q --output log/2/curl396.out --include --trace-ascii log/2/trace396 --trace-time http://127.0.0.1:39863/396 --compressed > log/2/stdout396 2> log/2/stderr396 hello ftp 12c0: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 1300: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 1340: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 1380: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 13c0: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 1400: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 1440: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 1480: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 14c0: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 1500: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 1540: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 1580: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 15c0: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 1600: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 1640: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 1680: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 16c0: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 1700: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 1740: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 1780: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 17c0: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 1800: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 1840: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 1880: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 18c0: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 1900: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 1940: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 1980: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 19c0: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 1a00: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 1a40: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 1a80: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 1ac0: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 1b00: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 1b40: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 1b80: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 1bc0: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 1c00: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 1c40: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 1c80: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 1cc0: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 1d00: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 1d40: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 1d80: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 1dc0: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 1e00: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 1e40: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 1e80: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 1ec0: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 1f00: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 1f40: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 1f80: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 1fc0: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 2000: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 2040: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 2080: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 20c0: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 2100: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 2140: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 2180: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 21c0: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 2200: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 2240: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 2280: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 22c0: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 2300: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 2340: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 2380: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 23c0: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 2400: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 2440: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 2480: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 24c0: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 2500: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 2540: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 2580: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 25c0: o ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ft 2600: p!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!he 2640: llo ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello 2680: ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp 26c0: hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hello ftp!hell 2700: o ftp!hello ftp!. 01:16:13.548750 * abort upload 01:16:13.569100 <= Recv data, 0 bytes (0x0) 01:16:13.648672 * Remembering we are in dir "" 01:16:13.832032 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:16:13.893426 * Connection #2 to host 127.0.0.1:33729 left intact === End of file trace390 === Start of file valgrind390 ==245007== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind390 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 405 in state 4 Runner 2 (id 185908) running test 396 in state 4 Runner 3 (id 185910) running test 402 in state 4 Runner 4 (id 185912) running test 398 in state 4 Runner 5 (id 185914) running test 415 in state 4 Runner 6 (id 185916) running test 397 in state 4 Runner 7 (id 185918) running test 411 in state 4 Runner 8 (id 185920) running test 399 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 405 in state 4 Runner 2 (id 185908) running test 396 in state 4 Runner 3 (id 185910) running test 402 in state 4 Runner 4 (id 185912) running test 398 in state 4 Runner 5 (id 185914) running test 415 in state 4 Runner 6 (id 185916) running test 397 in state 4 Runner 7 (id 185918) running test 411 in state 4 Runner 8 (id 185920) running test 399 in state 4 test 0396...[HTTP GET zstd compressed content] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind396 ../src/curl -q --output log/2/curl396.out --include --trace-ascii log/2/trace396 --trace-time http://127.0.0.1:39863/396 --compressed > log/2/stdout396 2> log/2/stderr396 valgrind ERROR ==245743== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 396 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind396 ../src/curl -q --output log/2/curl396.out --include --trace-ascii log/2/trace396 --trace-time http://127.0.0.1:39863/396 --compressed > log/2/stdout396 2> log/2/stderr396 === End of file commands.log === Start of file curl396.out HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: zstd Content-Length: 1309 1612 1998-08-21 04:01:29 2004-10-18 02:22:23 curl curl and libcurl Command line tool and library for client-side URL transfers. curl and libcurl is a tool for transferring files using URL syntax. It supports HTTP, HTTPS, FTP, FTPS, DICT, TELNET, LDAP, FILE, and GOPHER, as well as HTTP-post, HTTP-put, cookies, FTP upload, resumed transfers, passwords, portnumbers, SSL certificates, Kerberos, and proxies. It is powered by libcurl, the client-side URL transfer library. There are bindings to libcurl for over 20 languages and environments. 5784.57 3.16 169 6594.54 13.81 105 8.50 21 183 323 Default http://freshmeat.net/projects/curl/ http://freshmeat.net/redir/curl/1612/url_homepage/ http://freshmeat.net/redir/curl/1612/url_tgz/ http://freshmeat.net/redir/curl/1612/url_bz2/ http://freshmeat.net/redir/curl/1612/url_zip/ http://freshmeat.net/redir/curl/1612/url_changelog/ http://freshmeat.net/redir/curl/1612/url_rpm/ http://freshmeat.net/redir/curl/1612/url_deb/ http://freshmeat.net/redir/curl/1612/url_osx/ http://freshmeat.net/redir/curl/1612/url_bsdport/ http://freshmeat.net/redir/curl/1612/url_cvs/ http://freshmeat.net/redir/curl/1612/url_list/ http://freshmeat.net/redir/curl/1612/url_mirror/ MIT/X Consortium License 7.12.2 176085 2004-10-18 02:22:23 Daniel Stenberg http://freshmeat.net/~bagder/ Owner 12 226 3 2 188 216 200 220 164 90 89 809 150 224 900 839 0 7464 7464 OpenSSL (Default) 0 0 7443 OpenLDAP 0 0 12351 zlib 0 0 32047 Heimdal 0 0 44532 c-ares === End of file curl396.out === Start of file http_server.log 01:15:33.362563 ====> Client connect 01:15:33.362722 accept_connection 3 returned 4 01:15:33.362796 accept_connection 3 returned 0 01:15:33.368928 Read 93 bytes 01:15:33.369014 Process 93 bytes request 01:15:33.369102 Got request: GET /verifiedserver HTTP/1.1 01:15:33.369165 Are-we-friendly question received 01:15:33.369274 Wrote request (93 bytes) input to log/2/server.input 01:15:33.369362 Identifying ourselves as friends 01:15:33.369535 Response sent (57 bytes) and written to log/2/server.response 01:15:33.369596 special request received, no persistency 01:15:33.369652 ====> Client disconnect 0 01:16:22.125435 ====> Client connect 01:16:22.125574 accept_connection 3 returned 4 01:16:22.125645 accept_connection 3 returned 0 01:16:23.109388 Read 124 bytes 01:16:23.109579 Process 124 bytes request 01:16:23.109677 Got request: GET /396 HTTP/1.1 01:16:23.109745 Serve test number 396 part 0 01:16:23.110099 - request found to be complete (396) 01:16:23.110508 Wrote request (124 bytes) input to log/2/server.input 01:16:23.110618 Send response test396 section 01:16:23.111465 Response sent (1597 bytes) and written to log/2/server.response 01:16:23.111542 => persistent connection request ended, awaits new request 01:16:36.369385 Connection closed by client 01:16:36.369591 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 54092 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 396 === End of file server.cmd === Start of file server.input GET /396 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* Accept-Encoding: deflate, gzip, br, zstd === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: zstd Content-Length: 1309 (µ/ýd±}(†?½(àк°¶r¦'Ÿ¨ ŒZá…ýþ@2ðïšßÉó›£e˜¡ÀÌ ·³¬ó!·ö¤Ús»y ÝÚûºn›=о³ICMD (6656): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind411 ../src/curl -q --output log/7/curl411.out --include --trace-ascii log/7/trace411 --trace-time -K log/7/missing http://localhost > log/7/stdout411 2> log/7/stderr411 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind397 ../src/curl -q --output log/6/curl397.out --include --trace-ascii log/6/trace397 --trace-time http://127.0.0.1:38277/397 --compressed > log/6/stdout397 2> log/6/stderr397 Ÿ¬ñQÚmRï4ìºí¼¦·XFªª ¨¦wQ‰‚XÓTa’ëVªj °¦GUk‚\• …É–2júFɰ¢&&§æ=ƒöWJ–4A²mXÖ¾ÐbÆ·«tcooß0p÷vÏÁ’ÁT`§Îû“B®ÖÖ¹g‰¨È@ @+xPŠäº †§NiµÚï1IÔƒ ÚùÞžG·ŒÓSû›;NrLÕóöX{ß×™½öøÚ»“Rwî‹42È!ÛÃrïç÷̰νõμnÔæf^o r\0˜lëêu+ÝbüGîE²·îÛ!G$£¥\÷¾ç…µÚ‹nÝ·$>Jr||‘„e!B!²\^a€pyQÆòp±d^”9`@H€QD&áE˜("“YxÝr\÷ï2<)#ÞªñßAŽo:7ßÏÇPzïÍ×è÷]$&^˵µIíÙ­ûÜ ¿ç=ïaˆõÇŽædùYÆÛŒ·YˬåÆùÆ9dŽ¥Í©±£qóÃÍOõɪOöáÜçBfŸ²½7ÛaÈüXs"§¡Þ1¼´‹›FÀ4­FÏ"ØW;/7]û¬{†‘‹!Ua·vVÓ0œ$Ò¡dbH]R„bhI$«"™x¤g9†• …]Ôè '”ÁnmÍ›cH‘HÖE‘`íV{Æ4Þéa9¤¿µ·j= !Œá·GˆVE$–E£Üf/P¬©Šd“~(I¤¢"ÖD£e(ð.LmîÎËКXLN†ÓCn›ÕÚÍiܧÑS«-ks-!È„š*WÅšPÓ4UÔuQ‘IU1¬<ÖïunÓ2CïŠ5µÎ½%'fÔ;†ï¬öÅ<Ú³ÆwÛ¹]dˆe[×¹šk;_»]{ÈrJ®iBaXI%Q0MÓvÍexy[7¯Û¯öàQp†Áë€è •shf@ €A@B #J!óç ù ¿·HÊ Îˆ“à—”ÄIðMUÐb’_$cžD®Á9‡c£»‘Övyжh}»œ¨¤|ªXÿ‚ó6¤ÿ ´Åõ…Ç¿‹2ù?rP0‡³Ö&&l9†q–£ÙZ´þ>ëL̉Fv7*¼v?ð]1fŽqnqönÿÞ™øÞ3…Ï@´v ae,#í˜;Ö\kb3p LÛ2æ>Šö9(·°å´BDšŒb©h\63BG†eIç‰h1è ¸¸Œ­„-¸&ÄÖNÜ4ô4½êlÓÌ"YdŽ=g÷’ÙmB†é`6†hÚÕ¸àäÀĹd‰ciNÄFÂAÜyª!·Íd¦]›í\Ìûì‘ICÈ»žsæ”a ŒŒ²½Æu{=KdnØmØ;“‡vM»†™KÃ.‘­™5» ÀÐ +¯ñ Øe¹§ý˜‘”ƒ@Ìô9–Ú !BÓˆƒ2890Úa‹[™Öpbˆ€<°Î¸™ÐÒÌDoÎHs¦\|7hóÐî`¹/Æx×ÚªëȺÎÍ* *­š%F-´µzQÇó; ½êkÓù¬ú±æ;9Žy‚Ñê‹P¥{Ú^›qØ’IæpK@þu5D K\ŽÝ¸óœ¨lÒ^^ÿÒöœÇÞx.:†%ß©€n8Œ…ÃŒû³t$ȇλ;Ëu¯HáY === End of file server.response === Start of file stderr396 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 1309 100 1309 0 0 82 0 0:00:15 0:00:15 --:--:-- 89 100 1309 100 1309 0 0 81 0 0:00:16 0:00:16 --:--:-- 89 === End of file stderr396 === Start of file trace396 01:16:21.179746 * Trying 127.0.0.1:39863... 01:16:22.065065 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 55356 01:16:22.182457 * using HTTP/1.x 01:16:22.532761 => Send header, 124 bytes (0x7c) 0000: GET /396 HTTP/1.1 0013: Host: 127.0.0.1:39863 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Accept-Encoding: deflate, gzip, br, zstd 007a: 01:16:22.880555 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:16:23.173791 <= Recv header, 37 bytes (0x25) 0000: Date: Mon, 29 Nov 2004 21:56:53 GMT 01:16:23.268392 <= Recv header, 117 bytes (0x75) 0000: Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/ 0040: 4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 01:16:23.294071 <= Recv header, 23 bytes (0x17) 0000: Vary: Accept-Encoding 01:16:23.347366 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=ISO-8859-1 01:16:32.918504 <= Recv header, 24 bytes (0x18) 0000: Content-Encoding: zstd 01:16:32.960132 <= Recv header, 22 bytes (0x16) 0000: Content-Length: 1309 01:16:33.036107 <= Recv header, 2 bytes (0x2) 0000: 01:16:33.094443 <= Recv data, 1310 bytes (0x51e) 0000: (./.d..}(..?.(.......r.'.. .Z......@2..........e.............!.. 0040: ..s.y......n.=...I...Q.m.R.4......X.F......wQ...X.Ta...V..j...GU 0080: .k.\.....2j.F...&.&..=.....WJ.4A..mX...b...tco.o.0.p.v.....T`... 00c0: ..B.....g....@ .@.+xP.... ......Ni...1I.......G.....S...;N..rL.. 0100: .X{...........Rw..42.!...r...........n..f^o.r\0.l..u+.b.G.E.... 0140: G$..\.......n....$>J..r||..e!.B!.\..^.a.pyQ..p.d^.9`@H..QD&.E.(" 0180: .Yx..r\..2<)#....A.o:7....Pz.....]$&^...I...... ..=.a......d.Y.. 01c0: ..Y......9d......q...O...O.....Bf...7.a..Xs"...1....F.4..F.".W;/ 0200: 7]..{...!Ua.vV.0.$....dbH]R.bhI$.".x..g9....]...'...nm..cH.H.E.` 0240: .V{...4..a.9....j=.!...G.VE$.E..f/P...d.~(I..".D.e(....Lm.....X. 0280: LN..Cn......i...S.-ks-!....*W..P.4U.uQ.IU1.<...un..2C....5....%' 02c0: f..;......<...w..]d.e[...k;_.]{.rJ.iBaXI.%Q0M.v.exy[7.....Qp.... 0300: ......shf@.. .A.@B. #J.!.......H..........I.M.U.b._.$c...D..9.c. 0340: ....vy..h}....|.X...6...........2.?rP0...&&l9.q....Z...>.L..Fv7* 0380: ..v?.]1f.qnq.n.......3..@..v ae,#..;..\kb3p.L.2.>..9.(....BD..b. 03c0: h.\63BG..eI..h.1.......-.&...N.4..4..l.."Yd.=g....m.B..`6..h.... 0400: .......d.ci.N.F.A...y.!..d.]...\.....IC....s..a......u.{=Kdn.m.; 0440: ...vM...K........5.......+....e.........@..9....!B......2890.a.[ 0480: ....pb...<........Do..H.s.\|7h...`./.x.........*.*..%F.-....zQ.. 04c0: ;....k.......;9.y....P.{.^..q..I.pK.@.u5D..K\......l.^^......x.: 0500: .%...n8.........t$....;.u.H.Y. 01:16:34.983165 * Excess found writing body: excess = 1, size = 1309, maxdownload = 1309, bytecount = 1309 01:16:35.032441 * we are done reading and this is set to close, stop send 01:16:35.062755 * abort upload 01:16:35.559011 * shutting down connection #0 === End of file trace396 === Start of file valgrind396 ==245743== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind396 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 405 in state 4 Runner 2 (id 185908) running test 416 in state 4 Runner 3 (id 185910) running test 402 in state 4 Runner 4 (id 185912) running test 398 in state 4 Runner 5 (id 185914) running test 415 in state 4 Runner 6 (id 185916) running test 397 in state 4 Runner 7 (id 185918) running test 411 in state 4 Runner 8 (id 185920) running test 399 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 405 in state 4 Runner 2 (id 185908) running test 416 in state 4 Runner 3 (id 185910) running test 402 in state 4 Runner 4 (id 185912) running test 398 in state 4 Runner 5 (id 185914) running test 415 in state 4 Runner 6 (id 185916) running test 397 in state 4 Runner 7 (id 185918) running test 411 in state 4 Runner 8 (id 185920) running test 399 in state 4 test 0411...[-K with missing file causes error] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind411 ../src/curl -q --output log/7/curl411.out --include --trace-ascii log/7/trace411 --trace-time -K log/7/missing http://localhost > log/7/stdout411 2> log/7/stderr411 valgrind ERROR ==246698== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 411 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind411 ../src/curl -q --output log/7/curl411.out --include --trace-ascii log/7/trace411 --trace-time -K log/7/missing http://localhost > log/7/stdout411 2> log/7/stderr411 === End of file commands.log === Start of file server.cmd Testnum 411 === End of file server.cmd === Start of file stderr411 curl: cannot read config from 'log/7/missing' curl: option -K: error encountered when reading a file curl: try 'curl --help' for more information === End of file stderr411 === Start of file valgrind411 ==246698== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind411 test 0397...[HTTP GET zstd compressed content of size more than CURL_MAX_WRITE_SIZE] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind397 ../src/curl -q --output log/6/curl397.out --include --trace-ascii log/6/trace397 --trace-time http://127.0.0.1:38277/397 --compressed > log/6/stdout397 2> log/6/stderr397 valgrind ERROR ==245959== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 397 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind397 ../src/curl -q --output log/6/curl397.out --include --trace-ascii log/6/trace397 --trace-time http://127.0.0.1:38277/397 --compressed > log/6/stdout397 2> log/6/stderr397 === End of file commands.log === Start of file curl397.out HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: zstd Content-Length: 47 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF012CMD (16384): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind402 ../src/curl -q --output log/3/curl402.out --include --trace-ascii log/3/trace402 --trace-time --insecure --ftp-ssl-reqd ftp://127.0.0.1:37331/402 > log/3/stdout402 2> log/3/stderr402 3456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF === End of file curl397.out === Start of file http_server.log 01:16:01.964116 ====> Client connect 01:16:01.964308 accept_connection 3 returned 4 01:16:01.964386 accept_connection 3 returned 0 01:16:01.971335 Read 93 bytes 01:16:01.971506 Process 93 bytes request 01:16:01.971616 Got request: GET /verifiedserver HTTP/1.1 01:16:01.971688 Are-we-friendly question received 01:16:01.971822 Wrote request (93 bytes) input to log/6/server.input 01:16:01.971925 Identifying ourselves as friends 01:16:01.972103 Response sent (57 bytes) and written to log/6/server.response 01:16:01.972166 special request received, no persistency 01:16:01.972223 ====> Client disconnect 0 01:16:49.856426 ====> Client connect 01:16:49.857852 accept_connection 3 returned 4 01:16:49.857935 accept_connection 3 returned 0 01:16:50.882711 Read 124 bytes 01:16:50.882923 Process 124 bytes request 01:16:50.883026 Got request: GET /397 HTTP/1.1 01:16:50.883104 Serve test number 397 part 0 01:16:50.883475 - request found to be complete (397) 01:16:50.883904 Wrote request (124 bytes) input to log/6/server.input 01:16:50.884026 Send response test397 section 01:16:50.884640 Response sent (333 bytes) and written to log/6/server.response 01:16:50.884713 => persistent connection request ended, awaits new request 01:16:58.990022 Connection closed by client 01:16:58.990206 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 48224 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 397 === End of file server.cmd === Start of file server.input GET /397 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* Accept-Encoding: deflate, gzip, br, zstd === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Date: Mon, 29 Nov 2004 21:56:53 GMT Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 Vary: Accept-Encoding Content-Type: text/html; charset=ISO-8859-1 Content-Encoding: zstd Content-Length: 47 (µ/ýd€? ˆ0123456789ABCDEF |Ÿ`x Ò«M:—‚¯¹œ === End of file server.response === Start of file stderr397 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 47 100 47 0 0 4 0 0:00:11 0:00:10 0:00:01 5 100 47 100 47 0 0 4 0 0:00:11 0:00:10 0:00:01 4 === End of file stderr397 === Start of file trace397 01:16:49.916677 * Trying 127.0.0.1:38277... 01:16:50.829657 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 42030 01:16:50.957409 * using HTTP/1.x 01:16:51.306141 => Send header, 124 bytes (0x7c) 0000: GET /397 HTTP/1.1 0013: Host: 127.0.0.1:38277 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Accept-Encoding: deflate, gzip, br, zstd 007a: 01:16:51.679219 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:16:51.981778 <= Recv header, 37 bytes (0x25) 0000: Date: Mon, 29 Nov 2004 21:56:53 GMT 01:16:52.079887 <= Recv header, 117 bytes (0x75) 0000: Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/ 0040: 4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29 01:16:52.109025 <= Recv header, 23 bytes (0x17) 0000: Vary: Accept-Encoding 01:16:52.169936 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=ISO-8859-1 01:16:57.394452 <= Recv header, 24 bytes (0x18) 0000: Content-Encoding: zstd 01:16:57.451398 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 47 01:16:57.533844 <= Recv header, 2 bytes (0x2) 0000: 01:16:57.592522 <= Recv data, 48 bytes (0x30) 0000: (./.d.?....0123456789ABCDEF...|.`x......M:...... 01:16:58.566711 * Excess found writing body: excess = 1, size = 47, maxdownload = 47, bytecount = 47 01:16:58.618171 * we are done reading and this is set to close, stop send 01:16:58.648376 * abort upload 01:16:59.171476 * shutting down connection #0 === End of file trace397 === Start of file valgrind397 ==245959== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind397 test 0402...[FTP SSL required on non-SSL server] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind402 ../src/curl -q --output log/3/curl402.out --include --trace-ascii log/3/trace402 --trace-time --insecure --ftp-ssl-reqd ftp://127.0.0.1:37331/402 > log/3/stdout402 2> log/3/stderr402 valgrind ERROR ==246239== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 402 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind402 ../src/curl -q --output log/3/curl402.out --include --trace-ascii log/3/trace402 --trace-time --insecure --ftp-ssl-reqd ftp://127.0.0.1:37331/402 > log/3/stdout402 2> log/3/stderr402 === End of file commands.log === Start of file ftp_server.log 01:16:11.364809 ====> Client connect 01:16:11.365777 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:16:11.375373 < "USER anonymous" 01:16:11.377789 > "331 We are happy you popped in![CR][LF]" 01:16:11.378672 < "PASS ftp@example.com" 01:16:11.379237 > "230 Welcome you silly person[CR][LF]" 01:16:11.381054 < "PWD" 01:16:11.381417 > "257 "/" is current directory[CR][LF]" 01:16:11.383798 < "EPSV" 01:16:11.384006 ====> Passive DATA channel requested by client 01:16:11.384163 DATA sockfilt for passive data channel starting... 01:16:11.433788 DATA sockfilt for passive data channel started (pid 246195) 01:16:11.435226 DATA sockfilt for passive data channel listens on port 45615 01:16:11.435972 > "229 Entering Passive Mode (|||45615|)[CR][LF]" 01:16:11.436147 Client has been notified that DATA conn will be accepted on port 45615 01:16:11.437483 Client connects to port 45615 01:16:11.437694 ====> Client established passive DATA connection on port 45615 01:16:11.438687 < "TYPE I" 01:16:11.439251 > "200 I modify TYPE as you wanted[CR][LF]" 01:16:11.439967 < "SIZE verifiedserver" 01:16:11.440285 > "213 18[CR][LF]" 01:16:11.441608 < "RETR verifiedserver" 01:16:11.442180 > "150 Binary junk (18 bytes).[CR][LF]" 01:16:11.442702 =====> Closing passive DATA connection... 01:16:11.442856 Server disconnecCMD (2048): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind398 ../src/curl -q --output log/4/curl398.out --include --trace-ascii log/4/trace398 --trace-time http://127.0.0.1:42621/398 > log/4/stdout398 2> log/4/stderr398 ts passive DATA connection 01:16:11.444090 Server disconnected passive DATA connection 01:16:11.444273 DATA sockfilt for passive data channel quits (pid 246195) 01:16:11.447759 DATA sockfilt for passive data channel quit (pid 246195) 01:16:11.447945 =====> Closed passive DATA connection 01:16:11.448501 > "226 File transfer complete[CR][LF]" 01:16:11.493037 < "QUIT" 01:16:11.494303 > "221 bye bye baby[CR][LF]" 01:16:11.494528 MAIN sockfilt said DISC 01:16:11.494709 ====> Client disconnected 01:16:11.494982 Awaiting input 01:16:58.171224 ====> Client connect 01:16:58.171960 FTPD: Getting commands from log/3/server.cmd 01:16:58.172287 FTPD: run test case number: 402 01:16:58.177648 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:16:59.456548 < "AUTH SSL" 01:16:59.456849 AUTH wasn't handled 01:16:59.457121 > "500 AUTH is not dealt with![CR][LF]" 01:16:59.588758 < "AUTH TLS" 01:16:59.589084 AUTH wasn't handled 01:16:59.589371 > "500 AUTH is not dealt with![CR][LF]" 01:17:00.135017 MAIN sockfilt said DISC 01:17:00.135677 ====> Client disconnected 01:17:00.135982 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:16:10.978520 ====> Client connect 01:16:10.980118 Received DATA (on stdin) 01:16:10.980197 > 160 bytes data, server => client 01:16:10.980303 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:16:10.980399 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:16:10.980484 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:16:10.988290 < 16 bytes data, client => server 01:16:10.988437 'USER anonymous\r\n' 01:16:10.989848 Received DATA (on stdin) 01:16:10.989921 > 33 bytes data, server => client 01:16:10.991669 '331 We are happy you popped in!\r\n' 01:16:10.992025 < 22 bytes data, client => server 01:16:10.992106 'PASS ftp@example.com\r\n' 01:16:10.993009 Received DATA (on stdin) 01:16:10.993077 > 30 bytes data, server => client 01:16:10.993185 '230 Welcome you silly person\r\n' 01:16:10.993450 < 5 bytes data, client => server 01:16:10.993518 'PWD\r\n' 01:16:10.995721 Received DATA (on stdin) 01:16:10.995805 > 30 bytes data, server => client 01:16:10.995888 '257 "/" is current directory\r\n' 01:16:10.997373 < 6 bytes data, client => server 01:16:10.997443 'EPSV\r\n' 01:16:11.049599 Received DATA (on stdin) 01:16:11.049740 > 39 bytes data, server => client 01:16:11.049853 '229 Entering Passive Mode (|||45615|)\r\n' 01:16:11.052196 < 8 bytes data, client => server 01:16:11.052273 'TYPE I\r\n' 01:16:11.053024 Received DATA (on stdin) 01:16:11.053092 > 33 bytes data, server => client 01:16:11.053214 '200 I modify TYPE as you wanted\r\n' 01:16:11.053563 < 21 bytes data, client => server 01:16:11.053637 'SIZE verifiedserver\r\n' 01:16:11.054618 Received DATA (on stdin) 01:16:11.054683 > 8 bytes data, server => client 01:16:11.054748 '213 18\r\n' 01:16:11.055199 < 21 bytes data, client => server 01:16:11.055278 'RETR verifiedserver\r\n' 01:16:11.055980 Received DATA (on stdin) 01:16:11.056047 > 29 bytes data, server => client 01:16:11.056147 '150 Binary junk (18 bytes).\r\n' 01:16:11.062269 Received DATA (on stdin) 01:16:11.062366 > 28 bytes data, server => client 01:16:11.062472 '226 File transfer complete\r\n' 01:16:11.105867 < 6 bytes data, client => server 01:16:11.106097 'QUIT\r\n' 01:16:11.107492 Received DATA (on stdin) 01:16:11.107564 > 18 bytes data, server => client 01:16:11.107659 '221 bye bye baby\r\n' 01:16:11.108258 ====> Client disconnect 01:16:11.111577 Received ACKD (on stdin) 01:16:57.784895 ====> Client connect 01:16:57.787070 Received DATA (on stdin) 01:16:57.787158 > 160 bytes data, server => client 01:16:57.792066 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:16:57.792205 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:16:57.792300 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:16:59.069526 < 10 bytes data, client => server 01:16:59.069751 'AUTH SSL\r\n' 01:16:59.071325 Received DATA (on stdin) 01:16:59.071400 > 29 bytes data, server => client 01:16:59.071496 '500 AUTH is not dealt with!\r\n' 01:16:59.201537 < 10 bytes data, client => server 01:16:59.201722 'AUTH TLS\r\n' 01:16:59.208167 Received DATA (on stdin) 01:16:59.208308 > 29 bytes data, server => client 01:16:59.208394 '500 AUTH is not dealt with!\r\n' 01:16:59.748738 ====> Client disconnect 01:16:59.749533 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:16:11.038149 Running IPv4 version 01:16:11.046225 Listening on port 45615 01:16:11.046709 Wrote pid 246195 to log/3/server/ftp_sockdata.pid 01:16:11.047512 Received PING (on stdin) 01:16:11.048636 Received PORT (on stdin) 01:16:11.051417 ====> Client connect 01:16:11.057135 Received DATA (on stdin) 01:16:11.057438 > 18 bytes data, server => client 01:16:11.057820 'WE ROOLZ: 202504\r\n' 01:16:11.058067 Received DISC (on stdin) 01:16:11.058607 ====> Client forcibly disconnected 01:16:11.058784 Received QUIT (on stdin) 01:16:11.058863 quits 01:16:11.059371 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 402 === End of file server.cmd === Start of file server.input AUTH SSL AUTH TLS === End of file server.input === Start of file stderr402 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 curl: (64) Requested SSL level failed === End of file stderr402 === Start of file trace402 01:16:57.858908 * Trying 127.0.0.1:37331... 01:16:58.727219 * Established connection to 127.0.0.1 (127.0.0.1 port 37331) from 127.0.0.1 port 34518 01:16:58.975251 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:16:59.326103 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:16:59.356134 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:16:59.362617 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:16:59.367784 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:16:59.475884 => Send header, 10 bytes (0xa) 0000: AUTH SSL 01:16:59.552528 <= Recv header, 29 bytes (0x1d) 0000: 500 AUTH is not dealt with 01:16:59.588125 => Send header, 10 bytes (0xa) 0000: AUTH TLS 01:16:59.655897 <= Recv header, 29 bytes (0x1d) 0000: 500 AUTH is not dealt with 01:17:00.005330 * closing connection #0 === End of file trace402 === Start of file valgrind402 ==246239== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind402 test 0398...[Reject HTTP/1.1 response with colon-less header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind398 ../src/curl -q --output log/4/curl398.out --include --trace-ascii log/4/trace398 --trace-time http://127.0.0.1:42621/398 > log/4/stdout398 2> log/4/stderr398 valgrind ERROR ==246208== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 398 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind398 ../src/curl -q --output log/4/curl398.out --include --trace-ascii log/4/trace398 --trace-time http://127.0.0.1:42621/398 > log/4/stdout398 2> log/4/stderr398 === End of file commands.log === Start of file curl39CMD (768): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind399 ../src/curl -q --output log/8/curl399.out --include --trace-ascii log/8/trace399 --trace-time -K log/8/input%TESTNUM > log/8/stdout399 2> log/8/stderr399 8.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT === End of file curl398.out === Start of file http_server.log 01:16:11.690495 ====> Client connect 01:16:11.690658 accept_connection 3 returned 4 01:16:11.690736 accept_connection 3 returned 0 01:16:11.698070 Read 93 bytes 01:16:11.698236 Process 93 bytes request 01:16:11.698344 Got request: GET /verifiedserver HTTP/1.1 01:16:11.698412 Are-we-friendly question received 01:16:11.698550 Wrote request (93 bytes) input to log/4/server.input 01:16:11.698665 Identifying ourselves as friends 01:16:11.698830 Response sent (57 bytes) and written to log/4/server.response 01:16:11.698895 special request received, no persistency 01:16:11.698952 ====> Client disconnect 0 01:16:58.937600 ====> Client connect 01:16:58.937732 accept_connection 3 returned 4 01:16:58.937808 accept_connection 3 returned 0 01:16:59.968417 Read 82 bytes 01:16:59.968630 Process 82 bytes request 01:16:59.968734 Got request: GET /398 HTTP/1.1 01:16:59.968808 Serve test number 398 part 0 01:16:59.968988 - request found to be complete (398) 01:16:59.969252 Wrote request (82 bytes) input to log/4/server.input 01:16:59.969369 Send response test398 section 01:16:59.969724 Response sent (255 bytes) and written to log/4/server.response 01:16:59.969792 => persistent connection request ended, awaits new request 01:17:01.293855 Connection closed by client 01:17:01.294059 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 40980 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 398 === End of file server.cmd === Start of file server.input GET /398 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes hello === End of file server.response === Start of file stderr398 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (8) Header without colon === End of file stderr398 === Start of file trace398 01:16:57.987137 * Trying 127.0.0.1:42621... 01:16:58.917077 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 44050 01:16:59.045031 * using HTTP/1.x 01:16:59.394527 => Send header, 82 bytes (0x52) 0000: GET /398 HTTP/1.1 0013: Host: 127.0.0.1:42621 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:16:59.745851 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:17:00.054972 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:17:00.192791 * Header without colon 01:17:00.570327 * closing connection #0 === End of file trace398 === Start of file valgrind398 ==246208== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind398 test 0399...[65536 bytes long host name in URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind399 ../src/curl -q --output log/8/curl399.out --include --trace-ascii log/8/trace399 --trace-time -K log/8/input%TESTNUM > log/8/stdout399 2> log/8/stderr399 valgrind ERROR ==246206== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 399 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind399 ../src/curl -q --output log/8/curl399.out --include --trace-ascii log/8/trace399 --trace-time -K log/8/input%TESTNUM > log/8/stdout399 2> log/8/stderr399 === End of file commands.log === Start of file http_server.log 01:16:10.794960 ====> Client connect 01:16:10.795127 accept_connection 3 returned 4 01:16:10.795207 accept_connection 3 returned 0 01:16:10.802586 Read 93 bytes 01:16:10.802831 Process 93 bytes request 01:16:10.802923 Got request: GET /verifiedserver HTTP/1.1 01:16:10.803000 Are-we-friendly question received 01:16:10.803138 Wrote request (93 bytes) input to log/8/server.input 01:16:10.803240 Identifying ourselves as friends 01:16:10.803398 Response sent (57 bytes) and written to log/8/server.response 01:16:10.803460 special request received, no persistency 01:16:10.803516 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 51084 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file input%TESTNUM url = http://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCMD (2048): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind415 ../src/curl -q --output log/5/curl415.out --include --trace-ascii log/5/trace415 --trace-time http://127.0.0.1:46263/415 > log/5/stdout415 2> log/5/stderr415 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/399 === End of file input%TESTNUM === Start of file server.cmd Testnum 399 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 === End of file server.response === Start of file stderr399 curl: (3) Too long hostname (maximum is 65535) === End of file stderr399 === Start of file trace399 01:17:01.276607 * Too long hostname (maximum is 65535) 01:17:01.680021 * closing connection #-1 === End of file trace399 === Start of file valgrind399 ==246206== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind399 test 0415...[HTTP response with control code then negative Content-Length] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind415 ../src/curl -q --output log/5/curl415.out --include --trace-ascii log/5/trace415 --trace-time http://127.0.0.1:46263/415 > log/5/stdout415 2> log/5/stderr415 valgrind ERROR ==246900== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 415 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind415 ../src/curl -q --output log/5/curl415.out --include --trace-ascii log/5/trace415 --trace-time http://127.0.0.1:46263/415 > log/5/stdout415 2> log/5/stderr415 === End of file commands.log === Start of file curl415.out HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT === End of file curl415.out === Start of file http_server.log 01:16:18.275138 ====> Client connect 01:16:18.275299 accept_connection 3 returned 4 01:16:18.275372 accept_connection 3 returned 0 01:16:18.282038 Read 93 bytes 01:16:18.282131 Process 93 bytes request 01:16:18.282216 Got request: GET /verifiedserver HTTP/1.1 01:16:18.282279 Are-we-friendly question received 01:16:18.282385 Wrote request (93 bytes) input to log/5/server.input 01:16:18.282470 IdentifyiCMD (8960): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind405 ../src/curl -q --output log/1/curl405.out --include --trace-ascii log/1/trace405 --trace-time -m 5 --insecure ftps://127.0.0.1:37481/path/to/file/405 > log/1/stdout405 2> log/1/stderr405 ng ourselves as friends 01:16:18.282626 Response sent (57 bytes) and written to log/5/server.response 01:16:18.282687 special request received, no persistency 01:16:18.282739 ====> Client disconnect 0 01:17:06.293703 ====> Client connect 01:17:06.293882 accept_connection 3 returned 4 01:17:06.293971 accept_connection 3 returned 0 01:17:07.368999 Read 82 bytes 01:17:07.369221 Process 82 bytes request 01:17:07.369319 Got request: GET /415 HTTP/1.1 01:17:07.369389 Serve test number 415 part 0 01:17:07.369561 - request found to be complete (415) 01:17:07.369819 Wrote request (82 bytes) input to log/5/server.input 01:17:07.369945 Send response test415 section 01:17:07.370196 connection close instruction "swsclose" found in response 01:17:07.370387 Response sent (139 bytes) and written to log/5/server.response 01:17:07.370466 instructed to close connection after server-reply 01:17:07.370538 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 47986 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 415 === End of file server.cmd === Start of file server.input GET /415 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: -6 Content-Type: text/html Funny-head: yesyes moooooooooooo === End of file server.response === Start of file stderr415 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (8) Invalid Content-Length: value === End of file stderr415 === Start of file trace415 01:17:06.244354 * Trying 127.0.0.1:46263... 01:17:07.279042 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 55592 01:17:07.435279 * using HTTP/1.x 01:17:07.796325 => Send header, 82 bytes (0x52) 0000: GET /415 HTTP/1.1 0013: Host: 127.0.0.1:46263 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:17:08.162681 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 OK swsclose. 01:17:08.486816 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:17:08.624614 * Invalid Content-Length: value 01:17:08.972491 * closing connection #0 === End of file trace415 === Start of file valgrind415 ==246900== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind415 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 405 in state 4 Runner 2 (id 185908) running test 416 in state 4 Runner 3 (id 185910) running test 420 in state 4 Runner 4 (id 185912) running test 421 in state 4 Runner 5 (id 185914) running test 423 in state 4 Runner 6 (id 185916) running test 419 in state 4 Runner 7 (id 185918) running test 418 in state 4 Runner 8 (id 185920) running test 422 in state 4 test 0405...[FTPS operation to FTP port] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind405 ../src/curl -q --output log/1/curl405.out --include --trace-ascii log/1/trace405 --trace-time -m 5 --insecure ftps://127.0.0.1:37481/path/to/file/405 > log/1/stdout405 2> log/1/stderr405 valgrind ERROR ==246574== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 405 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind405 ../src/curl -q --output log/1/curl405.out --include --trace-ascii log/1/trace405 --trace-time -m 5 --insecure ftps://127.0.0.1:37481/path/to/file/405 > log/1/stdout405 2> log/1/stderr405 === End of file commands.log === Start of file ftp_server.log 01:16:13.062756 ====> Client connect 01:16:13.063783 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:16:13.074965 < "USER anonymous" 01:16:13.075355 > "331 We are happy you popped in![CR][LF]" 01:16:13.078105 < "PASS ftp@example.com" 01:16:13.078366 > "230 Welcome you silly person[CR][LF]" 01:16:13.081871 < "PWD" 01:16:13.082416 > "257 "/" is current directory[CR][LF]" 01:16:13.084463 < "EPSV" 01:16:13.084673 ====> Passive DATA channel requested by client 01:16:13.084829 DATA sockfilt for passive data channel starting... 01:16:13.134967 DATA sockfilt for passive data channel started (pid 246540) 01:16:13.136380 DATA sockfilt for passive data channel listens on port 42873 01:16:13.137813 > "229 Entering Passive Mode (|||42873|)[CR][LF]" 01:16:13.138006 Client has been notified that DATA conn will be accepted on port 42873 01:16:13.140849 Client connects to port 42873 01:16:13.141090 ====> Client established passive DATA connection on port 42873 01:16:13.141786 < "TYPE I" 01:16:13.142092 > "200 I modify TYPE as you wanted[CR][LF]" 01:16:13.143574 < "SIZE verifiedserver" 01:16:13.144777 > "213 18[CR][LF]" 01:16:13.145351 < "RETR verifiedserver" 01:16:13.147813 > "150 Binary junk (18 bytes).[CR][LF]" 01:16:13.148404 =====> Closing passive DATA connection... 01:16:13.148585 Server disconnects passive DATA connection 01:16:13.150206 Server disconnected passive DATA connection 01:16:13.150390 DATA sockfilt for passive data channel quits (pid 246540) 01:16:13.160501 DATA sockfilt for passive data channel quit (pid 246540) 01:16:13.160721 =====> Closed passive DATA connection 01:16:13.161023 > "226 File transfer complete[CR][LF]" 01:16:13.204478 < "QUIT" 01:16:13.204977 > "221 bye bye baby[CR][LF]" 01:16:13.206370 MAIN sockfilt said DISC 01:16:13.206719 ====> Client disconnected 01:16:13.207022 Awaiting input 01:16:59.730745 ====> Client connect 01:16:59.731583 FTPD: Getting commands from log/1/server.cmd 01:16:59.731963 FTPD: run test case number: 405 01:16:59.732941 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:17:20.287836 MAIN sockfilt said DISC 01:17:20.288454 ====> Client disconnected 01:17:20.288744 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:16:13.676498 ====> Client connect 01:16:13.678137 Received DATA (on stdin) 01:16:13.678219 > 160 bytes data, server => client 01:16:13.678406 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:16:13.678504 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:16:13.678592 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:16:13.686139 < 16 bytes data, client => server 01:16:13.686262 'USER anonymous\r\n' 01:16:13.689664 Received DATA (on stdin) 01:16:13.689747 > 33 bytes data, server => client 01:16:13.689837 '331 We are happy you popped in!\r\n' 01:16:13.694899 < 22 bytes data, client => server 01:16:13.694989 'PASS ftp@example.com\r\n' 01:16:13.695058 Received DATA (on stdin) 01:16:13.695119 > 30 bytes data, server => client 01:16:13.695210 '230 Welcome you silly person\r\n' 01:16:13.695486 < 5 bytes data, client => server 01:16:13.695553 'PWD\r\n' 01:16:13.696205 Received DATA (on stdin) 01:16:13.696271 > 30 bytes data, server => client 01:16:13.696371 '257 "/" is current directory\r\n' 01:16:13.698085 < 6 bytes data, client => server 01:16:13.698155 'EPSV\r\n' 01:16:13.750782 Received DATA (on stdin) 01:16:13.750938 > 39 bytes data, server => client 01:16:13.751070 '229 Entering Passive Mode (|||42873|)\r\n' 01:16:13.754510 < 8 bytes data, client => server 01:16:13.754596 'TYPE I\r\n' 01:16:13.756410 Received DATA (on stdin) 01:16:13.756492 > 33 bytes data, server => client 01:16:13.756591 '200 I modify TYPE as you wanted\r\n' 01:16:13.757018 < 21 bytes data, client => server 01:16:13.757105 'SIZE verifiedserver\r\n' 01:16:13.757970 Received DATA (on stdin) 01:16:13.758045 > 8 bytes data, server => client 01:16:13.758145 '213 18\r\n' 01:16:13.758653 < 21 bytes data, client => server 01:16:13.758747 'RETR verifiedserver\r\n' 01:16:13.759811 Received DATA (on stdin) 01:16:13.759886 > 29 bytes data, server => client 01:16:13.759999 '150 Binary junk (18 bytes).\r\n' 01:16:13.775347 Received DATA (on stdin) 01:16:13.775457 > 28 bytes data, server => client 01:16:13.775553 '226 File transfer complete\r\n' 01:16:13.817791 < 6 bytes data, client => server 01:16:13.817973 'QUIT\r\n' 01:16:13.819303 Received DATA (on stdin) 01:16:13.819384 > 18 bytes data, server => client 01:16:13.819471 '221 bye bye baby\r\n' 01:16:13.820358 ====> Client disconnect 01:16:13.820673 Received ACKD (on stdin) 01:17:00.344424 ====> Client connect 01:17:00.351490 Received DATA (on stdin) 01:17:00.351651 > 160 bytes data, server => client 01:17:00.351781 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:17:00.351897 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:17:00.351999 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:17:19.362538 < 1522 bytes data, client => server 01:17:19.362791 '............R T4.2.....J.W.[D.. .=Q... .a.. .r9.......6.....{' 01:17:19.362894 '#.n.b.....F..0\r.<.......,.0.........+./...$.(.k.#.'.g.\n...9' 01:17:19.362991 '. ...3.....=.<.5./...d...... .....\n.........................' 01:17:19.363086 '....1...\r.6.4 . . .................. .\n. ..................' 01:17:19.363182 '.......+........-.....3........e.W.g..v0,3&0.c..-{......G$...' 01:17:19.363278 '..J..4q......h....,.._.9q..>..z.48.x.g/..E.r..w!..U....(...\n' 01:17:19.363374 'd..U.|.....r]43c.9..@."...t8'...S_. U1.H..c..P..h...T.CEG2..7' 01:17:19.363470 '......@U]....I. ....7.E.8..f26a..F{6.2..y....34..w@.i.[...n.A' 01:17:19.363566 '/l.....T.\../...5k...5....7....iv ..Q.p5.i?.....?.F...7.@_.V ' 01:17:19.363662 'F..L....;$%.x.. .6.g.0._.R.3 ...?.LX|.O..o@ ia..$Y=.......P.c' 01:17:19.363758 '..V.|\rG.|..R.BL0Sp$(!.0=...Rj...MJZ.K...`.@....:Kpq.%...lsr.' 01:17:19.363853 '..u...\n......g.).I; ..[ Geh. |V).@..r)..U.....H.b*. d..XKR.h' 01:17:19.363948 'VQv....N.....}...`..{.>.3n`*..)e.I....;&..:.K.. D.r.&.AUb.#dB' 01:17:19.364044 '...$..!.......hkcH.j.&..6Z.Mc@w....+.t....C54,.......!..Z/...' 01:17:19.364140 '.kU?..(4D.3S.aL....: n.....i..7.f........c.....Z .U.A.eu.}.V ' 01:17:19.364236 '9.qfA....1q.K.'...b......n..G.H..& .(.....2...|b..d.....G.E.W' 01:17:19.364332 'n..g.p..@..Z..(*.A. .D.Hj..k.Q/+.z.UQ....@.....D...Z.6.d..S..' 01:17:19.364447 'o&a.B.........s.57.x...&Ci.d..7..UX...h...^.N.7..r....5.U....' 01:17:19.364538 '...\...>C....{.LK@.[*..]&...i.\8179..\r.fS...7..H.._....Z.cT.' 01:17:19.364629 '$ .A..SP.F0.p.N.M.#sT*.h.A@.991n.lg.a. .:..XI Z&.0..n... ucUI' 01:17:19.364719 ' ..$E....'..^..9. ..+Q.K....A..iKZ.....M...;UU.......H.A!.i.u' 01:17:19.364822 'Yw..l...Z...N.MA...g.&.d.h1....*...:.vZH.,....s... ....9....z' 01:17:19.364913 '......Q$.3kj,.8......t.\n..8x..YH.{...\n?..........~SU...."..' 01:17:19.365005 '{.3...Uh.hp..qF/..r5.....ry...THt,5L.?....o...c.{6mI...S. Client disconnect 01:17:20.902302 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:16:13.736989 Running IPv4 version 01:16:13.746852 Listening on port 42873 01:16:13.747388 Wrote pid 246540 to log/1/server/ftp_sockdata.pid 01:16:13.748360 Received PING (on stdin) 01:16:13.749682 Received PORT (on stdin) 01:16:13.754765 ====> Client connect 01:16:13.762882 Received DATA (on stdin) 01:16:13.763231 > 18 bytes data, server => client 01:16:13.763671 'WE ROOLZ: 202066\r\n' 01:16:13.763952 Received DISC (on stdin) 01:16:13.764084 ====> Client forcibly disconnected 01:16:13.768256 Received QUIT (on stdin) 01:16:13.768353 quits 01:16:13.768960 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 405 === End of file server.cmd === Start of file server.input íé¾R T4£2àϹ؜JåW[Dóâ æ=Q±× ¬aâ …r9¥Ú‰Ç ƒ6¾Ëü™ê{#ìnbÛâ³ÌF…ç0 <À,À0ŸÌ©Ì¨ÌªÀ+À/žÀ$À(kÀ#À'gÀ À9À À3œ=<5/dÿ  ì1 64       +-3êèìÀe¢Wág«¡v0,3&0Êcªì-{ÀG$Ú’J³ö4q„ƒ¾Îhô¬,ù_µ9q’‘>èzš48§xg/ÔôE®r“Æw!ŸU‘¬Œ(ÊÀ› d»UÉ|ÙÁׇr]43cù9›@¤"…“»t8'˜´S_ä U1¢H©­cªPÑÇhúïT»CEG2£7±¿«¥@U]וãåI¹ ·¬ØÂ7£E˜8±f26aÔF{6ƒ2¡ûyà34õw@«i[ÊnA/lˆû¸žT±\/È–Œ5k ÃÊ5ØÚ—ð7ŠÔŸiv ù¡Qøp5Òi?Ú°?®F”‰7@_V F§¸LÊ;$%ˆxªŸ 6Îg³0–_ÙR‰3 ´ÁÖ?ýLX|öO¦âo@ iaæ¡$Y=ë’·ø¼§P§câV¢| G¶|÷ÌRÂBL0Sp$(!Ð0=ÖžRj‚«MJZøK¯ö–`Õ@ǃ:Kpq%Èö‘lsrìʬuÒ­« Œ¿»™gË)I; ·[ Geh³ |V)ö@Ë¿r)äUÈú˜¯Hœb*» dÔÂXKR©hVQv«ŠÈÃNƒË­îë}£¸«`ž{>ª3n`*¯)eÓIŽŒë€;&·:ˆK¼ DÇr£&AUb#dB£Æü$“á!ô…“ÚûhkcHj&”é6ZMc@w•Ô…Û+tŒÁϵC54,ºÒñ!½Z/ú³kU?Ï(4D“3SaL¸ðµ: nºÏ©ªi×7f„ÁÎö½ÌâcË„ãÛZ ·UœAÆeu™}üV 9²qfA¢üï1qK¡'Ї’b¥“ž“›n•GàH¬§& Ü(ÆžÛš2®|b‚dÚùÅ.GE«Wnà÷g³pÑ@ÉÓZ¡(*àA ›DåHj»kÙQ/+ëzõUQúÓ¡@Á‡âŽDÿ³Z¯6Šdú¥S×o&a–B‘ѵßѱÃâsÜ57xÀׄ&CiŽdü‰7§UXì»hú…³^Nò7r¢«Ø£5ÓUô¦ÜÑ­Ì\ƒ¹ø>CìˆÅó{ÙLK@ë[*ÂŽ]&½ÃÄiÔ\8179è•  fS¥·7ŒHü¾_µ”ˆZ˜cTÇ$ ‘A£SP©F0öpNñM…#sT*hµA@991nÔlgÕaž å:›XI Z&§0ÄnÍ ucUI ü $E§×'ˆ‚^§Ö9 ¶©+QçK‰AêŒiKZžó‚M¢;UUÔȪ—HA!i¶uYwŸlžúZ©ë­NMAµ°g‚&d¡h1õà§¶*–É:ÍvZH–,Â’‰sÊ— Û£‚9¸ÂÉz•Í.ÔQ$.3kj,†8ÛÈ‚åÍŸtŽ ±8xìYHß{¨Ò ?Œƒóô Íâ~SU¤Õ…"€{¹3Ç‹ÏUhÇhp¶qF/Ƚr5§Èʼn.ryåœTHt,5LÁ?ã‡ËoÓØ—cô{6mI¯åSˆ Send SSL data, 5 bytes (0x5) 0000: ..... 01:17:18.523675 * TLSv1.3 (OUT), TLS handshake, Client hello (1): 01:17:18.531498 => Send SSL data, 1517 bytes (0x5ed) 0000: .......R.T4.2.....J.W.[D....=Q.....a.. .r9.......6.....{#.n.b... 0040: ..F..0..<.......,.0.........+./...$.(.k.#.'.g.....9.....3.....=. 0080: <.5./...d..........................................1.....6.4.... 00c0: .................................................+........-..... 0100: 3........e.W.g..v0,3&0.c..-{......G$.....J..4q......h....,.._.9q 0140: ..>..z.48.x.g/..E.r..w!..U....(....d..U.|.....r]43c.9..@."...t8' 0180: ...S_. U1.H..c..P..h...T.CEG2..7......@U]....I. ....7.E.8..f26a. 01c0: .F{6.2..y....34..w@.i.[...n.A/l.....T.\../...5k...5....7....iv . 0200: .Q.p5.i?.....?.F...7.@_.V.F..L....;$%.x....6.g.0._.R.3 ...?.LX|. 0240: O..o@.ia..$Y=.......P.c..V.|.G.|..R.BL0Sp$(!.0=...Rj...MJZ.K...` 0280: .@....:Kpq.%...lsr...u..........g.).I; ..[.Geh..|V).@..r)..U.... 02c0: .H.b*..d..XKR.hVQv....N.....}...`..{.>.3CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind416 ../src/curl -q --output log/2/curl416.out --include --trace-ascii log/2/trace416 --trace-time --ignore-content-length ftp://127.0.0.1:39881/416 > log/2/stdout416 2> log/2/stderr416 n`*..)e.I....;&..:.K.. D 0300: .r.&.AUb.#dB...$..!.......hkcH.j.&..6Z.Mc@w....+.t....C54,...... 0340: .!..Z/....kU?..(4D.3S.aL....: n.....i..7.f........c.....Z..U.A.e 0380: u.}.V.9.qfA....1q.K.'...b......n..G.H..& .(.....2...|b..d.....G. 03c0: E.Wn..g.p..@..Z..(*.A...D.Hj..k.Q/+.z.UQ....@.....D...Z.6.d..S.. 0400: o&a.B.........s.57.x...&Ci.d..7..UX...h...^.N.7..r....5.U....... 0440: \...>C....{.LK@.[*..]&...i.\8179....fS...7..H.._....Z.cT.$..A..S 0480: P.F0.p.N.M.#sT*.h.A@.991n.lg.a...:..XI.Z&.0..n....ucUI...$E....' 04c0: ..^..9....+Q.K....A..iKZ.....M...;UU.......H.A!.i.uYw..l...Z...N 0500: .MA...g.&.d.h1....*...:.vZH.,....s........9....z......Q$.3kj,.8. 0540: .....t....8x..YH.{....?..........~SU...."..{.3...Uh.hp..qF/..r5. 0580: ....ry...THt,5L.?....o...c.{6mI...S. log/2/stdout416 2> log/2/stderr416 valgrind ERROR ==247102== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 416 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind416 ../src/curl -q --output log/2/curl416.out --include --trace-ascii log/2/trace416 --trace-time --ignore-content-length ftp://127.0.0.1:39881/416 > log/2/stdout416 2> log/2/stderr416 === End of file commands.log === Start of file curl416.out 0123456789abcdef0123456789abcdef0123456789abcdef === End of file curl416.out === Start of file ftp_server.log 01:16:39.567511 ====> Client connect 01:16:39.568939 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:16:39.578116 < "USER anonymous" 01:16:39.578423 > "331 We are happy you popped in![CR][LF]" 01:16:39.579124 < "PASS ftp@example.com" 01:16:39.579366 > "230 Welcome you silly person[CR][LF]" 01:16:39.580020 < "PWD" 01:16:39.580270 > "257 "/" is current directory[CR][LF]" 01:16:39.582053 < "EPSV" 01:16:39.582242 ====> Passive DATA channel requested by client 01:16:39.582382 DATA sockfilt for passive data channel starting... 01:16:39.623109 DATA sockfilt for passive data channel started (pid 247096) 01:16:39.624479 DATA sockfilt for passive data channel listens on port 37655 01:16:39.627416 > "229 Entering Passive Mode (|||37655|)[CR][LF]" 01:16:39.627617 Client has been notified that DATA conn will be accepted on port 37655 01:16:39.628036 Client connects to port 37655 01:16:39.628230 ====> Client established passive DATA connection on port 37655 01:16:39.629115 < "TYPE I" 01:16:39.629656 > "200 I modify TYPE as you wanted[CR][LF]" 01:16:39.630437 < "SIZE verifiedserver" 01:16:39.631013 > "213 18[CR][LF]" 01:16:39.632042 < "RETR verifiedserver" 01:16:39.632335 > "150 Binary junk (18 bytes).[CR][LF]" 01:16:39.632843 =====> Closing passive DATA connection... 01:16:39.632999 Server disconnects passive DATA connection 01:16:39.637493 Server disconnected passive DATA connection 01:16:39.637671 DATA sockfilt for passive data channel quits (pid 247096) 01:16:39.640728 DATA sockfilt for passive data channel quit (pid 247096) 01:16:39.640903 =====> Closed passive DATA connection 01:16:39.641155 > "226 File transfer complete[CR][LF]" 01:16:39.685225 < "QUIT" 01:16:39.685978 > "221 bye bye baby[CR][LF]" 01:16:39.690915 MAIN sockfilt said DISC 01:16:39.691231 ====> Client disconnected 01:16:39.691510 Awaiting input 01:17:26.964584 ====> Client connect 01:17:26.965311 FTPD: Getting commands from log/2/server.cmd 01:17:26.965641 FTPD: instructed to use RETRSIZE = 7 01:17:26.965877 FTPD: run test case number: 416 01:17:26.967311 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:17:28.267130 < "USER anonymous" 01:17:28.267854 > "331 We are happy you popped in![CR][LF]" 01:17:28.375718 < "PASS ftp@example.com" 01:17:28.380875 > "230 Welcome you silly person[CR][LF]" 01:17:28.481259 < "PWD" 01:17:28.481698 > "257 "/" is current directory[CR][LF]" 01:17:28.669677 < "EPSV" 01:17:28.670006 ====> Passive DATA channel requested by client 01:17:28.670155 DATA sockfilt for passive data channel starting... 01:17:28.740624 DATA sockfilt for passive data channel started (pid 248387) 01:17:28.744802 DATA sockfilt for passive data channel listens on port 36621 01:17:28.745442 > "229 Entering Passive Mode (|||36621|)[CR][LF]" 01:17:28.745616 Client has been notified that DATA conn will be accepted on port 36621 01:17:28.950899 Client connects to port 36621 01:17:28.951456 ====> Client established passive DATA connection on port 36621 01:17:29.067788 < "TYPE I" 01:17:29.068308 > "200 I modify TYPE as you wanted[CR][LF]" 01:17:29.116677 < "RETR 416" 01:17:29.121023 > "150 Binary data connection for 416 () (7 bytes).[CR][LF]" 01:17:29.121587 =====> Closing passive DATA connection... 01:17:29.121739 Server disconnects passive DATA connection 01:17:29.122363 Server disconnected passive DATA connection 01:17:29.122521 DATA sockfilt for passive data channel quits (pid 248387) 01:17:29.125400 DATA sockfilt for passive data channel quit (pid 248387) 01:17:29.125558 =====> Closed passive DATA connection 01:17:29.126076 > "226 File transfer complete[CR][LF]" 01:17:31.039603 < "QUIT" 01:17:31.040278 > "221 bye bye baby[CR][LF]" 01:17:31.163829 MAIN sockfilt said DISC 01:17:31.164496 ====> Client disconnected 01:17:31.164803 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:16:40.181174 ====> Client connect 01:16:40.182357 Received DATA (on stdin) 01:16:40.182434 > 160 bytes data, server => client 01:16:40.182557 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:16:40.182654 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:16:40.182739 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:16:40.189245 < 16 bytes data, client => server 01:16:40.189341 'USER anonymous\r\n' 01:16:40.192423 Received DATA (on stdin) 01:16:40.192499 > 33 bytes data, server => client 01:16:40.192583 '331 We are happy you popped in!\r\n' 01:16:40.192841 < 22 bytes data, client => server 01:16:40.192918 'PASS ftp@example.com\r\n' 01:16:40.193379 Received DATA (on stdin) 01:16:40.193443 > 30 bytes data, server => client 01:16:40.193523 '230 Welcome you silly person\r\n' 01:16:40.193741 < 5 bytes data, client => server 01:16:40.193806 'PWD\r\n' 01:16:40.194281 Received DATA (on stdin) 01:16:40.194344 > 30 bytes data, server => client 01:16:40.194422 '257 "/" is current directory\r\n' 01:16:40.195769 < 6 bytes data, client => server 01:16:40.195838 'EPSV\r\n' 01:16:40.238805 Received DATA (on stdin) 01:16:40.238936 > 39 bytes data, server => client 01:16:40.239071 '229 Entering Passive Mode (|||37655|)\r\n' 01:16:40.242578 < 8 bytes data, client => server 01:16:40.242654 'TYPE I\r\n' 01:16:40.243391 Received DATA (on stdin) 01:16:40.243456 > 33 bytes data, server => client 01:16:40.243559 '200 I modify TYPE as you wanted\r\n' 01:16:40.243966 < 21 bytes data, client => server 01:16:40.244054 'SIZE verifiedserver\r\n' 01:16:40.244755 Received DATA (on stdin) 01:16:40.244821 > 8 bytes data, server => client 01:16:40.244931 '213 18\r\n' 01:16:40.245610 < 21 bytes data, client => server 01:16:40.245687 'RETR verifiedserver\r\n' 01:16:40.248439 Received DATA (on stdin) 01:16:40.248512 > 29 bytes data, server => client 01:16:40.248594 '150 Binary junk (18 bytes).\r\n' 01:16:40.255395 Received DATA (on stdin) 01:16:40.255470 > 28 bytes data, server => client 01:16:40.255551 '226 File transfer complete\r\n' 01:16:40.298511 < 6 bytes data, client => server 01:16:40.298618 'QUIT\r\n' 01:16:40.299545 Received DATA (on stdin) 01:16:40.299613 > 18 bytes data, server => client 01:16:40.299870 '221 bye bye baby\r\n' 01:16:40.304849 ====> Client disconnect 01:16:40.305153 Received ACKD (on stdin) 01:17:27.578234 ====> Client connect 01:17:27.580661 Received DATA (on stdin) 01:17:27.580755 > 160 bytes data, server => client 01:17:27.580877 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:17:27.580973 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:17:27.581056 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:17:28.879883 < 16 bytes data, client => server 01:17:28.880057 'USER anonymous\r\n' 01:17:28.881448 Received DATA (on stdin) 01:17:28.881521 > 33 bytes data, server => client 01:17:28.881628 '331 We are happy you popped in!\r\n' 01:17:28.988538 < 22 bytes data, client => server 01:17:28.988716 'PASS ftp@example.com\r\n' 01:17:28.990023 Received DATA (on stdin) 01:17:28.990094 > 30 bytes data, server => client 01:17:28.995082 '230 Welcome you silly person\r\n' 01:17:29.094110 < 5 bytes data, client => server 01:17:29.094261 'PWD\r\n' 01:17:29.095843 Received DATA (on stdin) 01:17:29.095916 > 30 bytes data, server => client 01:17:29.095997 '257 "/" is current directory\r\n' 01:17:29.282479 < 6 bytes data, client => server 01:17:29.282677 'EPSV\r\n' 01:17:29.359057 Received DATA (on stdin) 01:17:29.359199 > 39 bytes data, server => client 01:17:29.359806 '229 Entering Passive Mode (|||36621|)\r\n' 01:17:29.674004 < 8 bytes data, client => server 01:17:29.681317 'TYPE I\r\n' 01:17:29.688094 Received DATA (on stdin) 01:17:29.688214 > 33 bytes data, server => client 01:17:29.688304 '200 I modify TYPE as you wanted\r\n' 01:17:29.729533 < 10 bytes data, client => server 01:17:29.729694 'RETR 416\r\n' 01:17:29.732345 Received DATA (on stdin) 01:17:29.732421 > 50 bytes data, server => client 01:17:29.734796 '150 Binary data connection for 416 () (7 bytes).\r\n' 01:17:29.739706 Received DATA (on stdin) 01:17:29.739800 > 28 bytes data, server => client 01:17:29.739895 '226 File transfer complete\r\n' 01:17:31.652437 < 6 bytes data, client => server 01:17:31.652607 'QUIT\r\n' 01:17:31.653896 Received DATA (on stdin) 01:17:31.653965 > 18 bytes data, server => client 01:17:31.654058 '221 bye bye baby\r\n' 01:17:31.777457 ====> Client disconnect 01:17:31.778284 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:16:39.227988 Running IPv4 version 01:16:39.235611 Listening on port 37655 01:16:39.236057 Wrote pid 247096 to log/2/server/ftp_sockdata.pid 01:16:39.236819 Received PING (on stdin) 01:16:39.237798 Received PORT (on stdin) 01:16:39.241969 ====> Client connect 01:16:39.247299 Received DATA (on stdin) 01:16:39.247576 > 18 bytes data, server => client 01:16:39.247922 'WE ROOLZ: 202189\r\n' 01:16:39.248153 Received DISC (on stdin) 01:16:39.248277 ====> Client forcibly disconnected 01:16:39.251925 Received QUIT (on stdin) 01:16:39.252008 quits 01:16:39.252492 ============> sockfilt quits 01:17:28.339665 Running IPv4 version 01:17:28.353078 Listening on port 36621 01:17:28.353531 Wrote pid 248387 to log/2/server/ftp_sockdata.pid 01:17:28.354213 Received PING (on stdin) 01:17:28.358087 Received PORT (on stdin) 01:17:28.563090 ====> Client connect 01:17:28.735244 Received DATA (on stdin) 01:17:28.735614 > 49 bytes data, server => client 01:17:28.735954 '0123456789abcdef0123456789abcdef0123456789abcdef\n' 01:17:28.736189 Received DISC (on stdin) 01:17:28.736301 ====> Client forcibly disconnected 01:17:28.736624 Received QUIT (on stdin) 01:17:28.736698 quits 01:17:28.737182 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd RETRSIZE 7 Testnum 416 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I RETR 416 QUIT === End of file server.input === Start of file stderr416 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 49 0 49 0 0 9 0 --:--:-- 0:00:04 --:--:-- 13 100 49 0 49 0 0 9 0 --:--:-- 0:00:05 --:--:-- 12 === End of file stderr416 === Start of file trace416 01:17:26.642953 * Trying 127.0.0.1:39881... 01:17:27.541038 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 38212 01:17:27.798896 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:17:28.143735 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:17:28.171514 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:17:28.178132 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:17:28.182690 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:17:28.286546 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:17:28.349198 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:17:28.376102 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:17:28.462350 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:17:28.480191 => Send header, 5 bytes (0x5) 0000: PWD 01:17:28.493260 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:17:28.527016 * Entry path is '/' 01:17:28.621405 * Request has same path as previous transfer 01:17:28.668593 => Send header, 6 bytes (0x6) 0000: EPSV 01:17:28.694523 * Connect data stream passively 01:17:28.767250 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||36621|) 01:17:28.879736 * Connecting to 127.0.0.1 (127.0.0.1) port 36621 01:17:28.943911 * Trying 127.0.0.1:36621... 01:17:29.028323 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 36621) from 127.0.0.1 port 48396 01:17:29.060141 => Send header, 8 bytes (0x8) 0000: TYPE I 01:17:29.083671 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:17:29.115647 => Send header, 10 bytes (0xa) 0000: RETR 416 01:17:29.146354 <= Recv header, 50 bytes (0x32) 0000: 150 Binary data connection for 416 () (7 bytes). 01:17:29.184100 * Maxdownload = -1 01:17:29.194322 * Getting file with size: -1 01:17:29.344712 <= Recv data, 49 bytes (0x31) 0000: 0123456789abcdef0123456789abcdef0123456789abcdef. 01:17:29.643471 * abort upload 01:17:29.668796 <= Recv data, 0 bytes (0x0) 01:17:29.844991 * Remembering we are in dir "" 01:17:30.030680 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:17:30.324397 * Connection #0 to host 127.0.0.1:39881 left intact === End of file trace416 === Start of file valgrind416 ==247102== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind416 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 424 in state 4 Runner 2 (id 185908) running test 425 in state 4 Runner 3 (id 185910) running test 420 in state 4 Runner 4 (id 185912) running test 421 in state 4 Runner 5 (id 185914) running test 423 in state 4 Runner 6 (id 185916) running test 419 in state 4 Runner 7 (id 185918)CMD (5888): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind419 ../src/curl -q --output log/6/curl419.out --include --trace-ascii log/6/trace419 --trace-time http://127.0.0.1:38277/419 -D loggg/save-here/fails > log/6/stdout419 2> log/6/stderr419 CMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind422 ../src/curl -q --output log/8/curl422.out --include --trace-ascii log/8/trace422 --trace-time -O -I --next http://127.0.0.1:39461/422 > log/8/stdout422 2> log/8/stderr422 CMD (15616): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind418 ../src/curl -q --output log/7/curl418.out --include --trace-ascii log/7/trace418 --trace-time http://127.0.0.1:34897/418 -sS --tr-encoding > log/7/stdout418 2> log/7/stderr418 running test 418 in state 4 Runner 8 (id 185920) running test 422 in state 4 test 0419...[--dump-header to file that cannot be created] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind419 ../src/curl -q --output log/6/curl419.out --include --trace-ascii log/6/trace419 --trace-time http://127.0.0.1:38277/419 -D loggg/save-here/fails > log/6/stdout419 2> log/6/stderr419 valgrind ERROR ==247487== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 419 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind419 ../src/curl -q --output log/6/curl419.out --include --trace-ascii log/6/trace419 --trace-time http://127.0.0.1:38277/419 -D loggg/save-here/fails > log/6/stdout419 2> log/6/stderr419 === End of file commands.log === Start of file http_server.log 01:17:03.196846 ====> Client connect 01:17:03.197004 accept_connection 3 returned 4 01:17:03.197076 accept_connection 3 returned 0 01:17:03.203972 Read 93 bytes 01:17:03.204088 Process 93 bytes request 01:17:03.204177 Got request: GET /verifiedserver HTTP/1.1 01:17:03.204237 Are-we-friendly question received 01:17:03.204348 Wrote request (93 bytes) input to log/6/server.input 01:17:03.204436 Identifying ourselves as friends 01:17:03.204613 Response sent (57 bytes) and written to log/6/server.response 01:17:03.204671 special request received, no persistency 01:17:03.204721 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 34478 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 419 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 === End of file server.response === Start of file stderr419 curl: Failed to open loggg/save-here/fails curl: (23) Failed writing received data to disk/application === End of file stderr419 === Start of file valgrind419 ==247487== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind419 test 0422...[use --next with missing URL before it] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind422 ../src/curl -q --output log/8/curl422.out --include --trace-ascii log/8/trace422 --trace-time -O -I --next http://127.0.0.1:39461/422 > log/8/stdout422 2> log/8/stderr422 valgrind ERROR ==247693== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 422 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind422 ../src/curl -q --output log/8/curl422.out --include --trace-ascii log/8/trace422 --trace-time -O -I --next http://127.0.0.1:39461/422 > log/8/stdout422 2> log/8/stderr422 === End of file commands.log === Start of file server.cmd Testnum 422 === End of file server.cmd === Start of file stderr422 curl: missing URL before --next curl: option --next: is badly used here curl: try 'curl --help' for more information === End of file stderr422 === Start of file valgrind422 ==247693== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind422 test 0418...[Response with multiple Transfer-Encoding headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind418 ../src/curl -q --output log/7/curl418.out --include --trace-ascii log/7/trace418 --trace-time http://127.0.0.1:34897/418 -sS --tr-encoding > log/7/stdout418 2> log/7/stderr418 valgrind ERROR ==247319== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 418 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind418 ../src/curl -q --output log/7/curl418.out --include --trace-ascii log/7/trace418 --trace-time http://127.0.0.1:34897/418 -sS --tr-encoding > log/7/stdout418 2> log/7/stderr418 === End of file commands.log === Start of file curl418.out HTTP/1.1 200 swsclose OK Content-Length: 6 Transfer-Encoding: gzip Transfer-Encoding: gzip Transfer-Encoding: gzip Transfer-Encoding: gzip === End of file curl418.out === Start of file http_server.log 01:17:00.705021 ====> Client connect 01:17:00.705186 accept_connection 3 returned 4 01:17:00.705266 accept_connection 3 returned 0 01:17:00.712056 Read 93 bytes 01:17:00.712203 Process 93 bytes request 01:17:00.712297 Got request: GET /verifiedserver HTTP/1.1 01:17:00.712364 Are-we-friendly question received 01:17:00.712491 Wrote request (93 bytes) input to log/7/server.input 01:17:00.712589 Identifying ourselves as friends 01:17:00.712775 Response sent (57 bytes) and written to log/7/server.response 01:17:00.712842 special request received, no persistency 01:17:00.712901 ====> Client disconnect 0 01:17:48.188943 ====> Client connect 01:17:48.189082 accept_connection 3 returned 4 01:17:48.189159 accept_connection 3 returned 0 01:17:49.137003 Read 108 bytes 01:17:49.159644 Process 108 bytes request 01:17:49.159801 Got request: GET /418 HTTP/1.1 01:17:49.159883 Serve test number 418 part 0 01:17:49.160080 - request found to be complete (418) 01:17:49.160337 Wrote request (108 bytes) input to log/7/server.input 01:17:49.160439 Send response test418 section 01:17:49.160665 connection close instruction "swsclose" found in response 01:17:49.160955 Response sent (266 bytes) and written to log/7/server.response 01:17:49.161022 instructed to close connection after server-reply 01:17:49.161081 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 59632 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 418 === End of file server.cmd === Start of file server.input GET /418 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* TE: gzip Connection: TE === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 swsclose OK Content-Length: 6 Transfer-Encoding: gzip Transfer-Encoding: gzip Transfer-Encoding: gzip Transfer-Encoding: gzip Transfer-Encoding: gzip Transfer-Encoding: gzip Transfer-Encoding: gzip Transfer-Encoding: gzip Transfer-Encoding: gzip -foo- === End of file server.response === Start of file stderr418 curl: (61) Reject response due to more than 5 content encodings === End of file stderr418 === Start of file trace418 01:17:48.200233 * Trying 127.0.0.1:34897... 01:17:49.092290 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 36720 01:17:49.209305 * using HTTP/1.x 01:17:49.558668 => Send header, 108 bytes (0x6c) 0000: GETCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind421 ../src/curl -q --output log/4/curl421.out --include --trace-ascii log/4/trace421 --trace-time http://127.0.0.1:42621/421 -w '%{stderr}%{header_json}\n' -s > log/4/stdout421 2> log/4/stderr421 /418 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: TE: gzip 005a: Connection: TE 006a: 01:17:49.951927 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 200 swsclose OK. 01:17:50.298774 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:17:50.899340 <= Recv header, 24 bytes (0x18) 0000: Transfer-Encoding: gzip. 01:17:50.946565 <= Recv header, 24 bytes (0x18) 0000: Transfer-Encoding: gzip. 01:17:50.955756 <= Recv header, 24 bytes (0x18) 0000: Transfer-Encoding: gzip. 01:17:50.962138 <= Recv header, 24 bytes (0x18) 0000: Transfer-Encoding: gzip. 01:17:51.009322 * Reject response due to more than 5 content encodings 01:17:51.393805 * closing connection #0 === End of file trace418 === Start of file valgrind418 ==247319== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind418 test 0421...[HTTP GET multiple headers and %{header_json}] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind421 ../src/curl -q --output log/4/curl421.out --include --trace-ascii log/4/trace421 --trace-time http://127.0.0.1:42621/421 -w '%{stderr}%{header_json}\n' -s > log/4/stdout421 2> log/4/stderr421 valgrind ERROR ==247679== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 421 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind421 ../src/curl -q --output log/4/curl421.out --include --trace-ascii log/4/trace421 --trace-time http://127.0.0.1:42621/421 -w '%{stderr}%{header_json}\n' -s > log/4/stdout421 2> log/4/stderr421 === End of file commands.log === Start of file curl421.out HTTP/1.1 200 OK server: nginx date: Tue, 07 Mar 2023 15:14:41 GMT content-type: application/json content-length: 6 vary: Accept-Encoding access-control-allow-origin: * vary: Accept-Encoding referrer-policy: strict-origin-when-cross-origin access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS access-control-max-age: 1728000 access-control-allow-headers: Authorization, Content-Type, AuthorizationOauth, X-EARLY-ACCESS access-control-expose-headers: vary: Accept etag: W/"2678f9ab2ba550d164e7cc014aefd31e" cache-control: max-age=0, private, must-revalidate x-request-id: 375b343b3d2ecf9b442c0daf00fc4a9a strict-transport-security: max-age=31536000; includeSubDomains x-content-type-options: nosniff x-xss-protection: 1; mode=block referrer-policy: strict-origin-when-cross-origin feature-policy: accelerometer 'none'; camera 'none'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none' -foo- === End of file curl421.out === Start of file http_server.log 01:17:05.474852 ====> Client connect 01:17:05.475031 accept_connection 3 returned 4 01:17:05.475110 accept_connection 3 returned 0 01:17:05.482659 Read 93 bytes 01:17:05.482841 Process 93 bytes request 01:17:05.482953 Got request: GET /verifiedserver HTTP/1.1 01:17:05.483024 Are-we-friendly question received 01:17:05.483167 Wrote request (93 bytes) input to log/4/server.input 01:17:05.483277 Identifying ourselves as friends 01:17:05.483468 Response sent (57 bytes) and written to log/4/server.response 01:17:05.483532 special request received, no persistency 01:17:05.483591 ====> Client disconnect 0 01:17:53.141010 ====> Client connect 01:17:53.141150 accept_connection 3 returned 4 01:17:53.141230 accept_connection 3 returned 0 01:17:54.208209 Read 82 bytes 01:17:54.208422 Process 82 bytes request 01:17:54.208534 Got request: GET /421 HTTP/1.1 01:17:54.208617 Serve test number 421 part 0 01:17:54.208859 - request found to be complete (421) 01:17:54.209179 Wrote request (82 bytes) input to log/4/server.input 01:17:54.209303 Send response test421 section 01:17:54.209912 Response sent (977 bytes) and written to log/4/server.response 01:17:54.209991 => persistent connection request ended, awaits new request 01:17:57.210203 Connection closed by client 01:17:57.210433 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 49850 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 421 === End of file server.cmd === Start of file server.input GET /421 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK server: nginx date: Tue, 07 Mar 2023 15:14:41 GMT content-type: application/json content-length: 6 vary: Accept-Encoding access-control-allow-origin: * vary: Accept-Encoding referrer-policy: strict-origin-when-cross-origin access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS access-control-max-age: 1728000 access-control-allow-headers: Authorization, Content-Type, AuthorizationOauth, X-EARLY-ACCESS access-control-expose-headers: vary: Accept etag: W/"2678f9ab2ba550d164e7cc014aefd31e" cache-control: max-age=0, private, must-revalidate x-request-id: 375b343b3d2ecf9b442c0daf00fc4a9a strict-transport-security: max-age=31536000; includeSubDomains x-content-type-options: nosniff x-xss-protection: 1; mode=block referrer-policy: strict-origin-when-cross-origin feature-policy: accelerometer 'none'; camera 'none'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none' -foo- === End of file server.response === Start of file stderr421 {"server":["nginx"], "date":["Tue, 07 Mar 2023 15:14:41 GMT"], "content-type":["application/json"], "content-length":["6"], "vary":["Accept-Encoding","Accept-Encoding","Accept"], "access-control-allow-origin":["*"], "referrer-policy":["strict-origin-when-cross-origin","strict-origin-when-cross-origin"], "access-control-allow-methods":["GET, POST, PUT, DELETE, OPTIONS"], "access-control-max-age":["1728000"], "access-control-allow-headers":["Authorization, Content-Type, AuthorizationOauth, X-EARLY-ACCESS"], "access-control-expose-headers":[""], "etag":["W/\"2678f9ab2ba550d164e7cc014aefd31e\""], "cache-control":["max-age=0, private, must-revalidate"], "x-request-id":["375b343b3d2ecf9b442c0daf00fc4a9a"], "strict-transport-security":["max-age=31536000; includeSubDomains"], "x-content-type-options":["nosniff"], "x-xss-protection":["1; mode=block"], "feature-policy":["accelerometer 'none'; camera 'none'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none'"] } === End of file stderr421 === Start of file trace421 01:17:52.098758 * Trying 127.0.0.1:42621... 01:17:53.129290 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 49288 01:17:53.262047 * using HTTP/1.x 01:17:53.638309 => Send header, 82 bytes (0x52) 0000: GET /421 HTTP/1.1 0013: Host: 127.0.0.1:42621 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:17:54.044779 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:17:54.386586 <= Recv header, 15 bytes (0xf) 0000: server: nginx 01:17:54.477259 <= Recv header, 37 bytes (0x25) 0000: date: Tue, 07 Mar 2023 15:14:41 GMT 01:17:54.547391 <= Recv header, 32 bytes (0x20) 0000: content-type: application/json 01:17:54.575910 <= Recv header, 19 bytes (0x13) 0000: content-length: 6 01:17:54.587669 <= Recv header, 23 bytes (0x17) 0000: vary: Accept-Encoding 01:17:54.596272 <= Recv header, 32 bytes (0x20) 0000: access-control-allow-origin: * 01:17:54.602444 <= Recv heaCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind420 ../src/curl -q --output log/3/curl420.out --include --trace-ascii log/3/trace420 --trace-time http://127.0.0.1:46853/func_test/del_cookie -b log/3/cookie420 -c log/3/save420 > log/3/stdout420 2> log/3/stderr420 der, 23 bytes (0x17) 0000: vary: Accept-Encoding 01:17:54.610168 <= Recv header, 50 bytes (0x32) 0000: referrer-policy: strict-origin-when-cross-origin 01:17:54.617911 <= Recv header, 63 bytes (0x3f) 0000: access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS 01:17:54.626544 <= Recv header, 33 bytes (0x21) 0000: access-control-max-age: 1728000 01:17:54.632173 <= Recv header, 95 bytes (0x5f) 0000: access-control-allow-headers: Authorization, Content-Type, Autho 0040: rizationOauth, X-EARLY-ACCESS 01:17:54.647472 <= Recv header, 33 bytes (0x21) 0000: access-control-expose-headers: 01:17:54.653258 <= Recv header, 14 bytes (0xe) 0000: vary: Accept 01:17:54.656488 <= Recv header, 44 bytes (0x2c) 0000: etag: W/"2678f9ab2ba550d164e7cc014aefd31e" 01:17:54.671223 <= Recv header, 52 bytes (0x34) 0000: cache-control: max-age=0, private, must-revalidate 01:17:54.680527 <= Recv header, 48 bytes (0x30) 0000: x-request-id: 375b343b3d2ecf9b442c0daf00fc4a9a 01:17:54.689200 <= Recv header, 64 bytes (0x40) 0000: strict-transport-security: max-age=31536000; includeSubDomains 01:17:54.697943 <= Recv header, 33 bytes (0x21) 0000: x-content-type-options: nosniff 01:17:54.703115 <= Recv header, 33 bytes (0x21) 0000: x-xss-protection: 1; mode=block 01:17:54.708493 <= Recv header, 50 bytes (0x32) 0000: referrer-policy: strict-origin-when-cross-origin 01:17:54.715619 <= Recv header, 159 bytes (0x9f) 0000: feature-policy: accelerometer 'none'; camera 'none'; geolocation 0040: 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none 0080: '; payment 'none'; usb 'none' 01:17:54.808944 <= Recv header, 2 bytes (0x2) 0000: 01:17:54.867680 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:17:55.419222 * Connection #0 to host 127.0.0.1:42621 left intact === End of file trace421 === Start of file valgrind421 ==247679== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind421 test 0420...[Setting cookies set with expired dates that were loaded from jar] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind420 ../src/curl -q --output log/3/curl420.out --include --trace-ascii log/3/trace420 --trace-time http://127.0.0.1:46853/func_test/del_cookie -b log/3/cookie420 -c log/3/save420 > log/3/stdout420 2> log/3/stderr420 valgrind ERROR ==247657== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 420 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind420 ../src/curl -q --output log/3/curl420.out --include --trace-ascii log/3/trace420 --trace-time http://127.0.0.1:46853/func_test/del_cookie -b log/3/cookie420 -c log/3/save420 > log/3/stdout420 2> log/3/stderr420 === End of file commands.log === Start of file cookie420 127.0.0.1 FALSE /func_test FALSE 21709598616 mycookie6 991 #HttpOnly_127.0.0.1 FALSE /func_test FALSE 21709598616 mycookie5 990 #HttpOnly_127.0.0.1 FALSE /func_test FALSE 21709598616 mycookie4 950 #HttpOnly_127.0.0.1 FALSE /func_test FALSE 21709598616 mycookie3 900 #HttpOnly_127.0.0.1 FALSE /func_test/ FALSE 21709598616 mycookie2 5900 #HttpOnly_127.0.0.1 FALSE / FALSE 21709598616 mycookie1 4900 #HttpOnly_127.0.0.1 FALSE /func_test/ FALSE 0 mycookie 1200 === End of file cookie420 === Start of file curl420.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Accept-Ranges: bytes Content-Length: 6 Content-Type: text/html Set-Cookie: mycookie=; Max-Age=-1; Expires=Thu, 01 Jan 1970 00:00:00 GMT Set-Cookie: mycookie3=; Path=/func_test; Max-Age=-1; Expires=Thu, 01 Jan 1970 00:00:00 GMT Set-Cookie: mycookie4=; Path=/func_test; Max-Age=-1; Expires=Thu, 01 Jan 1970 00:00: Set-Cookie: mycookie5=; Path=/func_test; Max-Age=-1; Expires=Thu, 01 Jan 1970 00:00:00 GMT Set-Cookie: mycookie6=; Path=/func_test; Max-Age=-1; Expires=Thu, 01 Jan 1970 00:00:00 GMT Set-Cookie: mycookie1=; Path=/; Max-Age=-1; Expires=Thu, 01 Jan 1970 00:00:00 GMT -foo- === End of file curl420.out === Start of file http_server.log 01:17:04.263147 ====> Client connect 01:17:04.263316 accept_connection 3 returned 4 01:17:04.263393 accept_connection 3 returned 0 01:17:04.270048 Read 93 bytes 01:17:04.270166 Process 93 bytes request 01:17:04.270262 Got request: GET /verifiedserver HTTP/1.1 01:17:04.270338 Are-we-friendly question received 01:17:04.270469 Wrote request (93 bytes) input to log/3/server.input 01:17:04.270565 Identifying ourselves as friends 01:17:04.270753 Response sent (57 bytes) and written to log/3/server.response 01:17:04.270817 special request received, no persistency 01:17:04.270874 ====> Client disconnect 0 01:17:52.357531 ====> Client connect 01:17:52.357674 accept_connection 3 returned 4 01:17:52.357749 accept_connection 3 returned 0 01:17:53.599519 Read 214 bytes 01:17:53.599708 Process 214 bytes request 01:17:53.599803 Got request: GET /func_test/del_cookie HTTP/1.1 01:17:53.599945 No test number in path 01:17:53.600095 [log/3/server.cmd] cmdfile says testnum 420 01:17:53.600291 - request found to be complete (420) 01:17:53.600552 Wrote request (214 bytes) input to log/3/server.input 01:17:53.600655 Send response test420 section 01:17:53.601196 Response sent (647 bytes) and written to log/3/server.response 01:17:53.601263 => persistent connection request ended, awaits new request 01:18:02.652828 Connection closed by client 01:18:02.653028 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 40704 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file save420 # Netscape HTTP Cookie File # https://curl.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. #HttpOnly_127.0.0.1 FALSE /func_test/ FALSE 21709598616 mycookie2 5900 === End of file save420 === Start of file server.cmd Testnum 420 === End of file server.cmd === Start of file server.input GET /func_test/del_cookie HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* Cookie: mycookie2=5900; mycookie=1200; mycookie3=900; mycookie4=950; mycookie5=990; mycookie6=991; mycookie1=4900 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Accept-Ranges: bytes Content-Length: 6 Content-Type: text/html Set-Cookie: mycookie=; Max-Age=-1; Expires=Thu, 01 Jan 1970 00:00:00 GMT Set-Cookie: mycookie3=; Path=/func_test; Max-Age=-1; Expires=Thu, 01 Jan 1970 00:00:00 GMT Set-Cookie: mycookie4=; Path=/func_test; Max-Age=-1; Expires=Thu, 01 Jan 1970 00:00: Set-Cookie: mycookie5=; Path=/func_test; Max-Age=-1; Expires=Thu, 01 Jan 1970 00:00:00 GMT Set-Cookie: mycookie6=; Path=/func_test; Max-Age=-1; Expires=Thu, 01 Jan 1970 00:00:00 GMT Set-Cookie: mycookie1=; Path=/; Max-Age=-1; Expires=Thu, 01 Jan 1970 00:00:00 GMT -foo- === End of file server.response === Start of file stderr420 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr420 === Start CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind423 ../src/curl -q --trace-ascii log/5/trace423 --trace-time "http://uuuu:pppp@127.0.0.1:46263/423?qqqq#ffff" "h55p://hello2000:1/423?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:46263/423?qqqq#ffff" -w '%{url.host}+%{url.path}+%{url.scheme}+%{url.user}+%{url.password}+%{url.port}+%{url.query}+%{url.fragment}\n' > log/5/stdout423 2> log/5/stderr423 of file trace420 01:17:52.382487 * Trying 127.0.0.1:46853... 01:17:53.349800 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 41532 01:17:53.485827 * using HTTP/1.x 01:17:54.027556 => Send header, 214 bytes (0xd6) 0000: GET /func_test/del_cookie HTTP/1.1 0024: Host: 127.0.0.1:46853 003b: User-Agent: curl/8.17.0 0054: Accept: */* 0061: Cookie: mycookie2=5900; mycookie=1200; mycookie3=900; mycookie4= 00a1: 950; mycookie5=990; mycookie6=991; mycookie1=4900 00d4: 01:17:54.375305 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:17:54.683333 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:17:54.770305 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:17:54.811493 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:17:54.862329 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:17:55.047791 * Replaced cookie mycookie="" for domain 127.0.0.1, path /func_test/, expire 1 01:17:55.065542 <= Recv header, 74 bytes (0x4a) 0000: Set-Cookie: mycookie=; Max-Age=-1; Expires=Thu, 01 Jan 1970 00:0 0040: 0:00 GMT 01:17:55.129531 * Replaced cookie mycookie3="" for domain 127.0.0.1, path /func_test, expire 1 01:17:55.132140 <= Recv header, 92 bytes (0x5c) 0000: Set-Cookie: mycookie3=; Path=/func_test; Max-Age=-1; Expires=Thu 0040: , 01 Jan 1970 00:00:00 GMT 01:17:55.151937 * Replaced cookie mycookie4="" for domain 127.0.0.1, path /func_test, expire 1 01:17:55.153317 <= Recv header, 86 bytes (0x56) 0000: Set-Cookie: mycookie4=; Path=/func_test; Max-Age=-1; Expires=Thu 0040: , 01 Jan 1970 00:00: 01:17:55.167574 * Replaced cookie mycookie5="" for domain 127.0.0.1, path /func_test, expire 1 01:17:55.168928 <= Recv header, 92 bytes (0x5c) 0000: Set-Cookie: mycookie5=; Path=/func_test; Max-Age=-1; Expires=Thu 0040: , 01 Jan 1970 00:00:00 GMT 01:17:55.188133 * Replaced cookie mycookie6="" for domain 127.0.0.1, path /func_test, expire 1 01:17:55.189498 <= Recv header, 92 bytes (0x5c) 0000: Set-Cookie: mycookie6=; Path=/func_test; Max-Age=-1; Expires=Thu 0040: , 01 Jan 1970 00:00:00 GMT 01:17:55.204071 * Replaced cookie mycookie1="" for domain 127.0.0.1, path /, expire 1 01:17:55.205384 <= Recv header, 83 bytes (0x53) 0000: Set-Cookie: mycookie1=; Path=/; Max-Age=-1; Expires=Thu, 01 Jan 0040: 1970 00:00:00 GMT 01:17:55.296559 <= Recv header, 2 bytes (0x2) 0000: 01:17:55.354560 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:17:55.887015 * Connection #0 to host 127.0.0.1:46853 left intact === End of file trace420 === Start of file valgrind420 ==247657== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind420 test 0423...[-w with url.* variables] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind423 ../src/curl -q --trace-ascii log/5/trace423 --trace-time "http://uuuu:pppp@127.0.0.1:46263/423?qqqq#ffff" "h55p://hello2000:1/423?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:46263/423?qqqq#ffff" -w '%{url.host}+%{url.path}+%{url.scheme}+%{url.user}+%{url.password}+%{url.port}+%{url.query}+%{url.fragment}\n' > log/5/stdout423 2> log/5/stderr423 valgrind ERROR ==248076== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 423 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind423 ../src/curl -q --trace-ascii log/5/trace423 --trace-time "http://uuuu:pppp@127.0.0.1:46263/423?qqqq#ffff" "h55p://hello2000:1/423?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:46263/423?qqqq#ffff" -w '%{url.host}+%{url.path}+%{url.scheme}+%{url.user}+%{url.password}+%{url.port}+%{url.query}+%{url.fragment}\n' > log/5/stdout423 2> log/5/stderr423 === End of file commands.log === Start of file http_server.log 01:17:12.518735 ====> Client connect 01:17:12.518900 accept_connection 3 returned 4 01:17:12.518980 accept_connection 3 returned 0 01:17:12.522549 Read 93 bytes 01:17:12.522638 Process 93 bytes request 01:17:12.522728 Got request: GET /verifiedserver HTTP/1.1 01:17:12.522793 Are-we-friendly question received 01:17:12.522901 Wrote request (93 bytes) input to log/5/server.input 01:17:12.522991 Identifying ourselves as friends 01:17:12.523148 Response sent (57 bytes) and written to log/5/server.response 01:17:12.523210 special request received, no persistency 01:17:12.523268 ====> Client disconnect 0 01:18:00.149250 ====> Client connect 01:18:00.149404 accept_connection 3 returned 4 01:18:00.149486 accept_connection 3 returned 0 01:18:01.238319 Read 122 bytes 01:18:01.238517 Process 122 bytes request 01:18:01.238614 Got request: GET /423?qqqq HTTP/1.1 01:18:01.238686 Serve test number 423 part 0 01:18:01.238900 - request found to be complete (423) 01:18:01.239161 Wrote request (122 bytes) input to log/5/server.input 01:18:01.239269 Send response test423 section 01:18:01.239630 Response sent (261 bytes) and written to log/5/server.response 01:18:01.239700 => persistent connection request ended, awaits new request 01:18:02.978099 Connection closed by client 01:18:02.978310 ====> Client disconnect 0 01:18:04.374981 ====> Client connect 01:18:04.375113 accept_connection 3 returned 4 01:18:04.375191 accept_connection 3 returned 0 01:18:04.433830 Read 122 bytes 01:18:04.434028 Process 122 bytes request 01:18:04.434119 Got request: GET /423?qqqq HTTP/1.1 01:18:04.434185 Serve test number 423 part 0 01:18:04.434366 - request found to be complete (423) 01:18:04.434549 Wrote request (122 bytes) input to log/5/server.input 01:18:04.434625 Send response test423 section 01:18:04.434948 Response sent (261 bytes) and written to log/5/server.response 01:18:04.435009 => persistent connection request ended, awaits new request 01:18:04.578028 Connection closed by client 01:18:04.578213 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 34780 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 423 === End of file server.cmd === Start of file server.input GET /423?qqqq HTTP/1.1 Host: 127.0.0.1:46263 Authorization: Basic dXV1dTpwcHBw User-Agent: curl/8.17.0 Accept: */* GET /423?qqqq HTTP/1.1 Host: 127.0.0.1:46263 Authorization: Basic dTIydTpwMjJw User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 0 Connection: close Content-Type: text/html Funny-head: yesyes HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 0 Connection: close Content-Type: text/html Funny-head: yesyes === End of file server.response === Start of file stderr423 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind424 ../src/curl -q --trace-ascii log/1/trace424 --trace-time "http://uuuu:pppp@127.0.0.1:40641/424?qqqq#ffff" "h55p://hello2000:1/424?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:40641/424?qqqq#ffff" -w '%{urle.host}+%{urle.path}+%{urle.scheme}+%{urle.user}+%{urle.password}+%{urle.port}+%{urle.query}+%{urle.fragment}\n' -x http://127.0.0.1:40641/ -L > log/1/stdout424 2> log/1/stderr424 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (1) Protocol "h55p" not supported curl: (3) URL rejected: Malformed input to a URL function % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 === End of file stderr423 === Start of file stdout423 127.0.0.1+/423+http+uuuu+pppp+46263+qqqq+ffff hello2000+/423+h55p+++1+qqqq+ffff +++++++ 127.0.0.1+/423+http+u22u+p22p+46263+qqqq+ffff === End of file stdout423 === Start of file trace423 01:18:00.227862 * Trying 127.0.0.1:46263... 01:18:01.105299 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 34062 01:18:01.228907 * using HTTP/1.x 01:18:01.359654 * Server auth using Basic with user 'uuuu' 01:18:01.663321 => Send header, 122 bytes (0x7a) 0000: GET /423?qqqq HTTP/1.1 0018: Host: 127.0.0.1:46263 002f: Authorization: Basic dXV1dTpwcHBw 0052: User-Agent: curl/8.17.0 006b: Accept: */* 0078: 01:18:02.033868 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:18:02.256736 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:18:02.342713 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:18:02.366594 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:18:02.374469 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:18:02.381626 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:18:02.414105 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 0 01:18:02.473833 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:18:02.509181 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:18:02.514058 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:18:02.594985 <= Recv header, 2 bytes (0x2) 0000: 01:18:02.679504 * we are done reading and this is set to close, stop send 01:18:02.707803 * abort upload 01:18:03.169741 * shutting down connection #0 01:18:04.347443 * Protocol "h55p" not supported 01:18:04.384417 * closing connection #-1 01:18:04.559984 * URL rejected: Malformed input to a URL function 01:18:04.566637 * closing connection #-1 01:18:04.702494 * Hostname 127.0.0.1 was found in DNS cache 01:18:04.754758 * Trying 127.0.0.1:46263... 01:18:04.786884 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 46226 01:18:04.793074 * using HTTP/1.x 01:18:04.803643 * Server auth using Basic with user 'u22u' 01:18:04.822770 => Send header, 122 bytes (0x7a) 0000: GET /423?qqqq HTTP/1.1 0018: Host: 127.0.0.1:46263 002f: Authorization: Basic dTIydTpwMjJw 0052: User-Agent: curl/8.17.0 006b: Accept: */* 0078: 01:18:04.853681 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:18:04.860181 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:18:04.866295 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:18:04.870668 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:18:04.876333 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:18:04.880446 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:18:04.885113 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 0 01:18:04.891017 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:18:04.896003 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:18:04.899755 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:18:04.907243 <= Recv header, 2 bytes (0x2) 0000: 01:18:04.914030 * we are done reading and this is set to close, stop send 01:18:04.916447 * abort upload 01:18:04.952290 * shutting down connection #1 === End of file trace423 === Start of file valgrind423 ==248076== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind423 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 424 in state 4 Runner 2 (id 185908) running test 425 in state 4 Runner 3 (id 185910) running test 430 in state 4 Runner 4 (id 185912) running test 429 in state 4 Runner 5 (id 185914) running test 431 in state 4 Runner 6 (id 185916) running test 426 in state 4 Runner 7 (id 185918) running test 428 in state 4 Runner 8 (id 185920) running test 427 in state 4 test 0424...[-w with urle.* variables] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind424 ../src/curl -q --trace-ascii log/1/trace424 --trace-time "http://uuuu:pppp@127.0.0.1:40641/424?qqqq#ffff" "h55p://hello2000:1/424?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:40641/424?qqqq#ffff" -w '%{urle.host}+%{urle.path}+%{urle.scheme}+%{urle.user}+%{urle.password}+%{urle.port}+%{urle.query}+%{urle.fragment}\n' -x http://127.0.0.1:40641/ -L > log/1/stdout424 2> log/1/stderr424 valgrind ERROR ==248244== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 424 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind424 ../src/curl -q --trace-ascii log/1/trace424 --trace-time "http://uuuu:pppp@127.0.0.1:40641/424?qqqq#ffff" "h55p://hello2000:1/424?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:40641/424?qqqq#ffff" -w '%{urle.host}+%{urle.path}+%{urle.scheme}+%{urle.user}+%{urle.password}+%{urle.port}+%{urle.query}+%{urle.fragment}\n' -x http://127.0.0.1:40641/ -L > log/1/stdout424 2> log/1/stderr424 === End of file commands.log === Start of file http_server.log 01:17:25.535884 ====> Client connect 01:17:25.536042 accept_connection 3 returned 4 01:17:25.536116 accept_connection 3 returned 0 01:17:25.543193 Read 93 bytes 01:17:25.543285 Process 93 bytes request 01:17:25.543374 Got request: GET /verifiedserver HTTP/1.1 01:17:25.543438 Are-we-friendly question received 01:17:25.543553 Wrote request (93 bytes) input to log/1/server.input 01:17:25.543643 Identifying ourselves as friends 01:17:25.543801 Response sent (57 bytes) and written to log/1/server.response 01:17:25.543860 special request received, no persistency 01:17:25.543913 ====> Client disconnect 0 01:18:13.632211 ====> Client connect 01:18:13.632355 accept_connection 3 returned 4 01:18:13.632430 accept_connection 3 returned 0 01:18:14.806803 Read 174 bytes 01:18:14.807006 Process 174 bytes request 01:18:14.807096 Got request: GET http://127.0.0.1:40641/424?qqqq HTTP/1.1 01:18:14.807167 Serve test number 424 part 0 01:18:14.807401 - request found to be complete (424) 01:18:14.807658 Wrote request (174 bytes) input to log/1/server.input 01:18:14.807760 Send response test424 section 01:18:14.808111 Response sent (321 bytes) and written to log/1/server.response 01:18:14.808176 => persistent connection request ended, awaits new request 01:18:16.409251 Connection closed by client 01:18:16.409466 ====> Client disconnect 0 01:18:16.920812 ====> Client connect 01:18:16.920950 accept_connection 3 returned 4 01:18:16.921030 accept_connection 3 returned 0 01:18:16.999786 Read 165 bytes 01:18:16.999969 Process 165 bytes request 01:18:17.000065 Got request: GET http://anotherhost.example:2023/4240002?moo.html HTTP/1.1 01:18:17.000137 Serve test number 424 part 2 01:18:17.000331 - request found to be complete (424) 01:18:17.000554 Wrote request (165 bytes) input to log/1/server.input 01:18:17.000651 Send response test424 section 01:18:17.001042 Response sent (261 bytes) and written to log/1/server.response 01:18:17.001113 => persistent connection request ended, awaits new request 01:18:17.302245 Connection closed by client 01:18:17.302490 ====> Client disconnect 0 01:18:18.476364 ====> Client connect 01:18:18.476508 accept_connection 3 returned 4 01:18:18.476599 accept_connection 3 returned 0 01:18:18.502052 Read 174 bytes 01:18:18.502196 Process 174 bytes request 01:18:18.502294 Got request: GET http://127.0.0.1:40641/424?qqqq HTTP/1.1 01:18:18.502366 Serve test number 424 part 0 01:18:18.502578 - request found to be complete (424) 01:18:18.502812 Wrote request (174 bytes) input to log/1/server.input 01:18:18.502898 Send response test424 section 01:18:18.503268 Response sent (321 bytes) and written to log/1/server.response 01:18:18.503338 => persistent connection request ended, awaits new request 01:18:18.614679 Connection closed by client 01:18:18.614900 ====> Client disconnect 0 01:18:18.655587 ====> Client connect 01:18:18.655720 accept_connection 3 returned 4 01:18:18.655795 accept_connection 3 returned 0 01:18:18.667924 Read 165 bytes 01:18:18.668057 Process 165 bytes request 01:18:18.668153 Got request: GET http://anotherhost.example:2023/4240002?moo.html HTTP/1.1 01:18:18.668224 Serve test number 424 part 2 01:18:18.668432 - request found to be complete (424) 01:18:18.668666 Wrote request (165 bytes) input to log/1/server.input 01:18:18.668755 Send response test424 section 01:18:18.669133 Response sent (261 bytes) and written to log/1/server.response 01:18:18.669205 => persistent connection request ended, awaits new request 01:18:18.761333 Connection closed by client 01:18:18.761506 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 47720 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 424 === End of file server.cmd === Start of file server.input GET http://127.0.0.1:40641/424?qqqq HTTP/1.1 Host: 127.0.0.1:40641 Authorization: Basic dXV1dTpwcHBw User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://anotherhost.example:2023/4240002?moo.html HTTP/1.1 Host: anotherhost.example:2023 User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://127.0.0.1:40641/424?qqqq HTTP/1.1 Host: 127.0.0.1:40641 Authorization: Basic dTIydTpwMjJw User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://anotherhost.example:2023/4240002?moo.html HTTP/1.1 Host: anotherhost.example:2023 User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 301 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 0 Connection: close Content-Type: text/html Funny-head: yesyes Location: http://anotherhost.example:2023/4240002?moo.html HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 0 Connection: close Content-Type: text/html Funny-head: yesyes HTTP/1.1 301 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 0 Connection: close Content-Type: text/html Funny-head: yesyes Location: http://anotherhost.example:2023/4240002?moo.html HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 0 Connection: close Content-Type: text/html Funny-head: yesyes === End of file server.response === Start of file stderr424 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 curl: (1) Protocol "h55p" not supported curl: (3) URL rejected: Malformed input to a URL function % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 === End of file stderr424 === Start of file stdout424 anotherhost.example+/4240002+http+++2023+moo.html+ hello2000+/424+h55p+++1+qqqq+ffff +++++++ anotherhost.example+/4240002+http+++2023+moo.html+ === End of file stdout424 === Start of file trace424 01:18:12.710029 * Trying 127.0.0.1:40641... 01:18:13.584626 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 58838 01:18:13.709451 * using HTTP/1.x 01:18:13.855822 * Server auth using Basic with user 'uuuu' 01:18:14.229062 => Send header, 174 bytes (0xae) 0000: GET http://127.0.0.1:40641/424?qqqq HTTP/1.1 002e: Host: 127.0.0.1:40641 0045: Authorization: Basic dXV1dTpwcHBw 0068: User-Agent: curl/8.17.0 0081: Accept: */* 008e: Proxy-Connection: Keep-Alive 00ac: 01:18:14.557212 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 301 OK 01:18:14.771601 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:18:14.854117 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:18:14.876324 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:18:14.882902 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:18:14.888892 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:18:14.916822 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 0 01:18:14.972080 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:18:15.008451 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:18:15.014445 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:18:15.051613 <= Recv header, 60 bytes (0x3c) 0000: Location: http://anotherhost.example:2023/4240002?moo.html 01:18:15.136240 <= Recv header, 2 bytes (0x2) 0000: 01:18:15.603186 * shutting down connection #0 01:18:16.050386 * Clear auth, redirects to port from 40641 to 2023 01:18:16.083517 * Issue another request to this URL: 'http://anotherhost.example:2023/4240002?moo.html' 01:18:16.259188 * Hostname 127.0.0.1 was found in DNS cache 01:18:16.301029 * Trying 127.0.0.1:40641... 01:18:16.339755 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 58848 01:18:16.346626 * using HTTP/1.x 01:18:16.389150 => Send header, 165 bytes (0xa5) 0000: GET http://anotherhost.example:2023/4240002?moo.html HTTP/1.1 003f: Host: anotherhost.example:2023 005f: User-Agent: curl/8.17.0 0078: Accept: */* 0085: Proxy-Connection: Keep-Alive 00a3: 01:18:16.445801 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:18:16.453543 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:18:16.463397 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:18:16.469315 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:18:16.475816 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind425 ../src/curl -q --output log/2/curl425.out --include --trace-ascii log/2/trace425 --trace-time -T log/2/up425 http://127.0.0.1:39863/425/?fullpath > log/2/stdout425 2> log/2/stderr425 -dc7-39462498" 01:18:16.480396 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:18:16.486036 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 0 01:18:16.492836 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:18:16.497385 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:18:16.501609 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:18:16.517301 <= Recv header, 2 bytes (0x2) 0000: 01:18:16.555464 * we are done reading and this is set to close, stop send 01:18:16.575061 * abort upload 01:18:16.674057 * shutting down connection #1 01:18:17.507829 * Protocol "h55p" not supported 01:18:17.545586 * closing connection #-1 01:18:17.735054 * URL rejected: Malformed input to a URL function 01:18:17.741736 * closing connection #-1 01:18:17.831135 * Hostname 127.0.0.1 was found in DNS cache 01:18:17.861054 * Trying 127.0.0.1:40641... 01:18:17.867683 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 58862 01:18:17.869653 * using HTTP/1.x 01:18:17.880231 * Server auth using Basic with user 'u22u' 01:18:17.889715 => Send header, 174 bytes (0xae) 0000: GET http://127.0.0.1:40641/424?qqqq HTTP/1.1 002e: Host: 127.0.0.1:40641 0045: Authorization: Basic dTIydTpwMjJw 0068: User-Agent: curl/8.17.0 0081: Accept: */* 008e: Proxy-Connection: Keep-Alive 00ac: 01:18:17.918038 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 301 OK 01:18:17.921675 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:18:17.927169 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:18:17.931475 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:18:17.937806 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:18:17.942253 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:18:17.946114 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 0 01:18:17.949732 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:18:17.954658 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:18:17.958770 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:18:17.964813 <= Recv header, 60 bytes (0x3c) 0000: Location: http://anotherhost.example:2023/4240002?moo.html 01:18:17.974719 <= Recv header, 2 bytes (0x2) 0000: 01:18:17.995270 * shutting down connection #2 01:18:18.012092 * Clear auth, redirects to port from 40641 to 2023 01:18:18.016651 * Issue another request to this URL: 'http://anotherhost.example:2023/4240002?moo.html' 01:18:18.036772 * Hostname 127.0.0.1 was found in DNS cache 01:18:18.040275 * Trying 127.0.0.1:40641... 01:18:18.045279 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 58866 01:18:18.047251 * using HTTP/1.x 01:18:18.055574 => Send header, 165 bytes (0xa5) 0000: GET http://anotherhost.example:2023/4240002?moo.html HTTP/1.1 003f: Host: anotherhost.example:2023 005f: User-Agent: curl/8.17.0 0078: Accept: */* 0085: Proxy-Connection: Keep-Alive 00a3: 01:18:18.078804 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:18:18.082492 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:18:18.088017 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:18:18.092197 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:18:18.098454 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:18:18.102961 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:18:18.106808 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 0 01:18:18.110550 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:18:18.114270 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:18:18.118383 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:18:18.122432 <= Recv header, 2 bytes (0x2) 0000: 01:18:18.126509 * we are done reading and this is set to close, stop send 01:18:18.128785 * abort upload 01:18:18.144595 * shutting down connection #3 === End of file trace424 === Start of file valgrind424 ==248244== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind424 test 0425...[HTTP PUT with path ending with slash + query] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind425 ../src/curl -q --output log/2/curl425.out --include --trace-ascii log/2/trace425 --trace-time -T log/2/up425 http://127.0.0.1:39863/425/?fullpath > log/2/stdout425 2> log/2/stderr425 valgrind ERROR ==248442== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 425 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind425 ../src/curl -q --output log/2/curl425.out --include --trace-ascii log/2/trace425 --trace-time -T log/2/up425 http://127.0.0.1:39863/425/?fullpath > log/2/stdout425 2> log/2/stderr425 === End of file commands.log === Start of file curl425.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Connection: close Content-Type: text/html -foo- === End of file curl425.out === Start of file http_server.log 01:17:34.952011 ====> Client connect 01:17:34.952173 accept_connection 3 returned 4 01:17:34.952249 accept_connection 3 returned 0 01:17:34.958810 Read 93 bytes 01:17:34.958897 Process 93 bytes request 01:17:34.958988 Got request: GET /verifiedserver HTTP/1.1 01:17:34.959052 Are-we-friendly question received 01:17:34.959164 Wrote request (93 bytes) input to log/2/server.input 01:17:34.959253 Identifying ourselves as friends 01:17:34.959425 Response sent (57 bytes) and written to log/2/server.response 01:17:34.959488 special request received, no persistency 01:17:34.959542 ====> Client disconnect 0 01:18:22.562460 ====> Client connect 01:18:22.562601 accept_connection 3 returned 4 01:18:22.562675 accept_connection 3 returned 0 01:18:23.794662 Read 119 bytes 01:18:23.794840 Process 119 bytes request 01:18:23.794932 Got request: PUT /425/?fullpath HTTP/1.1 01:18:23.795066 No test number in path 01:18:23.795199 [log/2/server.cmd] cmdfile says testnum 425 01:18:23.795377 - request found to be complete (425) 01:18:23.795522 Found Content-Length: 8 in the request 01:18:23.795684 Wrote request (119 bytes) input to log/2/server.input 01:18:23.795788 Send response test425 section 01:18:23.796106 Response sent (125 bytes) and written to log/2/server.response 01:18:23.796172 => persistent connection request ended, awaits new request 01:18:25.677388 Connection closed by client 01:18:25.677566 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 59756 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 425 === End of file server.cmd === Start of file server.input PUT /425/?fullpath HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* Content-Length: 8 content === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Connection: close Content-Type: text/html -foo- === End of file server.response === Start of file stderr425 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:-CMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind426 ../src/curl -q --output log/6/curl426.out --include --trace-ascii log/6/trace426 --trace-time http://127.0.0.1:38277/426 -d foobar -C 3 > log/6/stdout426 2> log/6/stderr426 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind428 ../src/curl -q --output log/7/curl428.out --include --trace-ascii log/7/trace428 --trace-time http://127.0.0.1:34897/428 -K log/7/cmd > log/7/stdout428 2> log/7/stderr428 -:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 8 0 0 100 8 0 2 0:00:04 0:00:03 0:00:01 3 100 14 100 6 100 8 1 1 0:00:08 0:00:04 0:00:04 4 100 14 100 6 100 8 1 1 0:00:08 0:00:04 0:00:04 4 === End of file stderr425 === Start of file trace425 01:18:21.643238 * Trying 127.0.0.1:39863... 01:18:22.551444 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 39742 01:18:22.685305 * using HTTP/1.x 01:18:23.216629 => Send header, 111 bytes (0x6f) 0000: PUT /425/?fullpath HTTP/1.1 001d: Host: 127.0.0.1:39863 0034: User-Agent: curl/8.17.0 004d: Accept: */* 005a: Content-Length: 8 006d: 01:18:23.314081 => Send data, 8 bytes (0x8) 0000: content. 01:18:23.387069 * upload completely sent off: 8 bytes 01:18:23.668989 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:18:23.961099 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:18:24.072057 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:18:24.139804 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:18:24.176264 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:18:24.255117 <= Recv header, 2 bytes (0x2) 0000: 01:18:24.309432 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:18:24.856352 * shutting down connection #0 === End of file trace425 === Start of file up425 content === End of file up425 === Start of file valgrind425 ==248442== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind425 test 0426...[try --data with --continue-at] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind426 ../src/curl -q --output log/6/curl426.out --include --trace-ascii log/6/trace426 --trace-time http://127.0.0.1:38277/426 -d foobar -C 3 > log/6/stdout426 2> log/6/stderr426 valgrind ERROR ==248639== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 426 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind426 ../src/curl -q --output log/6/curl426.out --include --trace-ascii log/6/trace426 --trace-time http://127.0.0.1:38277/426 -d foobar -C 3 > log/6/stdout426 2> log/6/stderr426 === End of file commands.log === Start of file http_server.log 01:17:49.680041 ====> Client connect 01:17:49.680203 accept_connection 3 returned 4 01:17:49.680277 accept_connection 3 returned 0 01:17:49.687205 Read 93 bytes 01:17:49.687320 Process 93 bytes request 01:17:49.687410 Got request: GET /verifiedserver HTTP/1.1 01:17:49.687473 Are-we-friendly question received 01:17:49.687586 Wrote request (93 bytes) input to log/6/server.input 01:17:49.687685 Identifying ourselves as friends 01:17:49.687881 Response sent (57 bytes) and written to log/6/server.response 01:17:49.687950 special request received, no persistency 01:17:49.688015 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 42584 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 426 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 === End of file server.response === Start of file stderr426 curl: cannot mix --continue-at with --data curl: (2) Failed initialization === End of file stderr426 === Start of file valgrind426 ==248639== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind426 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 432 in state 4 Runner 2 (id 185908) running test 434 in state 4 Runner 3 (id 185910) running test 430 in state 4 Runner 4 (id 185912) running test 429 in state 4 Runner 5 (id 185914) running test 431 in state 4 Runner 6 (id 185916) running test 435 in state 4 Runner 7 (id 185918) running test 428 in state 4 Runner 8 (id 185920) running test 427 in state 4 setenv FUNVALUE = contents setenv VALUE2 = curl setenv BLANK = test 0428...[Expand environment variables within config file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind428 ../src/curl -q --output log/7/curl428.out --include --trace-ascii log/7/trace428 --trace-time http://127.0.0.1:34897/428 -K log/7/cmd > log/7/stdout428 2> log/7/stderr428 valgrind ERROR ==248948== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 428 === Start of file cmd --variable %FUNVALUE --variable %VALUE2 --variable %BLANK --variable %curl_NOT_SET=default --expand-data 1{{FUNVALUE}}2{{VALUE2}}3{{curl_NOT_SET}}4{{BLANK}}5\{{verbatim}}6{{not.good}}7{{}} === End of file cmd === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind428 ../src/curl -q --output log/7/curl428.out --include --trace-ascii log/7/trace428 --trace-time http://127.0.0.1:34897/428 -K log/7/cmd > log/7/stdout428 2> log/7/stderr428 === End of file commands.log === Start of file curl428.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl428.out === Start of file http_server.log 01:17:55.197227 ====> Client connect 01:17:55.197386 accept_connection 3 returned 4 01:17:55.197469 accept_connection 3 returned 0 01:17:55.203668 Read 93 bytes 01:17:55.203768 Process 93 bytes request 01:17:55.203857 Got request: GET /verifiedserver HTTP/1.1 01:17:55.203922 Are-we-friendly question received 01:17:55.204038 Wrote request (93 bytes) input to log/7/server.input 01:17:55.204129 Identifying ourselves as friends 01:17:55.204306 Response sent (57 bytes) and written to log/7/server.response 01:17:55.204375 special request received, no persistency 01:17:55.204430 ====> Client disconnect 0 01:18:43.578202 ====> Client connect 01:18:43.578344 accept_connection 3 returned 4 01:18:43.578420 accept_connection 3 returned 0 01:18:44.726090 Read 206 bytes 01:18:44.726293 Process 206 bytes request 01:18:44.726388 Got request: POST /428 HTTP/1.1 01:18:44.726457 Serve test number 428 part 0 01:18:44.726637 - request found to be complete (428) 01:18:44.726799 Found Content-Length: 54 in the request 01:18:44.726960 Wrote request (206 bytes) input to log/7/server.input 01:18:44.727068 Send response test428 section 01:18:44.727425 Response sent (267 bytes) and written to log/7/server.response 01:18:44.727494 => persistent connection request ended, awaits new request 01:18:46.679139 Connection closed by client 01:18:46.679329 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 60246 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind429 ../src/curl -q --output log/4/curl429.out --include --trace-ascii log/4/trace429 --trace-time http://127.0.0.1:42621/429 -K log/4/cmd > log/4/stdout429 2> log/4/stderr429 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 428 === End of file server.cmd === Start of file server.input POST /428 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* Content-Length: 54 Content-Type: application/x-www-form-urlencoded 1contents2curl3default45{{verbatim}}6{{not.good}}7{{}} === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr428 Warning: bad variable name: not.good Warning: bad variable name length Warning: '1{{FUNVALUE}}2{{VALUE2}}3{{curl_NOT_SET}}4{{BLANK}}5\{{verbatim}}6{{n Warning: ot.good}}7{{}}' % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 54 0 0 100 54 0 15 0:00:03 0:00:03 --:--:-- 23 100 60 100 6 100 54 1 11 0:00:06 0:00:04 0:00:02 17 100 60 100 6 100 54 1 11 0:00:06 0:00:04 0:00:02 17 === End of file stderr428 === Start of file trace428 01:18:43.636959 * Trying 127.0.0.1:34897... 01:18:44.526633 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 51120 01:18:44.654958 * using HTTP/1.x 01:18:45.152304 => Send header, 152 bytes (0x98) 0000: POST /428 HTTP/1.1 0014: Host: 127.0.0.1:34897 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: Content-Length: 54 0065: Content-Type: application/x-www-form-urlencoded 0096: 01:18:45.259148 => Send data, 54 bytes (0x36) 0000: 1contents2curl3default45{{verbatim}}6{{not.good}}7{{}} 01:18:45.337672 * upload completely sent off: 54 bytes 01:18:45.620314 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:18:45.888470 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:18:45.985904 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:18:46.012087 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:18:46.021646 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:18:46.029643 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:18:46.063403 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:18:46.121871 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:18:46.158407 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:18:46.163390 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:18:46.245117 <= Recv header, 2 bytes (0x2) 0000: 01:18:46.305703 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:18:46.867117 * shutting down connection #0 === End of file trace428 === Start of file valgrind428 ==248948== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind428 setenv FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF = contents2023 test 0429...[Expand environment variable in config file - too long name] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind429 ../src/curl -q --output log/4/curl429.out --include --trace-ascii log/4/trace429 --trace-time http://127.0.0.1:42621/429 -K log/4/cmd > log/4/stdout429 2> log/4/stderr429 valgrind ERROR ==249118== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 429 === Start of file cmd --expand-data {{FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF}} === End of file cmd === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind429 ../src/curl -q --output log/4/curl429.out --include --trace-ascii log/4/trace429 --trace-time http://127.0.0.1:42621/429 -K log/4/cmd > log/4/stdout429 2> log/4/stderr429 === End of file commands.log === Start of file curl429.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl429.out === Start of file http_server.log 01:18:00.604844 ====> Client connect 01:18:00.605006 accept_connection 3 returned 4 01:18:00.605086 accept_connection 3 returned 0 01:18:00.610481 Read 93 bytes 01:18:00.610609 Process 93 bytes request 01:18:00.610701 Got request: GET /verifiedserver HTTP/1.1 01:18:00.610768 Are-we-friendly question received 01:18:00.610888 Wrote request (93 bytes) input to log/4/server.input 01:18:00.610985 Identifying ourselves as friends 01:18:00.611148 Response sent (57 bytes) and written to log/4/server.response 01:18:00.611215 special request received, no persistency 01:18:00.611272 ====> Client disconnect 0 01:18:47.743211 ====> Client connect 01:18:47.743351 accept_connection 3 returned 4 01:18:47.743429 accept_connection 3 returned 0 01:18:48.891994 Read 286 bytes 01:18:48.892186 Process 286 bytes request 01:18:48.892279 Got request: POST /429 HTTP/1.1 01:18:48.892349 Serve test number 429 part 0 01:18:48.892573 - request found to be complete (429) 01:18:48.892740 Found Content-Length: 133 in the request 01:18:48.892904 Wrote request (286 bytes) input to log/4/server.input 01:18:48.893010 Send response test429 section 01:18:48.893377 Response sent (267 bytes) and written to log/4/server.response 01:18:48.893445 => persistent connection request ended, awaits new request 01:18:50.848664 Connection closed by client 01:18:50.848864 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 49302 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 429 === End of file server.cmd === Start of file server.input POST /429 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* Content-Length: 133 Content-Type: application/x-www-form-urlencoded {{FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF}} === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr429 Warning: bad variable name length Warning: '{{FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF Warning: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF}}' % Total % Received % Xferd Average Speed CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind427 ../src/curl -q --output log/8/curl427.out --include --trace-ascii log/8/trace427 --trace-time http://127.0.0.1:39461/427 -c log/8/cookies427 -L > log/8/stdout427 2> log/8/stderr427 Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 133 0 0 100 133 0 37 0:00:03 0:00:03 --:--:-- 57 100 139 100 6 100 133 1 28 0:00:06 0:00:04 0:00:02 41 100 139 100 6 100 133 1 28 0:00:06 0:00:04 0:00:02 40 === End of file stderr429 === Start of file trace429 01:18:46.806369 * Trying 127.0.0.1:42621... 01:18:47.693464 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 34484 01:18:47.824751 * using HTTP/1.x 01:18:48.318236 => Send header, 153 bytes (0x99) 0000: POST /429 HTTP/1.1 0014: Host: 127.0.0.1:42621 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: Content-Length: 133 0066: Content-Type: application/x-www-form-urlencoded 0097: 01:18:48.423800 => Send data, 133 bytes (0x85) 0000: {{FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0040: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0080: FFF}} 01:18:48.515499 * upload completely sent off: 133 bytes 01:18:48.796614 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:18:49.077347 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:18:49.173172 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:18:49.198654 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:18:49.206783 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:18:49.214172 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:18:49.245791 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:18:49.304525 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:18:49.340365 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:18:49.345254 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:18:49.426062 <= Recv header, 2 bytes (0x2) 0000: 01:18:49.484698 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:18:50.037099 * shutting down connection #0 === End of file trace429 === Start of file valgrind429 ==249118== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind429 test 0427...[Keep Cookie: header within 8190 bytes] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind427 ../src/curl -q --output log/8/curl427.out --include --trace-ascii log/8/trace427 --trace-time http://127.0.0.1:39461/427 -c log/8/cookies427 -L > log/8/stdout427 2> log/8/stderr427 valgrind ERROR ==248774== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 427 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind427 ../src/curl -q --output log/8/curl427.out --include --trace-ascii log/8/trace427 --trace-time http://127.0.0.1:39461/427 -c log/8/cookies427 -L > log/8/stdout427 2> log/8/stderr427 === End of file commands.log === Start of file cookies427 # Netscape HTTP Cookie File # https://curl.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. 127.0.0.1 FALSE "/" FALSE 0 long3 abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh 127.0.0.1 FALSE "/" FALSE 0 long2 abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh 127.0.0.1 FALSE "/" FALSE 0 long1 abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh === End of file cookies427 === Start of file curl427.out HTTP/1.1 301 move along Date: Tue, 09 Nov 2010 14:49:00 GMT Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Set-Cookie: long1=abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh; path="/" Set-Cookie: long2=abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh; path="/" Set-Cookie: long3=abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh; path="/" Location: 4270002 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html -foo- === End of file curl427.out === Start of file http_server.log 01:17:50.740874 ====> Client connect 01:17:50.741043 accept_connection 3 returned 4 01:17:50.741116 accept_connection 3 returned 0 01:17:50.748424 Read 93 bytes 01:17:50.748554 Process 93 bytes request 01:17:50.748643 Got request: GET /verifiedserver HTTP/1.1 01:17:50.748709 Are-we-friendly question received 01:17:50.748831 Wrote request (93 bytes) input to log/8/server.input 01:17:50.748922 Identifying ourselves as friends 01:17:50.749084 Response sent (57 bytes) and written to log/8/server.response 01:17:50.749155 special request received, no persistency 01:17:50.749225 ====> Client disconnect 0 01:18:38.491920 ====> Client connect 01:18:38.492069 accept_connection 3 returned 4 01:18:38.492157 accept_connection 3 returned 0 01:18:39.551298 Read 82 bytes 01:18:39.551490 Process 82 bytes request 01:18:39.551587 Got request: GET /427 HTTP/1.1 01:18:39.551655 Serve test number 427 part 0 01:18:39.551969 - request found to be complete (427) 01:18:39.552331 Wrote request (82 bytes) input to log/8/server.input 01:18:39.552436 Send response test427 section 01:18:39.553982 Response sent (9864 bytes) and written to log/8/server.response 01:18:39.554062 => persistent connection request ended, awaits new request 01:18:42.696283 Connection closed by client 01:18:42.696493 ====> Client disconnect 0 01:18:43.266838 ====> Client connect 01:18:43.266988 accept_connection 3 returned 4 01:18:43.267068 accept_connection 3 returned 0 01:18:43.588098 Read 6510 bytes 01:18:43.588290 Process 6510 bytes request 01:18:43.588392 Got request: GET /4270002 HTTP/1.1 01:18:43.588463 Serve test number 427 part 2 01:18:43.588773 - request found to be complete (427) 01:18:43.589222 Wrote request (6510 bytes) input to log/8/server.input 01:18:43.589306 Send response test427 section 01:18:43.589843 Response sent (147 bytes) and written to log/8/server.response 01:18:43.589910 => persistent connection request ended, awaits new request 01:18:44.627954 Connection closed by client 01:18:44.628142 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 36388 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 427 === End of file server.cmd === Start of file server.input GET /427 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* GET /4270002 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* Cookie: long3=abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh; long2=abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 301 move along Date: Tue, 09 Nov 2010 14:49:00 GMT Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Set-Cookie: long1=abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh; path="/" Set-Cookie: long2=abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh; path="/" Set-Cookie: long3=abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh; path="/" Location: 4270002 -foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html -foo- === End of file server.response === Start of file stderr427 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 6 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:08 --:--:-- 0 100 6 0 6 0 0 0 0 --:--:-- 0:00:08 --:--:-- 4 === End of file stderr427 === Start of file trace427 01:18:38.564783 * Trying 127.0.0.1:39461... 01:18:39.455655 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 59338 01:18:39.597188 * using HTTP/1.x 01:18:39.978680 => Send header, 82 bytes (0x52) 0000: GET /427 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:18:40.306177 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.1 301 move along 01:18:40.607504 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:18:40.695444 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:18:40.735996 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:18:40.795911 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:18:40.830215 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:18:41.038196 * Added cookie long1="abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefg... 01:18:41.076656 <= Recv header, 3230 bytes (0xc9e) 0000: Set-Cookie: long1=abcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0040: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0080: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 00c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0100: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0140: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0180: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 01c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0200: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0240: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0280: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 02c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0300: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0340: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0380: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 03c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0400: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0440: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0480: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 04c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0500: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0540: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0580: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 05c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0600: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0640: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0680: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 06c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0700: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0740: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0780: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 07c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0800: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0840: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0880: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 08c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0900: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0940: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0980: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 09c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0a00: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0a40: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0a80: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0ac0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0b00: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0b40: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0b80: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0bc0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0c00: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0c40: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0c80: ghabcdefghabcdefgh; path="/" 01:18:41.490906 * Added cookie long2="abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefg... 01:18:41.509289 <= Recv header, 3230 bytes (0xc9e) 0000: Set-Cookie: long2=abcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0040: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0080: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 00c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0100: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0140: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0180: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 01c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0200: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0240: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0280: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 02c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0300: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0340: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0380: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 03c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0400: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0440: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0480: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 04c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0500: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0540: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0580: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 05c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0600: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0640: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0680: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 06c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0700: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0740: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0780: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 07c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0800: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0840: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0880: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 08c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0900: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0940: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0980: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 09c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0a00: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0a40: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0a80: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0ac0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0b00: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0b40: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0b80: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0bc0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0c00: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0c40: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0c80: ghabcdefghabcdefgh; path="/" 01:18:41.890421 * Added cookie long3="abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefg... 01:18:41.908944 <= Recv header, 3230 bytes (0xc9e) 0000: Set-Cookie: long3=abcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0040: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0080: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 00c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0100: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0140: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0180: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 01c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0200: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0240: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0280: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 02c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0300: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0340: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0380: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 03c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0400: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0440: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0480: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 04c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0500: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0540: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0580: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 05c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0600: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0640: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0680: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 06c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0700: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0740: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0780: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 07c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0800: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0840: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0880: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 08c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0900: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0940: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0980: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 09c0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0a00: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0a40: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0a80: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0ac0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0b00: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0b40: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0b80: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0bc0: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0c00: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0c40: ghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdef 0c80: ghabcdefghabcdefgh; path="/" 01:18:42.301655 <= Recv header, 19 bytes (0x13) 0000: Location: 4270002 01:18:42.385509 <= Recv header, 2 bytes (0x2) 0000: 01:18:42.637871 * Request completely sent off 01:18:42.884840 * shutting down connection #0 01:18:43.441228 * Issue another request to this URL: 'http://127.0.0.1:39461/4270002' 01:18:43.604875 * Hostname 127.0.0.1 was found in DNS cache 01:18:43.646982 * Trying 127.0.0.1:39461... 01:18:43.684848 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 60276 01:18:43.691866 * using HTTP/1.x 01:18:43.951457 * Restricted outgoing cookies due to header size, 'long1' not sent 01:18:43.978325 => Send header, 6510 bytes (0x196e) 0000: GET /4270002 HTTP/1.1 0017: Host: 127.0.0.1:39461 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: Cookie: long3=abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0094: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 00d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0114: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0154: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0194: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 01d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0214: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0254: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0294: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 02d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0314: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0354: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0394: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 03d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0414: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0454: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0494: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 04d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0514: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0554: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0594: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 05d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0614: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0654: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0694: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 06d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0714: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0754: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0794: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 07d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0814: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0854: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0894: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 08d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0914: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0954: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0994: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 09d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0a14: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0a54: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0a94: cdefghabcdefghabcdefghabcdefghabcdefghabcCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind430 ../src/curl -q --output log/3/curl430.out --include --trace-ascii log/3/trace430 --trace-time -K log/3/config430-a -K log/3/config430-b -K log/3/config430-c > log/3/stdout430 2> log/3/stderr430 defghabcdefghabcdefghab 0ad4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0b14: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0b54: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0b94: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0bd4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0c14: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0c54: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0c94: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0cd4: cdefghabcdefgh; long2=abcdefghabcdefghabcdefghabcdefghabcdefghab 0d14: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0d54: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0d94: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0dd4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0e14: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0e54: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0e94: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0ed4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0f14: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0f54: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0f94: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 0fd4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1014: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1054: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1094: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 10d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1114: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1154: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1194: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 11d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1214: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1254: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1294: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 12d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1314: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1354: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1394: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 13d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1414: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1454: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1494: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 14d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1514: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1554: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1594: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 15d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1614: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1654: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1694: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 16d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1714: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1754: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1794: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 17d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1814: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1854: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1894: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 18d4: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1914: cdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab 1954: cdefghabcdefghabcdefgh 196c: 01:18:44.708097 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:18:44.715371 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:18:44.721889 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:18:44.727419 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:18:44.734337 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:18:44.739280 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:18:44.754891 <= Recv header, 2 bytes (0x2) 0000: 01:18:44.778069 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:18:44.878717 * we are done reading and this is set to close, stop send 01:18:44.899043 * abort upload 01:18:44.998072 * shutting down connection #1 === End of file trace427 === Start of file valgrind427 ==248774== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind427 test 0430...[Three -K uses with --next and --data in each] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind430 ../src/curl -q --output log/3/curl430.out --include --trace-ascii log/3/trace430 --trace-time -K log/3/config430-a -K log/3/config430-b -K log/3/config430-c > log/3/stdout430 2> log/3/stderr430 valgrind ERROR ==249291== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 430 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind430 ../src/curl -q --output log/3/curl430.out --include --trace-ascii log/3/trace430 --trace-time -K log/3/config430-a -K log/3/config430-b -K log/3/config430-c > log/3/stdout430 2> log/3/stderr430 === End of file commands.log === Start of file config430-a --next url = 127.0.0.1:46853/4300001 header = "a: a" data = "a" === End of file config430-a === Start of file config430-b --next url = 127.0.0.1:46853/4300002 header = "b: b" data = "b" === End of file config430-b === Start of file config430-c --next url = 127.0.0.1:46853/4300003 header = "c: c" data = "c" === End of file config430-c === Start of file curl430.out HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/1 -foo- === End of file curl430.out === Start of file http_server.log 01:18:06.234829 ====> Client connect 01:18:06.235004 accept_connection 3 returned 4 01:18:06.235091 accept_connection 3 returned 0 01:18:06.241518 Read 93 bytes 01:18:06.241619 Process 93 bytes request 01:18:06.241718 Got request: GET /verifiedserver HTTP/1.1 01:18:06.241792 Are-we-friendly question received 01:18:06.241920 Wrote request (93 bytes) input to log/3/server.input 01:18:06.242024 Identifying ourselves as friends 01:18:06.242222 Response sent (57 bytes) and written to log/3/server.response 01:18:06.242294 special request received, no persistency 01:18:06.242359 ====> Client disconnect 0 01:18:53.995908 ====> Client connect 01:18:53.996046 accept_connection 3 returned 4 01:18:53.996125 accept_connection 3 returned 0 01:18:55.347925 Read 162 bytes 01:18:55.348133 Process 162 bytes request 01:18:55.348242 Got request: POST /4300001 HTTP/1.1 01:18:55.348321 Serve test number 430 part 1 01:18:55.348555 - request found to be complete (430) 01:18:55.348760 Found Content-Length: 1 in the request 01:18:55.348932 Wrote request (162 bytes) input to log/3/server.input 01:18:55.349049 Send response test430 section 01:18:55.349437 Response sent (62 bytes) and written to log/3/server.response 01:18:55.349512 => persistent connection request ended, awaits new request 01:18:58.200908 Read 162 bytes 01:18:58.201122 Process 162 bytes request 01:18:58.201238 Got request: POST /4300002 HTTP/1.1 01:18:58.201322 Serve test number 430 part 2 01:18:58.201550 - request found to beCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind431 ../src/curl -q --output log/5/curl431.out --include --trace-ascii log/5/trace431 --trace-time -K log/5/config431-a -K log/5/config431-b --next -d c 127.0.0.1:46263/4310003 -H "c: c" > log/5/stdout431 2> log/5/stderr431 complete (430) 01:18:58.201756 Found Content-Length: 1 in the request 01:18:58.201877 Wrote request (162 bytes) input to log/3/server.input 01:18:58.201980 Send response test430 section 01:18:58.202366 Response sent (62 bytes) and written to log/3/server.response 01:18:58.202441 => persistent connection request ended, awaits new request 01:18:58.497721 Read 162 bytes 01:18:58.497929 Process 162 bytes request 01:18:58.498025 Got request: POST /4300003 HTTP/1.1 01:18:58.498099 Serve test number 430 part 3 01:18:58.498299 - request found to be complete (430) 01:18:58.498486 Found Content-Length: 1 in the request 01:18:58.498597 Wrote request (162 bytes) input to log/3/server.input 01:18:58.498688 Send response test430 section 01:18:58.499041 Response sent (62 bytes) and written to log/3/server.response 01:18:58.499109 => persistent connection request ended, awaits new request 01:18:58.850416 Connection closed by client 01:18:58.850606 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 48596 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 430 === End of file server.cmd === Start of file server.input POST /4300001 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* a: a Content-Length: 1 Content-Type: application/x-www-form-urlencoded aPOST /4300002 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* b: b Content-Length: 1 Content-Type: application/x-www-form-urlencoded bPOST /4300003 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* c: c Content-Length: 1 Content-Type: application/x-www-form-urlencoded c === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/1 -foo- HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/2 -foo- HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/3 -foo- === End of file server.response === Start of file stderr430 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 1 0 0 0 1 0 0 --:--:-- 0:00:03 --:--:-- 0 100 7 100 6 0 1 1 0 0:00:06 0:00:04 0:00:02 1 100 7 100 6 0 1 1 0 0:00:06 0:00:05 0:00:01 1 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 7 100 6 100 1 9 1 0:00:01 --:--:-- 0:00:01 35 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 7 100 6 100 1 52 8 --:--:-- --:--:-- --:--:-- 89 === End of file stderr430 === Start of file stdout430 -foo- -foo- === End of file stdout430 === Start of file trace430 01:18:54.030739 * Trying 127.0.0.1:46853... 01:18:55.011713 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 45838 01:18:55.152899 * using HTTP/1.x 01:18:55.776234 => Send header, 161 bytes (0xa1) 0000: POST /4300001 HTTP/1.1 0018: Host: 127.0.0.1:46853 002f: User-Agent: curl/8.17.0 0048: Accept: */* 0055: a: a 005b: Content-Length: 1 006e: Content-Type: application/x-www-form-urlencoded 009f: 01:18:55.878566 => Send data, 1 bytes (0x1) 0000: a 01:18:55.954241 * upload completely sent off: 1 bytes 01:18:56.235119 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:18:56.574415 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:18:56.698531 <= Recv header, 21 bytes (0x15) 0000: Content-Type: text/1. 01:18:56.799232 <= Recv header, 1 bytes (0x1) 0000: . 01:18:56.865344 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:18:57.384088 * Connection #0 to host 127.0.0.1:46853 left intact 01:18:58.475511 * Reusing existing http: connection with host 127.0.0.1 01:18:58.589994 => Send header, 161 bytes (0xa1) 0000: POST /4300002 HTTP/1.1 0018: Host: 127.0.0.1:46853 002f: User-Agent: curl/8.17.0 0048: Accept: */* 0055: b: b 005b: Content-Length: 1 006e: Content-Type: application/x-www-form-urlencoded 009f: 01:18:58.610207 => Send data, 1 bytes (0x1) 0000: b 01:18:58.617143 * upload completely sent off: 1 bytes 01:18:58.643009 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:18:58.658866 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:18:58.670613 <= Recv header, 21 bytes (0x15) 0000: Content-Type: text/2. 01:18:58.681375 <= Recv header, 1 bytes (0x1) 0000: . 01:18:58.687103 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:18:58.747812 * Connection #0 to host 127.0.0.1:46853 left intact 01:18:58.849846 * Reusing existing http: connection with host 127.0.0.1 01:18:58.884090 => Send header, 161 bytes (0xa1) 0000: POST /4300003 HTTP/1.1 0018: Host: 127.0.0.1:46853 002f: User-Agent: curl/8.17.0 0048: Accept: */* 0055: c: c 005b: Content-Length: 1 006e: Content-Type: application/x-www-form-urlencoded 009f: 01:18:58.900775 => Send data, 1 bytes (0x1) 0000: c 01:18:58.902601 * upload completely sent off: 1 bytes 01:18:58.910220 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:18:58.915768 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:18:58.920705 <= Recv header, 21 bytes (0x15) 0000: Content-Type: text/3. 01:18:58.925326 <= Recv header, 1 bytes (0x1) 0000: . 01:18:58.927235 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:18:58.947964 * Connection #0 to host 127.0.0.1:46853 left intact === End of file trace430 === Start of file valgrind430 ==249291== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind430 test 0431...[Two -K uses with --next and then one on cmdline] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind431 ../src/curl -q --output log/5/curl431.out --include --trace-ascii log/5/trace431 --trace-time -K log/5/config431-a -K log/5/config431-b --next -d c 127.0.0.1:46263/4310003 -H "c: c" > log/5/stdout431 2> log/5/stderr431 valgrind ERROR ==249452== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 431 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind431 ../src/curl -q --output log/5/curl431.out --include --trace-ascii log/5/trace431 --trace-time -K log/5/config431-a -K log/5/config431-b --next -d c 127.0.0.1:46263/4310003 -H "c: c" > log/5/stdout431 2> log/5/stderr431 === End of file commands.log === Start of file config431-a --next url = 127.0.0.1:46263/4310001 header = "a: a" data = "a" === End of file config431-a === Start of file config431-b --next url = 127.0.0.1:46263/4310002 header = "b: b" data = "b" === End of file config431-b === Start of file curl431.out HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/1 -foo- === End of file curl431.out === Start of file http_server.log 01:18:07.814197 ====> Client connect 01:18:07.814366 accept_connection 3 returned 4 01:18:07.814456 accept_connection 3 returned 0 01:18:07.824513 Read 93 bytes 01:18:07.824618 Process 93 bytes request 01:18:07.824729 Got request: GET /verifiedserver HTTP/1.1 01:18:07.824798 Are-we-friendly question received 01:18:07.824919 Wrote request (93 bytes) input to log/5/server.input 01:18:07.825017 Identifying ourselves as friends 01:18:07.825201 Response sent (57 bytes) and written to log/5/server.response 01:18:07.825271 special request received, no persistency 01:18:07.825338 ====> Client disconnect 0 01:18:56.500112 ====> Client connect 01:18:56.500250 accept_connection 3 returned 4 01:18:56.500326 accept_connection 3 returned 0 01:18:57.704781 Read 162 bytes 01:18:57.704988 Process 162 bytes request 01:18:57.705086 Got request: POST /4310001 HTTP/1.1 01:18:57.705158 Serve test number 431 part 1 01:18:57.705359 - request found to be complete (431) 01:18:57.705534 Found Content-Length: 1 in the request 01:18:57.705697 Wrote request (162 bytes) input to log/5/server.input 01:18:57.705806 Send response test431 section 01:18:57.706104 Response sent (62 bytes) and written to log/5/server.response 01:18:57.706172 => persistent connection request ended, awaits new request 01:19:00.422205 Read 162 bytes 01:19:00.422421 Process 162 bytes request 01:19:00.422522 Got request: POST /4310002 HTTP/1.1 01:19:00.422599 Serve test number 431 part 2 01:19:00.422802 - request found to be complete (431) 01:19:00.422993 Found Content-Length: 1 in the request 01:19:00.423116 Wrote request (162 bytes) input to log/5/server.input 01:19:00.423206 Send response test431 section 01:19:00.423542 Response sent (62 bytes) and written to log/5/server.response 01:19:00.423614 => persistent connection request ended, awaits new request 01:19:00.705692 Read 162 bytes 01:19:00.705863 Process 162 bytes request 01:19:00.705961 Got request: POST /4310003 HTTP/1.1 01:19:00.706035 Serve test number 431 part 3 01:19:00.706235 - request found to be complete (431) 01:19:00.706418 Found Content-Length: 1 in the request 01:19:00.706530 Wrote request (162 bytes) input to log/5/server.input 01:19:00.706619 Send response test431 section 01:19:00.706956 Response sent (62 bytes) and written to log/5/server.response 01:19:00.707026 => persistent connection request ended, awaits new request 01:19:01.035690 Connection closed by client 01:19:01.035893 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 46230 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 431 === End of file server.cmd === Start of file server.input POST /4310001 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* a: a Content-Length: 1 Content-Type: application/x-www-form-urlencoded aPOST /4310002 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* b: b Content-Length: 1 Content-Type: application/x-www-form-urlencoded bPOST /4310003 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* c: c Content-Length: 1 Content-Type: application/x-www-form-urlencoded c === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/1 -foo- HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/2 -foo- HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/3 -foo- === End of file server.response === Start of file stderr431 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 7 100 6 0 1 1 0 0:00:06 0:00:04 0:00:02 2 100 7 100 6 0 1 1 0 0:00:06 0:00:04 0:00:02 2 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 7 100 6 100 1 10 1 0:00:01 --:--:-- 0:00:01 39 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 7 100 6 100 1 54 9 --:--:-- --:--:-- --:--:-- 94 === End of file stderr431 === Start of file stdout431 -foo- -foo- === End of file stdout431 === Start of file trace431 01:18:56.545470 * Trying 127.0.0.1:46263... 01:18:57.441825 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 44568 01:18:57.573618 * using HTTP/1.x 01:18:58.129733 => Send header, 161 bytes (0xa1) 0000: POST /4310001 HTTP/1.1 0018: Host: 127.0.0.1:46263 002f: User-Agent: curl/8.17.0 0048: Accept: */* 0055: a: a 005b: Content-Length: 1 006e: Content-Type: application/x-www-form-urlencoded 009f: 01:18:58.231220 => Send data, 1 bytes (0x1) 0000: a 01:18:58.305395 * upload completely sent off: 1 bytes 01:18:58.560054 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:18:58.888702 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:18:59.007627 <= Recv header, 21 bytes (0x15) 0000: Content-Type: text/1. 01:18:59.111759 <= Recv header, 1 bytes (0x1) 0000: . 01:18:59.168231 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:18:59.672884 * Connection #0 to host 127.0.0.1:46263 left intact 01:19:00.709925 * Reusing existing http: connection with host 127.0.0.1 01:19:00.811883 => Send header, 161 bytes (0xa1) 0000: POST /4310002 HTTP/1.1 0018: Host: 127.0.0.1:46263 002f: User-Agent: curl/8.17.0 0048: Accept: */* 0055: b: b 005b: Content-Length: 1 006e: Content-Type: application/x-www-form-urlencoded 009f: 01:19:00.831060 => Send data, 1 bytes (0x1) 0000: b 01:19:00.837068 * upload completely sent off: 1 bytes 01:19:00.859666 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:19:00.874559 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:19:00.884095 <= Recv header, 21 bytes (0x15) 0000: Content-Type: text/2. 01:19:00.893263 <= Recv header, 1 bytes (0x1) 0000: . 01:19:00.898275 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:19:00.956623 * Connection #0 to host 127.0.0.1:46263 left intact 01:19:01.057658 * Reusing existing http: connection with host 127.0.0.1 01:19:01.093474 => Send header, 161 bytes (0xa1) 0000: POST /4310003 HTTP/1.1 0018: Host: 127.0.0.1:46263 002f: User-Agent: curl/8.17.0 0048: Accept: */* 0055: c: c 005b: Content-Length: 1 006e: Content-Type: application/x-www-form-urlencoded 009f: 01:19:01.110795 => Send data, 1 bytes (0x1) 0000: c 01:19:01.112591 * upload completely sent off: 1 bytes 01:19:01.119566 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:19:01.123318 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:19:01.127154 <= Recv header, 21 bytes (0x15) 0000: Content-Type: text/3. 01:19:01.131176 <= Recv header, 1 bytes (0x1) 0000: . 01:19:01.132877 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:19:01.151356 * Connection #0 to host 127.0.0.1:46263 left intact === End of file trace431 === Start of file valgrind431 ==249452== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind431 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind432 ../src/curl -q --output log/1/curl432.out --include --trace-ascii log/1/trace432 --trace-time -K log/1/config432 > log/1/stdout432 2> log/1/stderr432 id 185906) running test 432 in state 4 Runner 2 (id 185908) running test 434 in state 4 Runner 3 (id 185910) running test 442 in state 4 Runner 4 (id 185912) running test 440 in state 4 Runner 5 (id 185914) running test 443 in state 4 Runner 6 (id 185916) running test 435 in state 4 Runner 7 (id 185918) running test 436 in state 4 Runner 8 (id 185920) running test 441 in state 4 test 0432...[Use -K with --next and --config from within] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind432 ../src/curl -q --output log/1/curl432.out --include --trace-ascii log/1/trace432 --trace-time -K log/1/config432 > log/1/stdout432 2> log/1/stderr432 valgrind ERROR ==249673== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 432 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind432 ../src/curl -q --output log/1/curl432.out --include --trace-ascii log/1/trace432 --trace-time -K log/1/config432 > log/1/stdout432 2> log/1/stderr432 === End of file commands.log === Start of file config432 --next url = 127.0.0.1:40641/4320001 header = "a: a" data = "a" --next url = 127.0.0.1:40641/4320002 header = "b: b" data = "b" config = "log/1/config432-c" === End of file config432 === Start of file config432-c --next url = 127.0.0.1:40641/4320003 header = "c: c" data = "c" === End of file config432-c === Start of file curl432.out HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/1 -foo- === End of file curl432.out === Start of file http_server.log 01:18:21.919175 ====> Client connect 01:18:21.919341 accept_connection 3 returned 4 01:18:21.919419 accept_connection 3 returned 0 01:18:21.926503 Read 93 bytes 01:18:21.926589 Process 93 bytes request 01:18:21.926678 Got request: GET /verifiedserver HTTP/1.1 01:18:21.926744 Are-we-friendly question received 01:18:21.926853 Wrote request (93 bytes) input to log/1/server.input 01:18:21.926940 Identifying ourselves as friends 01:18:21.927098 Response sent (57 bytes) and written to log/1/server.response 01:18:21.927161 special request received, no persistency 01:18:21.927217 ====> Client disconnect 0 01:19:10.485091 ====> Client connect 01:19:10.485239 accept_connection 3 returned 4 01:19:10.485321 accept_connection 3 returned 0 01:19:11.667467 Read 162 bytes 01:19:11.667649 Process 162 bytes request 01:19:11.667735 Got request: POST /4320001 HTTP/1.1 01:19:11.667799 Serve test number 432 part 1 01:19:11.668003 - request found to be complete (432) 01:19:11.668162 Found Content-Length: 1 in the request 01:19:11.668313 Wrote request (162 bytes) input to log/1/server.input 01:19:11.668414 Send response test432 section 01:19:11.668681 Response sent (62 bytes) and written to log/1/server.response 01:19:11.668744 => persistent connection request ended, awaits new request 01:19:14.313151 Read 162 bytes 01:19:14.313349 Process 162 bytes request 01:19:14.313447 Got request: POST /4320002 HTTP/1.1 01:19:14.313519 Serve test number 432 part 2 01:19:14.313721 - request found to be complete (432) 01:19:14.313901 Found Content-Length: 1 in the request 01:19:14.314008 Wrote request (162 bytes) input to log/1/server.input 01:19:14.314091 Send response test432 section 01:19:14.314415 Response sent (62 bytes) and written to log/1/server.response 01:19:14.314480 => persistent connection request ended, awaits new request 01:19:14.572447 Read 162 bytes 01:19:14.572616 Process 162 bytes request 01:19:14.572712 Got request: POST /4320003 HTTP/1.1 01:19:14.572784 Serve test number 432 part 3 01:19:14.572987 - request found to be complete (432) 01:19:14.573172 Found Content-Length: 1 in the request 01:19:14.573284 Wrote request (162 bytes) input to log/1/server.input 01:19:14.573367 Send response test432 section 01:19:14.573709 Response sent (62 bytes) and written to log/1/server.response 01:19:14.573778 => persistent connection request ended, awaits new request 01:19:14.907884 Connection closed by client 01:19:14.908072 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 58878 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 432 === End of file server.cmd === Start of file server.input POST /4320001 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* a: a Content-Length: 1 Content-Type: application/x-www-form-urlencoded aPOST /4320002 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* b: b Content-Length: 1 Content-Type: application/x-www-form-urlencoded bPOST /4320003 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* c: c Content-Length: 1 Content-Type: application/x-www-form-urlencoded c === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/1 -foo- HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/2 -foo- HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/3 -foo- === End of file server.response === Start of file stderr432 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 7 100 6 0 1 1 0 0:00:06 0:00:04 0:00:02 2 100 7 100 6 0 1 1 0 0:00:06 0:00:04 0:00:02 2 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 7 100 6 100 1 10 1 0:00:01 --:--:-- 0:00:01 40 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 7 100 6 100 1 55 9 --:--:-- --:--:-- --:--:-- 90 === End of file stderr432 === Start of file stdout432 -foo- -foo- === End of file stdout432 === Start of file trace432 01:19:09.571372 * Trying 127.0.0.1:40641... 01:19:10.412552 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 57312 01:19:10.538036 * using HTTP/1.x 01:19:11.092313 => Send header, 161 bytes (0xa1) 0000: POST /4320001 HTTP/1.1 0018: Host: 127.0.0.1:40641 002f: User-Agent: curl/8.17.0 0048: Accept: */* 0055: a: a 005b: Content-Length: 1 006e: Content-Type: application/x-www-form-urlencoded 009f: 01:19:11.191655 => Send data, 1 bytes (0x1) 0000: a 01:19:11.262591 * upload completely sent off: 1 bytes 01:19:11.505435 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:19:11.826750 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:19:11.941486 <= Recv header, 21 bytes (0x15) 0000: Content-Type: text/1. 01:19:12.035710 <= Recv header, 1 bytes (0x1) 0000: . 01:19:12.092161 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:19:12.580564 * Connection #0 to host 127.0.0.1:40641 left intact 01:19:13.603946 * Reusing existing http: connection with host 127.0.0.1 01:19:13.CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind434 ../src/curl -q --output log/2/curl434.out --include --trace-ascii log/2/trace434 --trace-time -K log/2/config434 > log/2/stdout434 2> log/2/stderr434 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind435 ../src/curl -q --include --trace-ascii log/6/trace435 --trace-time http://127.0.0.1:38277/435 http://127.0.0.1:38277/435 -w 'local port == %{local_port}\nlocal ip == %{local_ip}\nremote_ip == %{remote_ip}\nremote_port == %{remote_port}\n' > log/6/stdout435 2> log/6/stderr435 702712 => Send header, 161 bytes (0xa1) 0000: POST /4320002 HTTP/1.1 0018: Host: 127.0.0.1:40641 002f: User-Agent: curl/8.17.0 0048: Accept: */* 0055: b: b 005b: Content-Length: 1 006e: Content-Type: application/x-www-form-urlencoded 009f: 01:19:13.721459 => Send data, 1 bytes (0x1) 0000: b 01:19:13.727164 * upload completely sent off: 1 bytes 01:19:13.747881 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:19:13.761826 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:19:13.771464 <= Recv header, 21 bytes (0x15) 0000: Content-Type: text/2. 01:19:13.780244 <= Recv header, 1 bytes (0x1) 0000: . 01:19:13.785610 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:19:13.836996 * Connection #0 to host 127.0.0.1:40641 left intact 01:19:13.925882 * Reusing existing http: connection with host 127.0.0.1 01:19:13.960270 => Send header, 161 bytes (0xa1) 0000: POST /4320003 HTTP/1.1 0018: Host: 127.0.0.1:40641 002f: User-Agent: curl/8.17.0 0048: Accept: */* 0055: c: c 005b: Content-Length: 1 006e: Content-Type: application/x-www-form-urlencoded 009f: 01:19:13.977708 => Send data, 1 bytes (0x1) 0000: c 01:19:13.979517 * upload completely sent off: 1 bytes 01:19:13.986814 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:19:13.990638 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:19:13.994579 <= Recv header, 21 bytes (0x15) 0000: Content-Type: text/3. 01:19:13.998622 <= Recv header, 1 bytes (0x1) 0000: . 01:19:14.000388 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:19:14.021541 * Connection #0 to host 127.0.0.1:40641 left intact === End of file trace432 === Start of file valgrind432 ==249673== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind432 test 0434...[-K with a single line without newline] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind434 ../src/curl -q --output log/2/curl434.out --include --trace-ascii log/2/trace434 --trace-time -K log/2/config434 > log/2/stdout434 2> log/2/stderr434 valgrind ERROR ==249846== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 434 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind434 ../src/curl -q --output log/2/curl434.out --include --trace-ascii log/2/trace434 --trace-time -K log/2/config434 > log/2/stdout434 2> log/2/stderr434 === End of file commands.log === Start of file config434 url = 127.0.0.1:39863/434 === End of file config434 === Start of file curl434.out HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/1 -foo- === End of file curl434.out === Start of file http_server.log 01:18:29.465388 ====> Client connect 01:18:29.465547 accept_connection 3 returned 4 01:18:29.465625 accept_connection 3 returned 0 01:18:29.472276 Read 93 bytes 01:18:29.472393 Process 93 bytes request 01:18:29.472482 Got request: GET /verifiedserver HTTP/1.1 01:18:29.472547 Are-we-friendly question received 01:18:29.472667 Wrote request (93 bytes) input to log/2/server.input 01:18:29.472762 Identifying ourselves as friends 01:18:29.472949 Response sent (57 bytes) and written to log/2/server.response 01:18:29.473019 special request received, no persistency 01:18:29.473080 ====> Client disconnect 0 01:19:17.237770 ====> Client connect 01:19:17.238331 accept_connection 3 returned 4 01:19:17.238670 accept_connection 3 returned 0 01:19:18.248699 Read 82 bytes 01:19:18.248898 Process 82 bytes request 01:19:18.248994 Got request: GET /434 HTTP/1.1 01:19:18.249065 Serve test number 434 part 0 01:19:18.249242 - request found to be complete (434) 01:19:18.249492 Wrote request (82 bytes) input to log/2/server.input 01:19:18.249610 Send response test434 section 01:19:18.249922 Response sent (62 bytes) and written to log/2/server.response 01:19:18.249988 => persistent connection request ended, awaits new request 01:19:20.648228 Connection closed by client 01:19:20.648409 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 55574 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 434 === End of file server.cmd === Start of file server.input GET /434 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/1 -foo- === End of file server.response === Start of file stderr434 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr434 === Start of file trace434 01:19:16.298955 * Trying 127.0.0.1:39863... 01:19:17.210788 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 45256 01:19:17.335489 * using HTTP/1.x 01:19:17.671942 => Send header, 82 bytes (0x52) 0000: GET /434 HTTP/1.1 0013: Host: 127.0.0.1:39863 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:19:18.010610 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:19:18.340789 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:19:18.471911 <= Recv header, 21 bytes (0x15) 0000: Content-Type: text/1. 01:19:18.568136 <= Recv header, 1 bytes (0x1) 0000: . 01:19:18.625227 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:19:19.202616 * Connection #0 to host 127.0.0.1:39863 left intact === End of file trace434 === Start of file valgrind434 ==249846== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind434 test 0435...[verify -w local/remote port+ip after connection reuse] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind435 ../src/curl -q --include --trace-ascii log/6/trace435 --trace-time http://127.0.0.1:38277/435 http://127.0.0.1:38277/435 -w 'local port == %{local_port}\nlocal ip == %{local_ip}\nremote_ip == %{remote_ip}\nremote_port == %{remote_port}\n' > log/6/stdout435 2> log/6/stderr435 valgrind ERROR ==250025== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 435 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind435 ../src/curl -q --include --trace-ascii log/6/trace435 --trace-time http://127.0.0.1:38277/435 http://127.0.0.1:38277/435 -w 'local port == %{local_port}\nlocal ip == %{local_ip}\nremote_ip == %{remote_ip}\nremote_port == %{remote_port}\n' > log/6/stdout435 2> log/6/stderr435 === End of file commands.log === Start of file http_server.log 01:18:37.705692 ====> Client connect 01:18:37.705857 accept_connection 3 returned 4 01:18:37.705932 accept_connection 3 returned 0 01:18:37.714424 Read 93 bytes 01:18:37.714524 Process 93 bytes request 01:18:37.714618 Got request: GET /verifiedserver HCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind436 ../src/curl --output log/7/curl436.out --include --trace-ascii log/7/trace436 --trace-time 127.0.0.1:34897/436 > log/7/stdout436 2> log/7/stderr436 TTP/1.1 01:18:37.714685 Are-we-friendly question received 01:18:37.714798 Wrote request (93 bytes) input to log/6/server.input 01:18:37.714885 Identifying ourselves as friends 01:18:37.715060 Response sent (57 bytes) and written to log/6/server.response 01:18:37.715121 special request received, no persistency 01:18:37.715174 ====> Client disconnect 0 01:19:25.308515 ====> Client connect 01:19:25.308671 accept_connection 3 returned 4 01:19:25.308754 accept_connection 3 returned 0 01:19:26.285268 Read 82 bytes 01:19:26.285494 Process 82 bytes request 01:19:26.285589 Got request: GET /435 HTTP/1.1 01:19:26.285661 Serve test number 435 part 0 01:19:26.285858 - request found to be complete (435) 01:19:26.286132 Wrote request (82 bytes) input to log/6/server.input 01:19:26.286255 Send response test435 section 01:19:26.286579 Response sent (38 bytes) and written to log/6/server.response 01:19:26.286649 => persistent connection request ended, awaits new request 01:19:28.811089 Read 82 bytes 01:19:28.811293 Process 82 bytes request 01:19:28.811389 Got request: GET /435 HTTP/1.1 01:19:28.811463 Serve test number 435 part 0 01:19:28.811666 - request found to be complete (435) 01:19:28.811884 Wrote request (82 bytes) input to log/6/server.input 01:19:28.811972 Send response test435 section 01:19:28.812271 Response sent (38 bytes) and written to log/6/server.response 01:19:28.812337 => persistent connection request ended, awaits new request 01:19:29.244666 Connection closed by client 01:19:29.244870 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 49016 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 435 === End of file server.cmd === Start of file server.input GET /435 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* GET /435 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Content-Length: 0 HTTP/1.1 200 OK Content-Length: 0 === End of file server.response === Start of file stderr435 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 === End of file stderr435 === Start of file stdout435 HTTP/1.1 200 OK Content-Length: 0 local port == 46530 local ip == 127.0.0.1 remote_ip == 127.0.0.1 remote_port == 38277 HTTP/1.1 200 OK Content-Length: 0 local port == 46530 local ip == 127.0.0.1 remote_ip == 127.0.0.1 remote_port == 38277 === End of file stdout435 === Start of file trace435 01:19:25.337898 * Trying 127.0.0.1:38277... 01:19:26.232526 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 46530 01:19:26.355454 * using HTTP/1.x 01:19:26.708079 => Send header, 82 bytes (0x52) 0000: GET /435 HTTP/1.1 0013: Host: 127.0.0.1:38277 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:19:27.065216 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:19:27.375340 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 0 01:19:27.535131 <= Recv header, 2 bytes (0x2) 0000: 01:19:28.030315 * Connection #0 to host 127.0.0.1:38277 left intact 01:19:29.118371 * Reusing existing http: connection with host 127.0.0.1 01:19:29.199448 => Send header, 82 bytes (0x52) 0000: GET /435 HTTP/1.1 0013: Host: 127.0.0.1:38277 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:19:29.228303 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:19:29.236559 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 0 01:19:29.246877 <= Recv header, 2 bytes (0x2) 0000: 01:19:29.290836 * Connection #0 to host 127.0.0.1:38277 left intact === End of file trace435 === Start of file valgrind435 ==250025== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind435 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 444 in state 4 Runner 2 (id 185908) running test 448 in state 4 Runner 3 (id 185910) running test 442 in state 4 Runner 4 (id 185912) running test 440 in state 4 Runner 5 (id 185914) running test 443 in state 4 Runner 6 (id 185916) running test 449 in state 4 Runner 7 (id 185918) running test 436 in state 4 Runner 8 (id 185920) running test 441 in state 4 setenv CURL_HOME = /build/curl/src/build-curl/tests/log/7 test 0436...[Find .curlrc in .config/curlrc via CURL_HOME] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind436 ../src/curl --output log/7/curl436.out --include --trace-ascii log/7/trace436 --trace-time 127.0.0.1:34897/436 > log/7/stdout436 2> log/7/stderr436 valgrind ERROR ==250190== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 436 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind436 ../src/curl --output log/7/curl436.out --include --trace-ascii log/7/trace436 --trace-time 127.0.0.1:34897/436 > log/7/stdout436 2> log/7/stderr436 === End of file commands.log === Start of file curl436.out HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/1 -foo- === End of file curl436.out === Start of file http_server.log 01:18:50.578962 ====> Client connect 01:18:50.579127 accept_connection 3 returned 4 01:18:50.579204 accept_connection 3 returned 0 01:18:50.587936 Read 93 bytes 01:18:50.588083 Process 93 bytes request 01:18:50.588174 Got request: GET /verifiedserver HTTP/1.1 01:18:50.588240 Are-we-friendly question received 01:18:50.588372 Wrote request (93 bytes) input to log/7/server.input 01:18:50.588475 Identifying ourselves as friends 01:18:50.588681 Response sent (57 bytes) and written to log/7/server.response 01:18:50.588744 special request received, no persistency 01:18:50.588800 ====> Client disconnect 0 01:19:38.790614 ====> Client connect 01:19:38.790770 accept_connection 3 returned 4 01:19:38.790857 accept_connection 3 returned 0 01:19:40.042606 Read 169 bytes 01:19:40.042795 Process 169 bytes request 01:19:40.042890 Got request: POST /436 HTTP/1.1 01:19:40.042960 Serve test number 436 part 0 01:19:40.043149 - request found to be complete (436) 01:19:40.043326 Found Content-Length: 11 in the request 01:19:40.043500 Wrote request (169 bytes) input to log/7/server.input 01:19:40.043618 Send response test436 section 01:19:40.043984 Response sent (66 bytes) and written to log/7/server.response 01:19:40.044053 => persistent connection request ended, awaits new request 01:19:42.442164 Connection closed by client 01:19:42.442377 ====> Client CMD (14336): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind440 ../src/curl -q --include --trace-ascii log/4/trace440 --trace-time -x http://127.0.0.1:42621 http://this.hsts.example./440 --hsts log/4/input440 -w '%{url_effective}\n' > log/4/stdout440 2> log/4/stderr440 disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 51130 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 436 === End of file server.cmd === Start of file server.input POST /436 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* a: a Content-Length: 11 Content-Type: application/x-www-form-urlencoded curlrc read === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/1 -foo- === End of file server.response === Start of file stderr436 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 11 0 0 100 11 0 2 0:00:05 0:00:03 0:00:02 4 100 17 100 6 100 11 1 2 0:00:06 0:00:04 0:00:02 5 100 17 100 6 100 11 1 2 0:00:06 0:00:04 0:00:02 4 === End of file stderr436 === Start of file trace436 01:19:38.855345 * Trying 127.0.0.1:34897... 01:19:39.739699 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 57648 01:19:39.872275 * using HTTP/1.x 01:19:40.449146 => Send header, 158 bytes (0x9e) 0000: POST /436 HTTP/1.1 0014: Host: 127.0.0.1:34897 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: a: a 0057: Content-Length: 11 006b: Content-Type: application/x-www-form-urlencoded 009c: 01:19:40.554163 => Send data, 11 bytes (0xb) 0000: curlrc read 01:19:40.629610 * upload completely sent off: 11 bytes 01:19:40.904506 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:19:41.239537 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:19:41.359267 <= Recv header, 22 bytes (0x16) 0000: Content-Type: text/1 01:19:41.454165 <= Recv header, 2 bytes (0x2) 0000: 01:19:41.510039 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:19:41.997373 * Connection #0 to host 127.0.0.1:34897 left intact === End of file trace436 === Start of file valgrind436 ==250190== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind436 test 0440...[HSTS with trailing-dot host name in URL but none in hsts file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind440 ../src/curl -q --include --trace-ascii log/4/trace440 --trace-time -x http://127.0.0.1:42621 http://this.hsts.example./440 --hsts log/4/input440 -w '%{url_effective}\n' > log/4/stdout440 2> log/4/stderr440 valgrind ERROR ==250352== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 440 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind440 ../src/curl -q --include --trace-ascii log/4/trace440 --trace-time -x http://127.0.0.1:42621 http://this.hsts.example./440 --hsts log/4/input440 -w '%{url_effective}\n' > log/4/stdout440 2> log/4/stderr440 === End of file commands.log === Start of file http_server.log 01:18:54.691264 ====> Client connect 01:18:54.691425 accept_connection 3 returned 4 01:18:54.691499 accept_connection 3 returned 0 01:18:54.698819 Read 93 bytes 01:18:54.698935 Process 93 bytes request 01:18:54.699023 Got request: GET /verifiedserver HTTP/1.1 01:18:54.699089 Are-we-friendly question received 01:18:54.699200 Wrote request (93 bytes) input to log/4/server.input 01:18:54.699291 Identifying ourselves as friends 01:18:54.699448 Response sent (57 bytes) and written to log/4/server.response 01:18:54.699512 special request received, no persistency 01:18:54.699579 ====> Client disconnect 0 01:19:43.122314 ====> Client connect 01:19:43.122452 accept_connection 3 returned 4 01:19:43.122532 accept_connection 3 returned 0 01:19:44.045224 Read 128 bytes 01:19:44.045429 Process 128 bytes request 01:19:44.045682 Received a CONNECT this.hsts.example.:443 HTTP/1.1 request 01:19:44.045848 Port number: 443, test case number: -7 01:19:44.046122 [log/4/server.cmd] cmdfile says testnum 440 01:19:44.046368 - request found to be complete (440) 01:19:44.068498 Wrote request (128 bytes) input to log/4/server.input 01:19:44.068734 Send response test440 section 01:19:44.069220 Response sent (157 bytes) and written to log/4/server.response 01:19:44.069321 received CONNECT but isn't running as proxy 01:19:45.418652 recv() returned error (104) Connection reset by peer 01:19:45.418956 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 55842 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file input440 # Your HSTS cache. https://curl.se/docs/hsts.html # This file was generated by libcurl! Edit at your own risk. this.hsts.example "99991001 04:47:41" === End of file input440 === Start of file server.cmd Testnum 440 === End of file server.cmd === Start of file server.input CONNECT this.hsts.example.:443 HTTP/1.1 Host: this.hsts.example.:443 User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 403 not OK at all Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 6 Connection: close Funny-head: yesyes -foo- === End of file server.response === Start of file stderr440 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (56) CONNECT tunnel failed, response 403 === End of file stderr440 === Start of file stdout440 HTTP/1.1 403 not OK at all Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 6 Connection: close Funny-head: yesyes https://this.hsts.example./440 === End of file stdout440 === Start of file trace440 01:19:40.350889 * Switched from HTTP to HTTPS due to HSTS => https://this.hsts.example./440 01:19:42.402901 * Trying 127.0.0.1:42621... 01:19:43.073914 * CONNECT: no ALPN negotiated 01:19:43.118946 * allocate connect buffer 01:19:43.294043 * Establish HTTP proxy tunnel to this.hsts.example.:443 01:19:43.462420 => Send header, 128 bytes (0x80) 0000: CONNECT this.hsts.example.:443 HTTP/1.1 0029: Host: this.hsts.example.:443 0047: User-Agent: curl/8.17.0 0060: Proxy-Connection: Keep-Alive 007e: 01:19:43.665925 <= Recv header, 28 bytes (0x1c) 0000: HTTP/1.1 403 not OK at all 01:19:43.972574 <= Recv header, 37 bytes (0x25) 0000: Date: TuCMD (14336): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind441 ../src/curl -q --include --trace-ascii log/8/trace441 --trace-time -x http://127.0.0.1:39461 http://this.hsts.example/441 --hsts log/8/input441 -w '%{url_effective}\n' > log/8/stdout441 2> log/8/stderr441 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind442 ../src/curl -q --output log/3/curl442.out --include --trace-ascii log/3/trace442 --trace-time http://attack.invalid:46853/a/b/442 -b log/3/cookie442 --resolve attack.invalid:46853:127.0.0.1 -L > log/3/stdout442 2> log/3/stderr442 e, 09 Nov 2010 14:49:00 GMT 01:19:44.072850 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:19:44.097259 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:19:44.121685 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:19:44.157734 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:19:44.163670 <= Recv header, 2 bytes (0x2) 0000: 01:19:44.259821 * CONNECT tunnel failed, response 403 01:19:44.679523 * closing connection #0 === End of file trace440 === Start of file valgrind440 ==250352== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind440 test 0441...[HSTS with no t-dot host name in URL but t-dot in file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind441 ../src/curl -q --include --trace-ascii log/8/trace441 --trace-time -x http://127.0.0.1:39461 http://this.hsts.example/441 --hsts log/8/input441 -w '%{url_effective}\n' > log/8/stdout441 2> log/8/stderr441 valgrind ERROR ==250508== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 441 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind441 ../src/curl -q --include --trace-ascii log/8/trace441 --trace-time -x http://127.0.0.1:39461 http://this.hsts.example/441 --hsts log/8/input441 -w '%{url_effective}\n' > log/8/stdout441 2> log/8/stderr441 === End of file commands.log === Start of file http_server.log 01:18:55.511081 ====> Client connect 01:18:55.511257 accept_connection 3 returned 4 01:18:55.511336 accept_connection 3 returned 0 01:18:55.518539 Read 93 bytes 01:18:55.518656 Process 93 bytes request 01:18:55.518750 Got request: GET /verifiedserver HTTP/1.1 01:18:55.518818 Are-we-friendly question received 01:18:55.518940 Wrote request (93 bytes) input to log/8/server.input 01:18:55.519036 Identifying ourselves as friends 01:18:55.519197 Response sent (57 bytes) and written to log/8/server.response 01:18:55.519258 special request received, no persistency 01:18:55.519311 ====> Client disconnect 0 01:19:44.045769 ====> Client connect 01:19:44.045910 accept_connection 3 returned 4 01:19:44.045986 accept_connection 3 returned 0 01:19:44.991909 Read 126 bytes 01:19:44.992125 Process 126 bytes request 01:19:44.992233 Received a CONNECT this.hsts.example:443 HTTP/1.1 request 01:19:44.992306 Port number: 443, test case number: -7 01:19:44.992422 [log/8/server.cmd] cmdfile says testnum 441 01:19:44.992643 - request found to be complete (441) 01:19:44.992931 Wrote request (126 bytes) input to log/8/server.input 01:19:44.993045 Send response test441 section 01:19:44.993403 Response sent (157 bytes) and written to log/8/server.response 01:19:44.993472 received CONNECT but isn't running as proxy 01:19:46.388303 recv() returned error (104) Connection reset by peer 01:19:46.388580 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 47092 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file input441 # Your HSTS cache. https://curl.se/docs/hsts.html # This file was generated by libcurl! Edit at your own risk. this.hsts.example "99991001 04:47:41" === End of file input441 === Start of file server.cmd Testnum 441 === End of file server.cmd === Start of file server.input CONNECT this.hsts.example:443 HTTP/1.1 Host: this.hsts.example:443 User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 403 not OK at all Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 6 Connection: close Funny-head: yesyes -foo- === End of file server.response === Start of file stderr441 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (56) CONNECT tunnel failed, response 403 === End of file stderr441 === Start of file stdout441 HTTP/1.1 403 not OK at all Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 6 Connection: close Funny-head: yesyes https://this.hsts.example/441 === End of file stdout441 === Start of file trace441 01:19:42.288762 * Switched from HTTP to HTTPS due to HSTS => https://this.hsts.example/441 01:19:44.334694 * Trying 127.0.0.1:39461... 01:19:45.010044 * CONNECT: no ALPN negotiated 01:19:45.056838 * allocate connect buffer 01:19:45.241594 * Establish HTTP proxy tunnel to this.hsts.example:443 01:19:45.409666 => Send header, 126 bytes (0x7e) 0000: CONNECT this.hsts.example:443 HTTP/1.1 0028: Host: this.hsts.example:443 0045: User-Agent: curl/8.17.0 005e: Proxy-Connection: Keep-Alive 007c: 01:19:45.612325 <= Recv header, 28 bytes (0x1c) 0000: HTTP/1.1 403 not OK at all 01:19:45.928430 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:19:46.034129 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:19:46.058970 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:19:46.084219 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:19:46.120366 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:19:46.126614 <= Recv header, 2 bytes (0x2) 0000: 01:19:46.221296 * CONNECT tunnel failed, response 403 01:19:46.647500 * closing connection #0 === End of file trace441 === Start of file valgrind441 ==250508== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind441 test 0442...[Send capped huge number of matching cookies] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind442 ../src/curl -q --output log/3/curl442.out --include --trace-ascii log/3/trace442 --trace-time http://attack.invalid:46853/a/b/442 -b log/3/cookie442 --resolve attack.invalid:46853:127.0.0.1 -L > log/3/stdout442 2> log/3/stderr442 valgrind ERROR ==250698== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 442 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind442 ../src/curl -q --output log/3/curl442.out --include --trace-ascii log/3/trace442 --trace-time http://attack.invalid:46853/a/b/442 -b log/3/cookie442 --resolve attack.invalid:46853:127.0.0.1 -L > log/3/stdout442 2> log/3/stderr442 === End of file commands.log === Start of file cookie442 attack.invalid TRUE / FALSE 0 name1 could-be-large-1 attack.invalid TRUE / FALSE 0 name2 could-be-large-2 attack.invalid TRUE / FALSE 0 name3 could-be-large-3 attack.invalid TRUE / FALSE 0 name4 could-be-large-4 attack.invalid TRUE / FALSE 0 name5 could-be-large-5 attack.invalid TRUE / FALSE 0 name6 could-be-large-6 attack.invalid TRUE / FALSE 0 name7 could-be-large-7 attack.invalid TRUE / FALSE 0 name8 could-be-large-8 attack.invalid TRUE / FALSE 0 name9 could-be-large-9 attack.invalid TRUE / FALSE 0 name10 could-be-large-10 attack.invalid TRUE / FALSE 0 name11 could-be-large-11 attack.invalid TRUE / FALSE 0 name12 could-be-large-12 attack.invalid TRUE / FALSE 0 name13 could-be-large-13 attack.invalid TRUE / FALSE 0 name14 could-be-large-14 attack.invalid TRUE / FALSE 0 name15 could-be-large-15 attack.invalid TRUE / FALSE 0 name16 could-be-large-16 attack.invalid TRUE / FALSE 0 name17 could-be-large-17 attack.invalid TRUE / FALSE 0 name18 could-be-large-18 attack.invalid TRUE / FALSE 0 name19 could-be-large-19 attack.invalid TRUE / FALSE 0 name20 could-be-large-20 attack.invalid TRUE / FALSE 0 name21 could-be-large-21 attack.invalid TRUE / FALSE 0 name22 could-be-large-22 attack.invalid TRUE / FALSE 0 name23 could-be-large-23 attack.invalid TRUE / FALSE 0 name24 could-be-large-24 attack.invalid TRUE / FALSE 0 name25 could-be-large-25 attack.invalid TRUE / FALSE 0 name26 could-be-large-26 attack.invalid TRUE / FALSE 0 name27 could-be-large-27 attack.invalid TRUE / FALSE 0 name28 could-be-large-28 attack.invalid TRUE / FALSE 0 name29 could-be-large-29 attack.invalid TRUE / FALSE 0 name30 could-be-large-30 attack.invalid TRUE / FALSE 0 name31 could-be-large-31 attack.invalid TRUE / FALSE 0 name32 could-be-large-32 attack.invalid TRUE / FALSE 0 name33 could-be-large-33 attack.invalid TRUE / FALSE 0 name34 could-be-large-34 attack.invalid TRUE / FALSE 0 name35 could-be-large-35 attack.invalid TRUE / FALSE 0 name36 could-be-large-36 attack.invalid TRUE / FALSE 0 name37 could-be-large-37 attack.invalid TRUE / FALSE 0 name38 could-be-large-38 attack.invalid TRUE / FALSE 0 name39 could-be-large-39 attack.invalid TRUE / FALSE 0 name40 could-be-large-40 attack.invalid TRUE / FALSE 0 name41 could-be-large-41 attack.invalid TRUE / FALSE 0 name42 could-be-large-42 attack.invalid TRUE / FALSE 0 name43 could-be-large-43 attack.invalid TRUE / FALSE 0 name44 could-be-large-44 attack.invalid TRUE / FALSE 0 name45 could-be-large-45 attack.invalid TRUE / FALSE 0 name46 could-be-large-46 attack.invalid TRUE / FALSE 0 name47 could-be-large-47 attack.invalid TRUE / FALSE 0 name48 could-be-large-48 attack.invalid TRUE / FALSE 0 name49 could-be-large-49 attack.invalid TRUE / FALSE 0 name50 could-be-large-50 attack.invalid TRUE / FALSE 0 name51 could-be-large-51 attack.invalid TRUE / FALSE 0 name52 could-be-large-52 attack.invalid TRUE / FALSE 0 name53 could-be-large-53 attack.invalid TRUE / FALSE 0 name54 could-be-large-54 attack.invalid TRUE / FALSE 0 name55 could-be-large-55 attack.invalid TRUE / FALSE 0 name56 could-be-large-56 attack.invalid TRUE / FALSE 0 name57 could-be-large-57 attack.invalid TRUE / FALSE 0 name58 could-be-large-58 attack.invalid TRUE / FALSE 0 name59 could-be-large-59 attack.invalid TRUE / FALSE 0 name60 could-be-large-60 attack.invalid TRUE / FALSE 0 name61 could-be-large-61 attack.invalid TRUE / FALSE 0 name62 could-be-large-62 attack.invalid TRUE / FALSE 0 name63 could-be-large-63 attack.invalid TRUE / FALSE 0 name64 could-be-large-64 attack.invalid TRUE / FALSE 0 name65 could-be-large-65 attack.invalid TRUE / FALSE 0 name66 could-be-large-66 attack.invalid TRUE / FALSE 0 name67 could-be-large-67 attack.invalid TRUE / FALSE 0 name68 could-be-large-68 attack.invalid TRUE / FALSE 0 name69 could-be-large-69 attack.invalid TRUE / FALSE 0 name70 could-be-large-70 attack.invalid TRUE / FALSE 0 name71 could-be-large-71 attack.invalid TRUE / FALSE 0 name72 could-be-large-72 attack.invalid TRUE / FALSE 0 name73 could-be-large-73 attack.invalid TRUE / FALSE 0 name74 could-be-large-74 attack.invalid TRUE / FALSE 0 name75 could-be-large-75 attack.invalid TRUE / FALSE 0 name76 could-be-large-76 attack.invalid TRUE / FALSE 0 name77 could-be-large-77 attack.invalid TRUE / FALSE 0 name78 could-be-large-78 attack.invalid TRUE / FALSE 0 name79 could-be-large-79 attack.invalid TRUE / FALSE 0 name80 could-be-large-80 attack.invalid TRUE / FALSE 0 name81 could-be-large-81 attack.invalid TRUE / FALSE 0 name82 could-be-large-82 attack.invalid TRUE / FALSE 0 name83 could-be-large-83 attack.invalid TRUE / FALSE 0 name84 could-be-large-84 attack.invalid TRUE / FALSE 0 name85 could-be-large-85 attack.invalid TRUE / FALSE 0 name86 could-be-large-86 attack.invalid TRUE / FALSE 0 name87 could-be-large-87 attack.invalid TRUE / FALSE 0 name88 could-be-large-88 attack.invalid TRUE / FALSE 0 name89 could-be-large-89 attack.invalid TRUE / FALSE 0 name90 could-be-large-90 attack.invalid TRUE / FALSE 0 name91 could-be-large-91 attack.invalid TRUE / FALSE 0 name92 could-be-large-92 attack.invalid TRUE / FALSE 0 name93 could-be-large-93 attack.invalid TRUE / FALSE 0 name94 could-be-large-94 attack.invalid TRUE / FALSE 0 name95 could-be-large-95 attack.invalid TRUE / FALSE 0 name96 could-be-large-96 attack.invalid TRUE / FALSE 0 name97 could-be-large-97 attack.invalid TRUE / FALSE 0 name98 could-be-large-98 attack.invalid TRUE / FALSE 0 name99 could-be-large-99 attack.invalid TRUE / FALSE 0 name100 could-be-large-100 attack.invalid TRUE / FALSE 0 name101 could-be-large-101 attack.invalid TRUE / FALSE 0 name102 could-be-large-102 attack.invalid TRUE / FALSE 0 name103 could-be-large-103 attack.invalid TRUE / FALSE 0 name104 could-be-large-104 attack.invalid TRUE / FALSE 0 name105 could-be-large-105 attack.invalid TRUE / FALSE 0 name106 could-be-large-106 attack.invalid TRUE / FALSE 0 name107 could-be-large-107 attack.invalid TRUE / FALSE 0 name108 could-be-large-108 attack.invalid TRUE / FALSE 0 name109 could-be-large-109 attack.invalid TRUE / FALSE 0 name110 could-be-large-110 attack.invalid TRUE / FALSE 0 name111 could-be-large-111 attack.invalid TRUE / FALSE 0 name112 could-be-large-112 attack.invalid TRUE / FALSE 0 name113 could-be-large-113 attack.invalid TRUE / FALSE 0 name114 could-be-large-114 attack.invalid TRUE / FALSE 0 name115 could-be-large-115 attack.invalid TRUE / FALSE 0 name116 could-be-large-116 attack.invalid TRUE / FALSE 0 name117 could-be-large-117 attack.invalid TRUE / FALSE 0 name118 could-be-large-118 attack.invalid TRUE / FALSE 0 name119 could-be-large-119 attack.invalid TRUE / FALSE 0 name120 could-be-large-120 attack.invalid TRUE / FALSE 0 name121 could-be-large-121 attack.invalid TRUE / FALSE 0 name122 could-be-large-122 attack.invalid TRUE / FALSE 0 name123 could-be-large-123 attack.invalid TRUE / FALSE 0 name124 could-be-large-124 attack.invalid TRUE / FALSE 0 name125 could-be-large-125 attack.invalid TRUE / FALSE 0 name126 could-be-large-126 attack.invalid TRUE / FALSE 0 name127 could-be-large-127 attack.invalid TRUE / FALSE 0 name128 could-be-large-128 attack.invalid TRUE / FALSE 0 name129 could-be-large-129 attack.invalid TRUE / FALSE 0 name130 could-be-large-130 attack.invalid TRUE / FALSE 0 name131 could-be-large-131 attack.invalid TRUE / FALSE 0 name132 could-be-large-132 attack.invalid TRUE / FALSE 0 name133 could-be-large-133 attack.invalid TRUE / FALSE 0 name134 could-be-large-134 attack.invalid TRUE / FALSE 0 name135 could-be-large-135 attack.invalid TRUE / FALSE 0 name136 could-be-large-136 attack.invalid TRUE / FALSE 0 name137 could-be-large-137 attack.invalid TRUE / FALSE 0 name138 could-be-large-138 attack.invalid TRUE / FALSE 0 name139 could-be-large-139 attack.invalid TRUE / FALSE 0 name140 could-be-large-140 attack.invalid TRUE / FALSE 0 name141 could-be-large-141 attack.invalid TRUE / FALSE 0 name142 could-be-large-142 attack.invalid TRUE / FALSE 0 name143 could-be-large-143 attack.invalid TRUE / FALSE 0 name144 could-be-large-144 attack.invalid TRUE / FALSE 0 name145 could-be-large-145 attack.invalid TRUE / FALSE 0 name146 could-be-large-146 attack.invalid TRUE / FALSE 0 name147 could-be-large-147 attack.invalid TRUE / FALSE 0 name148 could-be-large-148 attack.invalid TRUE / FALSE 0 name149 could-be-large-149 attack.invalid TRUE / FALSE 0 name150 could-be-large-150 attack.invalid TRUE / FALSE 0 name151 could-be-large-151 === End of file cookie442 === Start of file curl442.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 6 -foo- === End of file curl442.out === Start of file http_server.log 01:19:02.076720 ====> Client connect 01:19:02.076887 accept_connection 3 returned 4 01:19:02.076962 accept_connection 3 returned 0 01:19:02.082693 Read 93 bytes 01:19:02.082774 Process 93 bytes request 01:19:02.082860 Got request: GET /verifiedserver HTTP/1.1 01:19:02.082922 Are-we-friendly question received 01:19:02.083028 Wrote request (93 bytes) input to log/3/server.input 01:19:02.083115 Identifying ourselves as friends 01:19:02.083288 Response sent (57 bytes) and written to log/3/server.response 01:19:02.083349 special request received, no persistency 01:19:02.083403 ====> Client disconnect 0 01:19:50.930585 ====> Client connect 01:19:50.930728 accept_connection 3 returned 4 01:19:50.930807 accept_connection 3 returned 0 01:19:52.194798 Read 4083 bytes 01:19:52.195034 Process 4083 bytes request 01:19:52.195139 Got request: GET /a/b/442 HTTP/1.1 01:19:52.195212 Serve test number 442 part 0 01:19:52.195599 - request found to be complete (442) 01:19:52.196024 Wrote request (4083 bytes) input to log/3/server.input 01:19:52.196136 Send response test442 section 01:19:52.196612 Response sent (102 bytes) and written to log/3/server.response 01:19:52.196678 => persistent connection request ended, awaits new request 01:19:54.976857 Connection closed by client 01:19:54.977060 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 56528 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 442 === End of file server.cmd === Start of file server.input GET /a/b/442 HTTP/1.1 Host: attack.invalid:46853 User-Agent: curl/8.17.0 Accept: */* Cookie: name150=could-be-large-150; name149=could-be-large-149; name148=could-be-large-148; name147=could-be-large-147; name146=could-be-large-146; name145=could-be-large-145; name144=could-be-large-144; name143=could-be-large-143; name142=could-be-large-142; name141=could-be-large-141; name140=could-be-large-140; name139=could-be-large-139; name138=could-be-large-138; name137=could-be-large-137; name136=could-be-large-136; name135=could-be-large-135; name134=could-be-large-134; name133=could-be-large-133; name132=could-be-large-132; name131=could-be-large-131; name130=could-be-large-130; name129=could-be-large-129; name128=could-be-large-128; name127=could-be-large-127; name126=could-be-large-126; name125=could-be-large-125; name124=could-be-large-124; name123=could-be-large-123; name122=could-be-large-122; name121=could-be-large-121; name120=could-be-large-120; name119=could-be-large-119; name118=could-be-large-118; name117=could-be-large-117; name116=could-be-large-116; name115=could-be-large-115; name114=could-be-large-114; name113=could-be-large-113; name112=could-be-large-112; name111=could-be-large-111; name110=could-be-large-110; name109=could-be-large-109; name108=could-be-large-108; name107=could-be-large-107; name106=could-be-large-106; name105=could-be-large-105; name104=could-be-large-104; name103=could-be-large-103; name102=could-be-large-102; name101=could-be-large-101; name100=could-be-large-100; name99=could-be-large-99; name98=could-be-large-98; name97=could-be-large-97; name96=could-be-large-96; name95=could-be-large-95; name94=could-be-large-94; name93=could-be-large-93; name92=could-be-large-92; name91=could-be-large-91; name90=could-be-large-90; name89=could-be-large-89; name88=could-be-large-88; name87=could-be-large-87; name86=could-be-large-86; name85=could-be-large-85; name84=could-be-large-84; name83=could-be-large-83; name82=could-be-large-82; name81=could-be-large-81; name80=could-be-large-80; name79=could-be-large-79; name78=could-be-large-78; name77=could-be-large-77; name76=could-be-large-76; name75=could-be-large-75; name74=could-be-large-74; name73=could-be-large-73; name72=could-be-large-72; name71=could-be-large-71; name70=could-be-large-70; name69=could-be-large-69; name68=could-be-large-68; name67=could-be-large-67; name66=could-be-large-66; name65=could-be-large-65; name64=could-be-large-64; name63=could-be-large-63; name62=could-be-large-62; name61=could-be-large-61; name60=could-be-large-60; name59=could-be-large-59; name58=could-be-large-58; name57=could-be-large-57; name56=could-be-large-56; name55=could-be-large-55; name54=could-be-large-54; name53=could-be-large-53; name52=could-be-large-52; name51=could-be-large-51; name50=could-be-large-50; name49=could-be-large-49; name48=could-be-large-48; name47=could-be-large-47; name46=could-be-large-46; name45=could-be-large-45; name44=could-be-large-44; name43=could-be-large-43; name42=could-be-large-42; name41=could-be-large-41; name40=could-be-large-40; name39=could-be-large-39; name38=could-be-large-38; name37=could-be-large-37; name36=could-be-large-36; name35=could-be-large-35; name34=could-be-large-34; name33=could-be-large-33; name32=could-be-large-32; name31=could-be-large-31; name30=could-be-large-30; name29=could-be-large-29; name28=could-be-large-28; name27=could-be-large-27; name26=could-be-large-26; name25=could-be-large-25; name24=could-be-large-24; name23=could-be-large-23; name22=could-be-large-22; name21=could-be-large-21; name20=could-be-large-20; name19=could-be-large-19; name18=could-be-large-18; name17=could-be-large-17; name16=could-be-large-16; name15=could-be-large-15; name14=could-be-large-14; name13=could-be-large-13; name12=could-be-large-12; name11=could-be-large-11; name10=could-be-large-10; name9=could-be-large-9; name8=could-be-large-8; name7=could-be-large-7; name6=could-be-large-6; name5=could-be-large-5; name4=could-be-large-4; name3=could-be-large-3; name2=could-be-large-2; name1=could-be-large-1 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 6 -foo- === End of file server.response === Start of file stderr442 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr442 === Start of file trace442 01:19:49.332337 * Added attack.invalid:46853:127.0.0.1 to DNS cache 01:19:50.543800 * Hostname attack.invalid was found in DNS cache 01:19:51.233011 * Trying 127.0.0.1:46853... 01:19:51.849799 * Established connection to attack.invalid (127.0.0.1 port 46853) from 127.0.0.1 port 56128 01:19:51.954857 * using HTTP/1.x 01:19:52.236873 * Included max number of cookies (150) in request 01:19:52.617326 => Send header, 4083 bytes (0xff3) 0000: GET /a/b/442 HTTP/1.1 0017: Host: attack.invalid:46853 0033: User-Agent: curl/8.17.0 004c: Accept: */* 0059: Cookie: name150=could-be-large-150; name149=could-be-large-149; 0099: name148=could-be-large-148; name147=could-be-large-147; name146= 00d9: could-be-large-146; name145=could-be-large-145; name144=could-be 0119: -large-144; name143=could-be-large-143; name142=could-be-large-1 0159: 42; name141=could-be-large-141; name140=could-be-large-140; name 0199: 139=could-be-large-139; name138=could-be-large-138; name137=coul 01d9: d-be-large-137; name136=could-be-large-136; name135=could-be-lar 0219: ge-135; name134=could-be-large-134; name133=could-be-large-133; 0259: name132=could-be-large-132; name131=could-be-large-131; name130CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind443 ../src/curl -q --output log/5/curl443.out --include --trace-ascii log/5/trace443 --trace-time http://attack.invalid:46263/a/b/443 -b log/5/cookie443 --resolve attack.invalid:46263:127.0.0.1 -L > log/5/stdout443 2> log/5/stderr443 = 0299: could-be-large-130; name129=could-be-large-129; name128=could-be 02d9: -large-128; name127=could-be-large-127; name126=could-be-large-1 0319: 26; name125=could-be-large-125; name124=could-be-large-124; name 0359: 123=could-be-large-123; name122=could-be-large-122; name121=coul 0399: d-be-large-121; name120=could-be-large-120; name119=could-be-lar 03d9: ge-119; name118=could-be-large-118; name117=could-be-large-117; 0419: name116=could-be-large-116; name115=could-be-large-115; name114= 0459: could-be-large-114; name113=could-be-large-113; name112=could-be 0499: -large-112; name111=could-be-large-111; name110=could-be-large-1 04d9: 10; name109=could-be-large-109; name108=could-be-large-108; name 0519: 107=could-be-large-107; name106=could-be-large-106; name105=coul 0559: d-be-large-105; name104=could-be-large-104; name103=could-be-lar 0599: ge-103; name102=could-be-large-102; name101=could-be-large-101; 05d9: name100=could-be-large-100; name99=could-be-large-99; name98=cou 0619: ld-be-large-98; name97=could-be-large-97; name96=could-be-large- 0659: 96; name95=could-be-large-95; name94=could-be-large-94; name93=c 0699: ould-be-large-93; name92=could-be-large-92; name91=could-be-larg 06d9: e-91; name90=could-be-large-90; name89=could-be-large-89; name88 0719: =could-be-large-88; name87=could-be-large-87; name86=could-be-la 0759: rge-86; name85=could-be-large-85; name84=could-be-large-84; name 0799: 83=could-be-large-83; name82=could-be-large-82; name81=could-be- 07d9: large-81; name80=could-be-large-80; name79=could-be-large-79; na 0819: me78=could-be-large-78; name77=could-be-large-77; name76=could-b 0859: e-large-76; name75=could-be-large-75; name74=could-be-large-74; 0899: name73=could-be-large-73; name72=could-be-large-72; name71=could 08d9: -be-large-71; name70=could-be-large-70; name69=could-be-large-69 0919: ; name68=could-be-large-68; name67=could-be-large-67; name66=cou 0959: ld-be-large-66; name65=could-be-large-65; name64=could-be-large- 0999: 64; name63=could-be-large-63; name62=could-be-large-62; name61=c 09d9: ould-be-large-61; name60=could-be-large-60; name59=could-be-larg 0a19: e-59; name58=could-be-large-58; name57=could-be-large-57; name56 0a59: =could-be-large-56; name55=could-be-large-55; name54=could-be-la 0a99: rge-54; name53=could-be-large-53; name52=could-be-large-52; name 0ad9: 51=could-be-large-51; name50=could-be-large-50; name49=could-be- 0b19: large-49; name48=could-be-large-48; name47=could-be-large-47; na 0b59: me46=could-be-large-46; name45=could-be-large-45; name44=could-b 0b99: e-large-44; name43=could-be-large-43; name42=could-be-large-42; 0bd9: name41=could-be-large-41; name40=could-be-large-40; name39=could 0c19: -be-large-39; name38=could-be-large-38; name37=could-be-large-37 0c59: ; name36=could-be-large-36; name35=could-be-large-35; name34=cou 0c99: ld-be-large-34; name33=could-be-large-33; name32=could-be-large- 0cd9: 32; name31=could-be-large-31; name30=could-be-large-30; name29=c 0d19: ould-be-large-29; name28=could-be-large-28; name27=could-be-larg 0d59: e-27; name26=could-be-large-26; name25=could-be-large-25; name24 0d99: =could-be-large-24; name23=could-be-large-23; name22=could-be-la 0dd9: rge-22; name21=could-be-large-21; name20=could-be-large-20; name 0e19: 19=could-be-large-19; name18=could-be-large-18; name17=could-be- 0e59: large-17; name16=could-be-large-16; name15=could-be-large-15; na 0e99: me14=could-be-large-14; name13=could-be-large-13; name12=could-b 0ed9: e-large-12; name11=could-be-large-11; name10=could-be-large-10; 0f19: name9=could-be-large-9; name8=could-be-large-8; name7=could-be-l 0f59: arge-7; name6=could-be-large-6; name5=could-be-large-5; name4=co 0f99: uld-be-large-4; name3=could-be-large-3; name2=could-be-large-2; 0fd9: name1=could-be-large-1 0ff1: 01:19:53.392321 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:19:53.710782 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:19:53.816196 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:19:53.853192 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:19:53.936033 <= Recv header, 1 bytes (0x1) 0000: . 01:19:53.997530 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:19:54.523705 * Connection #0 to host attack.invalid:46853 left intact === End of file trace442 === Start of file valgrind442 ==250698== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind442 test 0443...[Cookie header in request no longer than 8K] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind443 ../src/curl -q --output log/5/curl443.out --include --trace-ascii log/5/trace443 --trace-time http://attack.invalid:46263/a/b/443 -b log/5/cookie443 --resolve attack.invalid:46263:127.0.0.1 -L > log/5/stdout443 2> log/5/stderr443 valgrind ERROR ==250854== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 443 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind443 ../src/curl -q --output log/5/curl443.out --include --trace-ascii log/5/trace443 --trace-time http://attack.invalid:46263/a/b/443 -b log/5/cookie443 --resolve attack.invalid:46263:127.0.0.1 -L > log/5/stdout443 2> log/5/stderr443 === End of file commands.log === Start of file cookie443 attack.invalid TRUE / FALSE 0 huge-1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-1 attack.invalid TRUE / FALSE 0 huge-2 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-2 attack.invalid TRUE / FALSE 0 huge-3 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-3 attack.invalid TRUE / FALSE 0 huge-4 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-4 attack.invalid TRUE / FALSE 0 huge-5 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-5 attack.invalid TRUE / FALSE 0 huge-6 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-6 attack.invalid TRUE / FALSE 0 huge-7 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-7 attack.invalid TRUE / FALSE 0 huge-8 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-8 attack.invalid TRUE / FALSE 0 huge-9 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-9 attack.invalid TRUE / FALSE 0 huge-10 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-10 attack.invalid TRUE / FALSE 0 huge-11 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-11 attack.invalid TRUE / FALSE 0 huge-12 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-12 attack.invalid TRUE / FALSE 0 huge-13 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-13 attack.invalid TRUE / FALSE 0 huge-14 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-14 attack.invalid TRUE / FALSE 0 huge-15 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-15 attack.invalid TRUE / FALSE 0 huge-16 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-16 attack.invalid TRUE / FALSE 0 huge-17 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-17 attack.invalid TRUE / FALSE 0 huge-18 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-18 attack.invalid TRUE / FALSE 0 huge-19 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-19 attack.invalid TRUE / FALSE 0 huge-20 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-20 === End of file cookie443 === Start of file curl443.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 6 -foo- === End of file curl443.out === Start of file http_server.log 01:19:04.331368 ====> Client connect 01:19:04.331542 accept_connection 3 returned 4 01:19:04.331621 accept_connection 3 returned 0 01:19:04.337358 Read 93 bytes 01:19:04.337503 Process 93 bytes request 01:19:04.337599 Got request: GET /verifiedserver HTTP/1.1 01:19:04.337666 Are-we-friendly question received 01:19:04.337791 Wrote request (93 bytes) input to log/5/server.input 01:19:04.337905 Identifying ourselves as friends 01:19:04.338074 Response sent (57 bytes) and written to log/5/server.response 01:19:04.338141 special request received, no persistency 01:19:04.338201 ====> Client disconnect 0 01:19:52.403848 ====> Client connect 01:19:52.403992 accept_connection 3 returned 4 01:19:52.404074 accept_connection 3 returned 0 01:19:53.712650 Read 7786 bytes 01:19:53.712877 Process 7786 bytes request 01:19:53.712985 Got request: GET /a/b/443 HTTP/1.1 01:19:53.713059 Serve test number 443 part 0 01:19:53.713365 - request found to be complete (443) 01:19:53.713880 Wrote request (7786 bytes) input to log/5/server.input 01:19:53.713974 Send response test443 section 01:19:53.714413 Response sent (102 bytes) and written to log/5/server.response 01:19:53.714485 => persistent connection request ended, awaits new request 01:19:57.011045 Connection closed by client 01:19:57.011282 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 45622 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 443 === End of file server.cmd === Start of file server.input GET /a/b/443 HTTP/1.1 Host: attack.invalid:46263 User-Agent: curl/8.17.0 Accept: */* Cookie: huge-20=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-20; huge-19=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-19; huge-18=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-18; huge-17=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-17; huge-16=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-16; huge-15=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-15; huge-14=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-14; huge-13=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-13; huge-12=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-12; huge-11=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-11; huge-10=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-10; huge-9=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-9; huge-8=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-8; huge-7=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-7; huge-6=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-6 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 6 -foo- === End of file server.response === Start of file stderr443 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr443 === Start of file trace443 01:19:50.800394 * Added attack.invalid:46263:127.0.0.1 to DNS cache 01:19:52.008438 * Hostname attack.invalid was found in DNS cache 01:19:52.706822 * Trying 127.0.0.1:46263... 01:19:53.342284 * Established connection to attack.invalid (127.0.0.1 port 46263) from 127.0.0.1 port 45266 01:19:53.462765 * using HTTP/1.x 01:19:53.970072 * Restricted outgoing cookies due to header size, 'huge-5' not sent 01:19:54.137454 => Send header, 7786 bytes (0x1e6a) 0000: GET /a/b/443 HTTP/1.1 0017: Host: attack.invalid:46263 0033: User-Agent: curl/8.17.0 004c: Accept: */* 0059: Cookie: huge-20=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0099: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 00d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0119: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0159: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0199: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0219: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0259: aaaa-20; huge-19=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0299: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 02d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0319: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0359: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0399: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 03d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0419: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0459: aaaaa-19; huge-18=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0499: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 04d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0519: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0559: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0599: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 05d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0619: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0659: aaaaaa-18; huge-17=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0699: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 06d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0719: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0759: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0799: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 07d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0819: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0859: aaaaaaa-17; huge-16=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0899: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 08d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0919: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0959: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0999: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 09d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0a19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0a59: aaaaaaaa-16; huge-15=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0a99: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0ad9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0b19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0b59: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0b99: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0bd9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0c19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0c59: aaaaaaaaa-15; huge-14=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0c99: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0cd9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0d19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0d59: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0d99: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0dd9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0e19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0e59: aaaaaaaaaa-14; huge-13=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0e99: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0ed9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0f19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0f59: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0f99: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0fd9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1019: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1059: aaaaaaaaaaa-13; huge-12=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1099: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 10d9: aaaaaaaaaaaCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind448 ../src/curl -q --output log/2/curl448.out --include --trace-ascii log/2/trace448 --trace-time http://127.0.0.1:39863/448 -K log/2/cmd > log/2/stdout448 2> log/2/stderr448 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1119: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1159: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1199: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 11d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1219: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1259: aaaaaaaaaaaa-12; huge-11=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1299: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 12d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1319: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1359: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1399: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 13d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1419: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1459: aaaaaaaaaaaaa-11; huge-10=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1499: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 14d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1519: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1559: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1599: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 15d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1619: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1659: aaaaaaaaaaaaaa-10; huge-9=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1699: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 16d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1719: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1759: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1799: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 17d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1819: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1859: aaaaaaaaaaaaaa-9; huge-8=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1899: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 18d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1919: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1959: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1999: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 19d9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1a19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1a59: aaaaaaaaaaaaa-8; huge-7=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1a99: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1ad9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1b19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1b59: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1b99: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1bd9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1c19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1c59: aaaaaaaaaaaa-7; huge-6=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1c99: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1cd9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1d19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1d59: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1d99: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1dd9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1e19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1e59: aaaaaaaaaaa-6 1e68: 01:19:55.283946 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:19:55.600857 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:19:55.701856 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:19:55.739297 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:19:55.822485 <= Recv header, 1 bytes (0x1) 0000: . 01:19:55.879589 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:19:56.421050 * Connection #0 to host attack.invalid:46263 left intact === End of file trace443 === Start of file valgrind443 ==250854== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind443 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 444 in state 4 Runner 2 (id 185908) running test 448 in state 4 Runner 3 (id 185910) running test 453 in state 4 Runner 4 (id 185912) running test 451 in state 4 Runner 5 (id 185914) running test 454 in state 4 Runner 6 (id 185916) running test 449 in state 4 Runner 7 (id 185918) running test 450 in state 4 Runner 8 (id 185920) running test 452 in state 4 setenv FUNVALUE = contents setenv VALUE2 = curl test 0448...[Environment variables within config file, unbalanced braces] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind448 ../src/curl -q --output log/2/curl448.out --include --trace-ascii log/2/trace448 --trace-time http://127.0.0.1:39863/448 -K log/2/cmd > log/2/stdout448 2> log/2/stderr448 valgrind ERROR ==251209== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 448 === Start of file cmd --variable %FUNVALUE --variable %VALUE2 --expand-data 1{{FUNVALUE}}2{{VALUE2}}3{{curl_NOT_SET}}4{{AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA}}5{{broken === End of file cmd === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind448 ../src/curl -q --output log/2/curl448.out --include --trace-ascii log/2/trace448 --trace-time http://127.0.0.1:39863/448 -K log/2/cmd > log/2/stdout448 2> log/2/stderr448 === End of file commands.log === Start of file curl448.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl448.out === Start of file http_server.log 01:19:23.850958 ====> Client connect 01:19:23.851127 accept_connection 3 returned 4 01:19:23.851230 accept_connection 3 returned 0 01:19:23.857703 Read 93 bytes 01:19:23.857803 Process 93 bytes request 01:19:23.857925 Got request: GET /verifiedserver HTTP/1.1 01:19:23.857997 Are-we-friendly question received 01:19:23.858121 Wrote request (93 bytes) input to log/2/server.input 01:19:23.858223 Identifying ourselves as friends 01:19:23.858420 Response sent (57 bytes) and written to log/2/server.response 01:19:23.858491 special request received, no persistency 01:19:23.858554 ====> Client disconnect 0 01:20:11.715440 ====> Client connect 01:20:11.715578 accept_connection 3 returned 4 01:20:11.715652 accept_connection 3 returned 0 01:20:12.829811 Read 310 bytes 01:20:12.830040 Process 310 bytes request 01:20:12.830138 Got request: POST /448 HTTP/1.1 01:20:12.830213 Serve test number 448 part 0 01:20:12.830398 - request found to be complete (448) 01:20:12.830558 Found Content-Length: 157 in the request 01:20:12.830723 Wrote request (310 bytes) input to log/2/server.input 01:20:12.830831 Send response test448 section 01:20:12.831252 Response sent (267 bytes) and written to log/2/server.response 01:20:12.831319 => persistent connection request ended, awaits new request 01:20:14.722274 Connection closed by client 01:20:14.722468 ====> Client disconnect 0 === End of file http_server.log === Start ofCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind444 ../src/curl -q --output log/1/curl444.out --include --trace-ascii log/1/trace444 --trace-time http://attack.invalid:40641/a/b/444 -c log/1/cookie444 --resolve attack.invalid:40641:127.0.0.1 > log/1/stdout444 2> log/1/stderr444 file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 49560 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 448 === End of file server.cmd === Start of file server.input POST /448 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* Content-Length: 157 Content-Type: application/x-www-form-urlencoded 1contents2curl34{{AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA}}5{{broken === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr448 Warning: bad variable name length Warning: '1{{FUNVALUE}}2{{VALUE2}}3{{curl_NOT_SET}}4{{AAAAAAAAAAAAAAAAAAAAAAAAA Warning: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Warning: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA}}5{{broken' Warning: missing close '}}' in Warning: '1{{FUNVALUE}}2{{VALUE2}}3{{curl_NOT_SET}}4{{AAAAAAAAAAAAAAAAAAAAAAAAA Warning: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Warning: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA}}5{{broken' % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 157 0 0 100 157 0 45 0:00:03 0:00:03 --:--:-- 70 100 163 100 6 100 157 1 35 0:00:06 0:00:04 0:00:02 50 100 163 100 6 100 157 1 34 0:00:06 0:00:04 0:00:02 48 === End of file stderr448 === Start of file trace448 01:20:10.792871 * Trying 127.0.0.1:39863... 01:20:11.651178 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 52586 01:20:11.778591 * using HTTP/1.x 01:20:12.255433 => Send header, 153 bytes (0x99) 0000: POST /448 HTTP/1.1 0014: Host: 127.0.0.1:39863 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: Content-Length: 157 0066: Content-Type: application/x-www-form-urlencoded 0097: 01:20:12.358078 => Send data, 157 bytes (0x9d) 0000: 1contents2curl34{{AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0040: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0080: AAAAAAAAAAAAAAAAAA}}5{{broken 01:20:12.447787 * upload completely sent off: 157 bytes 01:20:12.720564 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:20:12.980792 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:20:13.075383 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:20:13.101527 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:20:13.109150 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:20:13.115695 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:20:13.145346 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:20:13.200138 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:20:13.235059 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:20:13.239885 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:20:13.319179 <= Recv header, 2 bytes (0x2) 0000: 01:20:13.374352 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:20:13.915356 * shutting down connection #0 === End of file trace448 === Start of file valgrind448 ==251209== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind448 test 0444...[Many Set-Cookie response headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind444 ../src/curl -q --output log/1/curl444.out --include --trace-ascii log/1/trace444 --trace-time http://attack.invalid:40641/a/b/444 -c log/1/cookie444 --resolve attack.invalid:40641:127.0.0.1 > log/1/stdout444 2> log/1/stderr444 valgrind ERROR ==251044== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 444 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind444 ../src/curl -q --output log/1/curl444.out --include --trace-ascii log/1/trace444 --trace-time http://attack.invalid:40641/a/b/444 -c log/1/cookie444 --resolve attack.invalid:40641:127.0.0.1 > log/1/stdout444 2> log/1/stderr444 === End of file commands.log === Start of file cookie444 # Netscape HTTP Cookie File # https://curl.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. attack.invalid FALSE /a/b/ FALSE 0 cookie-50 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-49 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-48 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-47 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-46 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-45 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-44 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-43 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-42 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-41 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-40 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-39 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-38 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-37 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-36 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-35 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-34 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-33 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-32 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-31 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-30 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-29 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-28 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-27 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-26 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-25 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-24 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-23 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-22 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-21 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-20 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-19 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-18 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-17 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-16 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-15 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-14 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-13 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-12 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-11 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-10 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-9 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-8 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-7 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-6 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-5 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-4 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-3 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-2 yes attack.invalid FALSE /a/b/ FALSE 0 cookie-1 yes === End of file cookie444 === Start of file curl444.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 6 Set-Cookie: cookie-1=yes; Set-Cookie: cookie-2=yes; Set-Cookie: cookie-3=yes; Set-Cookie: cookie-4=yes; Set-Cookie: cookie-5=yes; Set-Cookie: cookie-6=yes; Set-Cookie: cookie-7=yes; Set-Cookie: cookie-8=yes; Set-Cookie: cookie-9=yes; Set-Cookie: cookie-10=yes; Set-Cookie: cookie-11=yes; Set-Cookie: cookie-12=yes; Set-Cookie: cookie-13=yes; Set-Cookie: cookie-14=yes; Set-Cookie: cookie-15=yes; Set-Cookie: cookie-16=yes; Set-Cookie: cookie-17=yes; Set-Cookie: cookie-18=yes; Set-Cookie: cookie-19=yes; Set-Cookie: cookie-20=yes; Set-Cookie: cookie-21=yes; Set-Cookie: cookie-22=yes; Set-Cookie: cookie-23=yes; Set-Cookie: cookie-24=yes; Set-Cookie: cookie-25=yes; Set-Cookie: cookie-26=yes; Set-Cookie: cookie-27=yes; Set-Cookie: cookie-28=yes; Set-Cookie: cookie-29=yes; Set-Cookie: cookie-30=yes; Set-Cookie: cookie-31=yes; Set-Cookie: cookie-32=yes; Set-Cookie: cookie-33=yes; Set-Cookie: cookie-34=yes; Set-Cookie: cookie-35=yes; Set-Cookie: cookie-36=yes; Set-Cookie: cookie-37=yes; Set-Cookie: cookie-38=yes; Set-Cookie: cookie-39=yes; Set-Cookie: cookie-40=yes; Set-Cookie: cookie-41=yes; Set-Cookie: cookie-42=yes; Set-Cookie: cookie-43=yes; Set-Cookie: cookie-44=yes; Set-Cookie: cookie-45=yes; Set-Cookie: cookie-46=yes; Set-Cookie: cookie-47=yes; Set-Cookie: cookie-48=yes; Set-Cookie: cookie-49=yes; Set-Cookie: cookie-50=yes; Set-Cookie: cookie-51=yes; Set-Cookie: cookie-52=yes; Set-Cookie: cookie-53=yes; Set-Cookie: cookie-54=yes; Set-Cookie: cookie-55=yes; Set-Cookie: cookie-56=yes; Set-Cookie: cookie-57=yes; Set-Cookie: cookie-58=yes; Set-Cookie: cookie-59=yes; Set-Cookie: cookie-60=yes; Set-Cookie: cookie-61=yes; Set-Cookie: cookie-62=yes; Set-Cookie: cookie-63=yes; Set-Cookie: cookie-64=yes; Set-Cookie: cookie-65=yes; Set-Cookie: cookie-66=yes; Set-Cookie: cookie-67=yes; Set-Cookie: cookie-68=yes; Set-Cookie: cookie-69=yes; Set-Cookie: cookie-70=yes; Set-Cookie: cookie-71=yes; Set-Cookie: cookie-72=yes; Set-Cookie: cookie-73=yes; Set-Cookie: cookie-74=yes; Set-Cookie: cookie-75=yes; Set-Cookie: cookie-76=yes; Set-Cookie: cookie-77=yes; Set-Cookie: cookie-78=yes; Set-Cookie: cookie-79=yes; Set-Cookie: cookie-80=yes; -foo- === End of file curl444.out === Start of file http_server.log 01:19:18.147044 ====> Client connect 01:19:18.147207 accept_connection 3 returned 4 01:19:18.147287 accept_connection 3 returned 0 01:19:18.154370 Read 93 bytes 01:19:18.154465 Process 93 bytes request 01:19:18.154570 Got request: GET /verifiedserver HTTP/1.1 01:19:18.154636 Are-we-friendly question received 01:19:18.154754 Wrote request (93 bytes) input to log/1/server.input 01:19:18.154845 Identifying ourselves as friends 01:19:18.155008 Response sent (57 bytes) and written to log/1/server.response 01:19:18.155071 special request received, no persistency 01:19:18.155129 ====> Client disconnect 0 01:20:06.556645 ====> Client connect 01:20:06.556790 accept_connection 3 returned 4 01:20:06.556871 accept_connection 3 returned 0 01:20:07.608190 Read 91 bytes 01:20:07.608411 Process 91 bytes request 01:20:07.608509 Got request: GET /a/b/444 HTTP/1.1 01:20:07.608581 Serve test number 444 part 0 01:20:07.608836 - request found to be complete (444) 01:20:07.609173 Wrote request (91 bytes) input to log/1/server.input 01:20:07.609286 Send response test444 section 01:20:07.610018 Response sent (2253 bytes) and written to log/1/server.response 01:20:07.610089 => persistent connection request ended, awaits new request 01:20:16.638629 Connection closed by client 01:20:16.638820 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 47936 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 444 === End of file server.cmd === Start of file server.input GET /a/b/444 HTTP/1.1 Host: attack.invalid:40641 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 6 Set-Cookie: cookie-1=yes; Set-Cookie: cookie-2=yes; Set-Cookie: cookie-3=yes; Set-Cookie: cookie-4=yes; Set-Cookie: cookie-5=yes; Set-Cookie: cookie-6=yes; Set-Cookie: cookie-7=yes; Set-Cookie: cookie-8=yes; Set-Cookie: cookie-9=yes; Set-Cookie: cookie-10=yes; Set-Cookie: cookie-11=yes; Set-Cookie: cookie-12=yes; Set-Cookie: cookie-13=yes; Set-Cookie: cookie-14=yes; Set-Cookie: cookie-15=yes; Set-Cookie: cookie-16=yes; Set-Cookie: cookie-17=yes; Set-Cookie: cookie-18=yes; Set-Cookie: cookie-19=yes; Set-Cookie: cookie-20=yes; Set-Cookie: cookie-21=yes; Set-Cookie: cookie-22=yes; Set-Cookie: cookie-23=yes; Set-Cookie: cookie-24=yes; Set-Cookie: cookie-25=yes; Set-Cookie: cookie-26=yes; Set-Cookie: cookie-27=yes; Set-Cookie: cookie-28=yes; Set-Cookie: cookie-29=yes; Set-Cookie: cookie-30=yes; Set-Cookie: cookie-31=yes; Set-Cookie: cookie-32=yes; Set-Cookie: cookie-33=yes; Set-Cookie: cookie-34=yes; Set-Cookie: cookie-35=yes; Set-Cookie: cookie-36=yes; Set-Cookie: cookie-37=yes; Set-Cookie: cookie-38=yes; Set-Cookie: cookie-39=yes; Set-Cookie: cookie-40=yes; Set-Cookie: cookie-41=yes; Set-Cookie: cookie-42=yes; Set-Cookie: cookie-43=yes; Set-Cookie: cookie-44=yes; Set-Cookie: cookie-45=yes; Set-Cookie: cookie-46=yes; Set-Cookie: cookie-47=yes; Set-Cookie: cookie-48=yes; Set-Cookie: cookie-49=yes; Set-Cookie: cookie-50=yes; Set-Cookie: cookie-51=yes; Set-Cookie: cookie-52=yes; Set-Cookie: cookie-53=yes; Set-Cookie: cookie-54=yes; Set-Cookie: cookie-55=yes; Set-Cookie: cookie-56=yes; Set-Cookie: cookie-57=yes; Set-Cookie: cookie-58=yes; Set-Cookie: cookie-59=yes; Set-Cookie: cookie-60=yes; Set-Cookie: cookie-61=yes; Set-Cookie: cookie-62=yes; Set-Cookie: cookie-63=yes; Set-Cookie: cookie-64=yes; Set-Cookie: cookie-65=yes; Set-Cookie: cookie-66=yes; Set-Cookie: cookie-67=yes; Set-Cookie: cookie-68=yes; Set-Cookie: cookie-69=yes; Set-Cookie: cookie-70=yes; Set-Cookie: cookie-71=yes; Set-Cookie: cookie-72=yes; Set-Cookie: cookie-73=yes; Set-Cookie: cookie-74=yes; Set-Cookie: cookie-75=yes; Set-Cookie: cookie-76=yes; Set-Cookie: cookie-77=yes; Set-Cookie: cookie-78=yes; Set-Cookie: cookie-79=yes; Set-Cookie: cookie-80=yes; -foo- === End of file server.response === Start of file stderr444 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr444 === Start of file trace444 01:20:03.956368 * Added attack.invalid:40641:127.0.0.1 to DNS cache 01:20:05.175929 * Hostname attack.invalid was found in DNS cache 01:20:05.861063 * Trying 127.0.0.1:40641... 01:20:06.482904 * Established connection to attack.invalid (127.0.0.1 port 40641) from 127.0.0.1 port 45416 01:20:06.599784 * using HTTP/1.x 01:20:07.034021 => Send header, 91 bytes (0x5b) 0000: GET /a/b/444 HTTP/1.1 0017: Host: attack.invalid:40641 0033: User-Agent: curl/8.17.0 004c: Accept: */* 0059: 01:20:07.353403 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:20:07.657017 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:20:07.759322 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:20:07.800294 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:20:08.076050 * Added cookie cookie-1="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.094398 <= Recv header, 26 bytes (0x1a) 0000: Set-Cookie: cookie-1=yes;. 01:20:08.136408 * Added cookie cookie-2="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.138676 <= Recv header, 26 bytes (0x1a) 0000: Set-Cookie: cookie-2=yes;. 01:20:08.150857 * Added cookie cookie-3="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.152327 <= Recv header, 26 bytes (0x1a) 0000: Set-Cookie: cookie-3=yes;. 01:20:08.159283 * Added cookie cookie-4="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.160578 <= Recv header, 26 bytes (0x1a) 0000: Set-Cookie: cookie-4=yes;. 01:20:08.167052 * Added cookie cookie-5="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.168320 <= Recv header, 26 bytes (0x1a) 0000: Set-Cookie: cookie-5=yes;. 01:20:08.174600 * Added cookie cookie-6="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.175838 <= Recv header, 26 bytes (0x1a) 0000: Set-Cookie: cookie-6=yes;. 01:20:08.182005 * Added cookie cookie-7="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.183227 <= Recv header, 26 bytes (0x1a) 0000: Set-Cookie: cookie-7=yes;. 01:20:08.189421 * Added cookie cookie-8="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.190686 <= Recv header, 26 bytes (0x1a) 0000: Set-Cookie: cookie-8=yes;. 01:20:08.196840 * Added cookie cookie-9="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.198057 <= Recv header, 26 bytes (0x1a) 0000: Set-Cookie: cookie-9=yes;. 01:20:08.204284 * Added cookie cookie-10="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.205481 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-10=yes;. 01:20:08.211803 * Added cookie cookie-11="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.213039 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-11=yes;. 01:20:08.219481 * Added cookie cookie-12="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.220738 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-12=yes;. 01:20:08.227297 * Added cookie cookie-13="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.228550 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-13=yes;. 01:20:08.235074 * Added cookie cookie-14="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.236311 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-14=yes;. 01:20:08.242692 * Added cookie cookie-15="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.243925 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-15=yes;. 01:20:08.250501 * Added cookie cookie-16="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.251751 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-16=yes;. 01:20:08.258209 * Added cookie cookie-17="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.259448 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-17=yes;. 01:20:08.265857 * Added cookie cookie-18="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.267114 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-18=yes;. 01:20:08.273576 * Added cookie cookie-19="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.274824 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-19=yes;. 01:20:08.281279 * Added cookie cookie-20="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.282515 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-20=yes;. 01:20:08.288977 * Added cookie cookie-21="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.290241 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-21=yes;. 01:20:08.296681 * Added cookie cookie-22="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.297974 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-22=yes;. 01:20:08.304469 * Added cookie cookie-23="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.305717 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-23=yes;. 01:20:08.312176 * Added cookie cookie-24="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.313413 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-24=yes;. 01:20:08.319982 * Added cookie cookie-25="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.321242 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-25=yes;. 01:20:08.328074 * Added cookie cookie-26="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.329315 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-26=yes;. 01:20:08.335836 * Added cookie cookie-27="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.337103 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-27=yes;. 01:20:08.343647 * Added cookie cookie-28="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.344903 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-28=yes;. 01:20:08.351429 * Added cookie cookie-29="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.352691 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-29=yes;. 01:20:08.359398 * Added cookie cookie-30="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.360654 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-30=yes;. 01:20:08.367310 * Added cookie cookie-31="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.368562 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-31=yes;. 01:20:08.375162 * Added cookie cookie-32="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.376449 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-32=yes;. 01:20:08.383174 * Added cookie cookie-33="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.384451 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-33=yes;. 01:20:08.391170 * Added cookie cookie-34="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.392414 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-34=yes;. 01:20:08.399246 * Added cookie cookie-35="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.400526 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-35=yes;. 01:20:08.407346 * Added cookie cookie-36="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.408632 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-36=yes;. 01:20:08.415568 * Added cookie cookie-37="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.416814 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-37=yes;. 01:20:08.424076 * Added cookie cookie-38="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.425379 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-38=yes;. 01:20:08.432228 * Added cookie cookie-39="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.433452 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-39=yes;. 01:20:08.440354 * Added cookie cookie-40="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.441612 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-40=yes;. 01:20:08.448485 * Added cookie cookie-41="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.449731 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-41=yes;. 01:20:08.456538 * Added cookie cookie-42="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.457797 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-42=yes;. 01:20:08.464718 * Added cookie cookie-43="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.466094 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-43=yes;. 01:20:08.473204 * Added cookie cookie-44="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.474491 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-44=yes;. 01:20:08.481469 * Added cookie cookie-45="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.482721 <= Recv header, 27 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind449 ../src/curl -q --output log/6/curl449.out --include --trace-ascii log/6/trace449 --trace-time http://127.0.0.1:38277/449 -K log/6/cmd > log/6/stdout449 2> log/6/stderr449 bytes (0x1b) 0000: Set-Cookie: cookie-45=yes;. 01:20:08.489651 * Added cookie cookie-46="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.490932 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-46=yes;. 01:20:08.497883 * Added cookie cookie-47="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.499155 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-47=yes;. 01:20:08.506173 * Added cookie cookie-48="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.507432 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-48=yes;. 01:20:08.514382 * Added cookie cookie-49="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.515637 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-49=yes;. 01:20:08.522545 * Added cookie cookie-50="yes" for domain attack.invalid, path /a/b/, expire 0 01:20:08.523797 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-50=yes;. 01:20:08.530807 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-51=yes;. 01:20:08.536582 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-52=yes;. 01:20:08.541247 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-53=yes;. 01:20:08.545888 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-54=yes;. 01:20:08.550460 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-55=yes;. 01:20:08.555025 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-56=yes;. 01:20:08.559676 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-57=yes;. 01:20:08.564220 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-58=yes;. 01:20:08.568769 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-59=yes;. 01:20:08.573333 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-60=yes;. 01:20:08.577917 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-61=yes;. 01:20:08.582444 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-62=yes;. 01:20:08.587054 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-63=yes;. 01:20:08.591670 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-64=yes;. 01:20:08.596214 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-65=yes;. 01:20:08.600810 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-66=yes;. 01:20:08.605374 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-67=yes;. 01:20:08.609981 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-68=yes;. 01:20:08.614605 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-69=yes;. 01:20:08.619159 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-70=yes;. 01:20:08.623771 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-71=yes;. 01:20:08.628340 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-72=yes;. 01:20:08.632874 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-73=yes;. 01:20:08.637438 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-74=yes;. 01:20:08.641965 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-75=yes;. 01:20:08.646544 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-76=yes;. 01:20:08.651152 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-77=yes;. 01:20:08.655707 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-78=yes;. 01:20:08.660231 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-79=yes;. 01:20:08.664771 <= Recv header, 27 bytes (0x1b) 0000: Set-Cookie: cookie-80=yes;. 01:20:08.741812 <= Recv header, 1 bytes (0x1) 0000: . 01:20:08.800033 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:20:09.348383 * Connection #0 to host attack.invalid:40641 left intact === End of file trace444 === Start of file valgrind444 ==251044== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind444 setenv FUNVALUE = contents setenv VALUE2 = curl setenv BLANK = test 0449...[Environment variables in config file w/o [expand]] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind449 ../src/curl -q --output log/6/curl449.out --include --trace-ascii log/6/trace449 --trace-time http://127.0.0.1:38277/449 -K log/6/cmd > log/6/stdout449 2> log/6/stderr449 valgrind ERROR ==251394== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 449 === Start of file cmd -d 1{{FUNVALUE}}2{{VALUE2}}3{{CURL_NOT_SET}}4{{BLANK}}5\{{verbatim}}6{{not.good}}7{{}} === End of file cmd === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind449 ../src/curl -q --output log/6/curl449.out --include --trace-ascii log/6/trace449 --trace-time http://127.0.0.1:38277/449 -K log/6/cmd > log/6/stdout449 2> log/6/stderr449 === End of file commands.log === Start of file curl449.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl449.out === Start of file http_server.log 01:19:32.526446 ====> Client connect 01:19:32.526615 accept_connection 3 returned 4 01:19:32.526695 accept_connection 3 returned 0 01:19:32.532891 Read 93 bytes 01:19:32.532985 Process 93 bytes request 01:19:32.533072 Got request: GET /verifiedserver HTTP/1.1 01:19:32.533138 Are-we-friendly question received 01:19:32.533257 Wrote request (93 bytes) input to log/6/server.input 01:19:32.533345 Identifying ourselves as friends 01:19:32.533529 Response sent (57 bytes) and written to log/6/server.response 01:19:32.533593 special request received, no persistency 01:19:32.533651 ====> Client disconnect 0 01:20:20.375013 ====> Client connect 01:20:20.375174 accept_connection 3 returned 4 01:20:20.375266 accept_connection 3 returned 0 01:20:21.560502 Read 235 bytes 01:20:21.560708 Process 235 bytes request 01:20:21.560811 Got request: POST /449 HTTP/1.1 01:20:21.560886 Serve test number 449 part 0 01:20:21.561107 - request found to be complete (449) 01:20:21.561278 Found Content-Length: 83 in the request 01:20:21.561448 Wrote request (235 bytes) input to log/6/server.input 01:20:21.561561 Send response test449 section 01:20:21.561998 Response sent (267 bytes) and written to log/6/server.response 01:20:21.562067 => persistent connection request ended, awaits new request 01:20:23.502466 Connection closed by client 01:20:23.502668 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 57220 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 449 === End of file server.cmd === Start of file server.input POST /449 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* Content-Length: 83 Content-Type: application/x-www-form-urlencoded 1{{FUNVALUE}}2{{VALUE2}}3{{CURL_NOT_SET}}4{{BLANK}}5\{{verbatim}}6{{not.good}}7{{}} === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr449 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent LeCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind450 ../src/curl -q --output log/7/curl450.out --include --trace-ascii log/7/trace450 --trace-time http://127.0.0.1:34897/450 --variable what@log/7/junk --expand-data "{{what:trim:url}}" > log/7/stdout450 2> log/7/stderr450 ft Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 89 100 6 100 83 1 17 0:00:06 0:00:04 0:00:02 26 100 89 100 6 100 83 1 16 0:00:06 0:00:04 0:00:02 25 === End of file stderr449 === Start of file trace449 01:20:20.441097 * Trying 127.0.0.1:38277... 01:20:21.354615 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 58404 01:20:21.497232 * using HTTP/1.x 01:20:21.981772 => Send header, 152 bytes (0x98) 0000: POST /449 HTTP/1.1 0014: Host: 127.0.0.1:38277 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: Content-Length: 83 0065: Content-Type: application/x-www-form-urlencoded 0096: 01:20:22.093375 => Send data, 83 bytes (0x53) 0000: 1{{FUNVALUE}}2{{VALUE2}}3{{CURL_NOT_SET}}4{{BLANK}}5\{{verbatim} 0040: }6{{not.good}}7{{}} 01:20:22.172873 * upload completely sent off: 83 bytes 01:20:22.431952 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:20:22.724108 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:20:22.816813 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:20:22.841093 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:20:22.848114 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:20:22.854737 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:20:22.884416 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:20:22.939135 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:20:22.973291 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:20:22.977896 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:20:23.062119 <= Recv header, 2 bytes (0x2) 0000: 01:20:23.120230 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:20:23.700567 * shutting down connection #0 === End of file trace449 === Start of file valgrind449 ==251394== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind449 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 456 in state 4 Runner 2 (id 185908) running test 455 in state 4 Runner 3 (id 185910) running test 453 in state 4 Runner 4 (id 185912) running test 451 in state 4 Runner 5 (id 185914) running test 454 in state 4 Runner 6 (id 185916) running test 457 in state 4 Runner 7 (id 185918) running test 450 in state 4 Runner 8 (id 185920) running test 452 in state 4 test 0450...[Variable from file that is trimmed and URL encoded] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind450 ../src/curl -q --output log/7/curl450.out --include --trace-ascii log/7/trace450 --trace-time http://127.0.0.1:34897/450 --variable what@log/7/junk --expand-data "{{what:trim:url}}" > log/7/stdout450 2> log/7/stderr450 valgrind ERROR ==251576== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 450 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind450 ../src/curl -q --output log/7/curl450.out --include --trace-ascii log/7/trace450 --trace-time http://127.0.0.1:34897/450 --variable what@log/7/junk --expand-data "{{what:trim:url}}" > log/7/stdout450 2> log/7/stderr450 === End of file commands.log === Start of file curl450.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl450.out === Start of file http_server.log 01:19:45.811145 ====> Client connect 01:19:45.811323 accept_connection 3 returned 4 01:19:45.811411 accept_connection 3 returned 0 01:19:45.818357 Read 93 bytes 01:19:45.818478 Process 93 bytes request 01:19:45.818577 Got request: GET /verifiedserver HTTP/1.1 01:19:45.818650 Are-we-friendly question received 01:19:45.818780 Wrote request (93 bytes) input to log/7/server.input 01:19:45.818885 Identifying ourselves as friends 01:19:45.819085 Response sent (57 bytes) and written to log/7/server.response 01:19:45.819154 special request received, no persistency 01:19:45.819217 ====> Client disconnect 0 01:20:33.648399 ====> Client connect 01:20:33.648545 accept_connection 3 returned 4 01:20:33.648622 accept_connection 3 returned 0 01:20:34.791930 Read 172 bytes 01:20:34.792131 Process 172 bytes request 01:20:34.792227 Got request: POST /450 HTTP/1.1 01:20:34.792303 Serve test number 450 part 0 01:20:34.792496 - request found to be complete (450) 01:20:34.792654 Found Content-Length: 20 in the request 01:20:34.792826 Wrote request (172 bytes) input to log/7/server.input 01:20:34.792941 Send response test450 section 01:20:34.793364 Response sent (267 bytes) and written to log/7/server.response 01:20:34.793433 => persistent connection request ended, awaits new request 01:20:36.757747 Connection closed by client 01:20:36.757962 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 52292 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file junk space with space === End of file junk === Start of file server.cmd Testnum 450 === End of file server.cmd === Start of file server.input POST /450 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* Content-Length: 20 Content-Type: application/x-www-form-urlencoded space%20with%20space === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr450 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 20 0 0 100 20 0 5 0:00:04 0:00:03 0:00:01 8 100 26 100 6 100 20 1 4 0:00:06 0:00:04 0:00:02 7 100 26 100 6 100 20 1 4 0:00:06 0:00:04 0:00:02 7 === End of file stderr450 === Start of file trace450 01:20:33.718862 * Trying 127.0.0.1:34897... 01:20:34.591041 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 43252 01:20:34.722576 * using HTTP/1.x 01:20:35.217207 => Send header, 152 bytes (0x98) 0000: POST /450 HTTP/1.1 0014: Host: 127.0.0.1:34897 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: Content-Length: 20 0065: Content-Type: application/x-www-form-urlencoded 0096: 01:20:35.321839 => Send data, 20 bytes (0x14) 0000: space%20with%20space 01:20:35.397861 * upload completely sent off: 20 bytes 01:20:35.676611 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:20:35.98CMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind452 ../src/curl -q --output log/8/curl452.out --include --trace-ascii log/8/trace452 --trace-time http://127.0.0.1:39461/452 --variable what=hello --expand-data "--{{what:trim:super}}" > log/8/stdout452 2> log/8/stderr452 CMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind453 ../src/curl -q --output log/3/curl453.out --include --trace-ascii log/3/trace453 --trace-time http://127.0.0.1:46853/453 --variable what@log/3/junk --expand-data "{{what}}" > log/3/stdout453 2> log/3/stderr453 CMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind454 ../src/curl -q --output log/5/curl454.out --include --trace-ascii log/5/trace454 --trace-time http://127.0.0.1:46263/454 --variable what=hello --expand-data "--{{what:trim,url}}" > log/5/stdout454 2> log/5/stderr454 0600 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:20:36.083501 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:20:36.111003 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:20:36.118867 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:20:36.126138 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:20:36.156796 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:20:36.214586 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:20:36.250615 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:20:36.255570 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:20:36.334682 <= Recv header, 2 bytes (0x2) 0000: 01:20:36.391337 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:20:36.944874 * shutting down connection #0 === End of file trace450 === Start of file valgrind450 ==251576== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind450 test 0452...[Variable using illegal function in expansion] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind452 ../src/curl -q --output log/8/curl452.out --include --trace-ascii log/8/trace452 --trace-time http://127.0.0.1:39461/452 --variable what=hello --expand-data "--{{what:trim:super}}" > log/8/stdout452 2> log/8/stderr452 valgrind ERROR ==251904== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 452 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind452 ../src/curl -q --output log/8/curl452.out --include --trace-ascii log/8/trace452 --trace-time http://127.0.0.1:39461/452 --variable what=hello --expand-data "--{{what:trim:super}}" > log/8/stdout452 2> log/8/stderr452 === End of file commands.log === Start of file http_server.log 01:19:57.133968 ====> Client connect 01:19:57.134132 accept_connection 3 returned 4 01:19:57.134210 accept_connection 3 returned 0 01:19:57.141800 Read 93 bytes 01:19:57.141940 Process 93 bytes request 01:19:57.142033 Got request: GET /verifiedserver HTTP/1.1 01:19:57.142098 Are-we-friendly question received 01:19:57.142221 Wrote request (93 bytes) input to log/8/server.input 01:19:57.142327 Identifying ourselves as friends 01:19:57.142492 Response sent (57 bytes) and written to log/8/server.response 01:19:57.142556 special request received, no persistency 01:19:57.142613 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 53832 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 452 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 === End of file server.response === Start of file stderr452 curl: unknown variable function in ':trim:super' curl: option --expand-data: variable expansion failure curl: try 'curl --help' for more information === End of file stderr452 === Start of file valgrind452 ==251904== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind452 test 0453...[Variable output containing null byte] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind453 ../src/curl -q --output log/3/curl453.out --include --trace-ascii log/3/trace453 --trace-time http://127.0.0.1:46853/453 --variable what@log/3/junk --expand-data "{{what}}" > log/3/stdout453 2> log/3/stderr453 valgrind ERROR ==252057== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 453 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind453 ../src/curl -q --output log/3/curl453.out --include --trace-ascii log/3/trace453 --trace-time http://127.0.0.1:46853/453 --variable what@log/3/junk --expand-data "{{what}}" > log/3/stdout453 2> log/3/stderr453 === End of file commands.log === Start of file http_server.log 01:19:58.698835 ====> Client connect 01:19:58.699022 accept_connection 3 returned 4 01:19:58.699099 accept_connection 3 returned 0 01:19:58.706379 Read 93 bytes 01:19:58.706574 Process 93 bytes request 01:19:58.706677 Got request: GET /verifiedserver HTTP/1.1 01:19:58.706743 Are-we-friendly question received 01:19:58.706868 Wrote request (93 bytes) input to log/3/server.input 01:19:58.706981 Identifying ourselves as friends 01:19:58.707216 Response sent (57 bytes) and written to log/3/server.response 01:19:58.707282 special request received, no persistency 01:19:58.707339 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 38948 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file junk  === End of file junk === Start of file server.cmd Testnum 453 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 === End of file server.response === Start of file stderr453 curl: variable contains null byte curl: option --expand-data: variable expansion failure curl: try 'curl --help' for more information === End of file stderr453 === Start of file valgrind453 ==252057== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind453 test 0454...[Variable using illegal function separator] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind454 ../src/curl -q --output log/5/curl454.out --include --trace-ascii log/5/trace454 --trace-time http://127.0.0.1:46263/454 --variable what=hello --expand-data "--{{what:trim,url}}" > log/5/stdout454 2> log/5/stderr454 valgrind ERROR ==252212== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 454 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind454 ../src/curl -q --output log/5/curl454.out --include --trace-ascii log/5/trace454 --trace-time http://127.0.0.1:46263/454 --variable what=hello --expand-data "--{{what:trim,url}}" > log/5/stdout454 2> log/5/stderr454 === End of file commands.log === Start of file http_server.log 01:20:00.556877 ====> Client connect 01:20:00.557045 accept_connection 3 returned 4 01:20:00.557126 accept_connection 3 returned 0 01:20:00.564068 Read 93 bytes 01:20:00.564209 Process 93 bytes request 01:20:00.564298 Got request: GET /verifiedserver HTTP/1.1 01:20:00.564361 Are-we-friendly question received 01:20:00.564509 Wrote request (93 bytes) input to log/5/server.input 01:20:00.564606 Identifying ourselves as friends 01:20:00.564758 Response sent (57 bytes) and written to log/5/server.response 01:20:00.564816 spCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind451 ../src/curl -q --output log/4/curl451.out --include --trace-ascii log/4/trace451 --trace-time http://127.0.0.1:42621/451 --variable what@log/4/junk --variable second=hello --variable second=again --expand-data "--{{what:trim:json}}22{{none}}--{{second}}{{what:trim:url}}" > log/4/stdout451 2> log/4/stderr451 ecial request received, no persistency 01:20:00.564867 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 45270 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 454 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 === End of file server.response === Start of file stderr454 curl: unknown variable function in ':trim,url' curl: option --expand-data: variable expansion failure curl: try 'curl --help' for more information === End of file stderr454 === Start of file valgrind454 ==252212== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind454 test 0451...[Variable from file that is JSON and URL encoded (with null byte)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind451 ../src/curl -q --output log/4/curl451.out --include --trace-ascii log/4/trace451 --trace-time http://127.0.0.1:42621/451 --variable what@log/4/junk --variable second=hello --variable second=again --expand-data "--{{what:trim:json}}22{{none}}--{{second}}{{what:trim:url}}" > log/4/stdout451 2> log/4/stderr451 valgrind ERROR ==251750== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 451 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind451 ../src/curl -q --output log/4/curl451.out --include --trace-ascii log/4/trace451 --trace-time http://127.0.0.1:42621/451 --variable what@log/4/junk --variable second=hello --variable second=again --expand-data "--{{what:trim:json}}22{{none}}--{{second}}{{what:trim:url}}" > log/4/stdout451 2> log/4/stderr451 === End of file commands.log === Start of file curl451.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl451.out === Start of file http_server.log 01:19:56.329977 ====> Client connect 01:19:56.330139 accept_connection 3 returned 4 01:19:56.330217 accept_connection 3 returned 0 01:19:56.337598 Read 93 bytes 01:19:56.337709 Process 93 bytes request 01:19:56.337818 Got request: GET /verifiedserver HTTP/1.1 01:19:56.337894 Are-we-friendly question received 01:19:56.338025 Wrote request (93 bytes) input to log/4/server.input 01:19:56.338122 Identifying ourselves as friends 01:19:56.338289 Response sent (57 bytes) and written to log/4/server.response 01:19:56.338356 special request received, no persistency 01:19:56.338417 ====> Client disconnect 0 01:20:44.345563 ====> Client connect 01:20:44.345695 accept_connection 3 returned 4 01:20:44.345774 accept_connection 3 returned 0 01:20:45.481946 Read 226 bytes 01:20:45.482149 Process 226 bytes request 01:20:45.482248 Got request: POST /451 HTTP/1.1 01:20:45.482319 Serve test number 451 part 0 01:20:45.482509 - request found to be complete (451) 01:20:45.482676 Found Content-Length: 74 in the request 01:20:45.482847 Wrote request (226 bytes) input to log/4/server.input 01:20:45.482959 Send response test451 section 01:20:45.483303 Response sent (267 bytes) and written to log/4/server.response 01:20:45.483370 => persistent connection request ended, awaits new request 01:20:47.536739 Connection closed by client 01:20:47.536923 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 57172 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file junk  === End of file junk === Start of file server.cmd Testnum 451 === End of file server.cmd === Start of file server.input POST /451 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* Content-Length: 74 Content-Type: application/x-www-form-urlencoded --\u0001\u0002\u0003\u0000\u0004\u0005\u000622--again%01%02%03%00%04%05%06 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr451 Note: Overwriting variable 'second' % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 74 0 0 100 74 0 20 0:00:03 0:00:03 --:--:-- 31 100 80 100 6 100 74 1 15 0:00:06 0:00:04 0:00:02 23 100 80 100 6 100 74 1 15 0:00:06 0:00:04 0:00:02 22 === End of file stderr451 === Start of file trace451 01:20:43.413269 * Trying 127.0.0.1:42621... 01:20:44.289797 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 44834 01:20:44.413417 * using HTTP/1.x 01:20:44.916120 => Send header, 152 bytes (0x98) 0000: POST /451 HTTP/1.1 0014: Host: 127.0.0.1:42621 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: Content-Length: 74 0065: Content-Type: application/x-www-form-urlencoded 0096: 01:20:45.024872 => Send data, 74 bytes (0x4a) 0000: --\u0001\u0002\u0003\u0000\u0004\u0005\u000622--again%01%02%03%0 0040: 0%04%05%06 01:20:45.106005 * upload completely sent off: 74 bytes 01:20:45.418518 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:20:45.750876 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:20:45.863393 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:20:45.890350 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:20:45.901464 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:20:45.911583 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:20:45.945406 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:20:46.014313 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:20:46.053884 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:20:46.059400 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:20:46.134208 <= Recv header, 2 bytes (0x2) 0000: 01:20:46.186883 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:20:46.731004 * shutting down connection #0 === End of file trace451 === Start of file valgrind451 ==251750== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind451 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 456 in state 4 Runner 2 (id 185908) running test 455 in state 4 Runner 3 (id 185910) running test 460 in state 4 Runner 4 (id 185912) running tCMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind456 ../src/curl -q --output log/1/curl456.out --include --trace-ascii log/1/trace456 --trace-time http://127.0.0.1:40641/456 --variable what@log/1/junk --expand-data "{{what}}" > log/1/stdout456 2> log/1/stderr456 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind455 ../src/curl -q --output log/2/curl455.out --include --trace-ascii log/2/trace455 --trace-time --variable moby="Call me Ishmael" --variable what=d2hpdGUtd2hhbGU= --expand-url "http://127.0.0.1:39863/{{moby:b64}}/{{what:64dec}}/455" > log/2/stdout455 2> log/2/stderr455 est 462 in state 4 Runner 5 (id 185914) running test 461 in state 4 Runner 6 (id 185916) running test 457 in state 4 Runner 7 (id 185918) running test 458 in state 4 Runner 8 (id 185920) running test 459 in state 4 test 0456...[Variable output starting with null byte] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind456 ../src/curl -q --output log/1/curl456.out --include --trace-ascii log/1/trace456 --trace-time http://127.0.0.1:40641/456 --variable what@log/1/junk --expand-data "{{what}}" > log/1/stdout456 2> log/1/stderr456 valgrind ERROR ==252554== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 456 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind456 ../src/curl -q --output log/1/curl456.out --include --trace-ascii log/1/trace456 --trace-time http://127.0.0.1:40641/456 --variable what@log/1/junk --expand-data "{{what}}" > log/1/stdout456 2> log/1/stderr456 === End of file commands.log === Start of file http_server.log 01:20:20.481158 ====> Client connect 01:20:20.481318 accept_connection 3 returned 4 01:20:20.481394 accept_connection 3 returned 0 01:20:20.486504 Read 93 bytes 01:20:20.486595 Process 93 bytes request 01:20:20.486683 Got request: GET /verifiedserver HTTP/1.1 01:20:20.486748 Are-we-friendly question received 01:20:20.486865 Wrote request (93 bytes) input to log/1/server.input 01:20:20.486952 Identifying ourselves as friends 01:20:20.487114 Response sent (57 bytes) and written to log/1/server.response 01:20:20.487175 special request received, no persistency 01:20:20.487231 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 43116 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file junk hello === End of file junk === Start of file server.cmd Testnum 456 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 === End of file server.response === Start of file stderr456 curl: variable contains null byte curl: option --expand-data: variable expansion failure curl: try 'curl --help' for more information === End of file stderr456 === Start of file valgrind456 ==252554== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind456 test 0455...[Variable using base64] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind455 ../src/curl -q --output log/2/curl455.out --include --trace-ascii log/2/trace455 --trace-time --variable moby="Call me Ishmael" --variable what=d2hpdGUtd2hhbGU= --expand-url "http://127.0.0.1:39863/{{moby:b64}}/{{what:64dec}}/455" > log/2/stdout455 2> log/2/stderr455 valgrind ERROR ==252395== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 455 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind455 ../src/curl -q --output log/2/curl455.out --include --trace-ascii log/2/trace455 --trace-time --variable moby="Call me Ishmael" --variable what=d2hpdGUtd2hhbGU= --expand-url "http://127.0.0.1:39863/{{moby:b64}}/{{what:64dec}}/455" > log/2/stdout455 2> log/2/stderr455 === End of file commands.log === Start of file curl455.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl455.out === Start of file http_server.log 01:20:18.363102 ====> Client connect 01:20:18.363253 accept_connection 3 returned 4 01:20:18.363332 accept_connection 3 returned 0 01:20:18.370476 Read 93 bytes 01:20:18.370563 Process 93 bytes request 01:20:18.370649 Got request: GET /verifiedserver HTTP/1.1 01:20:18.370712 Are-we-friendly question received 01:20:18.370820 Wrote request (93 bytes) input to log/2/server.input 01:20:18.370908 Identifying ourselves as friends 01:20:18.371074 Response sent (57 bytes) and written to log/2/server.response 01:20:18.371138 special request received, no persistency 01:20:18.371194 ====> Client disconnect 0 01:21:05.345684 ====> Client connect 01:21:05.345826 accept_connection 3 returned 4 01:21:05.345904 accept_connection 3 returned 0 01:21:06.335193 Read 115 bytes 01:21:06.335388 Process 115 bytes request 01:21:06.335497 Got request: GET /Q2FsbCBtZSBJc2htYWVs/white-whale/455 HTTP/1.1 01:21:06.335574 Serve test number 455 part 0 01:21:06.335773 - request found to be complete (455) 01:21:06.336046 Wrote request (115 bytes) input to log/2/server.input 01:21:06.336169 Send response test455 section 01:21:06.336635 Response sent (267 bytes) and written to log/2/server.response 01:21:06.336709 => persistent connection request ended, awaits new request 01:21:08.321879 Connection closed by client 01:21:08.322075 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 35614 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 455 === End of file server.cmd === Start of file server.input GET /Q2FsbCBtZSBJc2htYWVs/white-whale/455 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr455 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr455 === Start of file trace455 01:21:04.415694 * Trying 127.0.0.1:39863... 01:21:05.303190 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 45692 01:21:05.423899 * using HTTP/1.x 01:21:05.759051 => Send header, 115 bytes (0x73) 0000: GET /Q2FsbCBtZSBJc2htYWVs/white-whale/455 HTTP/1.1 0034: Host: 127.0.0.1:39863 004b: User-Agent: curl/8.17.0 0064: Accept: */* 0071: 01:21:06.112031 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:21:06.422128 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 NCMD (16128): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind457 ../src/curl -q --output log/6/curl457.out --include --trace-ascii log/6/trace457 --trace-time http://127.0.0.1:38277/457 --max-filesize 143 > log/6/stdout457 2> log/6/stderr457 CMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind460 ../src/curl -q --output log/3/curl460.out --include --trace-ascii log/3/trace460 --trace-time --expand-url > log/3/stdout460 2> log/3/stderr460 ov 2010 14:49:00 GMT 01:21:06.520999 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:21:06.547930 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:21:06.555620 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:21:06.562512 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:21:06.592771 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:21:06.649111 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:21:06.687852 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:21:06.694579 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:21:06.787765 <= Recv header, 2 bytes (0x2) 0000: 01:21:06.854395 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:21:06.984338 * we are done reading and this is set to close, stop send 01:21:07.014385 * abort upload 01:21:07.515742 * shutting down connection #0 === End of file trace455 === Start of file valgrind455 ==252395== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind455 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 463 in state 4 Runner 2 (id 185908) running test 467 in state 4 Runner 3 (id 185910) running test 460 in state 4 Runner 4 (id 185912) running test 462 in state 4 Runner 5 (id 185914) running test 461 in state 4 Runner 6 (id 185916) running test 457 in state 4 Runner 7 (id 185918) running test 458 in state 4 Runner 8 (id 185920) running test 459 in state 4 test 0457...[chunked Transfer-Encoding with --max-filesize] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind457 ../src/curl -q --output log/6/curl457.out --include --trace-ascii log/6/trace457 --trace-time http://127.0.0.1:38277/457 --max-filesize 143 > log/6/stdout457 2> log/6/stderr457 valgrind ERROR ==252737== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 457 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind457 ../src/curl -q --output log/6/curl457.out --include --trace-ascii log/6/trace457 --trace-time http://127.0.0.1:38277/457 --max-filesize 143 > log/6/stdout457 2> log/6/stderr457 === End of file commands.log === Start of file curl457.out HTTP/1.1 200 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Connection: mooo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccc === End of file curl457.out === Start of file http_server.log 01:20:27.234230 ====> Client connect 01:20:27.234410 accept_connection 3 returned 4 01:20:27.234491 accept_connection 3 returned 0 01:20:27.240632 Read 93 bytes 01:20:27.240718 Process 93 bytes request 01:20:27.240808 Got request: GET /verifiedserver HTTP/1.1 01:20:27.240874 Are-we-friendly question received 01:20:27.240991 Wrote request (93 bytes) input to log/6/server.input 01:20:27.241091 Identifying ourselves as friends 01:20:27.241270 Response sent (57 bytes) and written to log/6/server.response 01:20:27.241334 special request received, no persistency 01:20:27.241392 ====> Client disconnect 0 01:21:14.246617 ====> Client connect 01:21:14.246760 accept_connection 3 returned 4 01:21:14.246838 accept_connection 3 returned 0 01:21:15.207248 Read 82 bytes 01:21:15.207465 Process 82 bytes request 01:21:15.207602 Got request: GET /457 HTTP/1.1 01:21:15.207677 Serve test number 457 part 0 01:21:15.207878 - request found to be complete (457) 01:21:15.208152 Wrote request (82 bytes) input to log/6/server.input 01:21:15.208268 Send response test457 section 01:21:15.208615 Response sent (290 bytes) and written to log/6/server.response 01:21:15.208682 => persistent connection request ended, awaits new request 01:21:16.873867 Connection closed by client 01:21:16.874059 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 59898 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 457 === End of file server.cmd === Start of file server.input GET /457 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Connection: mooo 40 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 30 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 21;heresatest=moooo cccccccccccccccccccccccccccccc c 0 === End of file server.response === Start of file stderr457 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 143 0 143 0 0 32 0 --:--:-- 0:00:04 --:--:-- 45 curl: (63) Exceeded the maximum allowed file size (143) with 143 bytes === End of file stderr457 === Start of file trace457 01:21:14.330983 * Trying 127.0.0.1:38277... 01:21:15.189554 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 34154 01:21:15.308034 * using HTTP/1.x 01:21:15.631418 => Send header, 82 bytes (0x52) 0000: GET /457 HTTP/1.1 0013: Host: 127.0.0.1:38277 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:21:15.963709 <= Recv header, 27 bytes (0x1b) 0000: HTTP/1.1 200 funky chunky!. 01:21:16.269936 <= Recv header, 33 bytes (0x21) 0000: Server: fakeit/0.9 fakeitbad/1.0. 01:21:16.437916 <= Recv header, 27 bytes (0x1b) 0000: Transfer-Encoding: chunked. 01:21:16.509509 <= Recv header, 17 bytes (0x11) 0000: Connection: mooo. 01:21:16.579695 <= Recv header, 1 bytes (0x1) 0000: . 01:21:16.633330 <= Recv data, 185 bytes (0xb9) 0000: 40 0004: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0046: 30 004a: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 007c: 21;heresatest=moooo 0091: cccccccccccccccccccccccccccccc.c. 00b4: 0 00b7: 01:21:16.814747 * Exceeded the maximum allowed file size (143) with 143 bytes 01:21:16.835986 * Failed reading the chunked-encoded stream 01:21:17.163556 * closing connection #0 === End of file trace457 === Start of file valgrind457 ==252737== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind457 test 0460...[try --expand without an argument] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind460 ../src/curl -q --output log/3/curl460.out --include --trace-ascii log/3/trace460 --trace-time --expand-url > log/3/stdout460 2> log/3/stderr460 valgrind ERROR ==253109== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 460 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind460 ../src/curl -q --output log/3/curl460.out --include --trace-ascii log/3/trace460 -CMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind462 ../src/curl -q --output log/4/curl462.out --include --trace-ascii log/4/trace462 --trace-time http://127.0.0.1:42621/462 -K log/4/cmd > log/4/stdout462 2> log/4/stderr462 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind458 ../src/curl -q --include --trace-ascii log/7/trace458 --trace-time http://127.0.0.1:34897/458 -K log/7/cmd > log/7/stdout458 2> log/7/stderr458 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind459 ../src/curl -q --output log/8/curl459.out --include --trace-ascii log/8/trace459 --trace-time http://127.0.0.1:39461/459 --config log/8/config --silent > log/8/stdout459 2> log/8/stderr459 -trace-time --expand-url > log/3/stdout460 2> log/3/stderr460 === End of file commands.log === Start of file server.cmd Testnum 460 === End of file server.cmd === Start of file stderr460 curl: option --expand-url: requires parameter curl: try 'curl --help' for more information === End of file stderr460 === Start of file valgrind460 ==253109== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind460 test 0462...[Missing environment variables in config file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind462 ../src/curl -q --output log/4/curl462.out --include --trace-ascii log/4/trace462 --trace-time http://127.0.0.1:42621/462 -K log/4/cmd > log/4/stdout462 2> log/4/stderr462 valgrind ERROR ==253474== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 462 === Start of file cmd variable %MISSING expand-data {{MISSING}} === End of file cmd === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind462 ../src/curl -q --output log/4/curl462.out --include --trace-ascii log/4/trace462 --trace-time http://127.0.0.1:42621/462 -K log/4/cmd > log/4/stdout462 2> log/4/stderr462 === End of file commands.log === Start of file server.cmd Testnum 462 === End of file server.cmd === Start of file stderr462 curl: Variable 'MISSING' import fail, not set curl: option -K: variable expansion failure curl: try 'curl --help' for more information === End of file stderr462 === Start of file valgrind462 ==253474== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind462 setenv FUNVALUE = contents458 setenv VALUE2 = curl test 0458...[variable expand the file name with --expand-output] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind458 ../src/curl -q --include --trace-ascii log/7/trace458 --trace-time http://127.0.0.1:34897/458 -K log/7/cmd > log/7/stdout458 2> log/7/stderr458 valgrind ERROR ==252908== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 458 === Start of file cmd --variable %FUNVALUE --expand-output log/7/{{FUNVALUE}} === End of file cmd === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind458 ../src/curl -q --include --trace-ascii log/7/trace458 --trace-time http://127.0.0.1:34897/458 -K log/7/cmd > log/7/stdout458 2> log/7/stderr458 === End of file commands.log === Start of file contents458 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file contents458 === Start of file http_server.log 01:20:40.609525 ====> Client connect 01:20:40.609697 accept_connection 3 returned 4 01:20:40.609783 accept_connection 3 returned 0 01:20:40.617005 Read 93 bytes 01:20:40.617125 Process 93 bytes request 01:20:40.617222 Got request: GET /verifiedserver HTTP/1.1 01:20:40.617296 Are-we-friendly question received 01:20:40.617429 Wrote request (93 bytes) input to log/7/server.input 01:20:40.617536 Identifying ourselves as friends 01:20:40.617763 Response sent (57 bytes) and written to log/7/server.response 01:20:40.617839 special request received, no persistency 01:20:40.617903 ====> Client disconnect 0 01:21:27.989591 ====> Client connect 01:21:27.989742 accept_connection 3 returned 4 01:21:27.989823 accept_connection 3 returned 0 01:21:28.978714 Read 82 bytes 01:21:28.978908 Process 82 bytes request 01:21:28.978996 Got request: GET /458 HTTP/1.1 01:21:28.979060 Serve test number 458 part 0 01:21:28.979233 - request found to be complete (458) 01:21:28.979470 Wrote request (82 bytes) input to log/7/server.input 01:21:28.979575 Send response test458 section 01:21:28.979961 Response sent (267 bytes) and written to log/7/server.response 01:21:28.980028 => persistent connection request ended, awaits new request 01:21:30.936804 Connection closed by client 01:21:30.937001 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 43256 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 458 === End of file server.cmd === Start of file server.input GET /458 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr458 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr458 === Start of file trace458 01:21:28.058441 * Trying 127.0.0.1:34897... 01:21:28.939964 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 38784 01:21:29.060459 * using HTTP/1.x 01:21:29.402384 => Send header, 82 bytes (0x52) 0000: GET /458 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:21:29.762016 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:21:30.061815 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:21:30.160909 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:21:30.186063 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:21:30.198163 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:21:30.205794 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:21:30.240711 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:21:30.297823 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:21:30.334446 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:21:30.339476 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:21:30.418928 <= Recv header, 2 bytes (0x2) 0000: 01:21:30.476397 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:21:30.587966 * we are done reading and this is set to close, stop send 01:21:30.619964 * abort upload 01:21:31.118348 * shutting down connection #0 === End of file trace458 === Start of file valgrind458 ==252908== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind458 test 0459...[config file with argument using whitespace missing quotes] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=loCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind461 ../src/curl -q --output log/5/curl461.out --include --trace-ascii log/5/trace461 --trace-time http://127.0.0.1:46263/461 -H host: > log/5/stdout461 2> log/5/stderr461 g/8/valgrind459 ../src/curl -q --output log/8/curl459.out --include --trace-ascii log/8/trace459 --trace-time http://127.0.0.1:39461/459 --config log/8/config --silent > log/8/stdout459 2> log/8/stderr459 valgrind ERROR ==253075== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 459 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind459 ../src/curl -q --output log/8/curl459.out --include --trace-ascii log/8/trace459 --trace-time http://127.0.0.1:39461/459 --config log/8/config --silent > log/8/stdout459 2> log/8/stderr459 === End of file commands.log === Start of file config data = arg with space === End of file config === Start of file curl459.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl459.out === Start of file http_server.log 01:20:43.267363 ====> Client connect 01:20:43.267527 accept_connection 3 returned 4 01:20:43.267595 accept_connection 3 returned 0 01:20:43.273913 Read 93 bytes 01:20:43.274030 Process 93 bytes request 01:20:43.274118 Got request: GET /verifiedserver HTTP/1.1 01:20:43.274183 Are-we-friendly question received 01:20:43.274307 Wrote request (93 bytes) input to log/8/server.input 01:20:43.274399 Identifying ourselves as friends 01:20:43.274544 Response sent (57 bytes) and written to log/8/server.response 01:20:43.274605 special request received, no persistency 01:20:43.274658 ====> Client disconnect 0 01:21:31.296741 ====> Client connect 01:21:31.296886 accept_connection 3 returned 4 01:21:31.296972 accept_connection 3 returned 0 01:21:32.427567 Read 154 bytes 01:21:32.427775 Process 154 bytes request 01:21:32.427880 Got request: POST /459 HTTP/1.1 01:21:32.427951 Serve test number 459 part 0 01:21:32.428120 - request found to be complete (459) 01:21:32.428273 Found Content-Length: 3 in the request 01:21:32.428431 Wrote request (154 bytes) input to log/8/server.input 01:21:32.428542 Send response test459 section 01:21:32.428904 Response sent (267 bytes) and written to log/8/server.response 01:21:32.428970 => persistent connection request ended, awaits new request 01:21:34.333828 Connection closed by client 01:21:34.334044 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 33774 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 459 === End of file server.cmd === Start of file server.input POST /459 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* Content-Length: 3 Content-Type: application/x-www-form-urlencoded arg === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr459 Warning: log/8/config:1: warning: 'data' uses unquoted whitespace. This may Warning: cause side-effects. Consider double quotes. === End of file stderr459 === Start of file trace459 01:21:31.314868 * Trying 127.0.0.1:39461... 01:21:32.241256 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 46062 01:21:32.364367 * using HTTP/1.x 01:21:32.854504 => Send header, 151 bytes (0x97) 0000: POST /459 HTTP/1.1 0014: Host: 127.0.0.1:39461 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: Content-Length: 3 0064: Content-Type: application/x-www-form-urlencoded 0095: 01:21:32.982711 => Send data, 3 bytes (0x3) 0000: arg 01:21:33.058797 * upload completely sent off: 3 bytes 01:21:33.312772 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:21:33.600791 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:21:33.698576 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:21:33.725381 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:21:33.733117 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:21:33.740426 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:21:33.771568 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:21:33.827368 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:21:33.863664 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:21:33.868530 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:21:33.947721 <= Recv header, 2 bytes (0x2) 0000: 01:21:34.004148 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:21:34.525683 * shutting down connection #0 === End of file trace459 === Start of file valgrind459 ==253075== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind459 test 0461...[disable Host: when specified as lower case] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind461 ../src/curl -q --output log/5/curl461.out --include --trace-ascii log/5/trace461 --trace-time http://127.0.0.1:46263/461 -H host: > log/5/stdout461 2> log/5/stderr461 valgrind ERROR ==253346== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 461 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind461 ../src/curl -q --output log/5/curl461.out --include --trace-ascii log/5/trace461 --trace-time http://127.0.0.1:46263/461 -H host: > log/5/stdout461 2> log/5/stderr461 === End of file commands.log === Start of file curl461.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Connection: close Content-Type: text/html -foo- === End of file curl461.out === Start of file http_server.log 01:20:46.575099 ====> Client connect 01:20:46.575278 accept_connection 3 returned 4 01:20:46.575359 accept_connection 3 returned 0 01:20:46.582491 Read 93 bytes 01:20:46.582608 Process 93 bytes request 01:20:46.582702 Got request: GET /verifiedserver HTTP/1.1 01:20:46.582764 Are-we-friendly question received 01:20:46.582872 Wrote request (93 bytes) input to log/5/server.input 01:20:46.582963 Identifying ourselves as friends 01:20:46.583123 Response sent (57 bytes) and written to log/5/server.response 01:20:46.583189 special request received, no persistency 01:20:46.583248 ====> Client disconnect 0 01:21:33.525304 ====> Client connect 01:21:33.525450 accept_connection 3 returned 4 01:21:33.525533 accept_connection 3 returned 0 01:21:34.629903 Read 59 bytes 01:21:34.630079 Process 59 bytes request 01:21:34.630175 Got request: GET /461 HTTP/1.1 01:21:34.630245 Serve test number 461 part 0 01:21:34.630422 - request found to be complete (461) 01:21:34.630647 Wrote request (59 bytes) input to log/5/server.input 01:21:34.630743 Send response test461 section 01:21:34.631079 Response sent (125 bytes) and written to log/5/server.response 01:21:34.631152 => persistent connection request ended, awaits new request 01:21:36.630186 Connection closed by client 01:21:36.630362 ====> Client disconnect 0 === CMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind467 ../src/curl -q --output log/2/curl467.out --include --trace-ascii log/2/trace467 --trace-time curl -v http://example.com > log/2/stdout467 2> log/2/stderr467 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind463 ../src/curl -q --output log/1/curl463.out --include --trace-ascii log/1/trace463 --trace-time -d @log/1/input463 http://127.0.0.1:40641/463 > log/1/stdout463 2> log/1/stderr463 End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 60504 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 461 === End of file server.cmd === Start of file server.input GET /461 HTTP/1.1 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Connection: close Content-Type: text/html -foo- === End of file server.response === Start of file stderr461 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr461 === Start of file trace461 01:21:33.595800 * Trying 127.0.0.1:46263... 01:21:34.504739 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 55340 01:21:34.638933 * using HTTP/1.x 01:21:35.058084 => Send header, 59 bytes (0x3b) 0000: GET /461 HTTP/1.1 0013: User-Agent: curl/8.17.0 002c: Accept: */* 0039: 01:21:35.390053 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:21:35.723414 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:21:35.838374 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:21:35.904811 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:21:35.942306 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:21:36.032095 <= Recv header, 2 bytes (0x2) 0000: 01:21:36.095179 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:21:36.232809 * we are done reading and this is set to close, stop send 01:21:36.276619 * abort upload 01:21:36.814002 * shutting down connection #0 === End of file trace461 === Start of file valgrind461 ==253346== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind461 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 463 in state 4 Runner 2 (id 185908) running test 467 in state 4 Runner 3 (id 185910) running test 469 in state 4 Runner 4 (id 185912) running test 470 in state 4 Runner 5 (id 185914) running test 475 in state 4 Runner 6 (id 185916) running test 468 in state 4 Runner 7 (id 185918) running test 471 in state 4 Runner 8 (id 185920) running test 473 in state 4 test 0467...[use a bad short option letter that does not exist (after one does exist)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind467 ../src/curl -q --output log/2/curl467.out --include --trace-ascii log/2/trace467 --trace-time curl -v http://example.com > log/2/stdout467 2> log/2/stderr467 valgrind ERROR ==253790== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 467 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind467 ../src/curl -q --output log/2/curl467.out --include --trace-ascii log/2/trace467 --trace-time curl -v http://example.com > log/2/stdout467 2> log/2/stderr467 === End of file commands.log === Start of file server.cmd Testnum 467 === End of file server.cmd === Start of file stderr467 Warning: -v, --verbose overrides an earlier trace option curl: option -v: is unknown curl: try 'curl --help' for more information === End of file stderr467 === Start of file valgrind467 ==253790== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind467 test 0463...[HTTP with -d @file with file containing CR, LF and null byte] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind463 ../src/curl -q --output log/1/curl463.out --include --trace-ascii log/1/trace463 --trace-time -d @log/1/input463 http://127.0.0.1:40641/463 > log/1/stdout463 2> log/1/stderr463 valgrind ERROR ==253659== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 463 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind463 ../src/curl -q --output log/1/curl463.out --include --trace-ascii log/1/trace463 --trace-time -d @log/1/input463 http://127.0.0.1:40641/463 > log/1/stdout463 2> log/1/stderr463 === End of file commands.log === Start of file curl463.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 4 ok === End of file curl463.out === Start of file http_server.log 01:21:06.733286 ====> Client connect 01:21:06.733454 accept_connection 3 returned 4 01:21:06.733532 accept_connection 3 returned 0 01:21:06.740753 Read 93 bytes 01:21:06.740871 Process 93 bytes request 01:21:06.740994 Got request: GET /verifiedserver HTTP/1.1 01:21:06.741066 Are-we-friendly question received 01:21:06.741191 Wrote request (93 bytes) input to log/1/server.input 01:21:06.741292 Identifying ourselves as friends 01:21:06.741453 Response sent (57 bytes) and written to log/1/server.response 01:21:06.741514 special request received, no persistency 01:21:06.741568 ====> Client disconnect 0 01:21:54.419436 ====> Client connect 01:21:54.419579 accept_connection 3 returned 4 01:21:54.419656 accept_connection 3 returned 0 01:21:55.520143 Read 171 bytes 01:21:55.520368 Process 171 bytes request 01:21:55.520462 Got request: POST /463 HTTP/1.1 01:21:55.520533 Serve test number 463 part 0 01:21:55.520708 - request found to be complete (463) 01:21:55.520875 Found Content-Length: 19 in the request 01:21:55.521045 Wrote request (171 bytes) input to log/1/server.input 01:21:55.521160 Send response test463 section 01:21:55.521447 Response sent (75 bytes) and written to log/1/server.response 01:21:55.521515 => persistent connection request ended, awaits new request 01:21:57.803449 Connection closed by client 01:21:57.803651 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 49392 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file input463 one two three fourfive === End of file input463 === Start of file server.cmd Testnum 463 === End of file server.cmd === Start of file server.input POST /463 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* Content-Length: 19 Content-Type: application/x-www-form-urlencoded onetwothreefourfive === End of file server.input === Start of file server.response HTTP/1.1 200 OKCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind468 ../src/curl -q --trace-ascii log/6/trace468 --trace-time http://127.0.0.1:38277/468 -K log/6/cmd468 -w "" > log/6/stdout468 2> log/6/stderr468 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind469 ../src/curl -q --output log/3/curl469.out --include --trace-ascii log/3/trace469 --trace-time -H “host: 127.0.0.1:46853/“ -s > log/3/stdout469 2> log/3/stderr469 Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 4 ok === End of file server.response === Start of file stderr463 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 23 0 4 100 19 0 4 0:00:04 0:00:04 --:--:-- 7 100 23 0 4 100 19 0 4 0:00:04 0:00:04 --:--:-- 7 === End of file stderr463 === Start of file trace463 01:21:53.497086 * Trying 127.0.0.1:40641... 01:21:54.345729 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 60060 01:21:54.471578 * using HTTP/1.x 01:21:54.945432 => Send header, 152 bytes (0x98) 0000: POST /463 HTTP/1.1 0014: Host: 127.0.0.1:40641 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: Content-Length: 19 0065: Content-Type: application/x-www-form-urlencoded 0096: 01:21:55.044898 => Send data, 19 bytes (0x13) 0000: onetwothreefourfive 01:21:55.121693 * upload completely sent off: 19 bytes 01:21:55.366686 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:21:55.678913 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:21:55.791241 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 4. 01:21:55.880046 <= Recv header, 1 bytes (0x1) 0000: . 01:21:55.937128 <= Recv data, 4 bytes (0x4) 0000: ok!. 01:21:56.424391 * Connection #0 to host 127.0.0.1:40641 left intact === End of file trace463 === Start of file valgrind463 ==253659== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind463 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 477 in state 4 Runner 2 (id 185908) running test 476 in state 4 Runner 3 (id 185910) running test 469 in state 4 Runner 4 (id 185912) running test 470 in state 4 Runner 5 (id 185914) running test 475 in state 4 Runner 6 (id 185916) running test 468 in state 4 Runner 7 (id 185918) running test 471 in state 4 Runner 8 (id 185920) running test 473 in state 4 test 0468...[set -w in config, then reset -w to blank on cmdline] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind468 ../src/curl -q --trace-ascii log/6/trace468 --trace-time http://127.0.0.1:38277/468 -K log/6/cmd468 -w "" > log/6/stdout468 2> log/6/stderr468 valgrind ERROR ==253970== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 468 === Start of file cmd468 -w "output\n" === End of file cmd468 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind468 ../src/curl -q --trace-ascii log/6/trace468 --trace-time http://127.0.0.1:38277/468 -K log/6/cmd468 -w "" > log/6/stdout468 2> log/6/stderr468 === End of file commands.log === Start of file http_server.log 01:21:20.743896 ====> Client connect 01:21:20.744080 accept_connection 3 returned 4 01:21:20.744169 accept_connection 3 returned 0 01:21:20.751417 Read 93 bytes 01:21:20.751536 Process 93 bytes request 01:21:20.751625 Got request: GET /verifiedserver HTTP/1.1 01:21:20.751689 Are-we-friendly question received 01:21:20.751812 Wrote request (93 bytes) input to log/6/server.input 01:21:20.751911 Identifying ourselves as friends 01:21:20.752088 Response sent (57 bytes) and written to log/6/server.response 01:21:20.752153 special request received, no persistency 01:21:20.752210 ====> Client disconnect 0 01:22:08.951526 ====> Client connect 01:22:08.951683 accept_connection 3 returned 4 01:22:08.951770 accept_connection 3 returned 0 01:22:09.894540 Read 82 bytes 01:22:09.894742 Process 82 bytes request 01:22:09.894837 Got request: GET /468 HTTP/1.1 01:22:09.894908 Serve test number 468 part 0 01:22:09.895089 - request found to be complete (468) 01:22:09.895361 Wrote request (82 bytes) input to log/6/server.input 01:22:09.895473 Send response test468 section 01:22:09.895903 Response sent (267 bytes) and written to log/6/server.response 01:22:09.895973 => persistent connection request ended, awaits new request 01:22:11.740760 Connection closed by client 01:22:11.740973 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 34170 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 468 === End of file server.cmd === Start of file server.input GET /468 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr468 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr468 === Start of file stdout468 -foo- === End of file stdout468 === Start of file trace468 01:22:09.011156 * Trying 127.0.0.1:38277... 01:22:09.886391 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 51852 01:22:09.993466 * using HTTP/1.x 01:22:10.317850 => Send header, 82 bytes (0x52) 0000: GET /468 HTTP/1.1 0013: Host: 127.0.0.1:38277 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:22:10.669602 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:22:10.890927 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:22:10.971592 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:22:10.993907 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:22:11.001613 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:22:11.010456 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:22:11.046138 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:22:11.100552 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:22:11.133656 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:22:11.138273 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:22:11.213642 <= Recv header, 2 bytes (0x2) 0000: 01:22:11.272327 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:22:11.446896 * we are done reading and this is set to close, stop send 01:22:11.475597 * abort upload 01:22:11.934569 * shutting down connection #0 === End of file trace468 === Start of file valgrind468 ==253970== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind468 test 0469...[warn about UCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind470 ../src/curl -q --output log/4/curl470.out --include --trace-ascii log/4/trace470 --trace-time 127.0.0.1:42621 --no-progress-meter -K "log/4/input470" > log/4/stdout470 2> log/4/stderr470 nicode quote character] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind469 ../src/curl -q --output log/3/curl469.out --include --trace-ascii log/3/trace469 --trace-time -H “host: 127.0.0.1:46853/“ -s > log/3/stdout469 2> log/3/stderr469 valgrind ERROR ==254140== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 469 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind469 ../src/curl -q --output log/3/curl469.out --include --trace-ascii log/3/trace469 --trace-time -H “host: 127.0.0.1:46853/“ -s > log/3/stdout469 2> log/3/stderr469 === End of file commands.log === Start of file curl469.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl469.out === Start of file http_server.log 01:21:29.546003 ====> Client connect 01:21:29.546154 accept_connection 3 returned 4 01:21:29.546224 accept_connection 3 returned 0 01:21:29.554179 Read 93 bytes 01:21:29.554280 Process 93 bytes request 01:21:29.554357 Got request: GET /verifiedserver HTTP/1.1 01:21:29.554414 Are-we-friendly question received 01:21:29.554530 Wrote request (93 bytes) input to log/3/server.input 01:21:29.554621 Identifying ourselves as friends 01:21:29.554799 Response sent (57 bytes) and written to log/3/server.response 01:21:29.554855 special request received, no persistency 01:21:29.554904 ====> Client disconnect 0 01:22:16.165640 ====> Client connect 01:22:16.165788 accept_connection 3 returned 4 01:22:16.165877 accept_connection 3 returned 0 01:22:17.197171 Read 88 bytes 01:22:17.197401 Process 88 bytes request 01:22:17.197503 Got request: GET /%E2%80%9C HTTP/1.1 01:22:17.197576 No test number in path 01:22:17.197689 [log/3/server.cmd] cmdfile says testnum 469 01:22:17.197899 - request found to be complete (469) 01:22:17.198147 Wrote request (88 bytes) input to log/3/server.input 01:22:17.198255 Send response test469 section 01:22:17.198674 Response sent (267 bytes) and written to log/3/server.response 01:22:17.198745 => persistent connection request ended, awaits new request 01:22:19.095931 Connection closed by client 01:22:19.119270 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 41296 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 469 === End of file server.cmd === Start of file server.input GET /%E2%80%9C HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr469 Warning: The argument '“host:' starts with a Unicode character. Maybe ASCII Warning: was intended? === End of file stderr469 === Start of file trace469 01:22:16.182269 * Trying 127.0.0.1:46853... 01:22:17.107259 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 33476 01:22:17.237712 * using HTTP/1.x 01:22:17.624110 => Send header, 88 bytes (0x58) 0000: GET /%E2%80%9C HTTP/1.1 0019: Host: 127.0.0.1:46853 0030: User-Agent: curl/8.17.0 0049: Accept: */* 0056: 01:22:17.987313 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:22:18.280218 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:22:18.379035 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:22:18.403457 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:22:18.411659 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:22:18.419379 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:22:18.450576 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:22:18.506469 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:22:18.543565 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:22:18.548707 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:22:18.628899 <= Recv header, 2 bytes (0x2) 0000: 01:22:18.686841 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:22:18.797652 * we are done reading and this is set to close, stop send 01:22:18.828339 * abort upload 01:22:19.281534 * shutting down connection #0 === End of file trace469 === Start of file valgrind469 ==254140== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind469 test 0470...[warn about Unicode quote character read from config file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind470 ../src/curl -q --output log/4/curl470.out --include --trace-ascii log/4/trace470 --trace-time 127.0.0.1:42621 --no-progress-meter -K "log/4/input470" > log/4/stdout470 2> log/4/stderr470 valgrind ERROR ==254339== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 470 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind470 ../src/curl -q --output log/4/curl470.out --include --trace-ascii log/4/trace470 --trace-time 127.0.0.1:42621 --no-progress-meter -K "log/4/input470" > log/4/stdout470 2> log/4/stderr470 === End of file commands.log === Start of file curl470.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl470.out === Start of file http_server.log 01:21:35.617024 ====> Client connect 01:21:35.617193 accept_connection 3 returned 4 01:21:35.617271 accept_connection 3 returned 0 01:21:35.624922 Read 93 bytes 01:21:35.625056 Process 93 bytes request 01:21:35.625149 Got request: GET /verifiedserver HTTP/1.1 01:21:35.625215 Are-we-friendly question received 01:21:35.625341 Wrote request (93 bytes) input to log/4/server.input 01:21:35.625446 Identifying ourselves as friends 01:21:35.625602 Response sent (57 bytes) and written to log/4/server.response 01:21:35.625664 special request received, no persistency 01:21:35.625720 ====> Client disconnect 0 01:22:22.826892 ====> Client connect 01:22:22.827048 accept_connection 3 returned 4 01:22:22.827136 accept_connection 3 returned 0 01:22:23.962112 Read 96 bytes 01:22:23.962300 Process 96 bytes request 01:22:23.962394 Got request: GET / HTTP/1.1 01:22:23.962545 No test number in path 01:22:23.962700 [log/4/server.cmd] cmdfile says testnum 470 01:22:23.962879 - request found to be complete (470) 01:22:23.963131 Wrote request (96 bytes) input to log/4/server.input 01:22:23.963247 Send response test470 section 01:22:23.963597 Response sent (267 bytes) and written to log/4/seCMD (2048): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind471 ../src/curl -q --include --trace-ascii log/7/trace471 --trace-time "http://127.0.0.1:34897/{471,4710001}" -o "log/7/dumpit#1.dump" > log/7/stdout471 2> log/7/stderr471 rver.response 01:22:23.963664 => persistent connection request ended, awaits new request 01:22:25.915639 Connection closed by client 01:22:25.915818 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 59594 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file input470 -H “host:fake†=== End of file input470 === Start of file server.cmd Testnum 470 === End of file server.cmd === Start of file server.input GET / HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* “host:fake†=== End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr470 Warning: The argument '“host:fakeâ€' starts with a Unicode character. Maybe Warning: ASCII was intended? === End of file stderr470 === Start of file trace470 01:22:21.846651 * Trying 127.0.0.1:42621... 01:22:22.775908 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 50556 01:22:22.923614 * using HTTP/1.x 01:22:23.389421 => Send header, 96 bytes (0x60) 0000: GET / HTTP/1.1 0010: Host: 127.0.0.1:42621 0027: User-Agent: curl/8.17.0 0040: Accept: */* 004d: ...host:fake... 005e: 01:22:23.757539 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:22:24.033613 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:22:24.128633 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:22:24.152444 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:22:24.160289 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:22:24.167427 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:22:24.197612 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:22:24.250039 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:22:24.284982 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:22:24.289871 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:22:24.377005 <= Recv header, 2 bytes (0x2) 0000: 01:22:24.446518 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:22:24.559115 * we are done reading and this is set to close, stop send 01:22:24.593169 * abort upload 01:22:25.097607 * shutting down connection #0 === End of file trace470 === Start of file valgrind470 ==254339== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind470 test 0471...[Reject HTTP/1.1 to HTTP/2 switch on the same connection] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind471 ../src/curl -q --include --trace-ascii log/7/trace471 --trace-time "http://127.0.0.1:34897/{471,4710001}" -o "log/7/dumpit#1.dump" > log/7/stdout471 2> log/7/stderr471 valgrind ERROR ==254370== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 471 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind471 ../src/curl -q --include --trace-ascii log/7/trace471 --trace-time "http://127.0.0.1:34897/{471,4710001}" -o "log/7/dumpit#1.dump" > log/7/stdout471 2> log/7/stderr471 === End of file commands.log === Start of file dumpit471.dump HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Content-Type: text/html Funny-head: yesyes -foo- === End of file dumpit471.dump === Start of file http_server.log 01:21:34.912956 ====> Client connect 01:21:34.913105 accept_connection 3 returned 4 01:21:34.913177 accept_connection 3 returned 0 01:21:34.920176 Read 93 bytes 01:21:34.920273 Process 93 bytes request 01:21:34.920364 Got request: GET /verifiedserver HTTP/1.1 01:21:34.920428 Are-we-friendly question received 01:21:34.920535 Wrote request (93 bytes) input to log/7/server.input 01:21:34.920623 Identifying ourselves as friends 01:21:34.920778 Response sent (57 bytes) and written to log/7/server.response 01:21:34.920856 special request received, no persistency 01:21:34.920911 ====> Client disconnect 0 01:22:22.403535 ====> Client connect 01:22:22.403691 accept_connection 3 returned 4 01:22:22.403772 accept_connection 3 returned 0 01:22:23.470862 Read 82 bytes 01:22:23.471068 Process 82 bytes request 01:22:23.471153 Got request: GET /471 HTTP/1.1 01:22:23.471216 Serve test number 471 part 0 01:22:23.471381 - request found to be complete (471) 01:22:23.471619 Wrote request (82 bytes) input to log/7/server.input 01:22:23.471718 Send response test471 section 01:22:23.472087 Response sent (238 bytes) and written to log/7/server.response 01:22:23.472148 => persistent connection request ended, awaits new request 01:22:26.249777 Read 86 bytes 01:22:26.249953 Process 86 bytes request 01:22:26.250041 Got request: GET /4710001 HTTP/1.1 01:22:26.250107 Serve test number 471 part 1 01:22:26.250276 - request found to be complete (471) 01:22:26.250462 Wrote request (86 bytes) input to log/7/server.input 01:22:26.250544 Send response test471 section 01:22:26.250758 connection close instruction "swsclose" found in response 01:22:26.250917 Response sent (88 bytes) and written to log/7/server.response 01:22:26.250979 instructed to close connection after server-reply 01:22:26.251034 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 43706 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 471 === End of file server.cmd === Start of file server.input GET /471 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* GET /4710001 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Content-Type: text/html Funny-head: yesyes -foo- HTTP/2 200 OK Content-Type: text/html Funny-head: swsclose Connection: close crap data === End of file server.response === Start of file stderr471 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind473 ../src/curl -q --output log/8/curl473.out --include --trace-ascii log/8/trace473 --trace-time http://127.0.0.1:39461/473 --etag-save log/8/etag473 > log/8/stdout473 2> log/8/stderr473 0:00:06 0:00:04 0:00:02 1 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 curl: (8) Version mismatch (from HTTP/1 to HTTP/2) === End of file stderr471 === Start of file trace471 01:22:22.448063 * Trying 127.0.0.1:34897... 01:22:23.399824 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 54882 01:22:23.558007 * using HTTP/1.x 01:22:23.895678 => Send header, 82 bytes (0x52) 0000: GET /471 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:22:24.232423 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:22:24.573992 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:22:24.675596 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:22:24.703157 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:22:24.711357 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:22:24.718796 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:22:24.750019 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:22:24.804897 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:22:24.811695 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:22:24.892657 <= Recv header, 1 bytes (0x1) 0000: . 01:22:24.951887 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:22:25.534571 * Connection #0 to host 127.0.0.1:34897 left intact 01:22:26.553440 * Reusing existing http: connection with host 127.0.0.1 01:22:26.638333 => Send header, 86 bytes (0x56) 0000: GET /4710001 HTTP/1.1 0017: Host: 127.0.0.1:34897 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 01:22:26.714987 * Version mismatch (from HTTP/1 to HTTP/2) 01:22:26.855723 * closing connection #0 === End of file trace471 === Start of file valgrind471 ==254370== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind471 test 0473...[Check if --etag-save saved correct etag to a file on 301] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind473 ../src/curl -q --output log/8/curl473.out --include --trace-ascii log/8/trace473 --trace-time http://127.0.0.1:39461/473 --etag-save log/8/etag473 > log/8/stdout473 2> log/8/stderr473 valgrind ERROR ==254616== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 473 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind473 ../src/curl -q --output log/8/curl473.out --include --trace-ascii log/8/trace473 --trace-time http://127.0.0.1:39461/473 --etag-save log/8/etag473 > log/8/stdout473 2> log/8/stderr473 === End of file commands.log === Start of file curl473.out HTTP/1.1 301 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Location: /redirected Transfer-Encoding: chunked Trailer: chunky-trailer Connection: mooo ETag: W/"asdf" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccc chunky-trailer: header data === End of file curl473.out === Start of file etag473 W/"asdf" === End of file etag473 === Start of file http_server.log 01:21:38.355111 ====> Client connect 01:21:38.355266 accept_connection 3 returned 4 01:21:38.355344 accept_connection 3 returned 0 01:21:38.362473 Read 93 bytes 01:21:38.362575 Process 93 bytes request 01:21:38.362664 Got request: GET /verifiedserver HTTP/1.1 01:21:38.362727 Are-we-friendly question received 01:21:38.362839 Wrote request (93 bytes) input to log/8/server.input 01:21:38.362929 Identifying ourselves as friends 01:21:38.363083 Response sent (57 bytes) and written to log/8/server.response 01:21:38.363146 special request received, no persistency 01:21:38.363205 ====> Client disconnect 0 01:22:25.825162 ====> Client connect 01:22:25.825305 accept_connection 3 returned 4 01:22:25.825380 accept_connection 3 returned 0 01:22:26.811119 Read 82 bytes 01:22:26.811314 Process 82 bytes request 01:22:26.811402 Got request: GET /473 HTTP/1.1 01:22:26.811468 Serve test number 473 part 0 01:22:26.811635 - request found to be complete (473) 01:22:26.811875 Wrote request (82 bytes) input to log/8/server.input 01:22:26.811980 Send response test473 section 01:22:26.812322 Response sent (387 bytes) and written to log/8/server.response 01:22:26.812386 => persistent connection request ended, awaits new request 01:22:29.533686 Connection closed by client 01:22:29.533878 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 46118 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 473 === End of file server.cmd === Start of file server.input GET /473 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 301 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Location: /redirected Transfer-Encoding: chunked Trailer: chunky-trailer Connection: mooo ETag: W/"asdf" 40 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 30 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 21;heresatest=moooo cccccccccccccccccccccccccccccccc 0 chunky-trailer: header data === End of file server.response === Start of file stderr473 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 145 0 145 0 0 30 0 --:--:-- 0:00:04 --:--:-- 42 100 145 0 145 0 0 29 0 --:--:-- 0:00:04 --:--:-- 40 === End of file stderr473 === Start of file trace473 01:22:25.889766 * Trying 127.0.0.1:39461... 01:22:26.779033 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 58070 01:22:26.903005 * using HTTP/1.x 01:22:27.238074 => Send header, 82 bytes (0x52) 0000: GET /473 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:22:27.564097 <= Recv header, 28 bytes (0x1c) 0000: HTTP/1.1 301 funky chunky 01:22:27.881204 <= Recv header, 34 bytes (0x22) 0000: Server: fakeit/0.9 fakeitbad/1.0 01:22:28.020997 <= Recv header, 22 bytes (0x16) 0000: Location: /redirected. 01:22:28.119289 <= Recv header, 28 bytes (0x1c) 0000: Transfer-Encoding: chunked 01:22:28.138487 <= Recv header, 25 bytes (0x19) 0000: Trailer: chunky-trailer 01:22:28.180664 <= Recv header, 18 bytes (0x12) 0000: Connection: mooo 01:22:28.184847 <= Recv header, 16 bytes (0x10) 0000: ETag: W/"asdf" 01:22:28.312889 <= Recv header, 2 bytes (0x2) 0000: 01:22:28.372733 <= Recv data, 214 bytes (0xd6) 0000: 40 0004: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0046: 30 004a: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 007c: 21;heresatest=moooo 0091: cccccccccccccccccccccccccccccccc. 00b4: 0 00b7: chunky-trailer: headCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind475 ../src/curl -q --output log/5/curl475.out --include --trace-ascii log/5/trace475 --trace-time "ftp://127.0.0.1:33729/475;type=a" -T log/5/test475.txt > log/5/stdout475 2> log/5/stderr475 er data 00d4: 01:22:29.134707 * Connection #0 to host 127.0.0.1:39461 left intact === End of file trace473 === Start of file valgrind473 ==254616== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind473 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 477 in state 4 Runner 2 (id 185908) running test 476 in state 4 Runner 3 (id 185910) running test 479 in state 4 Runner 4 (id 185912) running test 480 in state 4 Runner 5 (id 185914) running test 475 in state 4 Runner 6 (id 185916) running test 478 in state 4 Runner 7 (id 185918) running test 481 in state 4 Runner 8 (id 185920) running test 482 in state 4 test 0475...[FTP PASV upload ASCII file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind475 ../src/curl -q --output log/5/curl475.out --include --trace-ascii log/5/trace475 --trace-time "ftp://127.0.0.1:33729/475;type=a" -T log/5/test475.txt > log/5/stdout475 2> log/5/stderr475 valgrind ERROR ==254818== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 475 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind475 ../src/curl -q --output log/5/curl475.out --include --trace-ascii log/5/trace475 --trace-time "ftp://127.0.0.1:33729/475;type=a" -T log/5/test475.txt > log/5/stdout475 2> log/5/stderr475 === End of file commands.log === Start of file ftp_server.log 01:21:41.843326 ====> Client connect 01:21:41.844339 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:21:41.853579 < "USER anonymous" 01:21:41.854528 > "331 We are happy you popped in![CR][LF]" 01:21:41.855035 < "PASS ftp@example.com" 01:21:41.855289 > "230 Welcome you silly person[CR][LF]" 01:21:41.856463 < "PWD" 01:21:41.857483 > "257 "/" is current directory[CR][LF]" 01:21:41.859515 < "EPSV" 01:21:41.859718 ====> Passive DATA channel requested by client 01:21:41.859866 DATA sockfilt for passive data channel starting... 01:21:41.904345 DATA sockfilt for passive data channel started (pid 254812) 01:21:41.905754 DATA sockfilt for passive data channel listens on port 38685 01:21:41.906093 > "229 Entering Passive Mode (|||38685|)[CR][LF]" 01:21:41.906262 Client has been notified that DATA conn will be accepted on port 38685 01:21:41.909536 Client connects to port 38685 01:21:41.909770 ====> Client established passive DATA connection on port 38685 01:21:41.910375 < "TYPE I" 01:21:41.911353 > "200 I modify TYPE as you wanted[CR][LF]" 01:21:41.911861 < "SIZE verifiedserver" 01:21:41.912172 > "213 18[CR][LF]" 01:21:41.913582 < "RETR verifiedserver" 01:21:41.916034 > "150 Binary junk (18 bytes).[CR][LF]" 01:21:41.917003 =====> Closing passive DATA connection... 01:21:41.917168 Server disconnects passive DATA connection 01:21:41.918161 Server disconnected passive DATA connection 01:21:41.918331 DATA sockfilt for passive data channel quits (pid 254812) 01:21:41.924843 DATA sockfilt for passive data channel quit (pid 254812) 01:21:41.925053 =====> Closed passive DATA connection 01:21:41.925316 > "226 File transfer complete[CR][LF]" 01:21:41.962084 < "QUIT" 01:21:41.962454 > "221 bye bye baby[CR][LF]" 01:21:41.963620 MAIN sockfilt said DISC 01:21:41.963806 ====> Client disconnected 01:21:41.964062 Awaiting input 01:22:30.899003 ====> Client connect 01:22:30.899807 FTPD: Getting commands from log/5/server.cmd 01:22:30.900166 FTPD: run test case number: 475 01:22:30.955229 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:22:32.345599 < "USER anonymous" 01:22:32.346376 > "331 We are happy you popped in![CR][LF]" 01:22:32.488344 < "PASS ftp@example.com" 01:22:32.488762 > "230 Welcome you silly person[CR][LF]" 01:22:32.591603 < "PWD" 01:22:32.592052 > "257 "/" is current directory[CR][LF]" 01:22:32.814311 < "EPSV" 01:22:32.814642 ====> Passive DATA channel requested by client 01:22:32.814796 DATA sockfilt for passive data channel starting... 01:22:32.886444 DATA sockfilt for passive data channel started (pid 255985) 01:22:32.894528 DATA sockfilt for passive data channel listens on port 35769 01:22:32.894904 > "229 Entering Passive Mode (|||35769|)[CR][LF]" 01:22:32.895089 Client has been notified that DATA conn will be accepted on port 35769 01:22:33.165245 Client connects to port 35769 01:22:33.165894 ====> Client established passive DATA connection on port 35769 01:22:33.270079 < "TYPE A" 01:22:33.270509 > "200 I modify TYPE as you wanted[CR][LF]" 01:22:33.324395 < "STOR 475" 01:22:33.324731 STOR test number 475 in log/5/upload.475 01:22:33.325008 > "125 Gimme gimme gimme![CR][LF]" 01:22:33.907930 > Appending 17010 bytes to file 01:22:33.937871 > Appending 17010 bytes to file 01:22:33.967763 > Appending 17010 bytes to file 01:22:33.994213 > Appending 14506 bytes to file 01:22:40.688004 > Appending 1598 bytes to file 01:22:40.899138 > Appending 6366 bytes to file 01:22:41.867086 =====> Closing passive DATA connection... 01:22:41.867367 Server knows passive DATA connection is already disconnected 01:22:41.867560 DATA sockfilt for passive data channel quits (pid 255985) 01:22:41.870782 DATA sockfilt for passive data channel quit (pid 255985) 01:22:41.870955 =====> Closed passive DATA connection 01:22:41.871156 received 73500 bytes upload 01:22:41.871455 > "226 File transfer complete[CR][LF]" 01:22:43.057193 < "QUIT" 01:22:43.057639 > "221 bye bye baby[CR][LF]" 01:22:43.185973 MAIN sockfilt said DISC 01:22:43.190775 ====> Client disconnected 01:22:43.191112 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:21:42.456318 ====> Client connect 01:21:42.457546 Received DATA (on stdin) 01:21:42.457627 > 160 bytes data, server => client 01:21:42.457737 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:21:42.457835 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:21:42.457928 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:21:42.465229 < 16 bytes data, client => server 01:21:42.465332 'USER anonymous\r\n' 01:21:42.467229 Received DATA (on stdin) 01:21:42.467304 > 33 bytes data, server => client 01:21:42.467411 '331 We are happy you popped in!\r\n' 01:21:42.467689 < 22 bytes data, client => server 01:21:42.467768 'PASS ftp@example.com\r\n' 01:21:42.468910 Received DATA (on stdin) 01:21:42.468981 > 30 bytes data, server => client 01:21:42.469065 '230 Welcome you silly person\r\n' 01:21:42.469356 < 5 bytes data, client => server 01:21:42.469422 'PWD\r\n' 01:21:42.470070 Received DATA (on stdin) 01:21:42.470141 > 30 bytes data, server => client 01:21:42.470246 '257 "/" is current directory\r\n' 01:21:42.472394 < 6 bytes data, client => server 01:21:42.472469 'EPSV\r\n' 01:21:42.519855 Received DATA (on stdin) 01:21:42.519996 > 39 bytes data, server => client 01:21:42.520090 '229 Entering Passive Mode (|||38685|)\r\n' 01:21:42.522722 < 8 bytes data, client => server 01:21:42.522799 'TYPE I\r\n' 01:21:42.523966 Received DATA (on stdin) 01:21:42.524037 > 33 bytes data, server => client 01:21:42.524149 '200 I modify TYPE as you wanted\r\n' 01:21:42.524523 < 21 bytes data, client => server 01:21:42.524600 'SIZE verifiedserver\r\n' 01:21:42.525826 Received DATA (on stdin) 01:21:42.525895 > 8 bytes data, server => client 01:21:42.525966 '213 18\r\n' 01:21:42.526385 < 21 bytes data, client => server 01:21:42.526464 'RETR verifiedserver\r\n' 01:21:42.527204 Received DATA (on stdin) 01:21:42.527275 > 29 bytes data, server => client 01:21:42.527377 '150 Binary junk (18 bytes).\r\n' 01:21:42.538885 Received DATA (on stdin) 01:21:42.538987 > 28 bytes data, server => client 01:21:42.539075 '226 File transfer complete\r\n' 01:21:42.574895 < 6 bytes data, client => server 01:21:42.575031 'QUIT\r\n' 01:21:42.576017 Received DATA (on stdin) 01:21:42.576091 > 18 bytes data, server => client 01:21:42.576170 '221 bye bye baby\r\n' 01:21:42.576885 ====> Client disconnect 01:21:42.577604 Received ACKD (on stdin) 01:22:31.511873 ====> Client connect 01:22:31.568320 Received DATA (on stdin) 01:22:31.568533 > 160 bytes data, server => client 01:22:31.568655 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:22:31.568768 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:22:31.568866 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:22:32.957911 < 16 bytes data, client => server 01:22:32.958133 'USER anonymous\r\n' 01:22:32.959250 Received DATA (on stdin) 01:22:32.959324 > 33 bytes data, server => client 01:22:32.959435 '331 We are happy you popped in!\r\n' 01:22:33.099302 < 22 bytes data, client => server 01:22:33.099488 'PASS ftp@example.com\r\n' 01:22:33.102221 Received DATA (on stdin) 01:22:33.102309 > 30 bytes data, server => client 01:22:33.102400 '230 Welcome you silly person\r\n' 01:22:33.203889 < 5 bytes data, client => server 01:22:33.204069 'PWD\r\n' 01:22:33.205214 Received DATA (on stdin) 01:22:33.205302 > 30 bytes data, server => client 01:22:33.205403 '257 "/" is current directory\r\n' 01:22:33.425920 < 6 bytes data, client => server 01:22:33.426118 'EPSV\r\n' 01:22:33.508577 Received DATA (on stdin) 01:22:33.508747 > 39 bytes data, server => client 01:22:33.508859 '229 Entering Passive Mode (|||35769|)\r\n' 01:22:33.882351 < 8 bytes data, client => server 01:22:33.882551 'TYPE A\r\n' 01:22:33.883671 Received DATA (on stdin) 01:22:33.883756 > 33 bytes data, server => client 01:22:33.883860 '200 I modify TYPE as you wanted\r\n' 01:22:33.933559 < 10 bytes data, client => server 01:22:33.933741 'STOR 475\r\n' 01:22:33.940679 Received DATA (on stdin) 01:22:33.940796 > 24 bytes data, server => client 01:22:33.940874 '125 Gimme gimme gimme!\r\n' 01:22:42.484608 Received DATA (on stdin) 01:22:42.484772 > 28 bytes data, server => client 01:22:42.484862 '226 File transfer complete\r\n' 01:22:43.669421 < 6 bytes data, client => server 01:22:43.669624 'QUIT\r\n' 01:22:43.670783 Received DATA (on stdin) 01:22:43.670857 > 18 bytes data, server => client 01:22:43.670932 '221 bye bye baby\r\n' 01:22:43.798869 ====> Client disconnect 01:22:43.799694 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:21:41.508517 Running IPv4 version 01:21:41.516140 Listening on port 38685 01:21:41.516582 Wrote pid 254812 to log/5/server/ftp_sockdata.pid 01:21:41.517350 Received PING (on stdin) 01:21:41.518442 Received PORT (on stdin) 01:21:41.522546 ====> Client connect 01:21:41.529635 Received DATA (on stdin) 01:21:41.529931 > 18 bytes data, server => client 01:21:41.530964 'WE ROOLZ: 202313\r\n' 01:21:41.531219 Received DISC (on stdin) 01:21:41.531334 ====> Client forcibly disconnected 01:21:41.531861 Received QUIT (on stdin) 01:21:41.531934 quits 01:21:41.532431 ============> sockfilt quits 01:22:32.487162 Running IPv4 version 01:22:32.498105 Listening on port 35769 01:22:32.498587 Wrote pid 255985 to log/5/server/ftp_sockdata.pid 01:22:32.499309 Received PING (on stdin) 01:22:32.504005 Received PORT (on stdin) 01:22:32.778159 ====> Client connect 01:22:33.521630 < 17010 bytes data, client => server 01:22:33.522081 'a line of text used for verifying this !\r\na line of text us' 01:22:33.522213 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.522314 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.522415 'of text used for verifying this !\r\na line of text used for ' 01:22:33.522515 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.522613 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.522711 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.522808 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.522917 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.523017 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.523115 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.523213 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.523311 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.523409 'line of text used for verifying this !\r\na line of text used' 01:22:33.523510 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.523609 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.523705 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.523804 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.523904 'a line of text used for verifying this !\r\na line of text us' 01:22:33.524007 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.524108 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.524207 'of text used for verifying this !\r\na line of text used for ' 01:22:33.524305 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.524404 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.524503 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.524600 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.524699 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.524794 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.524893 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.524992 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.525091 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.525189 'line of text used for verifying this !\r\na line of text used' 01:22:33.525288 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.525386 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.525486 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.525582 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.525680 'a line of text used for verifying this !\r\na line of text us' 01:22:33.525780 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.525879 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.525979 'of text used for verifying this !\r\na line of text used for ' 01:22:33.526092 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.526187 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.526283 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.526377 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.526472 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.526568 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.526662 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.526754 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.526846 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.526940 'line of text used for verifying this !\r\na line of text used' 01:22:33.527034 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.527128 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.527223 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.527337 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.527439 'a line of text used for verifying this !\r\na line of text us' 01:22:33.527532 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.527625 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.527717 'of text used for verifying this !\r\na line of text used for ' 01:22:33.527807 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.527900 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.527993 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.528086 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.528182 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.528277 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.528371 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.528465 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.528558 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.528653 'line of text used for verifying this !\r\na line of text used' 01:22:33.528745 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.528834 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.528928 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.529020 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.529114 'a line of text used for verifying this !\r\na line of text us' 01:22:33.529209 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.529300 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.529391 'of text used for verifying this !\r\na line of text used for ' 01:22:33.529485 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.529579 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.529675 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.529769 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.529864 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.529959 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.530054 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.530148 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.530244 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.530341 'line of text used for verifying this !\r\na line of text used' 01:22:33.530435 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.530529 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.530623 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.530728 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.530824 'a line of text used for verifying this !\r\na line of text us' 01:22:33.530927 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.531020 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.531114 'of text used for verifying this !\r\na line of text used for ' 01:22:33.531208 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.531301 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.531394 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.531486 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.531582 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.531679 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.531774 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.531868 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.531961 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.532055 'line of text used for verifying this !\r\na line of text used' 01:22:33.532150 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.532243 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.532337 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.532431 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.532526 'a line of text used for verifying this !\r\na line of text us' 01:22:33.532620 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.532713 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.532809 'of text used for verifying this !\r\na line of text used for ' 01:22:33.532904 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.532998 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.533093 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.533186 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.533281 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.533376 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.533468 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.533560 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.533655 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.533750 'line of text used for verifying this !\r\na line of text used' 01:22:33.533841 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.533936 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.534048 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.534143 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.534238 'a line of text used for verifying this !\r\na line of text us' 01:22:33.534333 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.534425 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.534521 'of text used for verifying this !\r\na line of text used for ' 01:22:33.534616 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.534712 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.534806 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.534897 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.534991 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.535083 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.535173 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.535264 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.535357 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.535452 'line of text used for verifying this !\r\na line of text used' 01:22:33.535548 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.535642 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.535737 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.535839 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.535935 'a line of text used for verifying this !\r\na line of text us' 01:22:33.536029 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.536123 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.536217 'of text used for verifying this !\r\na line of text used for ' 01:22:33.536310 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.536403 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.536495 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.536585 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.536680 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.536773 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.536864 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.536959 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.537053 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.537148 'line of text used for verifying this !\r\na line of text used' 01:22:33.537243 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.537345 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.537458 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.537553 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.537644 'a line of text used for verifying this !\r\na line of text us' 01:22:33.537740 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.537835 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.537929 'of text used for verifying this !\r\na line of text used for ' 01:22:33.538025 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.538118 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.538213 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.538306 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.538400 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.538494 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.538587 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.538682 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.538776 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.538871 'line of text used for verifying this !\r\na line of text used' 01:22:33.538964 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.539056 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.539150 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.539245 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.539339 'a line of text used for verifying this !\r\na line of text us' 01:22:33.539434 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.539529 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.539624 'of text used for verifying this !\r\na line of text used for ' 01:22:33.539718 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.539812 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.539907 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.540001 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.540097 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.540191 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.540283 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.540379 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.540472 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.540567 'line of text used for verifying this !\r\na line of text used' 01:22:33.540672 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.540772 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.540867 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.540961 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.541058 'a line of text used for verifying this !\r\na line of text us' 01:22:33.541154 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.541245 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.541337 'of text used for verifying this !\r\na line of text used for ' 01:22:33.541431 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.541522 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.541615 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.541704 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.541797 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.541891 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.541984 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.542076 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.542169 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.542262 'line of text used for verifying this !\r\na line of text used' 01:22:33.542354 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.542444 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.542537 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.542632 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.542727 'a line of text used for verifying this !\r\na line of text us' 01:22:33.542823 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.542917 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.543011 'of text used for verifying this !\r\na line of text used for ' 01:22:33.543105 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.543199 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.543294 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.543386 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.543481 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.543573 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.543668 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.543763 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.543858 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.543954 'line of text used for verifying this !\r\na line of text used' 01:22:33.544060 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.544156 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.544251 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.544342 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.544439 'a line of text used for verifying this !\r\na line of text us' 01:22:33.544535 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.544626 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.544717 'of text used for verifying this !\r\na line of text used for ' 01:22:33.544810 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.544905 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.545001 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.545095 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.545189 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.545284 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.545379 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.545481 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.545576 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.545672 'line of text used for verifying this !\r\na line of text used' 01:22:33.545767 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.545861 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.545955 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.546050 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.546145 'a line of text used for verifying this !\r\na line of text us' 01:22:33.546240 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.546333 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.546432 'of text used for verifying this !\r\na line of text used for ' 01:22:33.546528 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.546622 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.546717 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.546810 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.546904 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.546999 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.547093 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.547188 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.547279 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.547388 'line of text used for verifying this !\r\na line of text used' 01:22:33.547515 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.547610 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.547704 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.547800 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.547895 'a line of text used for verifying this !\r\na line of text us' 01:22:33.547988 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.548079 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.548174 'of text used for verifying this !\r\na line of text used for ' 01:22:33.548266 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.548360 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.548455 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.548547 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.548641 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.548736 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.548831 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.548926 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.549021 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.549116 'line of text used for verifying this !\r\na line of text used' 01:22:33.549211 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.549299 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.549393 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.549488 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.549582 'a line of text used for verifying this !\r\na line of text us' 01:22:33.549678 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.549773 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.549874 'of text used for verifying this !\r\n' 01:22:33.550045 < 17010 bytes data, client => server 01:22:33.550146 'a line of text used for verifying this !\r\na line of text us' 01:22:33.550240 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.550333 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.550427 'of text used for verifying this !\r\na line of text used for ' 01:22:33.550529 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.550623 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.551514 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.551611 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.551707 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.551801 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.551896 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.551991 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.552086 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.552181 'line of text used for verifying this !\r\na line of text used' 01:22:33.552277 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.552372 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.552467 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.552561 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.552655 'a line of text used for verifying this !\r\na line of text us' 01:22:33.552748 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.552842 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.552937 'of text used for verifying this !\r\na line of text used for ' 01:22:33.553034 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.553129 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.553223 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.553317 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.553411 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.553507 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.553601 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.553700 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.553794 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.553888 'line of text used for verifying this !\r\na line of text used' 01:22:33.553990 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.554090 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.554184 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.554274 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.554369 'a line of text used for verifying this !\r\na line of text us' 01:22:33.554464 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.554558 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.554654 'of text used for verifying this !\r\na line of text used for ' 01:22:33.554749 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.554843 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.554937 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.555031 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.555126 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.555221 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.555315 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.555410 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.555504 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.555600 'line of text used for verifying this !\r\na line of text used' 01:22:33.555695 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.555788 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.555882 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.555975 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.556071 'a line of text used for verifying this !\r\na line of text us' 01:22:33.556175 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.556272 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.556368 'of text used for verifying this !\r\na line of text used for ' 01:22:33.556464 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.556556 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.556654 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.556749 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.556845 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.556941 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.557036 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.557132 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.557227 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.557327 'line of text used for verifying this !\r\na line of text used' 01:22:33.557428 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.557535 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.557632 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.557727 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.557823 'a line of text used for verifying this !\r\na line of text us' 01:22:33.557917 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.558014 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.558111 'of text used for verifying this !\r\na line of text used for ' 01:22:33.558208 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.558303 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.558397 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.558492 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.558588 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.558684 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.558776 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.558866 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.558960 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.559058 'line of text used for verifying this !\r\na line of text used' 01:22:33.559152 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.559247 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.559340 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.559434 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.559529 'a line of text used for verifying this !\r\na line of text us' 01:22:33.559622 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.559715 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.559811 'of text used for verifying this !\r\na line of text used for ' 01:22:33.559907 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.560000 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.560094 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.560188 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.560282 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.560378 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.560471 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.560565 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.560664 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.560762 'line of text used for verifying this !\r\na line of text used' 01:22:33.560859 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.560955 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.561057 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.561151 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.561243 'a line of text used for verifying this !\r\na line of text us' 01:22:33.561334 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.561427 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.561523 'of text used for verifying this !\r\na line of text used for ' 01:22:33.561617 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.561711 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.561807 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.561901 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.561997 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.562092 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.562188 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.562283 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.562378 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.562472 'line of text used for verifying this !\r\na line of text used' 01:22:33.562569 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.562662 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.562758 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.562853 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.562948 'a line of text used for verifying this !\r\na line of text us' 01:22:33.563041 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.563134 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.563229 'of text used for verifying this !\r\na line of text used for ' 01:22:33.563323 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.563411 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.563505 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.563597 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.563691 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.563786 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.563878 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.563974 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.564080 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.564175 'line of text used for verifying this !\r\na line of text used' 01:22:33.564268 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.564358 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.564454 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.564549 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.564644 'a line of text used for verifying this !\r\na line of text us' 01:22:33.564741 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.564834 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.564927 'of text used for verifying this !\r\na line of text used for ' 01:22:33.565022 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.565114 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.565209 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.565300 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.565392 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.565485 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.565575 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.565669 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.565763 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.565865 'line of text used for verifying this !\r\na line of text used' 01:22:33.565961 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.566055 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.566151 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.566245 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.566338 'a line of text used for verifying this !\r\na line of text us' 01:22:33.566432 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.566524 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.566618 'of text used for verifying this !\r\na line of text used for ' 01:22:33.566713 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.566806 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.566902 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.566994 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.567086 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.567180 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.567273 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.567375 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.567466 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.567556 'line of text used for verifying this !\r\na line of text used' 01:22:33.567665 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.567759 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.567853 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.567945 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.568038 'a line of text used for verifying this !\r\na line of text us' 01:22:33.568132 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.568226 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.568322 'of text used for verifying this !\r\na line of text used for ' 01:22:33.568417 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.568512 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.568647 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.568741 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.568836 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.568931 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.569025 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.569120 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.569214 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.569309 'line of text used for verifying this !\r\na line of text used' 01:22:33.569402 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.569495 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.569590 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.569685 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.569778 'a line of text used for verifying this !\r\na line of text us' 01:22:33.569872 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.569964 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.570059 'of text used for verifying this !\r\na line of text used for ' 01:22:33.570155 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.570249 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.570346 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.570440 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.570536 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.570630 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.570741 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.570835 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.570927 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.571021 'line of text used for verifying this !\r\na line of text used' 01:22:33.571118 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.571212 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.571308 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.571403 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.571498 'a line of text used for verifying this !\r\na line of text us' 01:22:33.571593 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.571688 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.571784 'of text used for verifying this !\r\na line of text used for ' 01:22:33.571879 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.571975 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.572071 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.572165 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.572260 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.572354 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.572450 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.572545 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.572640 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.572736 'line of text used for verifying this !\r\na line of text used' 01:22:33.572832 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.572927 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.573020 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.573114 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.573208 'a line of text used for verifying this !\r\na line of text us' 01:22:33.573300 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.573391 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.573485 'of text used for verifying this !\r\na line of text used for ' 01:22:33.573579 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.573673 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.573769 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.573864 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.573959 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.574063 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.574158 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.574254 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.574348 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.574442 'line of text used for verifying this !\r\na line of text used' 01:22:33.574536 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.574628 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.574721 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.574813 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.574906 'a line of text used for verifying this !\r\na line of text us' 01:22:33.574999 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.575088 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.575184 'of text used for verifying this !\r\na line of text used for ' 01:22:33.575277 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.575370 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.575463 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.575563 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.575657 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.575749 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.575840 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.575936 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.576030 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.576125 'line of text used for verifying this !\r\na line of text used' 01:22:33.576220 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.576314 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.576409 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.576503 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.576597 'a line of text used for verifying this !\r\na line of text us' 01:22:33.576692 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.576786 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.576880 'of text used for verifying this !\r\na line of text used for ' 01:22:33.576976 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.577070 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.577167 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.577261 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.577363 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.577464 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.577558 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.577671 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.577764 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.577862 'line of text used for verifying this !\r\na line of text used' 01:22:33.577958 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.578052 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.578149 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.578243 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.578338 'a line of text used for verifying this !\r\na line of text us' 01:22:33.578432 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.578526 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.578605 'of text used for verifying this !\r\n' 01:22:33.578705 < 17010 bytes data, client => server 01:22:33.578803 'a line of text used for verifying this !\r\na line of text us' 01:22:33.578899 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.578992 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.579087 'of text used for verifying this !\r\na line of text used for ' 01:22:33.579184 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.579278 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.579373 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.579467 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.579560 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.579654 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.579747 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.579842 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.579937 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.580029 'line of text used for verifying this !\r\na line of text used' 01:22:33.580119 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.580213 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.580307 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.580400 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.580501 'a line of text used for verifying this !\r\na line of text us' 01:22:33.580596 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.581295 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.581400 'of text used for verifying this !\r\na line of text used for ' 01:22:33.581496 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.581588 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.581684 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.581780 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.581876 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.581972 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.582066 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.582164 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.582259 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.582355 'line of text used for verifying this !\r\na line of text used' 01:22:33.582450 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.582545 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.582639 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.582734 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.582827 'a line of text used for verifying this !\r\na line of text us' 01:22:33.582921 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.583015 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.583110 'of text used for verifying this !\r\na line of text used for ' 01:22:33.583206 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.583301 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.583397 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.583490 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.583585 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.583678 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.583771 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.583868 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.583962 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.584068 'line of text used for verifying this !\r\na line of text used' 01:22:33.584164 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.584258 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.584351 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.584446 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.584540 'a line of text used for verifying this !\r\na line of text us' 01:22:33.584636 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.584729 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.584824 'of text used for verifying this !\r\na line of text used for ' 01:22:33.584918 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.585011 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.585103 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.585196 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.585291 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.585386 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.585480 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.585577 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.585669 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.585765 'line of text used for verifying this !\r\na line of text used' 01:22:33.585860 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.585962 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.586058 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.586152 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.586247 'a line of text used for verifying this !\r\na line of text us' 01:22:33.586344 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.586437 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.586533 'of text used for verifying this !\r\na line of text used for ' 01:22:33.586628 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.586722 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.586817 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.586911 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.587008 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.587103 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.587198 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.587292 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.587401 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.587497 'line of text used for verifying this !\r\na line of text used' 01:22:33.587592 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.587686 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.587782 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.587876 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.587969 'a line of text used for verifying this !\r\na line of text us' 01:22:33.588064 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.588158 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.588253 'of text used for verifying this !\r\na line of text used for ' 01:22:33.588349 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.588444 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.588537 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.588630 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.588724 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.588820 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.588915 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.589011 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.589106 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.589201 'line of text used for verifying this !\r\na line of text used' 01:22:33.589295 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.589390 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.589485 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.589578 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.589672 'a line of text used for verifying this !\r\na line of text us' 01:22:33.589764 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.589857 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.589949 'of text used for verifying this !\r\na line of text used for ' 01:22:33.590042 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.590133 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.590227 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.590321 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.590415 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.590508 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.590602 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.590707 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.590816 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.590911 'line of text used for verifying this !\r\na line of text used' 01:22:33.591005 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.591099 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.591194 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.591290 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.591384 'a line of text used for verifying this !\r\na line of text us' 01:22:33.591477 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.591572 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.591666 'of text used for verifying this !\r\na line of text used for ' 01:22:33.591759 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.591853 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.591949 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.592042 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.592136 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.592232 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.592327 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.592422 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.592516 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.592611 'line of text used for verifying this !\r\na line of text used' 01:22:33.592746 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.592841 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.592935 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.593028 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.593121 'a line of text used for verifying this !\r\na line of text us' 01:22:33.593217 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.593312 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.593405 'of text used for verifying this !\r\na line of text used for ' 01:22:33.593501 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.593596 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.593693 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.593788 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.593882 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.593978 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.594082 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.594178 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.594272 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.594368 'line of text used for verifying this !\r\na line of text used' 01:22:33.594462 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.594556 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.594652 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.594745 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.594837 'a line of text used for verifying this !\r\na line of text us' 01:22:33.594931 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.595026 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.595119 'of text used for verifying this !\r\na line of text used for ' 01:22:33.595214 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.595308 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.595437 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.595532 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.595627 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.595727 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.595821 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.595914 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.596008 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.596103 'line of text used for verifying this !\r\na line of text used' 01:22:33.596195 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.596288 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.596383 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.596479 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.596574 'a line of text used for verifying this !\r\na line of text us' 01:22:33.596667 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.596759 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.596854 'of text used for verifying this !\r\na line of text used for ' 01:22:33.596948 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.597043 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.597138 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.597233 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.597335 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.597437 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.597531 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.597626 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.597718 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.597813 'line of text used for verifying this !\r\na line of text used' 01:22:33.597905 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.598012 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.598107 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.598201 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.598295 'a line of text used for verifying this !\r\na line of text us' 01:22:33.598386 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.598478 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.598574 'of text used for verifying this !\r\na line of text used for ' 01:22:33.598670 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.598764 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.598858 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.598951 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.599045 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.599141 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.599233 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.599327 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.599419 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.599512 'line of text used for verifying this !\r\na line of text used' 01:22:33.599605 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.599697 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.599791 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.599884 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.599979 'a line of text used for verifying this !\r\na line of text us' 01:22:33.600074 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.600163 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.600257 'of text used for verifying this !\r\na line of text used for ' 01:22:33.600349 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.600443 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.600538 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.600638 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.600745 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.600840 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.600933 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.601027 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.601120 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.601215 'line of text used for verifying this !\r\na line of text used' 01:22:33.601310 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.601403 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.601498 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.601591 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.601685 'a line of text used for verifying this !\r\na line of text us' 01:22:33.601779 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.601870 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.601965 'of text used for verifying this !\r\na line of text used for ' 01:22:33.602061 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.602153 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.602248 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.602341 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.602434 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.602529 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.602624 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.602719 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.602814 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.602910 'line of text used for verifying this !\r\na line of text used' 01:22:33.603005 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.603100 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.603194 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.603287 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.603380 'a line of text used for verifying this !\r\na line of text us' 01:22:33.603475 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.603570 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.603662 'of text used for verifying this !\r\na line of text used for ' 01:22:33.603755 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.603848 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.603943 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.604047 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.604142 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.604235 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.604326 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.604421 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.604512 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.604601 'line of text used for verifying this !\r\na line of text used' 01:22:33.604696 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.604789 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.604885 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.604979 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.605073 'a line of text used for verifying this !\r\na line of text us' 01:22:33.605163 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.605252 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.605347 'of text used for verifying this !\r\na line of text used for ' 01:22:33.605445 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.605540 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.605635 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.605728 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.605822 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.605916 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.606009 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.606104 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.606199 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.606294 'line of text used for verifying this !\r\na line of text used' 01:22:33.606389 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.606483 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.606578 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.606673 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.606769 'a line of text used for verifying this !\r\na line of text us' 01:22:33.606864 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.606959 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.607039 'of text used for verifying this !\r\n' 01:22:33.607678 < 14506 bytes data, client => server 01:22:33.607785 'a line of text used for verifying this !\r\na line of text us' 01:22:33.607881 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.607973 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.608085 'of text used for verifying this !\r\na line of text used for ' 01:22:33.608181 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.608274 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.608368 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.608461 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.608556 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.608649 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.608742 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.608836 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.608930 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.609023 'line of text used for verifying this !\r\na line of text used' 01:22:33.609117 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.609208 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.609294 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.609377 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.609461 'a line of text used for verifying this !\r\na line of text us' 01:22:33.609545 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.609628 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.609711 'of text used for verifying this !\r\na line of text used for ' 01:22:33.609796 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.609879 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.609963 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.610046 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.610130 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.610213 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.610295 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.610378 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.610460 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.610543 'line of text used for verifying this !\r\na line of text used' 01:22:33.610634 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.610729 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.610815 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.610897 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.610981 'a line of text used for verifying this !\r\na line of text us' 01:22:33.611065 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.611147 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.611231 'of text used for verifying this !\r\na line of text used for ' 01:22:33.611315 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.611398 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.611482 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.611565 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.611649 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.611734 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.611817 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.611901 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.611984 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.612069 'line of text used for verifying this !\r\na line of text used' 01:22:33.612153 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.612236 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.612320 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.612405 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.612490 'a line of text used for verifying this !\r\na line of text us' 01:22:33.612575 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.612658 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.612834 'of text used for verifying this !\r\na line of text used for ' 01:22:33.612921 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.613003 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.613086 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.613167 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.613249 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.613336 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.613419 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.613504 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.613598 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.613691 'line of text used for verifying this !\r\na line of text used' 01:22:33.613784 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.613877 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.613973 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.614438 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.614534 'a line of text used for verifying this !\r\na line of text us' 01:22:33.614630 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.614726 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.614822 'of text used for verifying this !\r\na line of text used for ' 01:22:33.614917 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.615011 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.615107 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.615201 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.615295 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.615391 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.615481 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.615574 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.615682 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.615777 'line of text used for verifying this !\r\na line of text used' 01:22:33.615870 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.615968 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.616067 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.616161 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.616257 'a line of text used for verifying this !\r\na line of text us' 01:22:33.616350 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.616443 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.616539 'of text used for verifying this !\r\na line of text used for ' 01:22:33.616635 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.616730 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.616824 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.616915 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.617009 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.617101 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.617194 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.617286 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.617393 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.617489 'line of text used for verifying this !\r\na line of text used' 01:22:33.617584 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.617680 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.617776 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.617871 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.617966 'a line of text used for verifying this !\r\na line of text us' 01:22:33.618062 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.618157 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.618253 'of text used for verifying this !\r\na line of text used for ' 01:22:33.618348 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.618443 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.618538 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.618631 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.618724 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.618817 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.618911 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.619007 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.619103 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.619198 'line of text used for verifying this !\r\na line of text used' 01:22:33.619294 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.624028 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.624172 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.624267 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.624361 'a line of text used for verifying this !\r\na line of text us' 01:22:33.624455 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.624550 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.624645 'of text used for verifying this !\r\na line of text used for ' 01:22:33.624742 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.624837 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.624932 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.625025 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.625120 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.625230 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.625324 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.625419 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.625514 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.625609 'line of text used for verifying this !\r\na line of text used' 01:22:33.625703 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.625796 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.625889 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.625980 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.626072 'a line of text used for verifying this !\r\na line of text us' 01:22:33.626167 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.626261 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.626354 'of text used for verifying this !\r\na line of text used for ' 01:22:33.626449 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.626543 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.626639 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.626735 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.626830 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.626927 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.627019 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.627114 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.627208 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.627304 'line of text used for verifying this !\r\na line of text used' 01:22:33.628063 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.628152 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.628243 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.628338 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.628433 'a line of text used for verifying this !\r\na line of text us' 01:22:33.628527 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.628620 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.631362 'of text used for verifying this !\r\na line of text used for ' 01:22:33.631480 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.631578 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.631677 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.631772 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.631865 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.631961 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.632055 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.632153 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.632246 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.632341 'line of text used for verifying this !\r\na line of text used' 01:22:33.632436 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.632532 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.632629 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.632722 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.632817 'a line of text used for verifying this !\r\na line of text us' 01:22:33.632915 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.633008 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.633098 'of text used for verifying this !\r\na line of text used for ' 01:22:33.633194 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.633292 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.633415 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.633512 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.633608 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.633705 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.633798 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.633894 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.634568 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.634680 'line of text used for verifying this !\r\na line of text used' 01:22:33.634777 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.634873 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.634970 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.635065 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.635158 'a line of text used for verifying this !\r\na line of text us' 01:22:33.635255 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.635349 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.635445 'of text used for verifying this !\r\na line of text used for ' 01:22:33.635539 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.635634 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.635729 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.635824 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.635921 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.636016 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.636111 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.636207 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.636302 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.636399 'line of text used for verifying this !\r\na line of text used' 01:22:33.636494 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.636586 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.636683 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.636780 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.636877 'a line of text used for verifying this !\r\na line of text us' 01:22:33.636973 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.637069 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.637165 'of text used for verifying this !\r\na line of text used for ' 01:22:33.637262 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.637363 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.637466 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.637561 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.637664 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.637761 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.637855 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.637951 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.638044 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.638139 'line of text used for verifying this !\r\na line of text used' 01:22:33.638235 ' for verifying this !\r\na line of text used for verifying th' 01:22:33.638328 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:33.638424 ' text used for verifying this !\r\na line of text used for ve' 01:22:33.638520 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:33.638616 'a line of text used for verifying this !\r\na line of text us' 01:22:33.638716 'ed for verifying this !\r\na line of text used for verifying ' 01:22:33.638816 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:33.638926 'of text used for verifying this !\r\na line of text used for ' 01:22:33.639025 'verifying this !\r\na line of text used for verifying this !\r' 01:22:33.639123 '\na line of text used for verifying this !\r\na line of text ' 01:22:33.639221 'used for verifying this !\r\na line of text used for verifyin' 01:22:33.639317 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:33.639413 'e of text used for verifying this !\r\na line of text used fo' 01:22:33.639509 'r verifying this !\r\na line of text used for verifying this ' 01:22:33.639597 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:33.639693 'xt used for verifying this !\r\na line of text used for verif' 01:22:33.639792 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:33.639886 'line of text used for verifying this !\r\na line of text used' 01:22:33.639967 ' for verifying this !\r\na line of text u' 01:22:40.300709 < 1598 bytes data, client => server 01:22:40.300931 'sed for verifying this !\r\na line of text used for verifying' 01:22:40.301032 ' this !\r\na line of text used for verifying this !\r\na line' 01:22:40.301128 ' of text used for verifying this !\r\na line of text used for' 01:22:40.301227 ' verifying this !\r\na line of text used for verifying this !' 01:22:40.301323 '\r\na line of text used for verifying this !\r\na line of tex' 01:22:40.301418 't used for verifying this !\r\na line of text used for verify' 01:22:40.301510 'ing this !\r\na line of text used for verifying this !\r\na l' 01:22:40.301607 'ine of text used for verifying this !\r\na line of text used ' 01:22:40.301702 'for verifying this !\r\na line of text used for verifying thi' 01:22:40.301795 's !\r\na line of text used for verifying this !\r\na line of ' 01:22:40.301890 'text used for verifying this !\r\na line of text used for ver' 01:22:40.301985 'ifying this !\r\na line of text used for verifying this !\r\n' 01:22:40.302082 'a line of text used for verifying this !\r\na line of text us' 01:22:40.302177 'ed for verifying this !\r\na line of text used for verifying ' 01:22:40.302269 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:40.302363 'of text used for verifying this !\r\na line of text used for ' 01:22:40.302458 'verifying this !\r\na line of text used for verifying this !\r' 01:22:40.302551 '\na line of text used for verifying this !\r\na line of text ' 01:22:40.302648 'used for verifying this !\r\na line of text used for verifyin' 01:22:40.302746 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:40.302842 'e of text used for verifying this !\r\na line of text used fo' 01:22:40.302936 'r verifying this !\r\na line of text used for verifying this ' 01:22:40.303030 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:40.303125 'xt used for verifying this !\r\na line of text used for verif' 01:22:40.303218 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:40.303313 'line of text used for verifying this !\r\na line of text used' 01:22:40.303409 ' for verifying this !\r\na line of text used for verifying th' 01:22:40.303483 'is !\r\na line of text use' 01:22:40.510708 < 6366 bytes data, client => server 01:22:40.510933 'd for verifying this !\r\na line of text used for verifying t' 01:22:40.511031 'his !\r\na line of text used for verifying this !\r\na line o' 01:22:40.511126 'f text used for verifying this !\r\na line of text used for v' 01:22:40.511218 'erifying this !\r\na line of text used for verifying this !\r' 01:22:40.511312 '\na line of text used for verifying this !\r\na line of text ' 01:22:40.511405 'used for verifying this !\r\na line of text used for verifyin' 01:22:40.511495 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:40.511585 'e of text used for verifying this !\r\na line of text used fo' 01:22:40.511676 'r verifying this !\r\na line of text used for verifying this ' 01:22:40.511769 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:40.511861 'xt used for verifying this !\r\na line of text used for verif' 01:22:40.511973 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:40.512067 'line of text used for verifying this !\r\na line of text used' 01:22:40.512160 ' for verifying this !\r\na line of text used for verifying th' 01:22:40.512252 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:40.512346 ' text used for verifying this !\r\na line of text used for ve' 01:22:40.512439 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:40.512533 'a line of text used for verifying this !\r\na line of text us' 01:22:40.512623 'ed for verifying this !\r\na line of text used for verifying ' 01:22:40.512717 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:40.512809 'of text used for verifying this !\r\na line of text used for ' 01:22:40.512905 'verifying this !\r\na line of text used for verifying this !\r' 01:22:40.512999 '\na line of text used for verifying this !\r\na line of text ' 01:22:40.513095 'used for verifying this !\r\na line of text used for verifyin' 01:22:40.513191 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:40.513289 'e of text used for verifying this !\r\na line of text used fo' 01:22:40.513386 'r verifying this !\r\na line of text used for verifying this ' 01:22:40.513477 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:40.513572 'xt used for verifying this !\r\na line of text used for verif' 01:22:40.513668 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:40.513765 'line of text used for verifying this !\r\na line of text used' 01:22:40.513861 ' for verifying this !\r\na line of text used for verifying th' 01:22:40.513951 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:40.517417 ' text used for verifying this !\r\na line of text used for ve' 01:22:40.517512 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:40.517601 'a line of text used for verifying this !\r\na line of text us' 01:22:40.517688 'ed for verifying this !\r\na line of text used for verifying ' 01:22:40.517772 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:40.517860 'of text used for verifying this !\r\na line of text used for ' 01:22:40.517954 'verifying this !\r\na line of text used for verifying this !\r' 01:22:40.518048 '\na line of text used for verifying this !\r\na line of text ' 01:22:40.518142 'used for verifying this !\r\na line of text used for verifyin' 01:22:40.518234 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:40.518328 'e of text used for verifying this !\r\na line of text used fo' 01:22:40.518423 'r verifying this !\r\na line of text used for verifying this ' 01:22:40.518517 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:40.518616 'xt used for verifying this !\r\na line of text used for verif' 01:22:40.518713 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:40.518812 'line of text used for verifying this !\r\na line of text used' 01:22:40.518910 ' for verifying this !\r\na line of text used for verifying th' 01:22:40.519005 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:40.519099 ' text used for verifying this !\r\na line of text used for ve' 01:22:40.519190 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:40.519283 'a line of text used for verifying this !\r\na line of text us' 01:22:40.519374 'ed for verifying this !\r\na line of text used for verifying ' 01:22:40.519462 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:40.519554 'of text used for verifying this !\r\na line of text used for ' 01:22:40.519647 'verifying this !\r\na line of text used for verifying this !\r' 01:22:40.519738 '\na line of text used for verifying this !\r\na line of text ' 01:22:40.519830 'used for verifying this !\r\na line of text used for verifyin' 01:22:40.519920 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:40.520012 'e of text used for verifying this !\r\na line of text used fo' 01:22:40.520120 'r verifying this !\r\na line of text used for verifying this ' 01:22:40.520212 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:40.520304 'xt used for verifying this !\r\na line of text used for verif' 01:22:40.520395 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:40.520487 'line of text used for verifying this !\r\na line of text used' 01:22:40.520578 ' for verifying this !\r\na line of text used for verifying th' 01:22:40.524018 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:40.524127 ' text used for verifying this !\r\na line of text used for ve' 01:22:40.524220 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:40.524312 'a line of text used for verifying this !\r\na line of text us' 01:22:40.524404 'ed for verifying this !\r\na line of text used for verifying ' 01:22:40.524495 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:40.524586 'of text used for verifying this !\r\na line of text used for ' 01:22:40.524678 'verifying this !\r\na line of text used for verifying this !\r' 01:22:40.524771 '\na line of text used for verifying this !\r\na line of text ' 01:22:40.524863 'used for verifying this !\r\na line of text used for verifyin' 01:22:40.524953 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:40.525045 'e of text used for verifying this !\r\na line of text used fo' 01:22:40.525138 'r verifying this !\r\na line of text used for verifying this ' 01:22:40.525228 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:40.525319 'xt used for verifying this !\r\na line of text used for verif' 01:22:40.525407 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:40.525499 'line of text used for verifying this !\r\na line of text used' 01:22:40.525592 ' for verifying this !\r\na line of text used for verifying th' 01:22:40.525683 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:40.525775 ' text used for verifying this !\r\na line of text used for ve' 01:22:40.525866 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:40.525958 'a line of text used for verifying this !\r\na line of text us' 01:22:40.526050 'ed for verifying this !\r\na line of text used for verifying ' 01:22:40.526140 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:40.526232 'of text used for verifying this !\r\na line of text used for ' 01:22:40.526323 'verifying this !\r\na line of text used for verifying this !\r' 01:22:40.526414 '\na line of text used for verifying this !\r\na line of text ' 01:22:40.526507 'used for verifying this !\r\na line of text used for verifyin' 01:22:40.526598 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:40.526690 'e of text used for verifying this !\r\na line of text used fo' 01:22:40.526782 'r verifying this !\r\na line of text used for verifying this ' 01:22:40.526872 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:40.526963 'xt used for verifying this !\r\na line of text used for verif' 01:22:40.527054 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:40.527145 'line of text used for verifying this !\r\na line of text used' 01:22:40.527239 ' for verifying this !\r\na line of text used for verifying th' 01:22:40.530676 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:40.530783 ' text used for verifying this !\r\na line of text used for ve' 01:22:40.530879 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:40.530974 'a line of text used for verifying this !\r\na line of text us' 01:22:40.531071 'ed for verifying this !\r\na line of text used for verifying ' 01:22:40.531133 'this !\r\n' 01:22:41.479271 ====> Client disconnect 01:22:41.479706 Received ACKD (on stdin) 01:22:41.480947 Received QUIT (on stdin) 01:22:41.481036 quits 01:22:41.481551 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 475 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE A STOR 475 QUIT === End of file server.input === Start of file stderr475 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 71750 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 91 71750 0 0 91 65536 0 5494 0:00:13 0:00:11 0:00:02 6168 102 71750 0 0 102 73500 0 5645 0:00:12 0:00:13 --:--:-- 6907 102 71750 0 0 102 73500 0 5503 0:00:13 0:00:13 --:--:-- 7046 === End of file stderr475 === Start of file test475.txt a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this === File too long: 349 lines omitted here a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this === End of file test475.txt === Start of file trace475 01:22:30.553796 * Trying 127.0.0.1:33729... 01:22:31.556513 * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 40218 01:22:31.825633 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:22:32.204353 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:22:32.240236 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:22:32.247728 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:22:32.252889 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:22:32.375383 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:22:32.463043 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:22:32.487872 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:22:32.568586 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:22:32.591091 => Send header, 5 bytes (0x5) 0000: PWD 01:22:32.608528 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:22:32.646416 * Entry path is '/' 01:22:32.755437 * Request has same path as previous transfer 01:22:32.813145 => Send header, 6 bytes (0x6) 0000: EPSV 01:22:32.830134 * Connect data stream passively 01:22:32.899801 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||35769|) 01:22:33.082514 * Connecting to 127.0.0.1 (127.0.0.1) port 35769 01:22:33.159027 * Trying 127.0.0.1:35769... 01:22:33.251535 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 35769) from 127.0.0.1 port 53478 01:22:33.269579 => Send header, 8 bytes (0x8) 0000: TYPE A 01:22:33.284766 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:22:33.320781 => Send header, 10 bytes (0xa) 0000: STOR 475 01:22:33.354459 <= Recv header, 24 bytes (0x18) 0000: 125 Gimme gimme gimme 01:22:33.922333 => Send data, 65536 bytes (0x10000) 0000: a line of text used for verifying this 002a: a line of text used for verifying this 0054: a line of text used for verifying this 007e: a line of text used for verifying this 00a8: a line of text used for verifying this 00d2: a line of text used for verifying this 00fc: a line of text used for verifying this 0126: a line of text used for verifying this 0150: a line of text used for verifying this 017a: a line of text used for verifying this 01a4: a line of text used for verifying this 01ce: a line of text used for verifying this 01f8: a line of text used for verifying this 0222: a line of text used for verifying this 024c: a line of text used for verifying this 0276: a line of text used for verifying this 02a0: a line of text used for verifying this 02ca: a line of text used for verifying this 02f4: a line of text used for verifying this 031e: a line of text used for verifying this 0348: a line of text used for verifying this 0372: a line of text used for verifying this 039c: a line of text used for verifying this 03c6: a line of text used for verifying this 03f0: a line of text used for verifying this 041a: a line of text used for verifying this 0444: a line of text used for verifying this 046e: a line of text used for verifying this 0498: a line of text used for verifying this 04c2: a line of text used for verifying this 04ec: a line of text used for verifying this 0516: a line of text used for verifying this 0540: a line of text used for verifying this 056a: a line of text used for verifying this 0594: a line of text used for verifying this 05be: a line of text used for verifying this 05e8: a line of text used for verifying this 0612: a line of text used for verifying this 063c: a line of text used for verifying this 0666: a line of text used for verifying this 0690: a line of text used for verifying this 06ba: a line of text used for verifying this 06e4: a line of text used for verifying this 070e: a line of text used for verifying this 0738: a line of text used for verifying this 0762: a line of text used for verifying this 078c: a line of text used for verifying this 07b6: a line of text used for verifying this 07e0: a line of text used for verifying this 080a: a line of text used for verifying this 0834: a line of text used for verifying this 085e: a line of text used for verifying this 0888: a line of text used for verifying this 08b2: a line of text used for verifying this 08dc: a line of text used for verifying this 0906: a line of text used for verifying this 0930: a line of text used for verifying this 095a: a line of text used for verifying this 0984: a line of text used for verifying this 09ae: a line of text used for verifying this 09d8: a line of text used for verifying this 0a02: a line of text used for verifying this 0a2c: a line of text used for verifying this 0a56: a line of text used for verifying this 0a80: a line of text used for verifying this 0aaa: a line of text used for verifying this 0ad4: a line of text used for verifying this 0afe: a line of text used for verifying this 0b28: a line of text used for verifying this 0b52: a line of text used for verifying this 0b7c: a line of text used for verifying this 0ba6: a line of text used for verifying this 0bd0: a line of text used for verifying this 0bfa: a line of text used for verifying this 0c24: a line of text used for verifying this 0c4e: a line of text used for verifying this 0c78: a line of text used for verifying this 0ca2: a line of text used for verifying this 0ccc: a line of text used for verifying this 0cf6: a line of text used for verifying this 0d20: a line of text used for verifying this 0d4a: a line of text used for verifying this 0d74: a line of text used for verifying this 0d9e: a line of text used for verifying this 0dc8: a line of text used for verifying this 0df2: a line of text used for verifying this 0e1c: a line of text used for verifying this 0e46: a line of text used for verifying this 0e70: a line of text used for verifying this 0e9a: a line of text used for verifying this 0ec4: a line of text used for verifying this 0eee: a line of text used for verifying this 0f18: a line of text used for verifying this 0f42: a line of text used for verifying this 0f6c: a line of text used for verifying this 0f96: a line of text used for verifying this 0fc0: a line of text used for verifying this 0fea: a line of text used for verifying this 1014: a line of text used for verifying this 103e: a line of text used for verifying this 1068: a line of text used for verifying this 1092: a line of text used for verifying this 10bc: a line of text used for verifying this 10e6: a line of text used for verifying this 1110: a line of text used for verifying this 113a: a line of text used for verifying this 1164: a line of text used for verifying this 118e: a line of text used for verifying this 11b8: a line of text used for verifying this 11e2: a line of text used for verifying this 120c: a line of text used for verifying this 1236: a line of text used for verifying this 1260: a line of text used for verifying this 128a: a line of text used for verifying this 12b4: a line of text used for verifying this 12de: a line of text used for verifying this 1308: a line of text used for verifying this 1332: a line of text used for verifying this 135c: a line of text used for verifying this 1386: a line of text used for verifying this 13b0: a line of text used for verifying this 13da: a line of text used for verifying this 1404: a line of text used for verifying this 142e: a line of text used for verifying this 1458: a line of text used for verifying this 1482: a line of text used for verifying this 14ac: a line of text used for verifying this 14d6: a line of text used for verifying this 1500: a line of text used for verifying this 152a: a line of text used for verifying this 1554: a line of text used for verifying this 157e: a line of text used for verifying this 15a8: a line of text used for verifying this 15d2: a line of text used for verifying this 15fc: a line of text used for verifying this 1626: a line of text used for verifying this 1650: a line of text used for verifying this 167a: a line of text used for verifying this 16a4: a line of text used for verifying this 16ce: a line of text used for verifying this 16f8: a line of text used for verifying this 1722: a line of text used for verifying this 174c: a line of text used for verifying this 1776: a line of text used for verifying this 17a0: a line of text used for verifying this 17ca: a line of text used for verifying this 17f4: a line of text used for verifying this 181e: a line of text used for verifying this 1848: a line of text used for verifying this 1872: a line of text used for verifying this 189c: a line of text used for verifying this 18c6: a line of text used for verifying this 18f0: a line of text used for verifying this 191a: a line of text used for verifying this 1944: a line of text used for verifying this 196e: a line of text used for verifying this 1998: a line of text used for verifying this 19c2: a line of text used for verifying this 19ec: a line of text used for verifying this 1a16: a line of text used for verifying this 1a40: a line of text used for verifying this 1a6a: a line of text used for verifying this 1a94: a line of text used for verifying this 1abe: a line of text used for verifying this 1ae8: a line of text used for verifying this 1b12: a line of text used for verifying this 1b3c: a line of text used for verifying this 1b66: a line of text used for verifying this 1b90: a line of text used for verifying this 1bba: a line of text used for verifying this 1be4: a line of text used for verifying this 1c0e: a line of text used for verifying this 1c38: a line of text used for verifying this 1c62: a line of text used for verifying this 1c8c: a line of text used for verifying this 1cb6: a line of text used for verifying this 1ce0: a line of text used for verifying this 1d0a: a line of text used for verifying this 1d34: a line of text used for verifying this 1d5e: a line of text used for verifying this 1d88: a line of text used for verifying this 1db2: a line of text used for verifying this 1ddc: a line of text used for verifying this 1e06: a line of text used for verifying this 1e30: a line of text used for verifying this 1e5a: a line of text used for verifying this 1e84: a line of text used for verifying this 1eae: a line of text used for verifying this 1ed8: a line of text used for verifying this 1f02: a line of text used for verifying this 1f2c: a line of text used for verifying this 1f56: a line of text used for verifying this 1f80: a line of text used for verifying this 1faa: a line of text used for verifying this 1fd4: a line of text used for verifying this 1ffe: a line of text used for verifying this 2028: a line of text used for verifying this 2052: a line of text used for verifying this 207c: a line of text used for verifying this 20a6: a line of text used for verifying this 20d0: a line of text used for verifying this 20fa: a line of text used for verifying this 2124: a line of text used for verifying this 214e: a line of text used for verifying this 2178: a line of text used for verifying this 21a2: a line of text used for verifying this 21cc: a line of text used for verifying this 21f6: a line of text used for verifying this 2220: a line of text used for verifying this 224a: a line of text used for verifying this 2274: a line of text used for verifying this 229e: a line of text used for verifying this 22c8: a line of text used for verifying this 22f2: a line of text used for verifying this 231c: a line of text used for verifying this 2346: a line of text used for verifying this 2370: a line of text used for verifying this 239a: a line of text used for verifying this 23c4: a line of text used for verifying this 23ee: a line of text used for verifying this 2418: a line of text used for verifying this 2442: a line of text used for verifying this 246c: a line of text used for verifying this 2496: a line of text used for verifying this 24c0: a line of text used for verifying this 24ea: a line of text used for verifying this 2514: a line of text used for verifying this 253e: a line of text used for verifying this 2568: a line of text used for verifying this 2592: a line of text used for verifying this 25bc: a line of text used for verifying this 25e6: a line of text used for verifying this 2610: a line of text used for verifying this 263a: a line of text used for verifying this 2664: a line of text used for verifying this 268e: a line of text used for verifying this 26b8: a line of text used for verifying this 26e2: a line of text used for verifying this 270c: a line of text used for verifying this 2736: a line of text used for verifying this 2760: a line of text used for verifying this 278a: a line of text used for verifying this 27b4: a line of text used for verifying this 27de: a line of text used for verifying this 2808: a line of text used for verifying this 2832: a line of text used for verifying this 285c: a line of text used for verifying this 2886: a line of text used for verifying this 28b0: a line of text used for verifying this 28da: a line of text used for verifying this 2904: a line of text used for verifying this 292e: a line of text used for verifying this 2958: a line of text used for verifying this 2982: a line of text used for verifying this 29ac: a line of text used for verifying this 29d6: a line of text used for verifying this 2a00: a line of text used for verifying this 2a2a: a line of text used for verifying this 2a54: a line of text used for verifying this 2a7e: a line of text used for verifying this 2aa8: a line of text used for verifying this 2ad2: a line of text used for verifying this 2afc: a line of text used for verifying this 2b26: a line of text used for verifying this 2b50: a line of text used for verifying this 2b7a: a line of text used for verifying this 2ba4: a line of text used for verifying this 2bce: a line of text used for verifying this 2bf8: a line of text used for verifying this 2c22: a line of text used for verifying this 2c4c: a line of text used for verifying this 2c76: a line of text used for verifying this 2ca0: a line of text used for verifying this 2cca: a line of text used for verifying this 2cf4: a line of text used for verifying this 2d1e: a line of text used for verifying this 2d48: a line of text used for verifying this 2d72: a line of text used for verifying this 2d9c: a line of text used for verifying this 2dc6: a line of text used for verifying this 2df0: a line of text used for verifying this 2e1a: a line of text used for verifying this 2e44: a line of text used for verifying this 2e6e: a line of text used for verifying this 2e98: a line of text used for verifying this 2ec2: a line of text used for verifying this 2eec: a line of text used for verifying this 2f16: a line of text used for verifying this 2f40: a line of text used for verifying this 2f6a: a line of text used for verifying this 2f94: a line of text used for verifying this 2fbe: a line of text used for verifying this 2fe8: a line of text used for verifying this 3012: a line of text used for verifying this 303c: a line of text used for verifying this 3066: a line of text used for verifying this 3090: a line of text used for verifying this 30ba: a line of text used for verifying this 30e4: a line of text used for verifying this 310e: a line of text used for verifying this 3138: a line of text used for verifying this 3162: a line of text used for verifying this 318c: a line of text used for verifying this 31b6: a line of text used for verifying this 31e0: a line of text used for verifying this 320a: a line of text used for verifying this 3234: a line of text used for verifying this 325e: a line of text used for verifying this 3288: a line of text used for verifying this 32b2: a line of text used for verifying this 32dc: a line of text used for verifying this 3306: a line of text used for verifying this 3330: a line of text used for verifying this 335a: a line of text used for verifying this 3384: a line of text used for verifying this 33ae: a line of text used for verifying this 33d8: a line of text used for verifying this 3402: a line of text used for verifying this 342c: a line of text used for verifying this 3456: a line of text used for verifying this 3480: a line of text used for verifying this 34aa: a line of text used for verifying this 34d4: a line of text used for verifying this 34fe: a line of text used for verifying this 3528: a line of text used for verifying this 3552: a line of text used for verifying this 357c: a line of text used for verifying this 35a6: a line of text used for verifying this 35d0: a line of text used for verifying this 35fa: a line of text used for verifying this 3624: a line of text used for verifying this 364e: a line of text used for verifying this 3678: a line of text used for verifying this 36a2: a line of text used for verifying this 36cc: a line of text used for verifying this 36f6: a line of text used for verifying this 3720: a line of text used for verifying this 374a: a line of text used for verifying this 3774: a line of text used for verifying this 379e: a line of text used for verifying this 37c8: a line of text used for verifying this 37f2: a line of text used for verifying this 381c: a line of text used for verifying this 3846: a line of text used for verifying this 3870: a line of text used for verifying this 389a: a line of text used for verifying this 38c4: a line of text used for verifying this 38ee: a line of text used for verifying this 3918: a line of text used for verifying this 3942: a line of text used for verifying this 396c: a line of text used for verifying this 3996: a line of text used for verifying this 39c0: a line of text used for verifying this 39ea: a line of text used for verifying this 3a14: a line of text used for verifying this 3a3e: a line of text used for verifying this 3a68: a line of text used for verifying this 3a92: a line of text used for verifying this 3abc: a line of text used for verifying this 3ae6: a line of text used for verifying this 3b10: a line of text used for verifying this 3b3a: a line of text used for verifying this 3b64: a line of text used for verifying this 3b8e: a line of text used for verifying this 3bb8: a line of text used for verifying this 3be2: a line of text used for verifying this 3c0c: a line of text used for verifying this 3c36: a line of text used for verifying this 3c60: a line of text used for verifying this 3c8a: a line of text used for verifying this 3cb4: a line of text used for verifying this 3cde: a line of text used for verifying this 3d08: a line of text used for verifying this 3d32: a line of text used for verifying this 3d5c: a line of text used for verifying this 3d86: a line of text used for verifying this 3db0: a line of text used for verifying this 3dda: a line of text used for verifying this 3e04: a line of text used for verifying this 3e2e: a line of text used for verifying this 3e58: a line of text used for verifying this 3e82: a line of text used for verifying this 3eac: a line of text used for verifying this 3ed6: a line of text used for verifying this 3f00: a line of text used for verifying this 3f2a: a line of text used for verifying this 3f54: a line of text used for verifying this 3f7e: a line of text used for verifying this 3fa8: a line of text used for verifying this 3fd2: a line of text used for verifying this 3ffc: a line of text used for verifying this 4026: a line of text used for verifying this 4050: a line of text used for verifying this 407a: a line of text used for verifying this 40a4: a line of text used for verifying this 40ce: a line of text used for verifying this 40f8: a line of text used for verifying this 4122: a line of text used for verifying this 414c: a line of text used for verifying this 4176: a line of text used for verifying this 41a0: a line of text used for verifying this 41ca: a line of text used for verifying this 41f4: a line of text used for verifying this 421e: a line of text used for verifying this 4248: a line of text used for verifying this 4272: a line of text used for verifying this 429c: a line of text used for verifying this 42c6: a line of text used for verifying this 42f0: a line of text used for verifying this 431a: a line of text used for verifying this 4344: a line of text used for verifying this 436e: a line of text used for verifying this 4398: a line of text used for verifying this 43c2: a line of text used for verifying this 43ec: a line of text used for verifying this 4416: a line of text used for verifying this 4440: a line of text used for verifying this 446a: a line of text used for verifying this 4494: a line of text used for verifying this 44be: a line of text used for verifying this 44e8: a line of text used for verifying this 4512: a line of text used for verifying this 453c: a line of text used for verifying this 4566: a line of text used for verifying this 4590: a line of text used for verifying this 45ba: a line of text used for verifying this 45e4: a line of text used for verifying this 460e: a line of text used for verifying this 4638: a line of text used for verifying this 4662: a line of text used for verifying this 468c: a line of text used for verifying this 46b6: a line of text used for verifying this 46e0: a line of text used for verifying this 470a: a line of text used for verifying this 4734: a line of text used for verifying this 475e: a line of text used for verifying this 4788: a line of text used for verifying this 47b2: a line of text used for verifying this 47dc: a line of text used for verifying this 4806: a line of text used for verifying this 4830: a line of text used for verifying this 485a: a line of text used for verifying this 4884: a line of text used for verifying this 48ae: a line of text used for verifying this 48d8: a line of text used for verifying this 4902: a line of text used for verifying this 492c: a line of text used for verifying this 4956: a line of text used for verifying this 4980: a line of text used for verifying this 49aa: a line of text used for verifying this 49d4: a line of text used for verifying this 49fe: a line of text used for verifying this 4a28: a line of text used for verifying this 4a52: a line of text used for verifying this 4a7c: a line of text used for verifying this 4aa6: a line of text used for verifying this 4ad0: a line of text used for verifying this 4afa: a line of text used for verifying this 4b24: a line of text used for verifying this 4b4e: a line of text used for verifying this 4b78: a line of text used for verifying this 4ba2: a line of text used for verifying this 4bcc: a line of text used for verifying this 4bf6: a line of text used for verifying this 4c20: a line of text used for verifying this 4c4a: a line of text used for verifying this 4c74: a line of text used for verifying this 4c9e: a line of text used for verifying this 4cc8: a line of text used for verifying this 4cf2: a line of text used for verifying this 4d1c: a line of text used for verifying this 4d46: a line of text used for verifying this 4d70: a line of text used for verifying this 4d9a: a line of text used for verifying this 4dc4: a line of text used for verifying this 4dee: a line of text used for verifying this 4e18: a line of text used for verifying this 4e42: a line of text used for verifying this 4e6c: a line of text used for verifying this 4e96: a line of text used for verifying this 4ec0: a line of text used for verifying this 4eea: a line of text used for verifying this 4f14: a line of text used for verifying this 4f3e: a line of text used for verifying this 4f68: a line of text used for verifying this 4f92: a line of text used for verifying this 4fbc: a line of text used for verifying this 4fe6: a line of text used for verifying this 5010: a line of text used for verifying this 503a: a line of text used for verifying this 5064: a line of text used for verifying this 508e: a line of text used for verifying this 50b8: a line of text used for verifying this 50e2: a line of text used for verifying this 510c: a line of text used for verifying this 5136: a line of text used for verifying this 5160: a line of text used for verifying this 518a: a line of text used for verifying this 51b4: a line of text used for verifying this 51de: a line of text used for verifying this 5208: a line of text used for verifying this 5232: a line of text used for verifying this 525c: a line of text used for verifying this 5286: a line of text used for verifying this 52b0: a line of text used for verifying this 52da: a line of text used for verifying this 5304: a line of text used for verifying this 532e: a line of text used for verifying this 5358: a line of text used for verifying this 5382: a line of text used for verifying this 53ac: a line of text used for verifying this 53d6: a line of text used for verifying this 5400: a line of text used for verifying this 542a: a line of text used for verifying this 5454: a line of text used for verifying this 547e: a line of text used for verifying this 54a8: a line of text used for verifying this 54d2: a line of text used for verifying this 54fc: a line of text used for verifying this 5526: a line of text used for verifying this 5550: a line of text used for verifying this 557a: a line of text used for verifying this 55a4: a line of text used for verifying this 55ce: a line of text used for verifying this 55f8: a line of text used for verifying this 5622: a line of text used for verifying this 564c: a line of text used for verifying this 5676: a line of text used for verifying this 56a0: a line of text used for verifying this 56ca: a line of text used for verifying this 56f4: a line of text used for verifying this 571e: a line of text used for verifying this 5748: a line of text used for verifying this 5772: a line of text used for verifying this 579c: a line of text used for verifying this 57c6: a line of text used for verifying this 57f0: a line of text used for verifying this 581a: a line of text used for verifying this 5844: a line of text used for verifying this 586e: a line of text used for verifying this 5898: a line of text used for verifying this 58c2: a line of text used for verifying this 58ec: a line of text used for verifying this 5916: a line of text used for verifying this 5940: a line of text used for verifying this 596a: a line of text used for verifying this 5994: a line of text used for verifying this 59be: a line of text used for verifying this 59e8: a line of text used for verifying this 5a12: a line of text used for verifying this 5a3c: a line of text used for verifying this 5a66: a line of text used for verifying this 5a90: a line of text used for verifying this 5aba: a line of text used for verifying this 5ae4: a line of text used for verifying this 5b0e: a line of text used for verifying this 5b38: a line of text used for verifying this 5b62: a line of text used for verifying this 5b8c: a line of text used for verifying this 5bb6: a line of text used for verifying this 5be0: a line of text used for verifying this 5c0a: a line of text used for verifying this 5c34: a line of text used for verifying this 5c5e: a line of text used for verifying this 5c88: a line of text used for verifying this 5cb2: a line of text used for verifying this 5cdc: a line of text used for verifying this 5d06: a line of text used for verifying this 5d30: a line of text used for verifying this 5d5a: a line of text used for verifying this 5d84: a line of text used for verifying this 5dae: a line of text used for verifying this 5dd8: a line of text used for verifying this 5e02: a line of text used for verifying this 5e2c: a line of text used for verifying this 5e56: a line of text used for verifying this 5e80: a line of text used for verifying this 5eaa: a line of text used for verifying this 5ed4: a line of text used for verifying this 5efe: a line of text used for verifying this 5f28: a line of text used for verifying this 5f52: a line of text used for verifying this 5f7c: a line of text used for verifying this 5fa6: a line of text used for verifying this 5fd0: a line of text used for verifying this 5ffa: a line of text used for verifying this 6024: a line of text used for verifying this 604e: a line of text used for verifying this 6078: a line of text used for verifying this 60a2: a line of text used for verifying this 60cc: a line of text used for verifying this 60f6: a line of text used for verifying this 6120: a line of text used for verifying this 614a: a line of text used for verifying this 6174: a line of text used for verifying this 619e: a line of text used for verifying this 61c8: a line of text used for verifying this 61f2: a line of text used for verifying this 621c: a line of text used for verifying this 6246: a line of text used for verifying this 6270: a line of text used for verifying this 629a: a line of text used for verifying this 62c4: a line of text used for verifying this 62ee: a line of text used for verifying this 6318: a line of text used for verifying this 6342: a line of text used for verifying this 636c: a line of text used for verifying this 6396: a line of text used for verifying this 63c0: a line of text used for verifying this 63ea: a line of text used for verifying this 6414: a line of text used for verifying this 643e: a line of text used for verifying this 6468: a line of text used for verifying this 6492: a line of text used for verifying this 64bc: a line of text used for verifying this 64e6: a line of text used for verifying this 6510: a line of text used for verifying this 653a: a line of text used for verifying this 6564: a line of text used for verifying this 658e: a line of text used for verifying this 65b8: a line of text used for verifying this 65e2: a line of text used for verifying this 660c: a line of text used for verifying this 6636: a line of text used for verifying this 6660: a line of text used for verifying this 668a: a line of text used for verifying this 66b4: a line of text used for verifying this 66de: a line of text used for verifying this 6708: a line of text used for verifying this 6732: a line of text used for verifying this 675c: a line of text used for verifying this 6786: a line of text used for verifying this 67b0: a line of text used for verifying this 67da: a line of text used for verifying this 6804: a line of text used for verifying this 682e: a line of text used for verifying this 6858: a line of text used for verifying this 6882: a line of text used for verifying this 68ac: a line of text used for verifying this 68d6: a line of text used for verifying this 6900: a line of text used for verifying this 692a: a line of text used for verifying this 6954: a line of text used for verifying this 697e: a line of text used for verifying this 69a8: a line of text used for verifying this 69d2: a line of text used for verifying this 69fc: a line of text used for verifying this 6a26: a line of text used for verifying this 6a50: a line of text used for verifying this 6a7a: a line of text used for verifying this 6aa4: a line of text used for verifying this 6ace: a line of text used for verifying this 6af8: a line of text used for verifying this 6b22: a line of text used for verifying this 6b4c: a line of text used for verifying this 6b76: a line of text used for verifying this 6ba0: a line of text used for verifying this 6bca: a line of text used for verifying this 6bf4: a line of text used for verifying this 6c1e: a line of text used for verifying this 6c48: a line of text used for verifying this 6c72: a line of text used for verifying this 6c9c: a line of text used for verifying this 6cc6: a line of text used for verifying this 6cf0: a line of text used for verifying this 6d1a: a line of text used for verifying this 6d44: a line of text used for verifying this 6d6e: a line of text used for verifying this 6d98: a line of text used for verifying this 6dc2: a line of text used for verifying this 6dec: a line of text used for verifying this 6e16: a line of text used for verifying this 6e40: a line of text used for verifying this 6e6a: a line of text used for verifying this 6e94: a line of text used for verifying this 6ebe: a line of text used for verifying this 6ee8: a line of text used for verifying this 6f12: a line of text used for verifying this 6f3c: a line of text used for verifying this 6f66: a line of text used for verifying this 6f90: a line of text used for verifying this 6fba: a line of text used for verifying this 6fe4: a line of text used for verifying this 700e: a line of text used for verifying this 7038: a line of text used for verifying this 7062: a line of text used for verifying this 708c: a line of text used for verifying this 70b6: a line of text used for verifying this 70e0: a line of text used for verifying this 710a: a line of text used for verifying this 7134: a line of text used for verifying this 715e: a line of text used for verifying this 7188: a line of text used for verifying this 71b2: a line of text used for verifying this 71dc: a line of text used for verifying this 7206: a line of text used for verifying this 7230: a line of text used for verifying this 725a: a line of text used for verifying this 7284: a line of text used for verifying this 72ae: a line of text used for verifying this 72d8: a line of text used for verifying this 7302: a line of text used for verifying this 732c: a line of text used for verifying this 7356: a line of text used for verifying this 7380: a line of text used for verifying this 73aa: a line of text used for verifying this 73d4: a line of text used for verifying this 73fe: a line of text used for verifying this 7428: a line of text used for verifying this 7452: a line of text used for verifying this 747c: a line of text used for verifying this 74a6: a line of text used for verifying this 74d0: a line of text used for verifying this 74fa: a line of text used for verifying this 7524: a line of text used for verifying this 754e: a line of text used for verifying this 7578: a line of text used for verifying this 75a2: a line of text used for verifying this 75cc: a line of text used for verifying this 75f6: a line of text used for verifying this 7620: a line of text used for verifying this 764a: a line of text used for verifying this 7674: a line of text used for verifying this 769e: a line of text used for verifying this 76c8: a line of text used for verifying this 76f2: a line of text used for verifying this 771c: a line of text used for verifying this 7746: a line of text used for verifying this 7770: a line of text used for verifying this 779a: a line of text used for verifying this 77c4: a line of text used for verifying this 77ee: a line of text used for verifying this 7818: a line of text used for verifying this 7842: a line of text used for verifying this 786c: a line of text used for verifying this 7896: a line of text used for verifying this 78c0: a line of text used for verifying this 78ea: a line of text used for verifying this 7914: a line of text used for verifying this 793e: a line of text used for verifying this 7968: a line of text used for verifying this 7992: a line of text used for verifying this 79bc: a line of text used for verifying this 79e6: a line of text used for verifying this 7a10: a line of text used for verifying this 7a3a: a line of text used for verifying this 7a64: a line of text used for verifying this 7a8e: a line of text used for verifying this 7ab8: a line of text used for verifying this 7ae2: a line of text used for verifying this 7b0c: a line of text used for verifying this 7b36: a line of text used for verifying this 7b60: a line of text used for verifying this 7b8a: a line of text used for verifying this 7bb4: a line of text used for verifying this 7bde: a line of text used for verifying this 7c08: a line of text used for verifying this 7c32: a line of text used for verifying this 7c5c: a line of text used for verifying this 7c86: a line of text used for verifying this 7cb0: a line of text used for verifying this 7cda: a line of text used for verifying this 7d04: a line of text used for verifying this 7d2e: a line of text used for verifying this 7d58: a line of text used for verifying this 7d82: a line of text used for verifying this 7dac: a line of text used for verifying this 7dd6: a line of text used for verifying this 7e00: a line of text used for verifying this 7e2a: a line of text used for verifying this 7e54: a line of text used for verifying this 7e7e: a line of text used for verifying this 7ea8: a line of text used for verifying this 7ed2: a line of text used for verifying this 7efc: a line of text used for verifying this 7f26: a line of text used for verifying this 7f50: a line of text used for verifying this 7f7a: a line of text used for verifying this 7fa4: a line of text used for verifying this 7fce: a line of text used for verifying this 7ff8: a line of text used for verifying this 8022: a line of text used for verifying this 804c: a line of text used for verifying this 8076: a line of text used for verifying this 80a0: a line of text used for verifying this 80ca: a line of text used for verifying this 80f4: a line of text used for verifying this 811e: a line of text used for verifying this 8148: a line of text used for verifying this 8172: a line of text used for verifying this 819c: a line of text used for verifying this 81c6: a line of text used for verifying this 81f0: a line of text used for verifying this 821a: a line of text used for verifying this 8244: a line of text used for verifying this 826e: a line of text used for verifying this 8298: a line of text used for verifying this 82c2: a line of text used for verifying this 82ec: a line of text used for verifying this 8316: a line of text used for verifying this 8340: a line of text used for verifying this 836a: a line of text used for verifying this 8394: a line of text used for verifying this 83be: a line of text used for verifying this 83e8: a line of text used for verifying this 8412: a line of text used for verifying this 843c: a line of text used for verifying this 8466: a line of text used for verifying this 8490: a line of text used for verifying this 84ba: a line of text used for verifying this 84e4: a line of text used for verifying this 850e: a line of text used for verifying this 8538: a line of text used for verifying this 8562: a line of text used for verifying this 858c: a line of text used for verifying this 85b6: a line of text used for verifying this 85e0: a line of text used for verifying this 860a: a line of text used for verifying this 8634: a line of text used for verifying this 865e: a line of text used for verifying this 8688: a line of text used for verifying this 86b2: a line of text used for verifying this 86dc: a line of text used for verifying this 8706: a line of text used for verifying this 8730: a line of text used for verifying this 875a: a line of text used for verifying this 8784: a line of text used for verifying this 87ae: a line of text used for verifying this 87d8: a line of text used for verifying this 8802: a line of text used for verifying this 882c: a line of text used for verifying this 8856: a line of text used for verifying this 8880: a line of text used for verifying this 88aa: a line of text used for verifying this 88d4: a line of text used for verifying this 88fe: a line of text used for verifying this 8928: a line of text used for verifying this 8952: a line of text used for verifying this 897c: a line of text used for verifying this 89a6: a line of text used for verifying this 89d0: a line of text used for verifying this 89fa: a line of text used for verifying this 8a24: a line of text used for verifying this 8a4e: a line of text used for verifying this 8a78: a line of text used for verifying this 8aa2: a line of text used for verifying this 8acc: a line of text used for verifying this 8af6: a line of text used for verifying this 8b20: a line of text used for verifying this 8b4a: a line of text used for verifying this 8b74: a line of text used for verifying this 8b9e: a line of text used for verifying this 8bc8: a line of text used for verifying this 8bf2: a line of text used for verifying this 8c1c: a line of text used for verifying this 8c46: a line of text used for verifying this 8c70: a line of text used for verifying this 8c9a: a line of text used for verifying this 8cc4: a line of text used for verifying this 8cee: a line of text used for verifying this 8d18: a line of text used for verifying this 8d42: a line of text used for verifying this 8d6c: a line of text used for verifying this 8d96: a line of text used for verifying this 8dc0: a line of text used for verifying this 8dea: a line of text used for verifying this 8e14: a line of text used for verifying this 8e3e: a line of text used for verifying this 8e68: a line of text used for verifying this 8e92: a line of text used for verifying this 8ebc: a line of text used for verifying this 8ee6: a line of text used for verifying this 8f10: a line of text used for verifying this 8f3a: a line of text used for verifying this 8f64: a line of text used for verifying this 8f8e: a line of text used for verifying this 8fb8: a line of text used for verifying this 8fe2: a line of text used for verifying this 900c: a line of text used for verifying this 9036: a line of text used for verifying this 9060: a line of text used for verifying this 908a: a line of text used for verifying this 90b4: a line of text used for verifying this 90de: a line of text used for verifying this 9108: a line of text used for verifying this 9132: a line of text used for verifying this 915c: a line of text used for verifying this 9186: a line of text used for verifying this 91b0: a line of text used for verifying this 91da: a line of text used for verifying this 9204: a line of text used for verifying this 922e: a line of text used for verifying this 9258: a line of text used for verifying this 9282: a line of text used for verifying this 92ac: a line of text used for verifying this 92d6: a line of text used for verifying this 9300: a line of text used for verifying this 932a: a line of text used for verifying this 9354: a line of text used for verifying this 937e: a line of text used for verifying this 93a8: a line of text used for verifying this 93d2: a line of text used for verifying this 93fc: a line of text used for verifying this 9426: a line of text used for verifying this 9450: a line of text used for verifying this 947a: a line of text used for verifying this 94a4: a line of text used for verifying this 94ce: a line of text used for verifying this 94f8: a line of text used for verifying this 9522: a line of text used for verifying this 954c: a line of text used for verifying this 9576: a line of text used for verifying this 95a0: a line of text used for verifying this 95ca: a line of text used for verifying this 95f4: a line of text used for verifying this 961e: a line of text used for verifying this 9648: a line of text used for verifying this 9672: a line of text used for verifying this 969c: a line of text used for verifying this 96c6: a line of text used for verifying this 96f0: a line of text used for verifying this 971a: a line of text used for verifying this 9744: a line of text used for verifying this 976e: a line of text used for verifying this 9798: a line of text used for verifying this 97c2: a line of text used for verifying this 97ec: a line of text used for verifying this 9816: a line of text used for verifying this 9840: a line of text used for verifying this 986a: a line of text used for verifying this 9894: a line of text used for verifying this 98be: a line of text used for verifying this 98e8: a line of text used for verifying this 9912: a line of text used for verifying this 993c: a line of text used for verifying this 9966: a line of text used for verifying this 9990: a line of text used for verifying this 99ba: a line of text used for verifying this 99e4: a line of text used for verifying this 9a0e: a line of text used for verifying this 9a38: a line of text used for verifying this 9a62: a line of text used for verifying this 9a8c: a line of text used for verifying this 9ab6: a line of text used for verifying this 9ae0: a line of text used for verifying this 9b0a: a line of text used for verifying this 9b34: a line of text used for verifying this 9b5e: a line of text used for verifying this 9b88: a line of text used for verifying this 9bb2: a line of text used for verifying this 9bdc: a line of text used for verifying this 9c06: a line of text used for verifying this 9c30: a line of text used for verifying this 9c5a: a line of text used for verifying this 9c84: a line of text used for verifying this 9cae: a line of text used for verifying this 9cd8: a line of text used for verifying this 9d02: a line of text used for verifying this 9d2c: a line of text used for verifying this 9d56: a line of text used for verifying this 9d80: a line of text used for verifying this 9daa: a line of text used for verifying this 9dd4: a line of text used for verifying this 9dfe: a line of text used for verifying this 9e28: a line of text used for verifying this 9e52: a line of text used for verifying this 9e7c: a line of text used for verifying this 9ea6: a line of text used for verifying this 9ed0: a line of text used for verifying this 9efa: a line of text used for verifying this 9f24: a line of text used for verifying this 9f4e: a line of text used for verifying this 9f78: a line of text used for verifying this 9fa2: a line of text used for verifying this 9fcc: a line of text used for verifying this 9ff6: a line of text used for verifying this a020: a line of text used for verifying this a04a: a line of text used for verifying this a074: a line of text used for verifying this a09e: a line of text used for verifying this a0c8: a line of text used for verifying this a0f2: a line of text used for verifying this a11c: a line of text used for verifying this a146: a line of text used for verifying this a170: a line of text used for verifying this a19a: a line of text used for verifying this a1c4: a line of text used for verifying this a1ee: a line of text used for verifying this a218: a line of text used for verifying this a242: a line of text used for verifying this a26c: a line of text used for verifying this a296: a line of text used for verifying this a2c0: a line of text used for verifying this a2ea: a line of text used for verifying this a314: a line of text used for verifying this a33e: a line of text used for verifying this a368: a line of text used for verifying this a392: a line of text used for verifying this a3bc: a line of text used for verifying this a3e6: a line of text used for verifying this a410: a line of text used for verifying this a43a: a line of text used for verifying this a464: a line of text used for verifying this a48e: a line of text used for verifying this a4b8: a line of text used for verifying this a4e2: a line of text used for verifying this a50c: a line of text used for verifying this a536: a line of text used for verifying this a560: a line of text used for verifying this a58a: a line of text used for verifying this a5b4: a line of text used for verifying this a5de: a line of text used for verifying this a608: a line of text used for verifying this a632: a line of text used for verifying this a65c: a line of text used for verifying this a686: a line of text used for verifying this a6b0: a line of text used for verifying this a6da: a line of text used for verifying this a704: a line of text used for verifying this a72e: a line of text used for verifying this a758: a line of text used for verifying this a782: a line of text used for verifying this a7ac: a line of text used for verifying this a7d6: a line of text used for verifying this a800: a line of text used for verifying this a82a: a line of text used for verifying this a854: a line of text used for verifying this a87e: a line of text used for verifying this a8a8: a line of text used for verifying this a8d2: a line of text used for verifying this a8fc: a line of text used for verifying this a926: a line of text used for verifying this a950: a line of text used for verifying this a97a: a line of text used for verifying this a9a4: a line of text used for verifying this a9ce: a line of text used for verifying this a9f8: a line of text used for verifying this aa22: a line of text used for verifying this aa4c: a line of text used for verifying this aa76: a line of text used for verifying this aaa0: a line of text used for verifying this aaca: a line of text used for verifying this aaf4: a line of text used for verifying this ab1e: a line of text used for verifying this ab48: a line of text used for verifying this ab72: a line of text used for verifying this ab9c: a line of text used for verifying this abc6: a line of text used for verifying this abf0: a line of text used for verifying this ac1a: a line of text used for verifying this ac44: a line of text used for verifying this ac6e: a line of text used for verifying this ac98: a line of text used for verifying this acc2: a line of text used for verifying this acec: a line of text used for verifying this ad16: a line of text used for verifying this ad40: a line of text used for verifying this ad6a: a line of text used for verifying this ad94: a line of text used for verifying this adbe: a line of text used for verifying this ade8: a line of text used for verifying this ae12: a line of text used for verifying this ae3c: a line of text used for verifying this ae66: a line of text used for verifying this ae90: a line of text used for verifying this aeba: a line of text used for verifying this aee4: a line of text used for verifying this af0e: a line of text used for verifying this af38: a line of text used for verifying this af62: a line of text used for verifying this af8c: a line of text used for verifying this afb6: a line of text used for verifying this afe0: a line of text used for verifying this b00a: a line of text used for verifying this b034: a line of text used for verifying this b05e: a line of text used for verifying this b088: a line of text used for verifying this b0b2: a line of text used for verifying this b0dc: a line of text used for verifying this b106: a line of text used for verifying this b130: a line of text used for verifying this b15a: a line of text used for verifying this b184: a line of text used for verifying this b1ae: a line of text used for verifying this b1d8: a line of text used for verifying this b202: a line of text used for verifying this b22c: a line of text used for verifying this b256: a line of text used for verifying this b280: a line of text used for verifying this b2aa: a line of text used for verifying this b2d4: a line of text used for verifying this b2fe: a line of text used for verifying this b328: a line of text used for verifying this b352: a line of text used for verifying this b37c: a line of text used for verifying this b3a6: a line of text used for verifying this b3d0: a line of text used for verifying this b3fa: a line of text used for verifying this b424: a line of text used for verifying this b44e: a line of text used for verifying this b478: a line of text used for verifying this b4a2: a line of text used for verifying this b4cc: a line of text used for verifying this b4f6: a line of text used for verifying this b520: a line of text used for verifying this b54a: a line of text used for verifying this b574: a line of text used for verifying this b59e: a line of text used for verifying this b5c8: a line of text used for verifying this b5f2: a line of text used for verifying this b61c: a line of text used for verifying this b646: a line of text used for verifying this b670: a line of text used for verifying this b69a: a line of text used for verifying this b6c4: a line of text used for verifying this b6ee: a line of text used for verifying this b718: a line of text used for verifying this b742: a line of text used for verifying this b76c: a line of text used for verifying this b796: a line of text used for verifying this b7c0: a line of text used for verifying this b7ea: a line of text used for verifying this b814: a line of text used for verifying this b83e: a line of text used for verifying this b868: a line of text used for verifying this b892: a line of text used for verifying this b8bc: a line of text used for verifying this b8e6: a line of text used for verifying this b910: a line of text used for verifying this b93a: a line of text used for verifying this b964: a line of text used for verifying this b98e: a line of text used for verifying this b9b8: a line of text used for verifying this b9e2: a line of text used for verifying this ba0c: a line of text used for verifying this ba36: a line of text used for verifying this ba60: a line of text used for verifying this ba8a: a line of text used for verifying this bab4: a line of text used for verifying this bade: a line of text used for verifying this bb08: a line of text used for verifying this bb32: a line of text used for verifying this bb5c: a line of text used for verifying this bb86: a line of text used for verifying this bbb0: a line of text used for verifying this bbda: a line of text used for verifying this bc04: a line of text used for verifying this bc2e: a line of text used for verifying this bc58: a line of text used for verifying this bc82: a line of text used for verifying this bcac: a line of text used for verifying this bcd6: a line of text used for verifying this bd00: a line of text used for verifying this bd2a: a line of text used for verifying this bd54: a line of text used for verifying this bd7e: a line of text used for verifying this bda8: a line of text used for verifying this bdd2: a line of text used for verifying this === File too long: 401 lines omitted here ffc6: a line of text used for verifying this fff0: a line of text u 01:22:40.686065 => Send data, 1598 bytes (0x63e) 0000: sed for verifying this 001a: a line of text used for verifying this 0044: a line of text used for verifying this 006e: a line of text used for verifying this 0098: a line of text used for verifying this 00c2: a line of text used for verifying this 00ec: a line of text used for verifying this 0116: a line of text used for verifying this 0140: a line of text used for verifying this 016a: a line of text used for verifying this 0194: a line of text used for verifying this 01be: a line of text used for verifying this 01e8: a line of text used for verifying this 0212: a line of text used for verifying this 023c: a line of text used for verifying this 0266: a line of text used for verifying this 0290: a line of text used for verifying this 02ba: a line of text used for verifying this 02e4: a line of text used for verifying this 030e: a line of text used for verifying this 0338: a line of text used for verifying this 0362: a line of text used for verifying this 038c: a line of text used for verifying this 03b6: a line of text used for verifying this 03e0: a line of text used for verifying this 040a: a line of text used for verifying this 0434: a line of text used for verifying this 045e: a line of text used for verifying this 0488: a line of text used for verifying this 04b2: a line of text used for verifying this 04dc: a line of text used for verifying this 0506: a line of text used for verifying this 0530: a line of text used for verifying this 055a: a line of text used for verifying this 0584: a line of text used for verifying this 05ae: a line of text used for verifying this 05d8: a line of text used for verifying this 0602: a line of text used for verifying this 062c: a line of text use 01:22:40.903174 => Send data, 6366 bytes (0x18de) 0000: d for verifying this 0018: a line of text used for verifying this 0042: a line of text used for verifying this 006c: a line of text used for verifying this 0096: a line of text used for verifying this 00c0: a line of text used for verifying this 00ea: a line of text used for verifying this 0114: a line of text used for verifying this 013e: a line of text used for verifying this 0168: a line of text used for verifying this 0192: a line of text used for verifying this 01bc: a line of text used for verifying this 01e6: a line of text used for verifying this 0210: a line of text used for verifying this 023a: a line of text used for verifying this 0264: a line of text used for verifying this 028e: a line of text used for verifying this 02b8: a line of text used for verifying this 02e2: a line of text used for verifying this 030c: a line of text used for verifying this 0336: a line of text used for verifying this 0360: a line of text used for verifying this 038a: a line of text used for verifying this 03b4: a line of text used for verifying this 03de: a line of text used for verifying this 0408: a line of text used for verifying this 0432: a line of text used for verifying this 045c: a line of text used for verifying this 0486: a line of text used for verifying this 04b0: a line of text used for verifying this 04da: a line of text used for verifying this 0504: a line of text used for verifying this 052e: a line of text used for verifying this 0558: a line of text used for verifying this 0582: a line of text used for verifying this 05ac: a line of text used for verifying this 05d6: a line of text used for verifying this 0600: a line of text used for verifying this 062a: a line of text used for verifying this 0654: a line of text used for verifying this 067e: a line of text used for verifying this 06a8: a line of text used for verifying this 06d2: a line of text used for verifying this 06fc: a line of text used for verifying this 0726: a line of text used for verifying this 0750: a line of text used for verifying this 077a: a line of text used for verifying this 07a4: a line of text used for verifying this 07ce: a line of text used for verifying this 07f8: a line of text used for verifying this 0822: a line of text used for verifying this 084c: a line of text used for verifying this 0876: a line of text used for verifying this 08a0: a line of text used for verifying this 08ca: a line of text used for verifying this 08f4: a line of text used for verifying this 091e: a line of text used for verifying this 0948: a line of text used for verifying this 0972: a line of text used for verifying this 099c: a line of text used for verifying this 09c6: a line of text used for verifying this 09f0: a line of text used for verifying this 0a1a: a line of text used for verifying this 0a44: a line of text used for verifying this 0a6e: a line of text used for verifying this 0a98: a line of text used for verifying this 0ac2: a line of text used for verifying this 0aec: a line of text used for verifying this 0b16: a line of text used for verifying this 0b40: a line of text used for verifying this 0b6a: a line of text used for verifying this 0b94: a line of text used for verifying this 0bbe: a line of text used for verifying this 0be8: a line of text used for verifying this 0c12: a line of text used for verifying this 0c3c: a line of text used for verifying this 0c66: a line of text used for verifying this 0c90: a line of text used for verifying this 0cba: a line of text used for verifying this 0ce4: a line of text used for verifying this 0d0e: a line of text used for verifying this 0d38: a line of text used for verifying this 0d62: a line of text used for verifying this 0d8c: a line of text used for verifying this 0db6: a line of text used for verifying this 0de0: a line of text used for verifying this 0e0a: a line of text used for verifying this 0e34: a line of text used for verifying this 0e5e: a line of text used for verifying this 0e88: a line of text used for verifying this 0eb2: a line of text used for verifying this 0edc: a line of text used for verifying this 0f06: a line of text used for verifying this 0f30: a line of text used for verifying this 0f5a: a line of text used for verifying this 0f84: a line of text used for verifying this 0fae: a line of text used for verifying this 0fd8: a line of text used for verifying this 1002: a line of text used for verifying this 102c: a line of text used for verifying this 1056: a line of text used for verifying this 1080: a line of text used for verifying this 10aa: a line of text used for verifying this 10d4: a line of text used for verifying this 10fe: a line of text used for verifying this 1128: a line of text used for verifying this 1152: a line of text used for verifying this 117c: a line of text used for verifying this 11a6: a line of text used for verifying this 11d0: a line of text used for verifying this 11fa: a line of text used for verifying this 1224: a line of text used for verifying this 124e: a line of text used for verifying this 1278: a line of text used for verifying this 12a2: a line of text used for verifying this 12cc: a line of text used for verifying this 12f6: a line of text used for verifying this 1320: a line of text used for verifying this 134a: a line of text used for verifying this 1374: a line of text used for verifying this 139e: a line of text used for verifying this 13c8: a line of text used for verifying this 13f2: a line of text used for verifying this 141c: a line of text used for verifying this 1446: a line of text used for verifying this 1470: a line of text used for verifying this 149a: a line of text used for verifying this 14c4: a line of text used for verifying this 14ee: a line of text used for verifying this 1518: a line of text used for verifying this 1542: a line of text used for verifying this 156c: a line of text used for verifying this 1596: a line of text used for verifying this 15c0: a line of text used for verifying this 15ea: a line of text used for verifying this 1614: a line of text used for verifying this 163e: a line of text used for verifying this 1668: a line of text used for verifying this 1692: a line of text used for verifying this 16bc: a line of text used for verifying this 16e6: a line of text used for verifying this 1710: a line of text used for verifying this 173a: a line of text used for verifying this 1764: a line of text used for verifying this 178e: a line of text used for verifying this 17b8: a line of text used for verifying this 17e2: a line of text used for verifying this 180c: a line of text used for verifying this 1836: a line of text used for verifying this 1860: a line of text used for verifying this 188a: a line of text used for verifying this 18b4: a line of text used for verifying this 01:22:41.673076 * upload completely sent off: 73500 bytes 01:22:41.792001 * Remembering we are in dir "" 01:22:41.970499 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:22:42.283607 * Connection #0 to host 127.0.0.1:33729 left intact === End of file trace475 === Start of file upload.475 a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this === File too long: 349 lines omitted here a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text usCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind477 ../src/curl -q --output log/1/curl477.out --include --trace-ascii log/1/trace477 --trace-time http://127.0.0.1:40641/477 --max-filesize 5 -L > log/1/stdout477 2> log/1/stderr477 ed for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this === End of file upload.475 === Start of file valgrind475 ==254818== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind475 test 0477...[HTTP GET with maximum filesize with a redirect sending data] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind477 ../src/curl -q --output log/1/curl477.out --include --trace-ascii log/1/trace477 --trace-time http://127.0.0.1:40641/477 --max-filesize 5 -L > log/1/stdout477 2> log/1/stderr477 valgrind ERROR ==255179== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 477 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind477 ../src/curl -q --output log/1/curl477.out --include --trace-ascii log/1/trace477 --trace-time http://127.0.0.1:40641/477 --max-filesize 5 -L > log/1/stdout477 2> log/1/stderr477 === End of file commands.log === Start of file curl477.out HTTP/1.1 301 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: 4770002 Accept-Ranges: bytes Content-Length: 26 Funny-head: yesyes HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Accept-Ranges: bytes Content-Length: 4 Funny-head: yesyes hej === End of file curl477.out === Start of file http_server.log 01:22:00.999022 ====> Client connect 01:22:00.999183 accept_connection 3 returned 4 01:22:00.999259 accept_connection 3 returned 0 01:22:01.006421 Read 93 bytes 01:22:01.006547 Process 93 bytes request 01:22:01.006634 Got request: GET /verifiedserver HTTP/1.1 01:22:01.006700 Are-we-friendly question received 01:22:01.006822 Wrote request (93 bytes) input to log/1/server.input 01:22:01.006917 Identifying ourselves as friends 01:22:01.007079 Response sent (57 bytes) and written to log/1/server.response 01:22:01.007142 special request received, no persistency 01:22:01.007200 ====> Client disconnect 0 01:22:48.336434 ====> Client connect 01:22:48.336566 accept_connection 3 returned 4 01:22:48.336643 accept_connection 3 returned 0 01:22:49.297321 Read 82 bytes 01:22:49.297512 Process 82 bytes request 01:22:49.297604 Got request: GET /477 HTTP/1.1 01:22:49.297671 Serve test number 477 part 0 01:22:49.297836 - request found to be complete (477) 01:22:49.298078 Wrote request (82 bytes) input to log/1/server.input 01:22:49.298181 Send responseCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind476 ../src/curl -q --output log/2/curl476.out --include --trace-ascii log/2/trace476 --trace-time "ftp://127.0.0.1:39881/476;type=a" -T log/2/test476.txt > log/2/stdout476 2> log/2/stderr476 test477 section 01:22:49.298520 Response sent (181 bytes) and written to log/1/server.response 01:22:49.298583 => persistent connection request ended, awaits new request 01:22:51.538028 Read 86 bytes 01:22:51.538209 Process 86 bytes request 01:22:51.538312 Got request: GET /4770002 HTTP/1.1 01:22:51.538395 Serve test number 477 part 2 01:22:51.538580 - request found to be complete (477) 01:22:51.538785 Wrote request (86 bytes) input to log/1/server.input 01:22:51.538876 Send response test477 section 01:22:51.539236 Response sent (140 bytes) and written to log/1/server.response 01:22:51.539304 => persistent connection request ended, awaits new request 01:22:52.542447 Connection closed by client 01:22:52.542661 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 60068 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 477 === End of file server.cmd === Start of file server.input GET /477 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* GET /4770002 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 301 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: 4770002 Accept-Ranges: bytes Content-Length: 26 Funny-head: yesyes aaaaaaaaaaaaaaaaaaaa-foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Accept-Ranges: bytes Content-Length: 4 Funny-head: yesyes hej === End of file server.response === Start of file stderr477 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 26 100 26 0 0 6 0 0:00:04 0:00:04 --:--:-- 8 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 8 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 4 0 4 0 0 0 0 --:--:-- 0:00:05 --:--:-- 16 === End of file stderr477 === Start of file trace477 01:22:47.432577 * Trying 127.0.0.1:40641... 01:22:48.268093 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 37380 01:22:48.386330 * using HTTP/1.x 01:22:48.719202 => Send header, 82 bytes (0x52) 0000: GET /477 HTTP/1.1 0013: Host: 127.0.0.1:40641 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:22:49.061149 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 301 OK. 01:22:49.364453 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:22:49.465193 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:22:49.550369 <= Recv header, 18 bytes (0x12) 0000: Location: 4770002. 01:22:49.558873 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:22:49.588771 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 26. 01:22:49.592775 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:22:49.666550 * Ignoring the response-body 01:22:49.683864 * setting size while ignoring 01:22:49.698438 <= Recv header, 1 bytes (0x1) 0000: . 01:22:50.231763 * Connection #0 to host 127.0.0.1:40641 left intact 01:22:50.434300 * Issue another request to this URL: 'http://127.0.0.1:40641/4770002' 01:22:50.850876 * Reusing existing http: connection with host 127.0.0.1 01:22:50.928039 => Send header, 86 bytes (0x56) 0000: GET /4770002 HTTP/1.1 0017: Host: 127.0.0.1:40641 002e: User-Agent: curl/8.17.0 0047: Accept: */* 0054: 01:22:50.967869 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:22:50.975547 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:22:50.982880 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:22:50.987755 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:22:50.993373 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 4. 01:22:51.004864 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:22:51.023761 <= Recv header, 1 bytes (0x1) 0000: . 01:22:51.037042 <= Recv data, 4 bytes (0x4) 0000: hej. 01:22:51.148827 * Connection #0 to host 127.0.0.1:40641 left intact === End of file trace477 === Start of file valgrind477 ==255179== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind477 test 0476...[FTP PASV upload ASCII file already using CRLF] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind476 ../src/curl -q --output log/2/curl476.out --include --trace-ascii log/2/trace476 --trace-time "ftp://127.0.0.1:39881/476;type=a" -T log/2/test476.txt > log/2/stdout476 2> log/2/stderr476 valgrind ERROR ==255009== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 476 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind476 ../src/curl -q --output log/2/curl476.out --include --trace-ascii log/2/trace476 --trace-time "ftp://127.0.0.1:39881/476;type=a" -T log/2/test476.txt > log/2/stdout476 2> log/2/stderr476 === End of file commands.log === Start of file ftp_server.log 01:21:56.177692 ====> Client connect 01:21:56.180940 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:21:56.186870 < "USER anonymous" 01:21:56.190844 > "331 We are happy you popped in![CR][LF]" 01:21:56.191578 < "PASS ftp@example.com" 01:21:56.191836 > "230 Welcome you silly person[CR][LF]" 01:21:56.192512 < "PWD" 01:21:56.192771 > "257 "/" is current directory[CR][LF]" 01:21:56.194614 < "EPSV" 01:21:56.194817 ====> Passive DATA channel requested by client 01:21:56.194959 DATA sockfilt for passive data channel starting... 01:21:56.239348 DATA sockfilt for passive data channel started (pid 254997) 01:21:56.240449 DATA sockfilt for passive data channel listens on port 39273 01:21:56.240803 > "229 Entering Passive Mode (|||39273|)[CR][LF]" 01:21:56.240976 Client has been notified that DATA conn will be accepted on port 39273 01:21:56.243586 Client connects to port 39273 01:21:56.243797 ====> Client established passive DATA connection on port 39273 01:21:56.244408 < "TYPE I" 01:21:56.244688 > "200 I modify TYPE as you wanted[CR][LF]" 01:21:56.245474 < "SIZE verifiedserver" 01:21:56.245775 > "213 18[CR][LF]" 01:21:56.246940 < "RETR verifiedserver" 01:21:56.247509 > "150 Binary junk (18 bytes).[CR][LF]" 01:21:56.250501 =====> Closing passive DATA connection... 01:21:56.250675 Server disconnects passive DATA connection 01:21:56.251678 Server disconnected passive DATA connection 01:21:56.251839 DATA sockfilt for passive data channel quits (pid 254997) 01:21:56.258422 DATA sockfilt for passive data channel quit (pid 254997) 01:21:56.258601 =====> Closed passive DATA connection 01:21:56.258866 > "226 File transfer complete[CR][LF]" 01:21:56.302430 < "QUIT" 01:21:56.302787 > "221 bye bye baby[CR][LF]" 01:21:56.307465 MAIN sockfilt said DISC 01:21:56.307679 ====> Client disconnected 01:21:56.307942 Awaiting input 01:22:44.481838 ====> Client connect 01:22:44.482575 FTPD: Getting commands from log/2/server.cmd 01:22:44.482932 FTPD: run test case number: 476 01:22:44.533256 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:22:45.668374 < "USER anonymous" 01:22:45.668782 > "331 We are happy you popped in![CR][LF]" 01:22:45.766550 < "PASS ftp@example.com" 01:22:45.766972 > "230 Welcome you silly person[CR][LF]" 01:22:45.846036 < "PWD" 01:22:45.846487 > "257 "/" is current directory[CR][LF]" 01:22:46.034930 < "EPSV" 01:22:46.035253 ====> Passive DATA channel requested by client 01:22:46.035398 DATA sockfilt for passive data channel starting... 01:22:46.112415 DATA sockfilt for passive data channel started (pid 256137) 01:22:46.119019 DATA sockfilt for passive data channel listens on port 39435 01:22:46.119451 > "229 Entering Passive Mode (|||39435|)[CR][LF]" 01:22:46.119623 Client has been notified that DATA conn will be accepted on port 39435 01:22:46.300857 Client connects to port 39435 01:22:46.301422 ====> Client established passive DATA connection on port 39435 01:22:46.405024 < "TYPE A" 01:22:46.410874 > "200 I modify TYPE as you wanted[CR][LF]" 01:22:46.454063 < "STOR 476" 01:22:46.454414 STOR test number 476 in log/2/upload.476 01:22:46.454700 > "125 Gimme gimme gimme![CR][LF]" 01:22:46.926781 > Appending 17010 bytes to file 01:22:46.990026 > Appending 17010 bytes to file 01:22:47.032618 > Appending 17010 bytes to file 01:22:47.061117 > Appending 14506 bytes to file 01:22:54.028411 > Appending 7964 bytes to file 01:22:55.280113 =====> Closing passive DATA connection... 01:22:55.280419 Server knows passive DATA connection is already disconnected 01:22:55.280595 DATA sockfilt for passive data channel quits (pid 256137) 01:22:55.287484 DATA sockfilt for passive data channel quit (pid 256137) 01:22:55.287738 =====> Closed passive DATA connection 01:22:55.287981 received 73500 bytes upload 01:22:55.294234 > "226 File transfer complete[CR][LF]" 01:22:56.485137 < "QUIT" 01:22:56.485572 > "221 bye bye baby[CR][LF]" 01:22:56.609636 MAIN sockfilt said DISC 01:22:56.610161 ====> Client disconnected 01:22:56.610477 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:21:56.790617 ====> Client connect 01:21:56.791933 Received DATA (on stdin) 01:21:56.792021 > 160 bytes data, server => client 01:21:56.794566 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:21:56.794674 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:21:56.794760 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:21:56.799523 < 16 bytes data, client => server 01:21:56.799612 'USER anonymous\r\n' 01:21:56.800466 Received DATA (on stdin) 01:21:56.800532 > 33 bytes data, server => client 01:21:56.804216 '331 We are happy you popped in!\r\n' 01:21:56.804528 < 22 bytes data, client => server 01:21:56.804616 'PASS ftp@example.com\r\n' 01:21:56.805128 Received DATA (on stdin) 01:21:56.805196 > 30 bytes data, server => client 01:21:56.805278 '230 Welcome you silly person\r\n' 01:21:56.805519 < 5 bytes data, client => server 01:21:56.805584 'PWD\r\n' 01:21:56.806064 Received DATA (on stdin) 01:21:56.806131 > 30 bytes data, server => client 01:21:56.806212 '257 "/" is current directory\r\n' 01:21:56.807629 < 6 bytes data, client => server 01:21:56.807705 'EPSV\r\n' 01:21:56.854055 Received DATA (on stdin) 01:21:56.854204 > 39 bytes data, server => client 01:21:56.854296 '229 Entering Passive Mode (|||39273|)\r\n' 01:21:56.857029 < 8 bytes data, client => server 01:21:56.857108 'TYPE I\r\n' 01:21:56.857971 Received DATA (on stdin) 01:21:56.858042 > 33 bytes data, server => client 01:21:56.858124 '200 I modify TYPE as you wanted\r\n' 01:21:56.858475 < 21 bytes data, client => server 01:21:56.858549 'SIZE verifiedserver\r\n' 01:21:56.859068 Received DATA (on stdin) 01:21:56.859134 > 8 bytes data, server => client 01:21:56.859200 '213 18\r\n' 01:21:56.859672 < 21 bytes data, client => server 01:21:56.859746 'RETR verifiedserver\r\n' 01:21:56.860540 Received DATA (on stdin) 01:21:56.860605 > 29 bytes data, server => client 01:21:56.860700 '150 Binary junk (18 bytes).\r\n' 01:21:56.873509 Received DATA (on stdin) 01:21:56.873613 > 28 bytes data, server => client 01:21:56.873699 '226 File transfer complete\r\n' 01:21:56.914839 < 6 bytes data, client => server 01:21:56.914964 'QUIT\r\n' 01:21:56.916516 Received DATA (on stdin) 01:21:56.916589 > 18 bytes data, server => client 01:21:56.916668 '221 bye bye baby\r\n' 01:21:56.917229 ====> Client disconnect 01:21:56.921006 Received ACKD (on stdin) 01:22:45.094739 ====> Client connect 01:22:45.146351 Received DATA (on stdin) 01:22:45.146524 > 160 bytes data, server => client 01:22:45.146640 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:22:45.146745 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:22:45.146839 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:22:46.277350 < 16 bytes data, client => server 01:22:46.277527 'USER anonymous\r\n' 01:22:46.281928 Received DATA (on stdin) 01:22:46.282002 > 33 bytes data, server => client 01:22:46.282084 '331 We are happy you popped in!\r\n' 01:22:46.378804 < 22 bytes data, client => server 01:22:46.378993 'PASS ftp@example.com\r\n' 01:22:46.380120 Received DATA (on stdin) 01:22:46.380190 > 30 bytes data, server => client 01:22:46.380271 '230 Welcome you silly person\r\n' 01:22:46.458381 < 5 bytes data, client => server 01:22:46.458535 'PWD\r\n' 01:22:46.459626 Received DATA (on stdin) 01:22:46.459696 > 30 bytes data, server => client 01:22:46.459776 '257 "/" is current directory\r\n' 01:22:46.646351 < 6 bytes data, client => server 01:22:46.646518 'EPSV\r\n' 01:22:46.732584 Received DATA (on stdin) 01:22:46.732726 > 39 bytes data, server => client 01:22:46.732820 '229 Entering Passive Mode (|||39435|)\r\n' 01:22:47.016108 < 8 bytes data, client => server 01:22:47.016280 'TYPE A\r\n' 01:22:47.018605 Received DATA (on stdin) 01:22:47.018694 > 33 bytes data, server => client 01:22:47.024383 '200 I modify TYPE as you wanted\r\n' 01:22:47.066102 < 10 bytes data, client => server 01:22:47.066272 'STOR 476\r\n' 01:22:47.068235 Received DATA (on stdin) 01:22:47.068318 > 24 bytes data, server => client 01:22:47.068402 '125 Gimme gimme gimme!\r\n' 01:22:55.901432 Received DATA (on stdin) 01:22:55.901604 > 28 bytes data, server => client 01:22:55.907743 '226 File transfer complete\r\n' 01:22:57.097087 < 6 bytes data, client => server 01:22:57.097283 'QUIT\r\n' 01:22:57.098974 Received DATA (on stdin) 01:22:57.099052 > 18 bytes data, server => client 01:22:57.099131 '221 bye bye baby\r\n' 01:22:57.222506 ====> Client disconnect 01:22:57.223858 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:21:56.843015 Running IPv4 version 01:21:56.851061 Listening on port 39273 01:21:56.851533 Wrote pid 254997 to log/2/server/ftp_sockdata.pid 01:21:56.852307 Received PING (on stdin) 01:21:56.853158 Received PORT (on stdin) 01:21:56.856792 ====> Client connect 01:21:56.861067 Received DATA (on stdin) 01:21:56.861366 > 18 bytes data, server => client 01:21:56.864443 'WE ROOLZ: 202189\r\n' 01:21:56.864696 Received DISC (on stdin) 01:21:56.864812 ====> Client forcibly disconnected 01:21:56.865368 Received QUIT (on stdin) 01:21:56.865448 quits 01:21:56.865964 ============> sockfilt quits 01:22:46.705852 Running IPv4 version 01:22:46.720525 Listening on port 39435 01:22:46.724438 Wrote pid 256137 to log/2/server/ftp_sockdata.pid 01:22:46.725230 Received PING (on stdin) 01:22:46.730641 Received PORT (on stdin) 01:22:46.912989 ====> Client connect 01:22:47.539134 < 17010 bytes data, client => server 01:22:47.539710 'a line of text used for verifying this !\r\na line of text us' 01:22:47.539859 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.539974 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.540089 'of text used for verifying this !\r\na line of text used for ' 01:22:47.540204 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.540318 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.540434 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.540548 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.540673 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.540792 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.540905 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.541014 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.541125 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.541235 'line of text used for verifying this !\r\na line of text used' 01:22:47.541347 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.541457 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.541564 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.541674 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.541795 'a line of text used for verifying this !\r\na line of text us' 01:22:47.541908 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.542018 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.542131 'of text used for verifying this !\r\na line of text used for ' 01:22:47.542241 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.542354 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.542466 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.542575 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.542686 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.542797 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.542904 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.543011 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.543117 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.543225 'line of text used for verifying this !\r\na line of text used' 01:22:47.543334 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.543443 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.543553 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.543662 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.543775 'a line of text used for verifying this !\r\na line of text us' 01:22:47.543887 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.547351 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.547489 'of text used for verifying this !\r\na line of text used for ' 01:22:47.547620 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.547726 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.547831 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.547935 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.548037 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.548145 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.548249 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.548358 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.548464 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.548571 'line of text used for verifying this !\r\na line of text used' 01:22:47.548678 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.548784 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.548891 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.548998 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.549107 'a line of text used for verifying this !\r\na line of text us' 01:22:47.549215 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.549322 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.549430 'of text used for verifying this !\r\na line of text used for ' 01:22:47.549540 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.549644 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.549755 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.549862 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.549971 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.550079 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.550184 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.550291 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.550397 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.550507 'line of text used for verifying this !\r\na line of text used' 01:22:47.550614 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.554079 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.554191 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.554300 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.554409 'a line of text used for verifying this !\r\na line of text us' 01:22:47.554516 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.554622 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.554729 'of text used for verifying this !\r\na line of text used for ' 01:22:47.554837 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.554945 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.555052 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.555159 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.555268 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.555373 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.555479 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.555589 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.555693 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.555801 'line of text used for verifying this !\r\na line of text used' 01:22:47.555914 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.556022 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.556130 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.556237 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.556345 'a line of text used for verifying this !\r\na line of text us' 01:22:47.556466 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.556573 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.556682 'of text used for verifying this !\r\na line of text used for ' 01:22:47.556792 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.556901 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.560730 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.560846 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.560960 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.561073 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.561186 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.561300 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.561411 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.561526 'line of text used for verifying this !\r\na line of text used' 01:22:47.561639 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.561747 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.561857 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.561965 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.562075 'a line of text used for verifying this !\r\na line of text us' 01:22:47.562180 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.562289 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.562398 'of text used for verifying this !\r\na line of text used for ' 01:22:47.562506 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.562615 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.562726 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.562835 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.562946 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.563057 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.563167 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.563284 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.563395 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.563509 'line of text used for verifying this !\r\na line of text used' 01:22:47.563622 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.563735 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.563847 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.567304 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.567430 'a line of text used for verifying this !\r\na line of text us' 01:22:47.567545 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.567658 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.567771 'of text used for verifying this !\r\na line of text used for ' 01:22:47.567886 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.567999 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.568114 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.568226 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.568337 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.568450 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.568563 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.568678 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.568790 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.568903 'line of text used for verifying this !\r\na line of text used' 01:22:47.569014 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.569126 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.569240 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.569363 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.569476 'a line of text used for verifying this !\r\na line of text us' 01:22:47.569589 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.569701 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.569814 'of text used for verifying this !\r\na line of text used for ' 01:22:47.569927 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.570041 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.570155 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.570265 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.570376 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.570483 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.570593 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.574060 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.574174 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.574288 'line of text used for verifying this !\r\na line of text used' 01:22:47.574399 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.574509 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.574619 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.574729 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.574840 'a line of text used for verifying this !\r\na line of text us' 01:22:47.574952 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.575060 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.575171 'of text used for verifying this !\r\na line of text used for ' 01:22:47.575282 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.575392 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.575504 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.575612 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.575724 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.575834 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.575943 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.576055 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.576164 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.576273 'line of text used for verifying this !\r\na line of text used' 01:22:47.576382 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.576492 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.576602 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.576711 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.576821 'a line of text used for verifying this !\r\na line of text us' 01:22:47.576928 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.577034 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.577145 'of text used for verifying this !\r\na line of text used for ' 01:22:47.577252 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.580708 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.580819 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.580927 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.581033 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.581141 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.581250 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.581359 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.581467 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.581572 'line of text used for verifying this !\r\na line of text used' 01:22:47.581690 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.581798 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.581906 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.582013 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.582121 'a line of text used for verifying this !\r\na line of text us' 01:22:47.582227 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.582334 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.582441 'of text used for verifying this !\r\na line of text used for ' 01:22:47.582548 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.582654 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.582765 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.582870 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.582977 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.583085 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.583193 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.583301 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.583408 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.583515 'line of text used for verifying this !\r\na line of text used' 01:22:47.583621 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.583728 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.583836 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.583942 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.587414 'a line of text used for verifying this !\r\na line of text us' 01:22:47.587526 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.587635 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.587745 'of text used for verifying this !\r\na line of text used for ' 01:22:47.587859 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.587971 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.588081 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.588198 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.588311 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.588424 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.588530 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.588638 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.588746 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.588854 'line of text used for verifying this !\r\na line of text used' 01:22:47.588963 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.589078 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.589193 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.589310 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.589424 'a line of text used for verifying this !\r\na line of text us' 01:22:47.589546 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.589663 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.589782 'of text used for verifying this !\r\na line of text used for ' 01:22:47.589896 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.590013 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.590132 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.590247 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.590365 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.590477 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.590597 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.594069 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.594182 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.594293 'line of text used for verifying this !\r\na line of text used' 01:22:47.594403 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.594512 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.594620 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.594728 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.594838 'a line of text used for verifying this !\r\na line of text us' 01:22:47.594949 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.595060 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.595170 'of text used for verifying this !\r\na line of text used for ' 01:22:47.595280 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.595389 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.595498 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.595607 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.595717 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.595826 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.595936 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.596046 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.596152 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.596260 'line of text used for verifying this !\r\na line of text used' 01:22:47.596369 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.596476 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.596585 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.596692 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.596801 'a line of text used for verifying this !\r\na line of text us' 01:22:47.596911 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.597019 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.597127 'of text used for verifying this !\r\na line of text used for ' 01:22:47.597236 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.600692 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.600805 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.600914 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.601022 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.601130 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.601233 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.601340 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.601449 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.601558 'line of text used for verifying this !\r\na line of text used' 01:22:47.601666 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.601773 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.601884 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.601995 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.602103 'a line of text used for verifying this !\r\na line of text us' 01:22:47.602207 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.602306 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.602443 'of text used for verifying this !\r\n' 01:22:47.602641 < 17010 bytes data, client => server 01:22:47.602759 'a line of text used for verifying this !\r\na line of text us' 01:22:47.602874 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.602981 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.603089 'of text used for verifying this !\r\na line of text used for ' 01:22:47.603209 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.603318 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.603425 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.603533 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.603643 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.603754 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.603864 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.607315 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.607437 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.607548 'line of text used for verifying this !\r\na line of text used' 01:22:47.607657 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.607764 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.607869 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.607977 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.608085 'a line of text used for verifying this !\r\na line of text us' 01:22:47.608194 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.608302 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.608408 'of text used for verifying this !\r\na line of text used for ' 01:22:47.608515 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.608624 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.608732 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.608839 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.608948 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.609056 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.609158 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.609268 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.609375 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.609485 'line of text used for verifying this !\r\na line of text used' 01:22:47.609595 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.609704 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.609815 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.609925 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.610034 'a line of text used for verifying this !\r\na line of text us' 01:22:47.610143 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.610250 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.610360 'of text used for verifying this !\r\na line of text used for ' 01:22:47.610470 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.610577 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.614077 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.614189 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.614299 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.614409 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.614516 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.614623 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.614731 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.614841 'line of text used for verifying this !\r\na line of text used' 01:22:47.614950 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.615058 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.615167 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.615275 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.615383 'a line of text used for verifying this !\r\na line of text us' 01:22:47.615501 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.615610 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.615719 'of text used for verifying this !\r\na line of text used for ' 01:22:47.615826 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.615933 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.616043 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.616150 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.616252 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.616363 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.616470 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.616577 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.616683 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.616792 'line of text used for verifying this !\r\na line of text used' 01:22:47.616899 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.617005 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.617113 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.617219 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.620672 'a line of text used for verifying this !\r\na line of text us' 01:22:47.620793 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.620901 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.621012 'of text used for verifying this !\r\na line of text used for ' 01:22:47.621123 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.621232 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.621343 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.621452 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.621563 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.621671 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.621780 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.621890 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.621999 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.622106 'line of text used for verifying this !\r\na line of text used' 01:22:47.622214 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.622320 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.622426 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.622537 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.622647 'a line of text used for verifying this !\r\na line of text us' 01:22:47.622758 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.622867 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.622979 'of text used for verifying this !\r\na line of text used for ' 01:22:47.623088 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.623197 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.623305 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.623412 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.623518 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.623621 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.623727 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.623837 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.623944 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.627407 'line of text used for verifying this !\r\na line of text used' 01:22:47.627518 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.627626 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.627745 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.627855 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.627963 'a line of text used for verifying this !\r\na line of text us' 01:22:47.628072 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.628180 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.628291 'of text used for verifying this !\r\na line of text used for ' 01:22:47.628399 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.628507 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.628615 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.628721 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.628829 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.628938 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.629043 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.629155 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.629261 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.629369 'line of text used for verifying this !\r\na line of text used' 01:22:47.629477 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.629583 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.629691 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.629794 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.629889 'a line of text used for verifying this !\r\na line of text us' 01:22:47.629984 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.630079 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.630174 'of text used for verifying this !\r\na line of text used for ' 01:22:47.630273 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.630375 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.630471 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.630605 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.630721 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.630821 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.630918 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.631017 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.631111 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.631212 'line of text used for verifying this !\r\na line of text used' 01:22:47.631312 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.631411 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.631510 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.631607 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.631705 'a line of text used for verifying this !\r\na line of text us' 01:22:47.631803 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.631899 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.631997 'of text used for verifying this !\r\na line of text used for ' 01:22:47.632094 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.632190 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.632289 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.632385 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.632483 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.632580 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.632675 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.632773 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.632870 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.632977 'line of text used for verifying this !\r\na line of text used' 01:22:47.633076 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.633173 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.633272 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.633369 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.633468 'a line of text used for verifying this !\r\na line of text us' 01:22:47.633566 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.633663 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.633761 'of text used for verifying this !\r\na line of text used for ' 01:22:47.633859 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.633964 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.634074 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.634168 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.634263 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.634354 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.634439 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.634525 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.634610 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.634700 'line of text used for verifying this !\r\na line of text used' 01:22:47.634788 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.634872 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.634958 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.635048 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.635136 'a line of text used for verifying this !\r\na line of text us' 01:22:47.635222 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.635306 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.635393 'of text used for verifying this !\r\na line of text used for ' 01:22:47.635483 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.635570 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.635658 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.635743 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.635834 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.635922 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.636007 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.636093 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.636178 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.636268 'line of text used for verifying this !\r\na line of text used' 01:22:47.636355 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.636439 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.636525 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.636614 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.636704 'a line of text used for verifying this !\r\na line of text us' 01:22:47.636789 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.636873 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.636960 'of text used for verifying this !\r\na line of text used for ' 01:22:47.637050 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.637135 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.637221 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.637312 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.637418 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.637517 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.637656 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.637755 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.637851 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.637951 'line of text used for verifying this !\r\na line of text used' 01:22:47.638050 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.638148 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.638247 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.638344 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.638442 'a line of text used for verifying this !\r\na line of text us' 01:22:47.638540 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.638637 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.638735 'of text used for verifying this !\r\na line of text used for ' 01:22:47.638833 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.638930 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.639029 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.639119 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.639208 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.639294 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.639378 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.639467 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.639555 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.639641 'line of text used for verifying this !\r\na line of text used' 01:22:47.639727 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.639812 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.639901 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.639988 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.640075 'a line of text used for verifying this !\r\na line of text us' 01:22:47.640162 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.640252 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.640340 'of text used for verifying this !\r\na line of text used for ' 01:22:47.640426 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.640511 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.640598 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.640699 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.640786 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.640871 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.640958 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.641051 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.641139 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.641224 'line of text used for verifying this !\r\na line of text used' 01:22:47.641318 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.641407 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.641497 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.641582 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.641667 'a line of text used for verifying this !\r\na line of text us' 01:22:47.641754 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.641841 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.641929 'of text used for verifying this !\r\na line of text used for ' 01:22:47.642015 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.642099 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.642187 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.642282 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.642368 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.642452 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.642536 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.642624 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.642709 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.642794 'line of text used for verifying this !\r\na line of text used' 01:22:47.642878 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.642963 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.643052 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.643136 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.643220 'a line of text used for verifying this !\r\na line of text us' 01:22:47.643305 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.643392 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.643479 'of text used for verifying this !\r\na line of text used for ' 01:22:47.643564 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.643647 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.643734 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.643821 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.643906 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.643998 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.644100 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.644197 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.644293 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.644390 'line of text used for verifying this !\r\na line of text used' 01:22:47.644486 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.644582 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.644679 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.644775 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.644874 'a line of text used for verifying this !\r\na line of text us' 01:22:47.644972 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.645067 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.645148 'of text used for verifying this !\r\n' 01:22:47.645260 < 17010 bytes data, client => server 01:22:47.645360 'a line of text used for verifying this !\r\na line of text us' 01:22:47.645459 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.645554 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.645653 'of text used for verifying this !\r\na line of text used for ' 01:22:47.645751 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.645847 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.645943 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.646038 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.646135 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.646232 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.646326 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.646423 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.646519 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.646615 'line of text used for verifying this !\r\na line of text used' 01:22:47.646712 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.646807 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.646903 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.646999 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.647102 'a line of text used for verifying this !\r\na line of text us' 01:22:47.647200 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.647301 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.647407 'of text used for verifying this !\r\na line of text used for ' 01:22:47.647504 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.647600 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.647697 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.647793 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.647890 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.647987 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.648082 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.648179 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.648274 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.648372 'line of text used for verifying this !\r\na line of text used' 01:22:47.648469 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.648565 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.648664 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.648760 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.648855 'a line of text used for verifying this !\r\na line of text us' 01:22:47.648953 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.649048 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.649145 'of text used for verifying this !\r\na line of text used for ' 01:22:47.649242 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.649339 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.649436 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.649531 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.649627 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.649724 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.649820 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.649916 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.650014 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.650113 'line of text used for verifying this !\r\na line of text used' 01:22:47.650211 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.650306 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.650403 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.650499 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.650595 'a line of text used for verifying this !\r\na line of text us' 01:22:47.650697 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.650784 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.650873 'of text used for verifying this !\r\na line of text used for ' 01:22:47.650958 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.651042 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.651126 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.651212 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.651299 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.651384 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.651466 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.651552 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.651639 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.651724 'line of text used for verifying this !\r\na line of text used' 01:22:47.651808 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.651898 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.651988 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.652074 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.652158 'a line of text used for verifying this !\r\na line of text us' 01:22:47.652242 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.652326 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.652415 'of text used for verifying this !\r\na line of text used for ' 01:22:47.652500 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.652584 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.652668 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.652755 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.652841 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.652926 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.653009 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.653095 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.653184 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.653270 'line of text used for verifying this !\r\na line of text used' 01:22:47.653356 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.653439 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.653527 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.653614 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.653698 'a line of text used for verifying this !\r\na line of text us' 01:22:47.653782 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.653866 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.653965 'of text used for verifying this !\r\na line of text used for ' 01:22:47.654067 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.654165 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.654261 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.654357 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.654454 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.654550 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.654645 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.654743 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.654839 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.654936 'line of text used for verifying this !\r\na line of text used' 01:22:47.655033 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.655128 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.655225 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.655321 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.655418 'a line of text used for verifying this !\r\na line of text us' 01:22:47.655514 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.655609 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.655706 'of text used for verifying this !\r\na line of text used for ' 01:22:47.655803 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.655898 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.655994 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.656087 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.656181 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.656271 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.656358 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.656444 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.656537 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.656632 'line of text used for verifying this !\r\na line of text used' 01:22:47.656726 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.656819 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.656915 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.657009 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.657110 'a line of text used for verifying this !\r\na line of text us' 01:22:47.657200 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.657288 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.657379 'of text used for verifying this !\r\na line of text used for ' 01:22:47.657469 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.657556 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.657640 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.657723 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.657808 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.657898 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.657981 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.658066 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.658148 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.658237 'line of text used for verifying this !\r\na line of text used' 01:22:47.658326 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.658409 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.658493 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.658579 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.658667 'a line of text used for verifying this !\r\na line of text us' 01:22:47.658752 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.658835 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.658919 'of text used for verifying this !\r\na line of text used for ' 01:22:47.659007 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.659094 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.659178 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.659261 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.659346 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.659434 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.659518 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.659602 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.659685 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.659773 'line of text used for verifying this !\r\na line of text used' 01:22:47.659860 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.659943 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.660027 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.660112 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.660200 'a line of text used for verifying this !\r\na line of text us' 01:22:47.660285 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.660367 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.660451 'of text used for verifying this !\r\na line of text used for ' 01:22:47.660540 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.660631 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.660733 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.660825 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.660918 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.661018 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.661111 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.661206 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.661297 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.661392 'line of text used for verifying this !\r\na line of text used' 01:22:47.661487 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.661579 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.661671 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.661763 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.661856 'a line of text used for verifying this !\r\na line of text us' 01:22:47.661947 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.662039 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.662132 'of text used for verifying this !\r\na line of text used for ' 01:22:47.662225 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.662317 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.662409 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.662500 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.662595 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.662690 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.662781 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.662874 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.662966 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.663059 'line of text used for verifying this !\r\na line of text used' 01:22:47.663151 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.663243 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.663335 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.663427 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.663516 'a line of text used for verifying this !\r\na line of text us' 01:22:47.663611 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.663703 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.663796 'of text used for verifying this !\r\na line of text used for ' 01:22:47.663889 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.664007 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.664099 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.664183 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.664272 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.664359 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.664443 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.664526 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.664610 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.664698 'line of text used for verifying this !\r\na line of text used' 01:22:47.664783 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.664866 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.664953 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.665043 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.665130 'a line of text used for verifying this !\r\na line of text us' 01:22:47.665214 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.665296 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.665381 'of text used for verifying this !\r\na line of text used for ' 01:22:47.665468 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.665554 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.665638 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.665727 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.665819 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.665907 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.665989 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.666073 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.666158 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.666245 'line of text used for verifying this !\r\na line of text used' 01:22:47.666331 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.666414 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.666497 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.666584 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.666673 'a line of text used for verifying this !\r\na line of text us' 01:22:47.666758 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.666840 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.666925 'of text used for verifying this !\r\na line of text used for ' 01:22:47.667013 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.667098 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.667182 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.667265 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.667365 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.667459 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.667553 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.667648 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.667740 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.667831 'line of text used for verifying this !\r\na line of text used' 01:22:47.667922 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.668015 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.668107 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.668199 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.668292 'a line of text used for verifying this !\r\na line of text us' 01:22:47.668385 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.668476 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.668569 'of text used for verifying this !\r\na line of text used for ' 01:22:47.668662 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.668754 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.668847 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.668939 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.669031 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.669123 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.669217 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.669310 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.669402 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.669495 'line of text used for verifying this !\r\na line of text used' 01:22:47.669588 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.669680 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.669772 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.669863 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.669955 'a line of text used for verifying this !\r\na line of text us' 01:22:47.670050 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.670141 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.670235 'of text used for verifying this !\r\na line of text used for ' 01:22:47.670331 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.670417 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.670510 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.670601 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.670705 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.670795 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.670879 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.670963 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.671047 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.671134 'line of text used for verifying this !\r\na line of text used' 01:22:47.671220 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.671303 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.671387 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.671473 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.671562 'a line of text used for verifying this !\r\na line of text us' 01:22:47.671648 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.671731 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.671800 'of text used for verifying this !\r\n' 01:22:47.671895 < 14506 bytes data, client => server 01:22:47.671987 'a line of text used for verifying this !\r\na line of text us' 01:22:47.672071 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.672154 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.672240 'of text used for verifying this !\r\na line of text used for ' 01:22:47.672329 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.672413 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.672497 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.672580 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.672668 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.672755 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.672838 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.672922 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.673008 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.673096 'line of text used for verifying this !\r\na line of text used' 01:22:47.673182 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.673264 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.673349 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.673436 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.673523 'a line of text used for verifying this !\r\na line of text us' 01:22:47.673606 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.673689 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.673774 'of text used for verifying this !\r\na line of text used for ' 01:22:47.673863 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.673949 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.674053 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.674146 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.674237 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.674330 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.674422 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.674515 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.674606 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.674700 'line of text used for verifying this !\r\na line of text used' 01:22:47.674799 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.674891 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.674984 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.675077 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.675170 'a line of text used for verifying this !\r\na line of text us' 01:22:47.675263 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.675354 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.675447 'of text used for verifying this !\r\na line of text used for ' 01:22:47.675540 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.675633 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.675726 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.675817 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.675909 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.676000 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.676089 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.676181 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.676271 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.676362 'line of text used for verifying this !\r\na line of text used' 01:22:47.676453 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.676544 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.676637 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.676729 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.676822 'a line of text used for verifying this !\r\na line of text us' 01:22:47.676914 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.677008 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.677099 'of text used for verifying this !\r\na line of text used for ' 01:22:47.677194 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.677291 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.677384 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.677468 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.677557 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.677644 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.677727 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.677811 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.677894 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.677982 'line of text used for verifying this !\r\na line of text used' 01:22:47.678068 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.678150 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.678234 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.678321 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.678411 'a line of text used for verifying this !\r\na line of text us' 01:22:47.678496 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.678579 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.678663 'of text used for verifying this !\r\na line of text used for ' 01:22:47.678751 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.678837 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.678921 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.679003 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.679089 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.679177 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.679260 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.679344 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.679432 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.679522 'line of text used for verifying this !\r\na line of text used' 01:22:47.679611 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.679694 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.679778 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.679863 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.679952 'a line of text used for verifying this !\r\na line of text us' 01:22:47.680036 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.680119 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.680203 'of text used for verifying this !\r\na line of text used for ' 01:22:47.680291 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.680377 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.680463 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.680546 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.680637 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.680735 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.680826 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.680919 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.681011 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.681102 'line of text used for verifying this !\r\na line of text used' 01:22:47.681197 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.681288 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.681381 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.681474 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.681566 'a line of text used for verifying this !\r\na line of text us' 01:22:47.681658 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.681750 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.681843 'of text used for verifying this !\r\na line of text used for ' 01:22:47.681936 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.682029 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.682122 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.682213 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.682306 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.682399 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.682489 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.682580 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.682669 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.682760 'line of text used for verifying this !\r\na line of text used' 01:22:47.682854 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.682945 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.683038 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.683129 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.683215 'a line of text used for verifying this !\r\na line of text us' 01:22:47.683300 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.683384 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.683476 'of text used for verifying this !\r\na line of text used for ' 01:22:47.683569 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.683661 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.683755 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.683846 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.683938 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.684049 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.684137 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.684223 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.684306 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.684396 'line of text used for verifying this !\r\na line of text used' 01:22:47.684484 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.684568 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.684653 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.684738 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.684827 'a line of text used for verifying this !\r\na line of text us' 01:22:47.684914 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.684998 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.685085 'of text used for verifying this !\r\na line of text used for ' 01:22:47.685174 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.685262 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.685347 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.685431 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.685516 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.685605 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.685692 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.685777 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.685860 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.685947 'line of text used for verifying this !\r\na line of text used' 01:22:47.686036 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.686120 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.686205 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.686289 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.686378 'a line of text used for verifying this !\r\na line of text us' 01:22:47.686466 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.686553 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.686639 'of text used for verifying this !\r\na line of text used for ' 01:22:47.686726 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.686815 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.686901 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.686985 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.687069 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.687158 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.687245 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.687345 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.687438 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.687531 'line of text used for verifying this !\r\na line of text used' 01:22:47.687629 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.687721 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.687814 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.687906 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.688000 'a line of text used for verifying this !\r\na line of text us' 01:22:47.688093 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.688185 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.688278 'of text used for verifying this !\r\na line of text used for ' 01:22:47.688371 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.688465 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.688565 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.688657 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.688752 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.688846 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.688939 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.689031 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.689120 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.689215 'line of text used for verifying this !\r\na line of text used' 01:22:47.689308 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.689400 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.689493 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.689589 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.689682 'a line of text used for verifying this !\r\na line of text us' 01:22:47.689777 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.689869 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.689962 'of text used for verifying this !\r\na line of text used for ' 01:22:47.690055 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.690149 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.690241 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.690334 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.690428 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.690521 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.690613 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.690713 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.690799 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.690891 'line of text used for verifying this !\r\na line of text used' 01:22:47.690980 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.691064 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.691149 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.691234 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.691324 'a line of text used for verifying this !\r\na line of text us' 01:22:47.691410 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.691493 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.691578 'of text used for verifying this !\r\na line of text used for ' 01:22:47.691667 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.691755 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.691840 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.691923 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.692010 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.692098 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.692184 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.692268 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.692352 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.692442 'line of text used for verifying this !\r\na line of text used' 01:22:47.692530 ' for verifying this !\r\na line of text used for verifying th' 01:22:47.692614 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:47.692699 ' text used for verifying this !\r\na line of text used for ve' 01:22:47.692784 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:47.692873 'a line of text used for verifying this !\r\na line of text us' 01:22:47.692960 'ed for verifying this !\r\na line of text used for verifying ' 01:22:47.693043 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:47.693135 'of text used for verifying this !\r\na line of text used for ' 01:22:47.693225 'verifying this !\r\na line of text used for verifying this !\r' 01:22:47.693312 '\na line of text used for verifying this !\r\na line of text ' 01:22:47.693396 'used for verifying this !\r\na line of text used for verifyin' 01:22:47.693479 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:47.693563 'e of text used for verifying this !\r\na line of text used fo' 01:22:47.693651 'r verifying this !\r\na line of text used for verifying this ' 01:22:47.693735 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:47.693819 'xt used for verifying this !\r\na line of text used for verif' 01:22:47.693901 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:47.693994 'line of text used for verifying this !\r\na line of text used' 01:22:47.694079 ' for verifying this !\r\na line of text u' 01:22:54.640675 < 7964 bytes data, client => server 01:22:54.640887 'sed for verifying this !\r\na line of text used for verifying' 01:22:54.640980 ' this !\r\na line of text used for verifying this !\r\na line' 01:22:54.641074 ' of text used for verifying this !\r\na line of text used for' 01:22:54.641160 ' verifying this !\r\na line of text used for verifying this !' 01:22:54.641243 '\r\na line of text used for verifying this !\r\na line of tex' 01:22:54.641327 't used for verifying this !\r\na line of text used for verify' 01:22:54.641411 'ing this !\r\na line of text used for verifying this !\r\na l' 01:22:54.641501 'ine of text used for verifying this !\r\na line of text used ' 01:22:54.641588 'for verifying this !\r\na line of text used for verifying thi' 01:22:54.641671 's !\r\na line of text used for verifying this !\r\na line of ' 01:22:54.641755 'text used for verifying this !\r\na line of text used for ver' 01:22:54.641839 'ifying this !\r\na line of text used for verifying this !\r\n' 01:22:54.641930 'a line of text used for verifying this !\r\na line of text us' 01:22:54.642016 'ed for verifying this !\r\na line of text used for verifying ' 01:22:54.642098 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:54.642181 'of text used for verifying this !\r\na line of text used for ' 01:22:54.642265 'verifying this !\r\na line of text used for verifying this !\r' 01:22:54.642353 '\na line of text used for verifying this !\r\na line of text ' 01:22:54.642439 'used for verifying this !\r\na line of text used for verifyin' 01:22:54.642521 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:54.642604 'e of text used for verifying this !\r\na line of text used fo' 01:22:54.642687 'r verifying this !\r\na line of text used for verifying this ' 01:22:54.642775 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:54.642862 'xt used for verifying this !\r\na line of text used for verif' 01:22:54.642944 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:54.643028 'line of text used for verifying this !\r\na line of text used' 01:22:54.643111 ' for verifying this !\r\na line of text used for verifying th' 01:22:54.643197 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:54.643285 ' text used for verifying this !\r\na line of text used for ve' 01:22:54.643368 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:54.643450 'a line of text used for verifying this !\r\na line of text us' 01:22:54.643533 'ed for verifying this !\r\na line of text used for verifying ' 01:22:54.643618 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:54.643707 'of text used for verifying this !\r\na line of text used for ' 01:22:54.643791 'verifying this !\r\na line of text used for verifying this !\r' 01:22:54.643873 '\na line of text used for verifying this !\r\na line of text ' 01:22:54.647313 'used for verifying this !\r\na line of text used for verifyin' 01:22:54.647429 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:54.647519 'e of text used for verifying this !\r\na line of text used fo' 01:22:54.647623 'r verifying this !\r\na line of text used for verifying this ' 01:22:54.647707 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:54.647790 'xt used for verifying this !\r\na line of text used for verif' 01:22:54.647871 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:54.647959 'line of text used for verifying this !\r\na line of text used' 01:22:54.648048 ' for verifying this !\r\na line of text used for verifying th' 01:22:54.648130 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:54.648213 ' text used for verifying this !\r\na line of text used for ve' 01:22:54.648295 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:54.648382 'a line of text used for verifying this !\r\na line of text us' 01:22:54.648470 'ed for verifying this !\r\na line of text used for verifying ' 01:22:54.648552 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:54.648635 'of text used for verifying this !\r\na line of text used for ' 01:22:54.648718 'verifying this !\r\na line of text used for verifying this !\r' 01:22:54.648802 '\na line of text used for verifying this !\r\na line of text ' 01:22:54.648891 'used for verifying this !\r\na line of text used for verifyin' 01:22:54.648974 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:54.649057 'e of text used for verifying this !\r\na line of text used fo' 01:22:54.649140 'r verifying this !\r\na line of text used for verifying this ' 01:22:54.649222 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:54.649312 'xt used for verifying this !\r\na line of text used for verif' 01:22:54.649395 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:54.649479 'line of text used for verifying this !\r\na line of text used' 01:22:54.649562 ' for verifying this !\r\na line of text used for verifying th' 01:22:54.649644 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:54.649732 ' text used for verifying this !\r\na line of text used for ve' 01:22:54.649818 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:54.649901 'a line of text used for verifying this !\r\na line of text us' 01:22:54.649984 'ed for verifying this !\r\na line of text used for verifying ' 01:22:54.650067 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:54.650155 'of text used for verifying this !\r\na line of text used for ' 01:22:54.650242 'verifying this !\r\na line of text used for verifying this !\r' 01:22:54.650324 '\na line of text used for verifying this !\r\na line of text ' 01:22:54.650408 'used for verifying this !\r\na line of text used for verifyin' 01:22:54.650490 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:54.650577 'e of text used for verifying this !\r\na line of text used fo' 01:22:54.654020 'r verifying this !\r\na line of text used for verifying this ' 01:22:54.654105 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:54.654194 'xt used for verifying this !\r\na line of text used for verif' 01:22:54.654279 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:54.654362 'line of text used for verifying this !\r\na line of text used' 01:22:54.654445 ' for verifying this !\r\na line of text used for verifying th' 01:22:54.654527 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:54.654615 ' text used for verifying this !\r\na line of text used for ve' 01:22:54.654701 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:54.654784 'a line of text used for verifying this !\r\na line of text us' 01:22:54.654867 'ed for verifying this !\r\na line of text used for verifying ' 01:22:54.654949 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:54.655036 'of text used for verifying this !\r\na line of text used for ' 01:22:54.655129 'verifying this !\r\na line of text used for verifying this !\r' 01:22:54.655215 '\na line of text used for verifying this !\r\na line of text ' 01:22:54.655311 'used for verifying this !\r\na line of text used for verifyin' 01:22:54.655395 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:54.655479 'e of text used for verifying this !\r\na line of text used fo' 01:22:54.655569 'r verifying this !\r\na line of text used for verifying this ' 01:22:54.655652 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:54.655736 'xt used for verifying this !\r\na line of text used for verif' 01:22:54.655817 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:54.655900 'line of text used for verifying this !\r\na line of text used' 01:22:54.655989 ' for verifying this !\r\na line of text used for verifying th' 01:22:54.656074 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:54.656157 ' text used for verifying this !\r\na line of text used for ve' 01:22:54.656239 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:54.656322 'a line of text used for verifying this !\r\na line of text us' 01:22:54.656411 'ed for verifying this !\r\na line of text used for verifying ' 01:22:54.656497 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:54.656580 'of text used for verifying this !\r\na line of text used for ' 01:22:54.656662 'verifying this !\r\na line of text used for verifying this !\r' 01:22:54.656745 '\na line of text used for verifying this !\r\na line of text ' 01:22:54.656833 'used for verifying this !\r\na line of text used for verifyin' 01:22:54.656919 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:54.657002 'e of text used for verifying this !\r\na line of text used fo' 01:22:54.657085 'r verifying this !\r\na line of text used for verifying this ' 01:22:54.657167 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:54.657253 'xt used for verifying this !\r\na line of text used for verif' 01:22:54.660695 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:54.660787 'line of text used for verifying this !\r\na line of text used' 01:22:54.660871 ' for verifying this !\r\na line of text used for verifying th' 01:22:54.660952 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:54.661035 ' text used for verifying this !\r\na line of text used for ve' 01:22:54.661124 'rifying this !\r\na line of text used for verifying this !\r\n' 01:22:54.661210 'a line of text used for verifying this !\r\na line of text us' 01:22:54.661294 'ed for verifying this !\r\na line of text used for verifying ' 01:22:54.661375 'this !\r\na line of text used for verifying this !\r\na line ' 01:22:54.661459 'of text used for verifying this !\r\na line of text used for ' 01:22:54.661546 'verifying this !\r\na line of text used for verifying this !\r' 01:22:54.661632 '\na line of text used for verifying this !\r\na line of text ' 01:22:54.661716 'used for verifying this !\r\na line of text used for verifyin' 01:22:54.661798 'g this !\r\na line of text used for verifying this !\r\na lin' 01:22:54.661880 'e of text used for verifying this !\r\na line of text used fo' 01:22:54.661967 'r verifying this !\r\na line of text used for verifying this ' 01:22:54.662053 '!\r\na line of text used for verifying this !\r\na line of te' 01:22:54.662136 'xt used for verifying this !\r\na line of text used for verif' 01:22:54.662218 'ying this !\r\na line of text used for verifying this !\r\na ' 01:22:54.662300 'line of text used for verifying this !\r\na line of text used' 01:22:54.662385 ' for verifying this !\r\na line of text used for verifying th' 01:22:54.662473 'is !\r\na line of text used for verifying this !\r\na line of' 01:22:54.662542 ' text used for verifying this !\r\n' 01:22:55.892273 ====> Client disconnect 01:22:55.897343 Received ACKD (on stdin) 01:22:55.897667 Received QUIT (on stdin) 01:22:55.897748 quits 01:22:55.898236 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 476 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE A STOR 476 QUIT === End of file server.input === Start of file stderr476 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 89 73500 0 0 89 65536 0 5733 0:00:12 0:00:11 0:00:01 6375 100 73500 0 0 100 73500 0 5835 0:00:12 0:00:12 --:--:-- 6422 100 73500 0 0 100 73500 0 5662 0:00:12 0:00:12 --:--:-- 6771 === End of file stderr476 === Start of file test476.txt a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this === File too long: 349 lines omitted here a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this === End of file test476.txt === Start of file trace476 01:22:44.186552 * Trying 127.0.0.1:39881... 01:22:45.008172 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 53570 01:22:45.232357 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:22:45.551984 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:22:45.576090 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:22:45.580760 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:22:45.584914 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:22:45.679505 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:22:45.747142 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:22:45.766776 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:22:45.827895 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:22:45.845235 => Send header, 5 bytes (0x5) 0000: PWD 01:22:45.858568 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:22:45.891918 * Entry path is '/' 01:22:45.985151 * Request has same path as previous transfer 01:22:46.033225 => Send header, 6 bytes (0x6) 0000: EPSV 01:22:46.051885 * Connect data stream passively 01:22:46.123410 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||39435|) 01:22:46.232189 * Connecting to 127.0.0.1 (127.0.0.1) port 39435 01:22:46.293861 * Trying 127.0.0.1:39435... 01:22:46.385922 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 39435) from 127.0.0.1 port 55150 01:22:46.402984 => Send header, 8 bytes (0x8) 0000: TYPE A 01:22:46.417315 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:22:46.453000 => Send header, 10 bytes (0xa) 0000: STOR 476 01:22:46.493001 <= Recv header, 24 bytes (0x18) 0000: 125 Gimme gimme gimme 01:22:46.941014 => Send data, 65536 bytes (0x10000) 0000: a line of text used for verifying this 002a: a line of text used for verifying this 0054: a line of text used for verifying this 007e: a line of text used for verifying this 00a8: a line of text used for verifying this 00d2: a line of text used for verifying this 00fc: a line of text used for verifying this 0126: a line of text used for verifying this 0150: a line of text used for verifying this 017a: a line of text used for verifying this 01a4: a line of text used for verifying this 01ce: a line of text used for verifying this 01f8: a line of text used for verifying this 0222: a line of text used for verifying this 024c: a line of text used for verifying this 0276: a line of text used for verifying this 02a0: a line of text used for verifying this 02ca: a line of text used for verifying this 02f4: a line of text used for verifying this 031e: a line of text used for verifying this 0348: a line of text used for verifying this 0372: a line of text used for verifying this 039c: a line of text used for verifying this 03c6: a line of text used for verifying this 03f0: a line of text used for verifying this 041a: a line of text used for verifying this 0444: a line of text used for verifying this 046e: a line of text used for verifying this 0498: a line of text used for verifying this 04c2: a line of text used for verifying this 04ec: a line of text used for verifying this 0516: a line of text used for verifying this 0540: a line of text used for verifying this 056a: a line of text used for verifying this 0594: a line of text used for verifying this 05be: a line of text used for verifying this 05e8: a line of text used for verifying this 0612: a line of text used for verifying this 063c: a line of text used for verifying this 0666: a line of text used for verifying this 0690: a line of text used for verifying this 06ba: a line of text used for verifying this 06e4: a line of text used for verifying this 070e: a line of text used for verifying this 0738: a line of text used for verifying this 0762: a line of text used for verifying this 078c: a line of text used for verifying this 07b6: a line of text used for verifying this 07e0: a line of text used for verifying this 080a: a line of text used for verifying this 0834: a line of text used for verifying this 085e: a line of text used for verifying this 0888: a line of text used for verifying this 08b2: a line of text used for verifying this 08dc: a line of text used for verifying this 0906: a line of text used for verifying this 0930: a line of text used for verifying this 095a: a line of text used for verifying this 0984: a line of text used for verifying this 09ae: a line of text used for verifying this 09d8: a line of text used for verifying this 0a02: a line of text used for verifying this 0a2c: a line of text used for verifying this 0a56: a line of text used for verifying this 0a80: a line of text used for verifying this 0aaa: a line of text used for verifying this 0ad4: a line of text used for verifying this 0afe: a line of text used for verifying this 0b28: a line of text used for verifying this 0b52: a line of text used for verifying this 0b7c: a line of text used for verifying this 0ba6: a line of text used for verifying this 0bd0: a line of text used for verifying this 0bfa: a line of text used for verifying this 0c24: a line of text used for verifying this 0c4e: a line of text used for verifying this 0c78: a line of text used for verifying this 0ca2: a line of text used for verifying this 0ccc: a line of text used for verifying this 0cf6: a line of text used for verifying this 0d20: a line of text used for verifying this 0d4a: a line of text used for verifying this 0d74: a line of text used for verifying this 0d9e: a line of text used for verifying this 0dc8: a line of text used for verifying this 0df2: a line of text used for verifying this 0e1c: a line of text used for verifying this 0e46: a line of text used for verifying this 0e70: a line of text used for verifying this 0e9a: a line of text used for verifying this 0ec4: a line of text used for verifying this 0eee: a line of text used for verifying this 0f18: a line of text used for verifying this 0f42: a line of text used for verifying this 0f6c: a line of text used for verifying this 0f96: a line of text used for verifying this 0fc0: a line of text used for verifying this 0fea: a line of text used for verifying this 1014: a line of text used for verifying this 103e: a line of text used for verifying this 1068: a line of text used for verifying this 1092: a line of text used for verifying this 10bc: a line of text used for verifying this 10e6: a line of text used for verifying this 1110: a line of text used for verifying this 113a: a line of text used for verifying this 1164: a line of text used for verifying this 118e: a line of text used for verifying this 11b8: a line of text used for verifying this 11e2: a line of text used for verifying this 120c: a line of text used for verifying this 1236: a line of text used for verifying this 1260: a line of text used for verifying this 128a: a line of text used for verifying this 12b4: a line of text used for verifying this 12de: a line of text used for verifying this 1308: a line of text used for verifying this 1332: a line of text used for verifying this 135c: a line of text used for verifying this 1386: a line of text used for verifying this 13b0: a line of text used for verifying this 13da: a line of text used for verifying this 1404: a line of text used for verifying this 142e: a line of text used for verifying this 1458: a line of text used for verifying this 1482: a line of text used for verifying this 14ac: a line of text used for verifying this 14d6: a line of text used for verifying this 1500: a line of text used for verifying this 152a: a line of text used for verifying this 1554: a line of text used for verifying this 157e: a line of text used for verifying this 15a8: a line of text used for verifying this 15d2: a line of text used for verifying this 15fc: a line of text used for verifying this 1626: a line of text used for verifying this 1650: a line of text used for verifying this 167a: a line of text used for verifying this 16a4: a line of text used for verifying this 16ce: a line of text used for verifying this 16f8: a line of text used for verifying this 1722: a line of text used for verifying this 174c: a line of text used for verifying this 1776: a line of text used for verifying this 17a0: a line of text used for verifying this 17ca: a line of text used for verifying this 17f4: a line of text used for verifying this 181e: a line of text used for verifying this 1848: a line of text used for verifying this 1872: a line of text used for verifying this 189c: a line of text used for verifying this 18c6: a line of text used for verifying this 18f0: a line of text used for verifying this 191a: a line of text used for verifying this 1944: a line of text used for verifying this 196e: a line of text used for verifying this 1998: a line of text used for verifying this 19c2: a line of text used for verifying this 19ec: a line of text used for verifying this 1a16: a line of text used for verifying this 1a40: a line of text used for verifying this 1a6a: a line of text used for verifying this 1a94: a line of text used for verifying this 1abe: a line of text used for verifying this 1ae8: a line of text used for verifying this 1b12: a line of text used for verifying this 1b3c: a line of text used for verifying this 1b66: a line of text used for verifying this 1b90: a line of text used for verifying this 1bba: a line of text used for verifying this 1be4: a line of text used for verifying this 1c0e: a line of text used for verifying this 1c38: a line of text used for verifying this 1c62: a line of text used for verifying this 1c8c: a line of text used for verifying this 1cb6: a line of text used for verifying this 1ce0: a line of text used for verifying this 1d0a: a line of text used for verifying this 1d34: a line of text used for verifying this 1d5e: a line of text used for verifying this 1d88: a line of text used for verifying this 1db2: a line of text used for verifying this 1ddc: a line of text used for verifying this 1e06: a line of text used for verifying this 1e30: a line of text used for verifying this 1e5a: a line of text used for verifying this 1e84: a line of text used for verifying this 1eae: a line of text used for verifying this 1ed8: a line of text used for verifying this 1f02: a line of text used for verifying this 1f2c: a line of text used for verifying this 1f56: a line of text used for verifying this 1f80: a line of text used for verifying this 1faa: a line of text used for verifying this 1fd4: a line of text used for verifying this 1ffe: a line of text used for verifying this 2028: a line of text used for verifying this 2052: a line of text used for verifying this 207c: a line of text used for verifying this 20a6: a line of text used for verifying this 20d0: a line of text used for verifying this 20fa: a line of text used for verifying this 2124: a line of text used for verifying this 214e: a line of text used for verifying this 2178: a line of text used for verifying this 21a2: a line of text used for verifying this 21cc: a line of text used for verifying this 21f6: a line of text used for verifying this 2220: a line of text used for verifying this 224a: a line of text used for verifying this 2274: a line of text used for verifying this 229e: a line of text used for verifying this 22c8: a line of text used for verifying this 22f2: a line of text used for verifying this 231c: a line of text used for verifying this 2346: a line of text used for verifying this 2370: a line of text used for verifying this 239a: a line of text used for verifying this 23c4: a line of text used for verifying this 23ee: a line of text used for verifying this 2418: a line of text used for verifying this 2442: a line of text used for verifying this 246c: a line of text used for verifying this 2496: a line of text used for verifying this 24c0: a line of text used for verifying this 24ea: a line of text used for verifying this 2514: a line of text used for verifying this 253e: a line of text used for verifying this 2568: a line of text used for verifying this 2592: a line of text used for verifying this 25bc: a line of text used for verifying this 25e6: a line of text used for verifying this 2610: a line of text used for verifying this 263a: a line of text used for verifying this 2664: a line of text used for verifying this 268e: a line of text used for verifying this 26b8: a line of text used for verifying this 26e2: a line of text used for verifying this 270c: a line of text used for verifying this 2736: a line of text used for verifying this 2760: a line of text used for verifying this 278a: a line of text used for verifying this 27b4: a line of text used for verifying this 27de: a line of text used for verifying this 2808: a line of text used for verifying this 2832: a line of text used for verifying this 285c: a line of text used for verifying this 2886: a line of text used for verifying this 28b0: a line of text used for verifying this 28da: a line of text used for verifying this 2904: a line of text used for verifying this 292e: a line of text used for verifying this 2958: a line of text used for verifying this 2982: a line of text used for verifying this 29ac: a line of text used for verifying this 29d6: a line of text used for verifying this 2a00: a line of text used for verifying this 2a2a: a line of text used for verifying this 2a54: a line of text used for verifying this 2a7e: a line of text used for verifying this 2aa8: a line of text used for verifying this 2ad2: a line of text used for verifying this 2afc: a line of text used for verifying this 2b26: a line of text used for verifying this 2b50: a line of text used for verifying this 2b7a: a line of text used for verifying this 2ba4: a line of text used for verifying this 2bce: a line of text used for verifying this 2bf8: a line of text used for verifying this 2c22: a line of text used for verifying this 2c4c: a line of text used for verifying this 2c76: a line of text used for verifying this 2ca0: a line of text used for verifying this 2cca: a line of text used for verifying this 2cf4: a line of text used for verifying this 2d1e: a line of text used for verifying this 2d48: a line of text used for verifying this 2d72: a line of text used for verifying this 2d9c: a line of text used for verifying this 2dc6: a line of text used for verifying this 2df0: a line of text used for verifying this 2e1a: a line of text used for verifying this 2e44: a line of text used for verifying this 2e6e: a line of text used for verifying this 2e98: a line of text used for verifying this 2ec2: a line of text used for verifying this 2eec: a line of text used for verifying this 2f16: a line of text used for verifying this 2f40: a line of text used for verifying this 2f6a: a line of text used for verifying this 2f94: a line of text used for verifying this 2fbe: a line of text used for verifying this 2fe8: a line of text used for verifying this 3012: a line of text used for verifying this 303c: a line of text used for verifying this 3066: a line of text used for verifying this 3090: a line of text used for verifying this 30ba: a line of text used for verifying this 30e4: a line of text used for verifying this 310e: a line of text used for verifying this 3138: a line of text used for verifying this 3162: a line of text used for verifying this 318c: a line of text used for verifying this 31b6: a line of text used for verifying this 31e0: a line of text used for verifying this 320a: a line of text used for verifying this 3234: a line of text used for verifying this 325e: a line of text used for verifying this 3288: a line of text used for verifying this 32b2: a line of text used for verifying this 32dc: a line of text used for verifying this 3306: a line of text used for verifying this 3330: a line of text used for verifying this 335a: a line of text used for verifying this 3384: a line of text used for verifying this 33ae: a line of text used for verifying this 33d8: a line of text used for verifying this 3402: a line of text used for verifying this 342c: a line of text used for verifying this 3456: a line of text used for verifying this 3480: a line of text used for verifying this 34aa: a line of text used for verifying this 34d4: a line of text used for verifying this 34fe: a line of text used for verifying this 3528: a line of text used for verifying this 3552: a line of text used for verifying this 357c: a line of text used for verifying this 35a6: a line of text used for verifying this 35d0: a line of text used for verifying this 35fa: a line of text used for verifying this 3624: a line of text used for verifying this 364e: a line of text used for verifying this 3678: a line of text used for verifying this 36a2: a line of text used for verifying this 36cc: a line of text used for verifying this 36f6: a line of text used for verifying this 3720: a line of text used for verifying this 374a: a line of text used for verifying this 3774: a line of text used for verifying this 379e: a line of text used for verifying this 37c8: a line of text used for verifying this 37f2: a line of text used for verifying this 381c: a line of text used for verifying this 3846: a line of text used for verifying this 3870: a line of text used for verifying this 389a: a line of text used for verifying this 38c4: a line of text used for verifying this 38ee: a line of text used for verifying this 3918: a line of text used for verifying this 3942: a line of text used for verifying this 396c: a line of text used for verifying this 3996: a line of text used for verifying this 39c0: a line of text used for verifying this 39ea: a line of text used for verifying this 3a14: a line of text used for verifying this 3a3e: a line of text used for verifying this 3a68: a line of text used for verifying this 3a92: a line of text used for verifying this 3abc: a line of text used for verifying this 3ae6: a line of text used for verifying this 3b10: a line of text used for verifying this 3b3a: a line of text used for verifying this 3b64: a line of text used for verifying this 3b8e: a line of text used for verifying this 3bb8: a line of text used for verifying this 3be2: a line of text used for verifying this 3c0c: a line of text used for verifying this 3c36: a line of text used for verifying this 3c60: a line of text used for verifying this 3c8a: a line of text used for verifying this 3cb4: a line of text used for verifying this 3cde: a line of text used for verifying this 3d08: a line of text used for verifying this 3d32: a line of text used for verifying this 3d5c: a line of text used for verifying this 3d86: a line of text used for verifying this 3db0: a line of text used for verifying this 3dda: a line of text used for verifying this 3e04: a line of text used for verifying this 3e2e: a line of text used for verifying this 3e58: a line of text used for verifying this 3e82: a line of text used for verifying this 3eac: a line of text used for verifying this 3ed6: a line of text used for verifying this 3f00: a line of text used for verifying this 3f2a: a line of text used for verifying this 3f54: a line of text used for verifying this 3f7e: a line of text used for verifying this 3fa8: a line of text used for verifying this 3fd2: a line of text used for verifying this 3ffc: a line of text used for verifying this 4026: a line of text used for verifying this 4050: a line of text used for verifying this 407a: a line of text used for verifying this 40a4: a line of text used for verifying this 40ce: a line of text used for verifying this 40f8: a line of text used for verifying this 4122: a line of text used for verifying this 414c: a line of text used for verifying this 4176: a line of text used for verifying this 41a0: a line of text used for verifying this 41ca: a line of text used for verifying this 41f4: a line of text used for verifying this 421e: a line of text used for verifying this 4248: a line of text used for verifying this 4272: a line of text used for verifying this 429c: a line of text used for verifying this 42c6: a line of text used for verifying this 42f0: a line of text used for verifying this 431a: a line of text used for verifying this 4344: a line of text used for verifying this 436e: a line of text used for verifying this 4398: a line of text used for verifying this 43c2: a line of text used for verifying this 43ec: a line of text used for verifying this 4416: a line of text used for verifying this 4440: a line of text used for verifying this 446a: a line of text used for verifying this 4494: a line of text used for verifying this 44be: a line of text used for verifying this 44e8: a line of text used for verifying this 4512: a line of text used for verifying this 453c: a line of text used for verifying this 4566: a line of text used for verifying this 4590: a line of text used for verifying this 45ba: a line of text used for verifying this 45e4: a line of text used for verifying this 460e: a line of text used for verifying this 4638: a line of text used for verifying this 4662: a line of text used for verifying this 468c: a line of text used for verifying this 46b6: a line of text used for verifying this 46e0: a line of text used for verifying this 470a: a line of text used for verifying this 4734: a line of text used for verifying this 475e: a line of text used for verifying this 4788: a line of text used for verifying this 47b2: a line of text used for verifying this 47dc: a line of text used for verifying this 4806: a line of text used for verifying this 4830: a line of text used for verifying this 485a: a line of text used for verifying this 4884: a line of text used for verifying this 48ae: a line of text used for verifying this 48d8: a line of text used for verifying this 4902: a line of text used for verifying this 492c: a line of text used for verifying this 4956: a line of text used for verifying this 4980: a line of text used for verifying this 49aa: a line of text used for verifying this 49d4: a line of text used for verifying this 49fe: a line of text used for verifying this 4a28: a line of text used for verifying this 4a52: a line of text used for verifying this 4a7c: a line of text used for verifying this 4aa6: a line of text used for verifying this 4ad0: a line of text used for verifying this 4afa: a line of text used for verifying this 4b24: a line of text used for verifying this 4b4e: a line of text used for verifying this 4b78: a line of text used for verifying this 4ba2: a line of text used for verifying this 4bcc: a line of text used for verifying this 4bf6: a line of text used for verifying this 4c20: a line of text used for verifying this 4c4a: a line of text used for verifying this 4c74: a line of text used for verifying this 4c9e: a line of text used for verifying this 4cc8: a line of text used for verifying this 4cf2: a line of text used for verifying this 4d1c: a line of text used for verifying this 4d46: a line of text used for verifying this 4d70: a line of text used for verifying this 4d9a: a line of text used for verifying this 4dc4: a line of text used for verifying this 4dee: a line of text used for verifying this 4e18: a line of text used for verifying this 4e42: a line of text used for verifying this 4e6c: a line of text used for verifying this 4e96: a line of text used for verifying this 4ec0: a line of text used for verifying this 4eea: a line of text used for verifying this 4f14: a line of text used for verifying this 4f3e: a line of text used for verifying this 4f68: a line of text used for verifying this 4f92: a line of text used for verifying this 4fbc: a line of text used for verifying this 4fe6: a line of text used for verifying this 5010: a line of text used for verifying this 503a: a line of text used for verifying this 5064: a line of text used for verifying this 508e: a line of text used for verifying this 50b8: a line of text used for verifying this 50e2: a line of text used for verifying this 510c: a line of text used for verifying this 5136: a line of text used for verifying this 5160: a line of text used for verifying this 518a: a line of text used for verifying this 51b4: a line of text used for verifying this 51de: a line of text used for verifying this 5208: a line of text used for verifying this 5232: a line of text used for verifying this 525c: a line of text used for verifying this 5286: a line of text used for verifying this 52b0: a line of text used for verifying this 52da: a line of text used for verifying this 5304: a line of text used for verifying this 532e: a line of text used for verifying this 5358: a line of text used for verifying this 5382: a line of text used for verifying this 53ac: a line of text used for verifying this 53d6: a line of text used for verifying this 5400: a line of text used for verifying this 542a: a line of text used for verifying this 5454: a line of text used for verifying this 547e: a line of text used for verifying this 54a8: a line of text used for verifying this 54d2: a line of text used for verifying this 54fc: a line of text used for verifying this 5526: a line of text used for verifying this 5550: a line of text used for verifying this 557a: a line of text used for verifying this 55a4: a line of text used for verifying this 55ce: a line of text used for verifying this 55f8: a line of text used for verifying this 5622: a line of text used for verifying this 564c: a line of text used for verifying this 5676: a line of text used for verifying this 56a0: a line of text used for verifying this 56ca: a line of text used for verifying this 56f4: a line of text used for verifying this 571e: a line of text used for verifying this 5748: a line of text used for verifying this 5772: a line of text used for verifying this 579c: a line of text used for verifying this 57c6: a line of text used for verifying this 57f0: a line of text used for verifying this 581a: a line of text used for verifying this 5844: a line of text used for verifying this 586e: a line of text used for verifying this 5898: a line of text used for verifying this 58c2: a line of text used for verifying this 58ec: a line of text used for verifying this 5916: a line of text used for verifying this 5940: a line of text used for verifying this 596a: a line of text used for verifying this 5994: a line of text used for verifying this 59be: a line of text used for verifying this 59e8: a line of text used for verifying this 5a12: a line of text used for verifying this 5a3c: a line of text used for verifying this 5a66: a line of text used for verifying this 5a90: a line of text used for verifying this 5aba: a line of text used for verifying this 5ae4: a line of text used for verifying this 5b0e: a line of text used for verifying this 5b38: a line of text used for verifying this 5b62: a line of text used for verifying this 5b8c: a line of text used for verifying this 5bb6: a line of text used for verifying this 5be0: a line of text used for verifying this 5c0a: a line of text used for verifying this 5c34: a line of text used for verifying this 5c5e: a line of text used for verifying this 5c88: a line of text used for verifying this 5cb2: a line of text used for verifying this 5cdc: a line of text used for verifying this 5d06: a line of text used for verifying this 5d30: a line of text used for verifying this 5d5a: a line of text used for verifying this 5d84: a line of text used for verifying this 5dae: a line of text used for verifying this 5dd8: a line of text used for verifying this 5e02: a line of text used for verifying this 5e2c: a line of text used for verifying this 5e56: a line of text used for verifying this 5e80: a line of text used for verifying this 5eaa: a line of text used for verifying this 5ed4: a line of text used for verifying this 5efe: a line of text used for verifying this 5f28: a line of text used for verifying this 5f52: a line of text used for verifying this 5f7c: a line of text used for verifying this 5fa6: a line of text used for verifying this 5fd0: a line of text used for verifying this 5ffa: a line of text used for verifying this 6024: a line of text used for verifying this 604e: a line of text used for verifying this 6078: a line of text used for verifying this 60a2: a line of text used for verifying this 60cc: a line of text used for verifying this 60f6: a line of text used for verifying this 6120: a line of text used for verifying this 614a: a line of text used for verifying this 6174: a line of text used for verifying this 619e: a line of text used for verifying this 61c8: a line of text used for verifying this 61f2: a line of text used for verifying this 621c: a line of text used for verifying this 6246: a line of text used for verifying this 6270: a line of text used for verifying this 629a: a line of text used for verifying this 62c4: a line of text used for verifying this 62ee: a line of text used for verifying this 6318: a line of text used for verifying this 6342: a line of text used for verifying this 636c: a line of text used for verifying this 6396: a line of text used for verifying this 63c0: a line of text used for verifying this 63ea: a line of text used for verifying this 6414: a line of text used for verifying this 643e: a line of text used for verifying this 6468: a line of text used for verifying this 6492: a line of text used for verifying this 64bc: a line of text used for verifying this 64e6: a line of text used for verifying this 6510: a line of text used for verifying this 653a: a line of text used for verifying this 6564: a line of text used for verifying this 658e: a line of text used for verifying this 65b8: a line of text used for verifying this 65e2: a line of text used for verifying this 660c: a line of text used for verifying this 6636: a line of text used for verifying this 6660: a line of text used for verifying this 668a: a line of text used for verifying this 66b4: a line of text used for verifying this 66de: a line of text used for verifying this 6708: a line of text used for verifying this 6732: a line of text used for verifying this 675c: a line of text used for verifying this 6786: a line of text used for verifying this 67b0: a line of text used for verifying this 67da: a line of text used for verifying this 6804: a line of text used for verifying this 682e: a line of text used for verifying this 6858: a line of text used for verifying this 6882: a line of text used for verifying this 68ac: a line of text used for verifying this 68d6: a line of text used for verifying this 6900: a line of text used for verifying this 692a: a line of text used for verifying this 6954: a line of text used for verifying this 697e: a line of text used for verifying this 69a8: a line of text used for verifying this 69d2: a line of text used for verifying this 69fc: a line of text used for verifying this 6a26: a line of text used for verifying this 6a50: a line of text used for verifying this 6a7a: a line of text used for verifying this 6aa4: a line of text used for verifying this 6ace: a line of text used for verifying this 6af8: a line of text used for verifying this 6b22: a line of text used for verifying this 6b4c: a line of text used for verifying this 6b76: a line of text used for verifying this 6ba0: a line of text used for verifying this 6bca: a line of text used for verifying this 6bf4: a line of text used for verifying this 6c1e: a line of text used for verifying this 6c48: a line of text used for verifying this 6c72: a line of text used for verifying this 6c9c: a line of text used for verifying this 6cc6: a line of text used for verifying this 6cf0: a line of text used for verifying this 6d1a: a line of text used for verifying this 6d44: a line of text used for verifying this 6d6e: a line of text used for verifying this 6d98: a line of text used for verifying this 6dc2: a line of text used for verifying this 6dec: a line of text used for verifying this 6e16: a line of text used for verifying this 6e40: a line of text used for verifying this 6e6a: a line of text used for verifying this 6e94: a line of text used for verifying this 6ebe: a line of text used for verifying this 6ee8: a line of text used for verifying this 6f12: a line of text used for verifying this 6f3c: a line of text used for verifying this 6f66: a line of text used for verifying this 6f90: a line of text used for verifying this 6fba: a line of text used for verifying this 6fe4: a line of text used for verifying this 700e: a line of text used for verifying this 7038: a line of text used for verifying this 7062: a line of text used for verifying this 708c: a line of text used for verifying this 70b6: a line of text used for verifying this 70e0: a line of text used for verifying this 710a: a line of text used for verifying this 7134: a line of text used for verifying this 715e: a line of text used for verifying this 7188: a line of text used for verifying this 71b2: a line of text used for verifying this 71dc: a line of text used for verifying this 7206: a line of text used for verifying this 7230: a line of text used for verifying this 725a: a line of text used for verifying this 7284: a line of text used for verifying this 72ae: a line of text used for verifying this 72d8: a line of text used for verifying this 7302: a line of text used for verifying this 732c: a line of text used for verifying this 7356: a line of text used for verifying this 7380: a line of text used for verifying this 73aa: a line of text used for verifying this 73d4: a line of text used for verifying this 73fe: a line of text used for verifying this 7428: a line of text used for verifying this 7452: a line of text used for verifying this 747c: a line of text used for verifying this 74a6: a line of text used for verifying this 74d0: a line of text used for verifying this 74fa: a line of text used for verifying this 7524: a line of text used for verifying this 754e: a line of text used for verifying this 7578: a line of text used for verifying this 75a2: a line of text used for verifying this 75cc: a line of text used for verifying this 75f6: a line of text used for verifying this 7620: a line of text used for verifying this 764a: a line of text used for verifying this 7674: a line of text used for verifying this 769e: a line of text used for verifying this 76c8: a line of text used for verifying this 76f2: a line of text used for verifying this 771c: a line of text used for verifying this 7746: a line of text used for verifying this 7770: a line of text used for verifying this 779a: a line of text used for verifying this 77c4: a line of text used for verifying this 77ee: a line of text used for verifying this 7818: a line of text used for verifying this 7842: a line of text used for verifying this 786c: a line of text used for verifying this 7896: a line of text used for verifying this 78c0: a line of text used for verifying this 78ea: a line of text used for verifying this 7914: a line of text used for verifying this 793e: a line of text used for verifying this 7968: a line of text used for verifying this 7992: a line of text used for verifying this 79bc: a line of text used for verifying this 79e6: a line of text used for verifying this 7a10: a line of text used for verifying this 7a3a: a line of text used for verifying this 7a64: a line of text used for verifying this 7a8e: a line of text used for verifying this 7ab8: a line of text used for verifying this 7ae2: a line of text used for verifying this 7b0c: a line of text used for verifying this 7b36: a line of text used for verifying this 7b60: a line of text used for verifying this 7b8a: a line of text used for verifying this 7bb4: a line of text used for verifying this 7bde: a line of text used for verifying this 7c08: a line of text used for verifying this 7c32: a line of text used for verifying this 7c5c: a line of text used for verifying this 7c86: a line of text used for verifying this 7cb0: a line of text used for verifying this 7cda: a line of text used for verifying this 7d04: a line of text used for verifying this 7d2e: a line of text used for verifying this 7d58: a line of text used for verifying this 7d82: a line of text used for verifying this 7dac: a line of text used for verifying this 7dd6: a line of text used for verifying this 7e00: a line of text used for verifying this 7e2a: a line of text used for verifying this 7e54: a line of text used for verifying this 7e7e: a line of text used for verifying this 7ea8: a line of text used for verifying this 7ed2: a line of text used for verifying this 7efc: a line of text used for verifying this 7f26: a line of text used for verifying this 7f50: a line of text used for verifying this 7f7a: a line of text used for verifying this 7fa4: a line of text used for verifying this 7fce: a line of text used for verifying this 7ff8: a line of text used for verifying this 8022: a line of text used for verifying this 804c: a line of text used for verifying this 8076: a line of text used for verifying this 80a0: a line of text used for verifying this 80ca: a line of text used for verifying this 80f4: a line of text used for verifying this 811e: a line of text used for verifying this 8148: a line of text used for verifying this 8172: a line of text used for verifying this 819c: a line of text used for verifying this 81c6: a line of text used for verifying this 81f0: a line of text used for verifying this 821a: a line of text used for verifying this 8244: a line of text used for verifying this 826e: a line of text used for verifying this 8298: a line of text used for verifying this 82c2: a line of text used for verifying this 82ec: a line of text used for verifying this 8316: a line of text used for verifying this 8340: a line of text used for verifying this 836a: a line of text used for verifying this 8394: a line of text used for verifying this 83be: a line of text used for verifying this 83e8: a line of text used for verifying this 8412: a line of text used for verifying this 843c: a line of text used for verifying this 8466: a line of text used for verifying this 8490: a line of text used for verifying this 84ba: a line of text used for verifying this 84e4: a line of text used for verifying this 850e: a line of text used for verifying this 8538: a line of text used for verifying this 8562: a line of text used for verifying this 858c: a line of text used for verifying this 85b6: a line of text used for verifying this 85e0: a line of text used for verifying this 860a: a line of text used for verifying this 8634: a line of text used for verifying this 865e: a line of text used for verifying this 8688: a line of text used for verifying this 86b2: a line of text used for verifying this 86dc: a line of text used for verifying this 8706: a line of text used for verifying this 8730: a line of text used for verifying this 875a: a line of text used for verifying this 8784: a line of text used for verifying this 87ae: a line of text used for verifying this 87d8: a line of text used for verifying this 8802: a line of text used for verifying this 882c: a line of text used for verifying this 8856: a line of text used for verifying this 8880: a line of text used for verifying this 88aa: a line of text used for verifying this 88d4: a line of text used for verifying this 88fe: a line of text used for verifying this 8928: a line of text used for verifying this 8952: a line of text used for verifying this 897c: a line of text used for verifying this 89a6: a line of text used for verifying this 89d0: a line of text used for verifying this 89fa: a line of text used for verifying this 8a24: a line of text used for verifying this 8a4e: a line of text used for verifying this 8a78: a line of text used for verifying this 8aa2: a line of text used for verifying this 8acc: a line of text used for verifying this 8af6: a line of text used for verifying this 8b20: a line of text used for verifying this 8b4a: a line of text used for verifying this 8b74: a line of text used for verifying this 8b9e: a line of text used for verifying this 8bc8: a line of text used for verifying this 8bf2: a line of text used for verifying this 8c1c: a line of text used for verifying this 8c46: a line of text used for verifying this 8c70: a line of text used for verifying this 8c9a: a line of text used for verifying this 8cc4: a line of text used for verifying this 8cee: a line of text used for verifying this 8d18: a line of text used for verifying this 8d42: a line of text used for verifying this 8d6c: a line of text used for verifying this 8d96: a line of text used for verifying this 8dc0: a line of text used for verifying this 8dea: a line of text used for verifying this 8e14: a line of text used for verifying this 8e3e: a line of text used for verifying this 8e68: a line of text used for verifying this 8e92: a line of text used for verifying this 8ebc: a line of text used for verifying this 8ee6: a line of text used for verifying this 8f10: a line of text used for verifying this 8f3a: a line of text used for verifying this 8f64: a line of text used for verifying this 8f8e: a line of text used for verifying this 8fb8: a line of text used for verifying this 8fe2: a line of text used for verifying this 900c: a line of text used for verifying this 9036: a line of text used for verifying this 9060: a line of text used for verifying this 908a: a line of text used for verifying this 90b4: a line of text used for verifying this 90de: a line of text used for verifying this 9108: a line of text used for verifying this 9132: a line of text used for verifying this 915c: a line of text used for verifying this 9186: a line of text used for verifying this 91b0: a line of text used for verifying this 91da: a line of text used for verifying this 9204: a line of text used for verifying this 922e: a line of text used for verifying this 9258: a line of text used for verifying this 9282: a line of text used for verifying this 92ac: a line of text used for verifying this 92d6: a line of text used for verifying this 9300: a line of text used for verifying this 932a: a line of text used for verifying this 9354: a line of text used for verifying this 937e: a line of text used for verifying this 93a8: a line of text used for verifying this 93d2: a line of text used for verifying this 93fc: a line of text used for verifying this 9426: a line of text used for verifying this 9450: a line of text used for verifying this 947a: a line of text used for verifying this 94a4: a line of text used for verifying this 94ce: a line of text used for verifying this 94f8: a line of text used for verifying this 9522: a line of text used for verifying this 954c: a line of text used for verifying this 9576: a line of text used for verifying this 95a0: a line of text used for verifying this 95ca: a line of text used for verifying this 95f4: a line of text used for verifying this 961e: a line of text used for verifying this 9648: a line of text used for verifying this 9672: a line of text used for verifying this 969c: a line of text used for verifying this 96c6: a line of text used for verifying this 96f0: a line of text used for verifying this 971a: a line of text used for verifying this 9744: a line of text used for verifying this 976e: a line of text used for verifying this 9798: a line of text used for verifying this 97c2: a line of text used for verifying this 97ec: a line of text used for verifying this 9816: a line of text used for verifying this 9840: a line of text used for verifying this 986a: a line of text used for verifying this 9894: a line of text used for verifying this 98be: a line of text used for verifying this 98e8: a line of text used for verifying this 9912: a line of text used for verifying this 993c: a line of text used for verifying this 9966: a line of text used for verifying this 9990: a line of text used for verifying this 99ba: a line of text used for verifying this 99e4: a line of text used for verifying this 9a0e: a line of text used for verifying this 9a38: a line of text used for verifying this 9a62: a line of text used for verifying this 9a8c: a line of text used for verifying this 9ab6: a line of text used for verifying this 9ae0: a line of text used for verifying this 9b0a: a line of text used for verifying this 9b34: a line of text used for verifying this 9b5e: a line of text used for verifying this 9b88: a line of text used for verifying this 9bb2: a line of text used for verifying this 9bdc: a line of text used for verifying this 9c06: a line of text used for verifying this 9c30: a line of text used for verifying this 9c5a: a line of text used for verifying this 9c84: a line of text used for verifying this 9cae: a line of text used for verifying this 9cd8: a line of text used for verifying this 9d02: a line of text used for verifying this 9d2c: a line of text used for verifying this 9d56: a line of text used for verifying this 9d80: a line of text used for verifying this 9daa: a line of text used for verifying this 9dd4: a line of text used for verifying this 9dfe: a line of text used for verifying this 9e28: a line of text used for verifying this 9e52: a line of text used for verifying this 9e7c: a line of text used for verifying this 9ea6: a line of text used for verifying this 9ed0: a line of text used for verifying this 9efa: a line of text used for verifying this 9f24: a line of text used for verifying this 9f4e: a line of text used for verifying this 9f78: a line of text used for verifying this 9fa2: a line of text used for verifying this 9fcc: a line of text used for verifying this 9ff6: a line of text used for verifying this a020: a line of text used for verifying this a04a: a line of text used for verifying this a074: a line of text used for verifying this a09e: a line of text used for verifying this a0c8: a line of text used for verifying this a0f2: a line of text used for verifying this a11c: a line of text used for verifying this a146: a line of text used for verifying this a170: a line of text used for verifying this a19a: a line of text used for verifying this a1c4: a line of text used for verifying this a1ee: a line of text used for verifying this a218: a line of text used for verifying this a242: a line of text used for verifying this a26c: a line of text used for verifying this a296: a line of text used for verifying this a2c0: a line of text used for verifying this a2ea: a line of text used for verifying this a314: a line of text used for verifying this a33e: a line of text used for verifying this a368: a line of text used for verifying this a392: a line of text used for verifying this a3bc: a line of text used for verifying this a3e6: a line of text used for verifying this a410: a line of text used for verifying this a43a: a line of text used for verifying this a464: a line of text used for verifying this a48e: a line of text used for verifying this a4b8: a line of text used for verifying this a4e2: a line of text used for verifying this a50c: a line of text used for verifying this a536: a line of text used for verifying this a560: a line of text used for verifying this a58a: a line of text used for verifying this a5b4: a line of text used for verifying this a5de: a line of text used for verifying this a608: a line of text used for verifying this a632: a line of text used for verifying this a65c: a line of text used for verifying this a686: a line of text used for verifying this a6b0: a line of text used for verifying this a6da: a line of text used for verifying this a704: a line of text used for verifying this a72e: a line of text used for verifying this a758: a line of text used for verifying this a782: a line of text used for verifying this a7ac: a line of text used for verifying this a7d6: a line of text used for verifying this a800: a line of text used for verifying this a82a: a line of text used for verifying this a854: a line of text used for verifying this a87e: a line of text used for verifying this a8a8: a line of text used for verifying this a8d2: a line of text used for verifying this a8fc: a line of text used for verifying this a926: a line of text used for verifying this a950: a line of text used for verifying this a97a: a line of text used for verifying this a9a4: a line of text used for verifying this a9ce: a line of text used for verifying this a9f8: a line of text used for verifying this aa22: a line of text used for verifying this aa4c: a line of text used for verifying this aa76: a line of text used for verifying this aaa0: a line of text used for verifying this aaca: a line of text used for verifying this aaf4: a line of text used for verifying this ab1e: a line of text used for verifying this ab48: a line of text used for verifying this ab72: a line of text used for verifying this ab9c: a line of text used for verifying this abc6: a line of text used for verifying this abf0: a line of text used for verifying this ac1a: a line of text used for verifying this ac44: a line of text used for verifying this ac6e: a line of text used for verifying this ac98: a line of text used for verifying this acc2: a line of text used for verifying this acec: a line of text used for verifying this ad16: a line of text used for verifying this ad40: a line of text used for verifying this ad6a: a line of text used for verifying this ad94: a line of text used for verifying this adbe: a line of text used for verifying this ade8: a line of text used for verifying this ae12: a line of text used for verifying this ae3c: a line of text used for verifying this ae66: a line of text used for verifying this ae90: a line of text used for verifying this aeba: a line of text used for verifying this aee4: a line of text used for verifying this af0e: a line of text used for verifying this af38: a line of text used for verifying this af62: a line of text used for verifying this af8c: a line of text used for verifying this afb6: a line of text used for verifying this afe0: a line of text used for verifying this b00a: a line of text used for verifying this b034: a line of text used for verifying this b05e: a line of text used for verifying this b088: a line of text used for verifying this b0b2: a line of text used for verifying this b0dc: a line of text used for verifying this b106: a line of text used for verifying this b130: a line of text used for verifying this b15a: a line of text used for verifying this b184: a line of text used for verifying this b1ae: a line of text used for verifying this b1d8: a line of text used for verifying this b202: a line of text used for verifying this b22c: a line of text used for verifying this b256: a line of text used for verifying this b280: a line of text used for verifying this b2aa: a line of text used for verifying this b2d4: a line of text used for verifying this b2fe: a line of text used for verifying this b328: a line of text used for verifying this b352: a line of text used for verifying this b37c: a line of text used for verifying this b3a6: a line of text used for verifying this b3d0: a line of text used for verifying this b3fa: a line of text used for verifying this b424: a line of text used for verifying this b44e: a line of text used for verifying this b478: a line of text used for verifying this b4a2: a line of text used for verifying this b4cc: a line of text used for verifying this b4f6: a line of text used for verifying this b520: a line of text used for verifying this b54a: a line of text used for verifying this b574: a line of text used for verifying this b59e: a line of text used for verifying this b5c8: a line of text used for verifying this b5f2: a line of text used for verifying this b61c: a line of text used for verifying this b646: a line of text used for verifying this b670: a line of text used for verifying this b69a: a line of text used for verifying this b6c4: a line of text used for verifying this b6ee: a line of text used for verifying this b718: a line of text used for verifying this b742: a line of text used for verifying this b76c: a line of text used for verifying this b796: a line of text used for verifying this b7c0: a line of text used for verifying this b7ea: a line of text used for verifying this b814: a line of text used for verifying this b83e: a line of text used for verifying this b868: a line of text used for verifying this b892: a line of text used for verifying this b8bc: a line of text used for verifying this b8e6: a line of text used for verifying this b910: a line of text used for verifying this b93a: a line of text used for verifying this b964: a line of text used for verifying this b98e: a line of text used for verifying this b9b8: a line of text used for verifying this b9e2: a line of text used for verifying this ba0c: a line of text used for verifying this ba36: a line of text used for verifying this ba60: a line of text used for verifying this ba8a: a line of text used for verifying this bab4: a line of text used for verifying this bade: a line of text used for verifying this bb08: a line of text used for verifying this bb32: a line of text used for verifying this bb5c: a line of text used for verifying this bb86: a line of text used for verifying this bbb0: a line of text used for verifying this bbda: a line of text used for verifying this bc04: a line of text used for verifying this bc2e: a line of text used for verifying this bc58: a line of text used for verifying this bc82: a line of text used for verifying this bcac: a line of text used for verifying this bcd6: a line of text used for verifying this bd00: a line of text used for verifying this bd2a: a line of text used for verifying this bd54: a line of text used for verifying this bd7e: a line of text used for verifying this bda8: a line of text used for verifying this bdd2: a line of text used for verifying this === File too long: 399 lines omitted here ff72: a line of text used for verifying this ff9c: a line of text used for verifying this ffc6: a line of text used for verifying this fff0: a line of text u 01:22:54.033151 => Send data, 7964 bytes (0x1f1c) 0000: sed for verifying this 001a: a line of text used for verifying this 0044: a line of text used for verifying this 006e: a line of text used for verifying this 0098: a line of text used for verifying this 00c2: a line of text used for verifying this 00ec: a line of text used for verifying this 0116: a line of text used for verifying this 0140: a line of text used for verifying this 016a: a line of text used for verifying this 0194: a line of text used for verifying this 01be: a line of text used for verifying this 01e8: a line of text used for verifying this 0212: a line of text used for verifying this 023c: a line of text used for verifying this 0266: a line of text used for verifying this 0290: a line of text used for verifying this 02ba: a line of text used for verifying this 02e4: a line of text used for verifying this 030e: a line of text used for verifying this 0338: a line of text used for verifying this 0362: a line of text used for verifying this 038c: a line of text used for verifying this 03b6: a line of text used for verifying this 03e0: a line of text used for verifying this 040a: a line of text used for verifying this 0434: a line of text used for verifying this 045e: a line of text used for verifying this 0488: a line of text used for verifying this 04b2: a line of text used for verifying this 04dc: a line of text used for verifying this 0506: a line of text used for verifying this 0530: a line of text used for verifying this 055a: a line of text used for verifying this 0584: a line of text used for verifying this 05ae: a line of text used for verifying this 05d8: a line of text used for verifying this 0602: a line of text used for verifying this 062c: a line of text used for verifying this 0656: a line of text used for verifying this 0680: a line of text used for verifying this 06aa: a line of text used for verifying this 06d4: a line of text used for verifying this 06fe: a line of text used for verifying this 0728: a line of text used for verifying this 0752: a line of text used for verifying this 077c: a line of text used for verifying this 07a6: a line of text used for verifying this 07d0: a line of text used for verifying this 07fa: a line of text used for verifying this 0824: a line of text used for verifying this 084e: a line of text used for verifying this 0878: a line of text used for verifying this 08a2: a line of text used for verifying this 08cc: a line of text used for verifying this 08f6: a line of text used for verifying this 0920: a line of text used for verifying this 094a: a line of text used for verifying this 0974: a line of text used for verifying this 099e: a line of text used for verifying this 09c8: a line of text used for verifying this 09f2: a line of text used for verifying this 0a1c: a line of text used for verifying this 0a46: a line of text used for verifying this 0a70: a line of text used for verifying this 0a9a: a line of text used for verifying this 0ac4: a line of text used for verifying this 0aee: a line of text used for verifying this 0b18: a line of text used for verifying this 0b42: a line of text used for verifying this 0b6c: a line of text used for verifying this 0b96: a line of text used for verifying this 0bc0: a line of text used for verifying this 0bea: a line of text used for verifying this 0c14: a line of text used for verifying this 0c3e: a line of text used for verifying this 0c68: a line of text used for verifying this 0c92: a line of text used for verifying this 0cbc: a line of text used for verifying this 0ce6: a line of text used for verifying this 0d10: a line of text used for verifying this 0d3a: a line of text used for verifying this 0d64: a line of text used for verifying this 0d8e: a line of text used for verifying this 0db8: a line of text used for verifying this 0de2: a line of text used for verifying this 0e0c: a line of text used for verifying this 0e36: a line of text used for verifying this 0e60: a line of text used for verifying this 0e8a: a line of text used for verifying this 0eb4: a line of text used for verifying this 0ede: a line of text used for verifying this 0f08: a line of text used for verifying this 0f32: a line of text used for verifying this 0f5c: a line of text used for verifying this 0f86: a line of text used for verifying this 0fb0: a line of text used for verifying this 0fda: a line of text used for verifying this 1004: a line of text used for verifying this 102e: a line of text used for verifying this 1058: a line of text used for verifying this 1082: a line of text used for verifying this 10ac: a line of text used for verifying this 10d6: a line of text used for verifying this 1100: a line of text used for verifying this 112a: a line of text used for verifying this 1154: a line of text used for verifying this 117e: a line of text used for verifying this 11a8: a line of text used for verifying this 11d2: a line of text used for verifying this 11fc: a line of text used for verifying this 1226: a line of text used for verifying this 1250: a line of text used for verifying this 127a: a line of text used for verifying this 12a4: a line of text used for verifying this 12ce: a line of text used for verifying this 12f8: a line of text used for verifying this 1322: a line of text used for verifying this 134c: a line of text used for verifying this 1376: a line of text used for verifying this 13a0: a line of text used for verifying this 13ca: a line of text used for verifying this 13f4: a line of text used for verifying this 141e: a line of text used for verifying this 1448: a line of text used for verifying this 1472: a line of text used for verifying this 149c: a line of text used for verifying this 14c6: a line of text used for verifying this 14f0: a line of text used for verifying this 151a: a line of text used for verifying this 1544: a line of text used for verifying this 156e: a line of text used for verifying this 1598: a line of text used for verifying this 15c2: a line of text used for verifying this 15ec: a line of text used for verifying this 1616: a line of text used for verifying this 1640: a line of text used for verifying this 166a: a line of text used for verifying this 1694: a line of text used for verifying this 16be: a line of text used for verifying this 16e8: a line of text used for verifying this 1712: a line of text used for verifying this 173c: a line of text used for verifying this 1766: a line of text used for verifying this 1790: a line of text used for verifying this 17ba: a line of text used for verifying this 17e4: a line of text used for verifying this 180e: a line of text used for verifying this 1838: a line of text used for verifying this 1862: a line of text used for verifying this 188c: a line of text used for verifying this 18b6: a line of text used for verifying this 18e0: a line of text used for verifying this 190a: a line of text used for verifying this 1934: a line of text used for verifying this 195e: a line of text used for verifying this 1988: a line of text used for verifying this 19b2: a line of text used for verifying this 19dc: a line of text used for verifying this 1a06: a line of text used for verifying this 1a30: a line of text used for verifying this 1a5a: a line of text used for verifying this 1a84: a line of text used for verifying this 1aae: a line of text used for verifying this 1ad8: a line of text used for verifying this 1b02: a line of text used for verifying this 1b2c: a line of text used for verifying this 1b56: a line of text used for verifying this 1b80: a line of text used for verifying this 1baa: a line of text used for verifying this 1bd4: a line of text used for verifying this 1bfe: a line of text used for verifying this 1c28: a line of text used for verifying this 1c52: a line of text used for verifying this 1c7c: a line of text used for verifying this 1ca6: a line of text used for verifying this 1cd0: a line of text used for verifying this 1cfa: a line of text used for verifying this 1d24: a line of text used for verifying this 1d4e: a line of text used for verifying this 1d78: a line of text used for verifying this 1da2: a line of text used for verifying this 1dcc: a line of text used for verifying this 1df6: a line of text used for verifying this 1e20: a line of text used for verifying this 1e4a: a line of text used for verifying this 1e74: a line of text used for verifying this 1e9e: a line of text used for verifying this 1ec8: a line of text used for verifying this 1ef2: a line of text used for verifying this 01:22:55.048042 * upload completely sent off: 73500 bytes 01:22:55.189614 * Remembering we are in dir "" 01:22:55.393584 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:22:55.709122 * Connection #0 to host 127.0.0.1:39881 left intact === End of file trace476 === Start of file upload.476 a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this === File too long: 349 lines omitted here a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of textCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind478 ../src/curl -q --output log/6/curl478.out --include --trace-ascii log/6/trace478 --trace-time --netrc --netrc-file log/6/netrc478 -x http://127.0.0.1:38277/ http://debbie@github.com/ > log/6/stdout478 2> log/6/stderr478 used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this === End of file upload.476 === Start of file valgrind476 ==255009== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind476 test 0478...[.netrc with multiple accounts for same host] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind478 ../src/curl -q --output log/6/curl478.out --include --trace-ascii log/6/trace478 --trace-time --netrc --netrc-file log/6/netrc478 -x http://127.0.0.1:38277/ http://debbie@github.com/ > log/6/stdout478 2> log/6/stderr478 valgrind ERROR ==255362== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 478 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind478 ../src/curl -q --output log/6/curl478.out --include --trace-ascii log/6/trace478 --trace-time --netrc --netrc-file log/6/netrc478 -x http://127.0.0.1:38277/ http://debbie@github.com/ > log/6/stdout478 2> log/6/stderr478 === End of file commands.log === Start of file curl478.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl478.out === Start of file http_server.log 01:22:15.441542 ====> Client connect 01:22:15.441712 accept_connection 3 returned 4 01:22:15.441791 accept_connection 3 returned 0 01:22:15.447895 Read 93 bytes 01:22:15.447994 Process 93 bytes request 01:22:15.448086 Got request: GET /verifiedserver HTTP/1.1 01:22:15.448154 Are-we-friendly question received 01:22:15.448274 Wrote request (93 bytes) input to log/6/server.input 01:22:15.448369 Identifying ourselves as friends 01:22:15.448553 Response sent (57 bytes) and written to log/6/server.response 01:22:15.448618 special request received, no persistency 01:22:15.448678 ====> Client disconnect 0 01:23:03.983684 ====> Client connect 01:23:03.983835 accept_connection 3 returned 4 01:23:03.983923 accept_connection 3 returned 0 01:23:05.192679 Read 164 bytes 01:23:05.192890 Process 164 bytes request 01:23:05.192990 Got request: GET http://github.com/ HTTP/1.1 01:23:05.193112 No test number in path 01:23:05.193233 [log/6/server.cmd] cmdfile says testnum 478 01:23:05.193430 - request found to be complete (478) 01:23:05.193716 Wrote request (164 bytes) input to log/6/server.input 01:23:05.193829 Send response test478 section 01:23:05.194285 Response sent (267 bytes) and written to log/6/server.response 01:23:05.194357 => persistent connection request ended, awaits new request 01:23:07.125265 Connection closed by client 01:23:07.125480 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 59924 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file netrc478 machine github.com password weird password firstone login daniel machine github.com machine github.com login debbie machine github.com password weird password "second\r" login debbie === End of file netrc478 === Start of file server.cmd Testnum 478 === End of file server.cmd === Start of file server.input GET http://github.com/ HTTP/1.1 Host: github.com Authorization: Basic ZGViYmllOnNlY29uZA0= User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr478 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr478 === Start of file trace478 01:23:04.060580 * Trying 127.0.0.1:38277... 01:23:04.951384 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 34172 01:23:05.062930 * using HTTP/1.x 01:23:05.223428 * Server auth using Basic with user 'debbie' 01:23:05.617136 => Send header, 164 bytes (0xa4) 0000: GET http://github.com/ HTTP/1.1 0021: Host: github.com 0033: Authorization: Basic ZGViYmllOnNlY29uZA0= 005e: User-Agent: curl/8.17.0 0077: Accept: */* 0084: Proxy-Connection: Keep-Alive 00a2: 01:23:05.962889 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:23:06.265572 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:23:06.361777 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:23:06.387211 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:23:06.394542 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:23:06.401241 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:23:06.453499 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:23:06.509746 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:23:06.544610 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:23:06.549308 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:23:06.628136 <= Recv header, 2 bytes (0x2) 0000: 01:23:06.683520 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:23:06.790334 * we are done reading and this is set to close, stop send 01:23:06.819659 * abort upload 01:CMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind481 ../src/curl -q --trace-ascii log/7/trace481 --trace-time http://127.0.0.1:34897/481 --no-clobber -C 1 -o "log/7/481" > log/7/stdout481 2> log/7/stderr481 CMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind482 ../src/curl -q --trace-ascii log/8/trace482 --trace-time http://non-existing-host.haxx.se. --remove-on-error -C 1 -o "log/8/482" > log/8/stdout482 2> log/8/stderr482 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind479 ../src/curl -q --output log/3/curl479.out --include --trace-ascii log/3/trace479 --trace-time --netrc --netrc-file log/3/netrc479 -L -x http://127.0.0.1:46853/ http://a.com/ > log/3/stdout479 2> log/3/stderr479 23:07.302366 * shutting down connection #0 === End of file trace478 === Start of file valgrind478 ==255362== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind478 test 0481...[--no-clobber with --continue-at] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind481 ../src/curl -q --trace-ascii log/7/trace481 --trace-time http://127.0.0.1:34897/481 --no-clobber -C 1 -o "log/7/481" > log/7/stdout481 2> log/7/stderr481 valgrind ERROR ==255727== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 481 === Start of file 481 initial content === End of file 481 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind481 ../src/curl -q --trace-ascii log/7/trace481 --trace-time http://127.0.0.1:34897/481 --no-clobber -C 1 -o "log/7/481" > log/7/stdout481 2> log/7/stderr481 === End of file commands.log === Start of file http_server.log 01:22:29.831200 ====> Client connect 01:22:29.831361 accept_connection 3 returned 4 01:22:29.831446 accept_connection 3 returned 0 01:22:29.837634 Read 93 bytes 01:22:29.837722 Process 93 bytes request 01:22:29.837810 Got request: GET /verifiedserver HTTP/1.1 01:22:29.837874 Are-we-friendly question received 01:22:29.837982 Wrote request (93 bytes) input to log/7/server.input 01:22:29.838074 Identifying ourselves as friends 01:22:29.838254 Response sent (57 bytes) and written to log/7/server.response 01:22:29.838315 special request received, no persistency 01:22:29.838373 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 54892 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 481 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 === End of file server.response === Start of file stderr481 curl: --continue-at is mutually exclusive with --no-clobber curl: option -C: is badly used here curl: try 'curl --help' for more information === End of file stderr481 === Start of file valgrind481 ==255727== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind481 test 0482...[--remove-on-error with --continue-at] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind482 ../src/curl -q --trace-ascii log/8/trace482 --trace-time http://non-existing-host.haxx.se. --remove-on-error -C 1 -o "log/8/482" > log/8/stdout482 2> log/8/stderr482 valgrind ERROR ==256009== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 482 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind482 ../src/curl -q --trace-ascii log/8/trace482 --trace-time http://non-existing-host.haxx.se. --remove-on-error -C 1 -o "log/8/482" > log/8/stdout482 2> log/8/stderr482 === End of file commands.log === Start of file http_server.log 01:22:32.910157 ====> Client connect 01:22:32.910317 accept_connection 3 returned 4 01:22:32.910394 accept_connection 3 returned 0 01:22:32.917524 Read 93 bytes 01:22:32.917629 Process 93 bytes request 01:22:32.917720 Got request: GET /verifiedserver HTTP/1.1 01:22:32.917787 Are-we-friendly question received 01:22:32.917906 Wrote request (93 bytes) input to log/8/server.input 01:22:32.918000 Identifying ourselves as friends 01:22:32.918156 Response sent (57 bytes) and written to log/8/server.response 01:22:32.918220 special request received, no persistency 01:22:32.918275 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 34074 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 482 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 === End of file server.response === Start of file stderr482 curl: --continue-at is mutually exclusive with --remove-on-error curl: option -C: is badly used here curl: try 'curl --help' for more information === End of file stderr482 === Start of file valgrind482 ==256009== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind482 test 0479...[.netrc with redirect and default without password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind479 ../src/curl -q --output log/3/curl479.out --include --trace-ascii log/3/trace479 --trace-time --netrc --netrc-file log/3/netrc479 -L -x http://127.0.0.1:46853/ http://a.com/ > log/3/stdout479 2> log/3/stderr479 valgrind ERROR ==255541== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 479 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind479 ../src/curl -q --output log/3/curl479.out --include --trace-ascii log/3/trace479 --trace-time --netrc --netrc-file log/3/netrc479 -L -x http://127.0.0.1:46853/ http://a.com/ > log/3/stdout479 2> log/3/stderr479 === End of file commands.log === Start of file curl479.out HTTP/1.1 301 Follow this you fool Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Location: http://b.com/4790002 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 7 Connection: close target === End of file curl479.out === Start of file http_server.log 01:22:23.027134 ====> Client connect 01:22:23.027313 accept_connection 3 returned 4 01:22:23.027412 accept_connection 3 returned 0 01:22:23.037410 Read 93 bytes 01:22:23.037612 Process 93 bytes request 01:22:23.037712 Got request: GET /verifiedserver HTTP/1.1 01:22:23.037785 Are-we-friendly question received 01:22:23.037917 Wrote request (93 bytes) input to log/3/server.input 01:22:23.038022 Identifying ourselves as friends 01:22:23.038237 Response sent (57 bytes) and written to log/3/server.response 01:22:23.038308 special request received, no persistency 01:22:23.038372 ====> Client disconnect 0 01:23:11.294054 ====> Client connect 01:23:11.294194 accept_connection 3 returned 4 01:23:11.294272 accept_connection 3 returned 0 01:23:12.558039 Read 162 bytes 01:23:12.558235 Process 162 bytes request 01:23:12.558329 Got request: GET http://a.com/ HTTP/1.1 01:23:12.558429 No test number in path 01:23:12.558534 [log/3/server.cmd] cmdfile says testnum 479 01:23:12.558734 - request found to be complete (479) 01:23:12.559005 WrotCMD (6656): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind480 ../src/curl -q --output log/4/curl480.out --include --trace-ascii log/4/trace480 --trace-time --netrc --netrc-file log/4/netrc480 pop3://127.0.0.1:41397/480 > log/4/stdout480 2> log/4/stderr480 e request (162 bytes) input to log/3/server.input 01:23:12.559108 Send response test479 section 01:23:12.559533 Response sent (272 bytes) and written to log/3/server.response 01:23:12.559596 => persistent connection request ended, awaits new request 01:23:14.452518 Connection closed by client 01:23:14.452702 ====> Client disconnect 0 01:23:15.043066 ====> Client connect 01:23:15.043204 accept_connection 3 returned 4 01:23:15.043284 accept_connection 3 returned 0 01:23:15.146574 Read 149 bytes 01:23:15.146739 Process 149 bytes request 01:23:15.146835 Got request: GET http://b.com/4790002 HTTP/1.1 01:23:15.146906 Serve test number 479 part 2 01:23:15.147107 - request found to be complete (479) 01:23:15.147408 Wrote request (149 bytes) input to log/3/server.input 01:23:15.147499 Send response test479 section 01:23:15.147935 Response sent (223 bytes) and written to log/3/server.response 01:23:15.148002 => persistent connection request ended, awaits new request 01:23:15.501444 Connection closed by client 01:23:15.501611 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 57822 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file netrc479 machine a.com login alice password alicespassword default login bob === End of file netrc479 === Start of file server.cmd Testnum 479 === End of file server.cmd === Start of file server.input GET http://a.com/ HTTP/1.1 Host: a.com Authorization: Basic YWxpY2U6YWxpY2VzcGFzc3dvcmQ= User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://b.com/4790002 HTTP/1.1 Host: b.com Authorization: Basic Ym9iOg== User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 301 Follow this you fool Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Location: http://b.com/4790002 -foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 7 Connection: close target === End of file server.response === Start of file stderr479 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 6 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 100 7 100 7 0 0 1 0 0:00:07 0:00:06 0:00:01 15 === End of file stderr479 === Start of file trace479 01:23:11.363284 * Trying 127.0.0.1:46853... 01:23:12.279174 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 39238 01:23:12.410584 * using HTTP/1.x 01:23:12.570735 * Server auth using Basic with user 'alice' 01:23:12.985747 => Send header, 162 bytes (0xa2) 0000: GET http://a.com/ HTTP/1.1 001c: Host: a.com 0029: Authorization: Basic YWxpY2U6YWxpY2VzcGFzc3dvcmQ= 005c: User-Agent: curl/8.17.0 0075: Accept: */* 0082: Proxy-Connection: Keep-Alive 00a0: 01:23:13.385593 <= Recv header, 35 bytes (0x23) 0000: HTTP/1.1 301 Follow this you fool 01:23:13.703821 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:23:13.813830 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:23:13.841627 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:23:13.850170 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:23:13.857782 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:23:13.891489 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:23:13.957701 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:23:14.019821 <= Recv header, 32 bytes (0x20) 0000: Location: http://b.com/4790002 01:23:14.114778 <= Recv header, 2 bytes (0x2) 0000: 01:23:14.374673 * Request completely sent off 01:23:14.636739 * shutting down connection #0 01:23:15.148889 * Issue another request to this URL: 'http://b.com/4790002' 01:23:15.374959 * Hostname 127.0.0.1 was found in DNS cache 01:23:15.415636 * Trying 127.0.0.1:46853... 01:23:15.468061 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 41630 01:23:15.474875 * using HTTP/1.x 01:23:15.507329 * Server auth using Basic with user 'bob' 01:23:15.535694 => Send header, 149 bytes (0x95) 0000: GET http://b.com/4790002 HTTP/1.1 0023: Host: b.com 0030: Authorization: Basic Ym9iOg== 004f: User-Agent: curl/8.17.0 0068: Accept: */* 0075: Proxy-Connection: Keep-Alive 0093: 01:23:15.578149 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:23:15.584276 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:23:15.593201 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:23:15.598413 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:23:15.605126 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:23:15.610053 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:23:15.615729 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 7 01:23:15.622246 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:23:15.636939 <= Recv header, 2 bytes (0x2) 0000: 01:23:15.659120 <= Recv data, 7 bytes (0x7) 0000: target. 01:23:15.761253 * we are done reading and this is set to close, stop send 01:23:15.780221 * abort upload 01:23:15.875981 * shutting down connection #1 === End of file trace479 === Start of file valgrind479 ==255541== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind479 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/4/server/pop3_server.pid" --logfile "log/4/pop3_server.log" --logdir "log/4" --portfile "log/4/server/pop3_server.port" --srcdir "/build/curl/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 41397 (log/4/server/pop3_server.port) RUN: POP3 server is PID 255668 port 41397 * pid pop3 => 255668 255668 test 0480...[Reject .netrc with credentials using CRLF for POP3] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind480 ../src/curl -q --output log/4/curl480.out --include --trace-ascii log/4/trace480 --trace-time --netrc --netrc-file log/4/netrc480 pop3://127.0.0.1:41397/480 > log/4/stdout480 2> log/4/stderr480 valgrind ERROR ==255724== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 480 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind480 ../src/curl -q --output log/4/curl480.out --include --trace-ascii log/4/trace480 --trace-time --netrc --netrc-file log/4/netrc480 pop3://127.0.0.1:41397/480 > log/4/stdout480 2> log/4/stderr480 === End of file commands.log === Start of file netrc480 machine 127.0.0.1 login alice password "passCMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind484 ../src/curl -q --output log/1/curl484.out --include --trace-ascii log/1/trace484 --trace-time http://example.com/484 --etag-compare log/1/etag484 --etag-save log/1/etag484 --url http://example.net/fooo > log/1/stdout484 2> log/1/stderr484 CMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind485 ../src/curl -q --output log/2/curl485.out --include --trace-ascii log/2/trace485 --trace-time http://example.com/485 http://example.net/fooo --etag-save log/2/etag485 > log/2/stdout485 2> log/2/stderr485 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind483 ../src/curl -q --output log/5/curl483.out --include --trace-ascii log/5/trace483 --trace-time http://127.0.0.1:46263/483 -c log/5/c483 > log/5/stdout483 2> log/5/stderr483 word\r\ncommand" === End of file netrc480 === Start of file pop3_server.log 01:22:29.494690 POP3 server listens on port IPv4/41397 01:22:29.497839 logged pid 255668 in log/4/server/pop3_server.pid 01:22:29.498078 Awaiting input === End of file pop3_server.log === Start of file pop3_sockfilt.log 01:22:29.095230 Running IPv4 version 01:22:29.102587 Listening on port 41397 01:22:29.103034 Wrote pid 255678 to log/4/server/pop3_sockfilt.pid 01:22:29.103293 Wrote port 41397 to log/4/server/pop3_server.port 01:22:29.104033 Received PING (on stdin) === End of file pop3_sockfilt.log === Start of file server.cmd Testnum 480 === End of file server.cmd === Start of file stderr480 curl: (26) control code detected in .netrc credentials === End of file stderr480 === Start of file trace480 01:23:16.083699 * control code detected in .netrc credentials 01:23:16.485215 * closing connection #-1 === End of file trace480 === Start of file valgrind480 ==255724== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind480 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 484 in state 4 Runner 2 (id 185908) running test 485 in state 4 Runner 3 (id 185910) running test 489 in state 4 Runner 4 (id 185912) running test 490 in state 4 Runner 5 (id 185914) running test 483 in state 4 Runner 6 (id 185916) running test 486 in state 4 Runner 7 (id 185918) running test 487 in state 4 Runner 8 (id 185920) running test 488 in state 4 test 0484...[Use --etag-compare and -save with more than one URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind484 ../src/curl -q --output log/1/curl484.out --include --trace-ascii log/1/trace484 --trace-time http://example.com/484 --etag-compare log/1/etag484 --etag-save log/1/etag484 --url http://example.net/fooo > log/1/stdout484 2> log/1/stderr484 valgrind ERROR ==256323== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 484 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind484 ../src/curl -q --output log/1/curl484.out --include --trace-ascii log/1/trace484 --trace-time http://example.com/484 --etag-compare log/1/etag484 --etag-save log/1/etag484 --url http://example.net/fooo > log/1/stdout484 2> log/1/stderr484 === End of file commands.log === Start of file server.cmd Testnum 484 === End of file server.cmd === Start of file stderr484 curl: The etag options only work on a single URL curl: option --url: is badly used here curl: try 'curl --help' for more information === End of file stderr484 === Start of file valgrind484 ==256323== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind484 test 0485...[Use --etag-compare and -save with more than one URL, URLs specified first] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind485 ../src/curl -q --output log/2/curl485.out --include --trace-ascii log/2/trace485 --trace-time http://example.com/485 http://example.net/fooo --etag-save log/2/etag485 > log/2/stdout485 2> log/2/stderr485 valgrind ERROR ==256460== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 485 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind485 ../src/curl -q --output log/2/curl485.out --include --trace-ascii log/2/trace485 --trace-time http://example.com/485 http://example.net/fooo --etag-save log/2/etag485 > log/2/stdout485 2> log/2/stderr485 === End of file commands.log === Start of file server.cmd Testnum 485 === End of file server.cmd === Start of file stderr485 curl: The etag options only work on a single URL curl: option --etag-save: is badly used here curl: try 'curl --help' for more information === End of file stderr485 === Start of file valgrind485 ==256460== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind485 test 0483...[HTTP cookies with long expire dates] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind483 ../src/curl -q --output log/5/curl483.out --include --trace-ascii log/5/trace483 --trace-time http://127.0.0.1:46263/483 -c log/5/c483 > log/5/stdout483 2> log/5/stderr483 valgrind ERROR ==256189== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 483 === Start of file c483 # Netscape HTTP Cookie File # https://curl.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. 127.0.0.1 FALSE / FALSE 0 name4 value 127.0.0.1 FALSE / FALSE 1797211440 name3 value 127.0.0.1 FALSE / FALSE 0 name2 value 127.0.0.1 FALSE / FALSE 1797211440 name value === End of file c483 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind483 ../src/curl -q --output log/5/curl483.out --include --trace-ascii log/5/trace483 --trace-time http://127.0.0.1:46263/483 -c log/5/c483 > log/5/stdout483 2> log/5/stderr483 === End of file commands.log === Start of file curl483.out HTTP/1.1 200 OK Set-Cookie: name=value; expires=Fri Feb 13 11:56:27 GMT 2132 Set-Cookie: name2=value; expires=Fri Feb 13 11:56:27 ; 2132 Set-Cookie: name3=value; expires=Fri Feb 13 11:56:27 ...................................................GMT 2132 Set-Cookie: name4=value; expires=Fri Feb 13 11:56:27 ....................................................GMT 2132 Accept-Ranges: bytes Content-Length: 6 Connection: close -foo- === End of file curl483.out === Start of file http_server.log 01:22:48.360041 ====> Client connect 01:22:48.360206 accept_connection 3 returned 4 01:22:48.360288 accept_connection 3 returned 0 01:22:48.367392 Read 93 bytes 01:22:48.367485 Process 93 bytes request 01:22:48.367587 Got request: GET /verifiedserver HTTP/1.1 01:22:48.367657 Are-we-friendly question received 01:22:48.367770 Wrote request (93 bytes) input to log/5/server.input 01:22:48.367860 Identifying ourselves as friends 01:22:48.368022 Response sent (57 bytes) and written to log/5/server.response 01:22:48.368087 special request received, no persistency 01:22:48.368146 ====> Client disconnect 0 01:23:36.269360 ====> Client connect 01:23:36.269505 accept_connection 3 returned 4 01:23:36.269584 accept_connection 3 returned 0 01:23:37.273278 Read 82 bytes 01:23:37.273486 Process 82 bytes request 01:23:37.273580 Got request: GET /483 HTTP/1.1 01:23:37.273651 Serve test number 483 part 0 01:23:37.273839 - request found to be complete (483) 01:23:37.274102 Wrote request (82 bytes) input to log/5/server.input 01:23:37.274210 Send response test483 section 01:23:37.274597 Response sent (437 bytes) and written to log/5/server.response 01:23:37.274671 => persistent connection request ended, awaits new request 01:23:39.533082 Connection closed by client 01:23:39.533251 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 43342 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of filCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind486 ../src/curl -q --output log/6/curl486.out --include --trace-ascii log/6/trace486 --trace-time --netrc --netrc-file log/6/netrc486 -L -x http://127.0.0.1:38277/ http://a.com/ > log/6/stdout486 2> log/6/stderr486 e http_verify.out === Start of file server.cmd Testnum 483 === End of file server.cmd === Start of file server.input GET /483 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Set-Cookie: name=value; expires=Fri Feb 13 11:56:27 GMT 2132 Set-Cookie: name2=value; expires=Fri Feb 13 11:56:27 ; 2132 Set-Cookie: name3=value; expires=Fri Feb 13 11:56:27 ...................................................GMT 2132 Set-Cookie: name4=value; expires=Fri Feb 13 11:56:27 ....................................................GMT 2132 Accept-Ranges: bytes Content-Length: 6 Connection: close -foo- === End of file server.response === Start of file stderr483 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr483 === Start of file trace483 01:23:36.334591 * Trying 127.0.0.1:46263... 01:23:37.204956 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 34214 01:23:37.326602 * using HTTP/1.x 01:23:37.698474 => Send header, 82 bytes (0x52) 0000: GET /483 HTTP/1.1 0013: Host: 127.0.0.1:46263 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:23:38.046965 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:23:38.650668 * Added cookie name="value" for domain 127.0.0.1, path /, expire 1797211440 01:23:38.670293 <= Recv header, 62 bytes (0x3e) 0000: Set-Cookie: name=value; expires=Fri Feb 13 11:56:27 GMT 2132 01:23:38.819793 * Added cookie name2="value" for domain 127.0.0.1, path /, expire 0 01:23:38.823488 <= Recv header, 61 bytes (0x3d) 0000: Set-Cookie: name2=value; expires=Fri Feb 13 11:56:27 ; 2132 01:23:38.852201 * Added cookie name3="value" for domain 127.0.0.1, path /, expire 1797211440 01:23:38.854459 <= Recv header, 114 bytes (0x72) 0000: Set-Cookie: name3=value; expires=Fri Feb 13 11:56:27 ........... 0040: ........................................GMT 2132 01:23:38.874777 * Added cookie name4="value" for domain 127.0.0.1, path /, expire 0 01:23:38.876264 <= Recv header, 115 bytes (0x73) 0000: Set-Cookie: name4=value; expires=Fri Feb 13 11:56:27 ........... 0040: .........................................GMT 2132 01:23:38.894404 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:23:38.924214 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:23:38.969808 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:23:39.054068 <= Recv header, 2 bytes (0x2) 0000: 01:23:39.113749 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:23:39.220057 * we are done reading and this is set to close, stop send 01:23:39.248608 * abort upload 01:23:39.728980 * shutting down connection #0 === End of file trace483 === Start of file valgrind483 ==256189== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind483 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 491 in state 4 Runner 2 (id 185908) running test 492 in state 4 Runner 3 (id 185910) running test 489 in state 4 Runner 4 (id 185912) running test 490 in state 4 Runner 5 (id 185914) running test 493 in state 4 Runner 6 (id 185916) running test 486 in state 4 Runner 7 (id 185918) running test 487 in state 4 Runner 8 (id 185920) running test 488 in state 4 test 0486...[.netrc with redirect and "default" with no password or login] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind486 ../src/curl -q --output log/6/curl486.out --include --trace-ascii log/6/trace486 --trace-time --netrc --netrc-file log/6/netrc486 -L -x http://127.0.0.1:38277/ http://a.com/ > log/6/stdout486 2> log/6/stderr486 valgrind ERROR ==256625== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 486 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind486 ../src/curl -q --output log/6/curl486.out --include --trace-ascii log/6/trace486 --trace-time --netrc --netrc-file log/6/netrc486 -L -x http://127.0.0.1:38277/ http://a.com/ > log/6/stdout486 2> log/6/stderr486 === End of file commands.log === Start of file curl486.out HTTP/1.1 301 Follow this you fool Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Location: http://b.com/4860002 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 7 Connection: close target === End of file curl486.out === Start of file http_server.log 01:23:10.832007 ====> Client connect 01:23:10.832186 accept_connection 3 returned 4 01:23:10.832275 accept_connection 3 returned 0 01:23:10.839162 Read 93 bytes 01:23:10.839283 Process 93 bytes request 01:23:10.839384 Got request: GET /verifiedserver HTTP/1.1 01:23:10.839459 Are-we-friendly question received 01:23:10.839592 Wrote request (93 bytes) input to log/6/server.input 01:23:10.839705 Identifying ourselves as friends 01:23:10.839909 Response sent (57 bytes) and written to log/6/server.response 01:23:10.839980 special request received, no persistency 01:23:10.840046 ====> Client disconnect 0 01:23:59.027291 ====> Client connect 01:23:59.027440 accept_connection 3 returned 4 01:23:59.027524 accept_connection 3 returned 0 01:24:00.202708 Read 162 bytes 01:24:00.202915 Process 162 bytes request 01:24:00.203011 Got request: GET http://a.com/ HTTP/1.1 01:24:00.203085 No test number in path 01:24:00.203199 [log/6/server.cmd] cmdfile says testnum 486 01:24:00.203403 - request found to be complete (486) 01:24:00.203743 Wrote request (162 bytes) input to log/6/server.input 01:24:00.203877 Send response test486 section 01:24:00.204286 Response sent (272 bytes) and written to log/6/server.response 01:24:00.204354 => persistent connection request ended, awaits new request 01:24:01.965712 Connection closed by client 01:24:01.965938 ====> Client disconnect 0 01:24:02.540333 ====> Client connect 01:24:02.540495 accept_connection 3 returned 4 01:24:02.540590 accept_connection 3 returned 0 01:24:02.629955 Read 118 bytes 01:24:02.630150 Process 118 bytes request 01:24:02.630245 Got request: GET http://b.com/4860002 HTTP/1.1 01:24:02.630318 Serve test number 486 part 2 01:24:02.630542 - request found to be complete (486) 01:24:02.630777 Wrote request (118 bytes) input to log/6/server.input 01:24:02.630864 Send response test486 section 01:24:02.631238 Response sent (223 bytes) and written to log/6/server.response 01:24:02.631306 => persistent connection request ended, awaits new request 01:24:02.994141 Connection closed by client 01:24:02.994368 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 34182 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind487 ../src/curl -q --output log/7/curl487.out --include --trace-ascii log/7/trace487 --trace-time --variable what=not-base64-data --expand-url "http://127.0.0.1:34897/{{what:64dec}}/487" -g > log/7/stdout487 2> log/7/stderr487 of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file netrc486 machine a.com login alice password alicespassword default === End of file netrc486 === Start of file server.cmd Testnum 486 === End of file server.cmd === Start of file server.input GET http://a.com/ HTTP/1.1 Host: a.com Authorization: Basic YWxpY2U6YWxpY2VzcGFzc3dvcmQ= User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://b.com/4860002 HTTP/1.1 Host: b.com User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 301 Follow this you fool Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Location: http://b.com/4860002 -foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 7 Connection: close target === End of file server.response === Start of file stderr486 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 6 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 100 7 100 7 0 0 1 0 0:00:07 0:00:06 0:00:01 16 === End of file stderr486 === Start of file trace486 01:23:59.089725 * Trying 127.0.0.1:38277... 01:23:59.978030 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 44064 01:24:00.090973 * using HTTP/1.x 01:24:00.252659 * Server auth using Basic with user 'alice' 01:24:00.629942 => Send header, 162 bytes (0xa2) 0000: GET http://a.com/ HTTP/1.1 001c: Host: a.com 0029: Authorization: Basic YWxpY2U6YWxpY2VzcGFzc3dvcmQ= 005c: User-Agent: curl/8.17.0 0075: Accept: */* 0082: Proxy-Connection: Keep-Alive 00a0: 01:24:00.985645 <= Recv header, 35 bytes (0x23) 0000: HTTP/1.1 301 Follow this you fool 01:24:01.283539 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:24:01.380983 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:24:01.406751 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:24:01.414677 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:24:01.421896 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:24:01.453737 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:24:01.512315 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:24:01.569689 <= Recv header, 32 bytes (0x20) 0000: Location: http://b.com/4860002 01:24:01.656252 <= Recv header, 2 bytes (0x2) 0000: 01:24:01.898295 * Request completely sent off 01:24:02.152315 * shutting down connection #0 01:24:02.644871 * Issue another request to this URL: 'http://b.com/4860002' 01:24:02.786719 * Couldn't find host b.com in the log/6/netrc486 file; using defaults 01:24:02.879626 * Hostname 127.0.0.1 was found in DNS cache 01:24:02.921167 * Trying 127.0.0.1:38277... 01:24:02.960300 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 51858 01:24:02.966630 * using HTTP/1.x 01:24:03.020716 => Send header, 118 bytes (0x76) 0000: GET http://b.com/4860002 HTTP/1.1 0023: Host: b.com 0030: User-Agent: curl/8.17.0 0049: Accept: */* 0056: Proxy-Connection: Keep-Alive 0074: 01:24:03.061183 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:24:03.067436 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:24:03.075650 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:24:03.080961 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:24:03.087601 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:24:03.092551 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:24:03.098297 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 7 01:24:03.105357 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:24:03.119846 <= Recv header, 2 bytes (0x2) 0000: 01:24:03.141915 <= Recv data, 7 bytes (0x7) 0000: target. 01:24:03.242786 * we are done reading and this is set to close, stop send 01:24:03.263387 * abort upload 01:24:03.367520 * shutting down connection #1 === End of file trace486 === Start of file valgrind486 ==256625== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind486 test 0487...[Variable using 64dec with bad base64] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind487 ../src/curl -q --output log/7/curl487.out --include --trace-ascii log/7/trace487 --trace-time --variable what=not-base64-data --expand-url "http://127.0.0.1:34897/{{what:64dec}}/487" -g > log/7/stdout487 2> log/7/stderr487 valgrind ERROR ==256792== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 487 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind487 ../src/curl -q --output log/7/curl487.out --include --trace-ascii log/7/trace487 --trace-time --variable what=not-base64-data --expand-url "http://127.0.0.1:34897/{{what:64dec}}/487" -g > log/7/stdout487 2> log/7/stderr487 === End of file commands.log === Start of file curl487.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl487.out === Start of file http_server.log 01:23:15.234379 ====> Client connect 01:23:15.234537 accept_connection 3 returned 4 01:23:15.234609 accept_connection 3 returned 0 01:23:15.241479 Read 93 bytes 01:23:15.241594 Process 93 bytes request 01:23:15.241680 Got request: GET /verifiedserver HTTP/1.1 01:23:15.241742 Are-we-friendly question received 01:23:15.241858 Wrote request (93 bytes) input to log/7/server.input 01:23:15.241949 Identifying ourselves as friends 01:23:15.242121 Response sent (57 bytes) and written to log/7/server.response 01:23:15.242182 special request received, no persistency 01:23:15.242233 ====> Client disconnect 0 01:24:02.948138 ====> Client connect 01:24:02.948279 accept_connection 3 returned 4 01:24:02.948353 accept_connection 3 returned 0 01:24:03.919314 Read 95 bytes 01:24:03.919561 Process 95 bytes request 01:24:03.919663 Got request: GET /[64dec-fail]/487 HTTP/1.1 01:24:03.919731 Serve test number 487 part 0 01:24:03.919895 - request found to be complete (487) 01:24:03.920138 Wrote request (95 bytes) input to log/7/server.input 01:24:03.920246 Send response test487 section 01:24:03.920682 Response sent (267 bytes) and written to log/7/server.response 01:24:03.920751 => persistent connection request ended, awaits new request 01:24:05.763050 Connection closed by client 01:24:05.763214 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 54700 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind488 ../src/curl -q --output log/8/curl488.out --include --trace-ascii log/8/trace488 --trace-time --output-dir log/8 --url @- log/8/stdout488 2> log/8/stderr488 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 487 === End of file server.cmd === Start of file server.input GET /[64dec-fail]/487 HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr487 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr487 === Start of file trace487 01:24:02.982828 * Trying 127.0.0.1:34897... 01:24:03.883810 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 37736 01:24:04.001237 * using HTTP/1.x 01:24:04.342548 => Send header, 95 bytes (0x5f) 0000: GET /[64dec-fail]/487 HTTP/1.1 0020: Host: 127.0.0.1:34897 0037: User-Agent: curl/8.17.0 0050: Accept: */* 005d: 01:24:04.675099 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:24:04.967074 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:24:05.062678 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:24:05.090290 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:24:05.098237 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:24:05.105867 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:24:05.137287 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:24:05.191403 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:24:05.225651 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:24:05.230298 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:24:05.307665 <= Recv header, 2 bytes (0x2) 0000: 01:24:05.362071 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:24:05.471360 * we are done reading and this is set to close, stop send 01:24:05.501202 * abort upload 01:24:05.950263 * shutting down connection #0 === End of file trace487 === Start of file valgrind487 ==256792== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind487 test 0488...[Download two URLs provided on stdin] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind488 ../src/curl -q --output log/8/curl488.out --include --trace-ascii log/8/trace488 --trace-time --output-dir log/8 --url @- log/8/stdout488 2> log/8/stderr488 valgrind ERROR ==256972== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 488 === Start of file b HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file b === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind488 ../src/curl -q --output log/8/curl488.out --include --trace-ascii log/8/trace488 --trace-time --output-dir log/8 --url @- log/8/stdout488 2> log/8/stderr488 === End of file commands.log === Start of file http_server.log 01:23:18.228860 ====> Client connect 01:23:18.229013 accept_connection 3 returned 4 01:23:18.229088 accept_connection 3 returned 0 01:23:18.237230 Read 93 bytes 01:23:18.237328 Process 93 bytes request 01:23:18.237411 Got request: GET /verifiedserver HTTP/1.1 01:23:18.237472 Are-we-friendly question received 01:23:18.237582 Wrote request (93 bytes) input to log/8/server.input 01:23:18.237674 Identifying ourselves as friends 01:23:18.237840 Response sent (57 bytes) and written to log/8/server.response 01:23:18.237899 special request received, no persistency 01:23:18.237953 ====> Client disconnect 0 01:24:05.854744 ====> Client connect 01:24:05.854881 accept_connection 3 returned 4 01:24:05.854953 accept_connection 3 returned 0 01:24:06.873600 Read 80 bytes 01:24:06.873776 Process 80 bytes request 01:24:06.873873 Got request: GET /a HTTP/1.1 01:24:06.874018 No test number in path 01:24:06.874168 [log/8/server.cmd] cmdfile says testnum 488 01:24:06.874349 - request found to be complete (488) 01:24:06.874596 Wrote request (80 bytes) input to log/8/server.input 01:24:06.874697 Send response test488 section 01:24:06.875047 Response sent (267 bytes) and written to log/8/server.response 01:24:06.875113 => persistent connection request ended, awaits new request 01:24:08.312112 Connection closed by client 01:24:08.312314 ====> Client disconnect 0 01:24:09.339255 ====> Client connect 01:24:09.339407 accept_connection 3 returned 4 01:24:09.339481 accept_connection 3 returned 0 01:24:09.400149 Read 80 bytes 01:24:09.400340 Process 80 bytes request 01:24:09.400459 Got request: GET /b HTTP/1.1 01:24:09.400541 No test number in path 01:24:09.400653 [log/8/server.cmd] cmdfile says testnum 488 01:24:09.400859 - request found to be complete (488) 01:24:09.401075 Wrote request (80 bytes) input to log/8/server.input 01:24:09.401166 Send response test488 section 01:24:09.401559 Response sent (267 bytes) and written to log/8/server.response 01:24:09.401633 => persistent connection request ended, awaits new request 01:24:10.370429 Connection closed by client 01:24:10.370585 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 50058 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 488 === End of file server.cmd === Start of file server.input GET /a HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* GET /b HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr488 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind489 ../src/curl -q --output log/3/curl489.out --include --trace-ascii log/3/trace489 --trace-time --output-dir log/3 --url @log/3/urls > log/3/stdout489 2> log/3/stderr489 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0Warning: Failed to open the file log/8/log/8/curl488.out: No such file or Warning: directory 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (23) client returned ERROR on write of 17 bytes % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 6 100 6 0 0 6 0 0:00:01 --:--:-- 0:00:01 7 100 6 100 6 0 0 5 0 0:00:01 0:00:01 --:--:-- 6 === End of file stderr488 === Start of file stdin-for-488 http://127.0.0.1:39461/a http://127.0.0.1:39461/b === End of file stdin-for-488 === Start of file trace488 01:24:05.923568 * Trying 127.0.0.1:39461... 01:24:06.801706 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 45060 01:24:06.933338 * using HTTP/1.x 01:24:07.301474 => Send header, 80 bytes (0x50) 0000: GET /a HTTP/1.1 0011: Host: 127.0.0.1:39461 0028: User-Agent: curl/8.17.0 0041: Accept: */* 004e: 01:24:07.663840 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:24:08.173732 * client returned ERROR on write of 17 bytes 01:24:08.601963 * closing connection #0 01:24:09.663471 * Hostname 127.0.0.1 was found in DNS cache 01:24:09.719744 * Trying 127.0.0.1:39461... 01:24:09.758270 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 45072 01:24:09.766151 * using HTTP/1.x 01:24:09.790914 => Send header, 80 bytes (0x50) 0000: GET /b HTTP/1.1 0011: Host: 127.0.0.1:39461 0028: User-Agent: curl/8.17.0 0041: Accept: */* 004e: 01:24:09.820590 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:24:09.933235 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:24:10.017578 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:24:10.044905 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:24:10.052330 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:24:10.058822 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:24:10.090635 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:24:10.148897 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:24:10.190419 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:24:10.196192 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:24:10.282957 <= Recv header, 2 bytes (0x2) 0000: 01:24:10.333270 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:24:10.436878 * we are done reading and this is set to close, stop send 01:24:10.465965 * abort upload 01:24:10.652305 * shutting down connection #1 === End of file trace488 === Start of file valgrind488 ==256972== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind488 test 0489...[Download two URLs provided in a file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind489 ../src/curl -q --output log/3/curl489.out --include --trace-ascii log/3/trace489 --trace-time --output-dir log/3 --url @log/3/urls > log/3/stdout489 2> log/3/stderr489 valgrind ERROR ==257103== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 489 === Start of file b HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file b === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind489 ../src/curl -q --output log/3/curl489.out --include --trace-ascii log/3/trace489 --trace-time --output-dir log/3 --url @log/3/urls > log/3/stdout489 2> log/3/stderr489 === End of file commands.log === Start of file http_server.log 01:23:19.238170 ====> Client connect 01:23:19.238355 accept_connection 3 returned 4 01:23:19.238431 accept_connection 3 returned 0 01:23:19.244883 Read 93 bytes 01:23:19.245046 Process 93 bytes request 01:23:19.245146 Got request: GET /verifiedserver HTTP/1.1 01:23:19.245224 Are-we-friendly question received 01:23:19.245357 Wrote request (93 bytes) input to log/3/server.input 01:23:19.245462 Identifying ourselves as friends 01:23:19.245646 Response sent (57 bytes) and written to log/3/server.response 01:23:19.245719 special request received, no persistency 01:23:19.245779 ====> Client disconnect 0 01:24:06.770763 ====> Client connect 01:24:06.770921 accept_connection 3 returned 4 01:24:06.770998 accept_connection 3 returned 0 01:24:07.807193 Read 80 bytes 01:24:07.807426 Process 80 bytes request 01:24:07.807523 Got request: GET /a HTTP/1.1 01:24:07.807596 No test number in path 01:24:07.807716 [log/3/server.cmd] cmdfile says testnum 489 01:24:07.807915 - request found to be complete (489) 01:24:07.808178 Wrote request (80 bytes) input to log/3/server.input 01:24:07.808290 Send response test489 section 01:24:07.808748 Response sent (267 bytes) and written to log/3/server.response 01:24:07.808819 => persistent connection request ended, awaits new request 01:24:09.200175 Connection closed by client 01:24:09.200359 ====> Client disconnect 0 01:24:10.266138 ====> Client connect 01:24:10.266270 accept_connection 3 returned 4 01:24:10.266352 accept_connection 3 returned 0 01:24:10.330446 Read 80 bytes 01:24:10.330632 Process 80 bytes request 01:24:10.330732 Got request: GET /b HTTP/1.1 01:24:10.330808 No test number in path 01:24:10.330917 [log/3/server.cmd] cmdfile says testnum 489 01:24:10.331112 - request found to be complete (489) 01:24:10.331320 Wrote request (80 bytes) input to log/3/server.input 01:24:10.331408 Send response test489 section 01:24:10.331853 Response sent (267 bytes) and written to log/3/server.response 01:24:10.331925 => persistent connection request ended, awaits new request 01:24:11.395370 Connection closed by client 01:24:11.395589 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 41646 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 489 === End of file server.cmd === Start of file server.input GET /a HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* GET /b HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr489 % Total % Received % Xferd Average Speed Time Time Time Current CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind490 ../src/curl -q --output log/4/curl490.out --include --trace-ascii log/4/trace490 --trace-time http://127.0.0.1:42621/490 -T '{log/4/in490,log/4/in490}' > log/4/stdout490 2> log/4/stderr490 Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0Warning: Failed to open the file log/3/log/3/curl489.out: No such file or Warning: directory 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (23) client returned ERROR on write of 17 bytes % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 6 100 6 0 0 5 0 0:00:01 0:00:01 --:--:-- 6 100 6 100 6 0 0 5 0 0:00:01 0:00:01 --:--:-- 6 === End of file stderr489 === Start of file trace489 01:24:06.833373 * Trying 127.0.0.1:46853... 01:24:07.735861 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 48950 01:24:07.869596 * using HTTP/1.x 01:24:08.234314 => Send header, 80 bytes (0x50) 0000: GET /a HTTP/1.1 0011: Host: 127.0.0.1:46853 0028: User-Agent: curl/8.17.0 0041: Accept: */* 004e: 01:24:08.584064 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:24:09.061006 * client returned ERROR on write of 17 bytes 01:24:09.482093 * closing connection #0 01:24:10.588677 * Hostname 127.0.0.1 was found in DNS cache 01:24:10.645840 * Trying 127.0.0.1:46853... 01:24:10.686911 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 48962 01:24:10.694601 * using HTTP/1.x 01:24:10.719918 => Send header, 80 bytes (0x50) 0000: GET /b HTTP/1.1 0011: Host: 127.0.0.1:46853 0028: User-Agent: curl/8.17.0 0041: Accept: */* 004e: 01:24:10.743027 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:24:10.835521 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:24:10.933421 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:24:10.960826 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:24:10.969598 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:24:10.978696 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:24:11.017369 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:24:11.087138 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:24:11.127426 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:24:11.132781 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:24:11.231861 <= Recv header, 2 bytes (0x2) 0000: 01:24:11.294034 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:24:11.430080 * we are done reading and this is set to close, stop send 01:24:11.468179 * abort upload 01:24:11.672418 * shutting down connection #1 === End of file trace489 === Start of file urls http://127.0.0.1:46853/a http://127.0.0.1:46853/b === End of file urls === Start of file valgrind489 ==257103== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind489 test 0490...[Two globbed HTTP PUTs] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind490 ../src/curl -q --output log/4/curl490.out --include --trace-ascii log/4/trace490 --trace-time http://127.0.0.1:42621/490 -T '{log/4/in490,log/4/in490}' > log/4/stdout490 2> log/4/stderr490 valgrind ERROR ==257216== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 490 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind490 ../src/curl -q --output log/4/curl490.out --include --trace-ascii log/4/trace490 --trace-time http://127.0.0.1:42621/490 -T '{log/4/in490,log/4/in490}' > log/4/stdout490 2> log/4/stderr490 === End of file commands.log === Start of file curl490.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl490.out === Start of file http_server.log 01:23:21.218987 ====> Client connect 01:23:21.219155 accept_connection 3 returned 4 01:23:21.219240 accept_connection 3 returned 0 01:23:21.227255 Read 93 bytes 01:23:21.227358 Process 93 bytes request 01:23:21.227460 Got request: GET /verifiedserver HTTP/1.1 01:23:21.227532 Are-we-friendly question received 01:23:21.227660 Wrote request (93 bytes) input to log/4/server.input 01:23:21.227768 Identifying ourselves as friends 01:23:21.227940 Response sent (57 bytes) and written to log/4/server.response 01:23:21.228009 special request received, no persistency 01:23:21.228071 ====> Client disconnect 0 01:24:08.559962 ====> Client connect 01:24:08.560106 accept_connection 3 returned 4 01:24:08.560185 accept_connection 3 returned 0 01:24:09.867438 Read 112 bytes 01:24:09.867625 Process 112 bytes request 01:24:09.867735 Got request: PUT /490 HTTP/1.1 01:24:09.867814 Serve test number 490 part 0 01:24:09.868015 - request found to be complete (490) 01:24:09.868187 Found Content-Length: 10 in the request 01:24:09.868362 Wrote request (112 bytes) input to log/4/server.input 01:24:09.868477 Send response test490 section 01:24:09.868861 Response sent (256 bytes) and written to log/4/server.response 01:24:09.868935 => persistent connection request ended, awaits new request 01:24:11.973890 Connection closed by client 01:24:11.974103 ====> Client disconnect 0 01:24:12.923600 ====> Client connect 01:24:12.923737 accept_connection 3 returned 4 01:24:12.923821 accept_connection 3 returned 0 01:24:12.992000 Read 112 bytes 01:24:12.992196 Process 112 bytes request 01:24:12.992293 Got request: PUT /490 HTTP/1.1 01:24:12.992364 Serve test number 490 part 0 01:24:12.992538 - request found to be complete (490) 01:24:12.992700 Found Content-Length: 10 in the request 01:24:12.992816 Wrote request (112 bytes) input to log/4/server.input 01:24:12.992907 Send response test490 section 01:24:12.993256 Response sent (256 bytes) and written to log/4/server.response 01:24:12.993324 => persistent connection request ended, awaits new request 01:24:13.183771 Connection closed by client 01:24:13.183973 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 40888 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file in490 surprise === End of file in490 === Start of file server.cmd Testnum 490 === End of file server.cmd === Start of file server.input PUT /490 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* Content-Length: 10 surprise PUT /490 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* Content-Length: 10 surprise === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-3946CMD (6656): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind491 ../src/curl -q --output log/1/curl491.out --include --trace-ascii log/1/trace491 --trace-time http://127.0.0.1:40641/491 -T '{log/1/in491,log/1/bad491}' > log/1/stdout491 2> log/1/stderr491 2498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr490 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 10 0 0 100 10 0 2 0:00:05 0:00:03 0:00:02 3 100 16 100 6 100 10 1 1 0:00:10 0:00:05 0:00:05 4 100 16 100 6 100 10 1 1 0:00:10 0:00:05 0:00:05 4 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 10 0 0 100 10 0 38 --:--:-- --:--:-- --:--:-- 69 100 16 100 6 100 10 15 26 --:--:-- --:--:-- --:--:-- 60 === End of file stderr490 === Start of file trace490 01:24:07.620406 * Trying 127.0.0.1:42621... 01:24:08.580058 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 53692 01:24:08.721439 * using HTTP/1.x 01:24:09.298151 => Send header, 102 bytes (0x66) 0000: PUT /490 HTTP/1.1 0013: Host: 127.0.0.1:42621 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Content-Length: 10 0064: 01:24:09.419629 => Send data, 10 bytes (0xa) 0000: surprise!. 01:24:09.494333 * upload completely sent off: 10 bytes 01:24:09.793193 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:24:10.123474 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:24:10.235008 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:24:10.266121 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:24:10.276255 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:24:10.284346 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:24:10.319056 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:24:10.381769 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:24:10.425371 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:24:10.431623 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:24:10.524638 <= Recv header, 1 bytes (0x1) 0000: . 01:24:10.586691 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:24:11.153079 * shutting down connection #0 01:24:12.246771 * Hostname 127.0.0.1 was found in DNS cache 01:24:12.304423 * Trying 127.0.0.1:42621... 01:24:12.339948 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 49566 01:24:12.346544 * using HTTP/1.x 01:24:12.382332 => Send header, 102 bytes (0x66) 0000: PUT /490 HTTP/1.1 0013: Host: 127.0.0.1:42621 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Content-Length: 10 0064: 01:24:12.395798 => Send data, 10 bytes (0xa) 0000: surprise!. 01:24:12.402956 * upload completely sent off: 10 bytes 01:24:12.438578 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:24:12.452109 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:24:12.461254 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:24:12.466456 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:24:12.473014 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:24:12.477831 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:24:12.483285 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:24:12.489886 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:24:12.495382 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:24:12.499804 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:24:12.508206 <= Recv header, 1 bytes (0x1) 0000: . 01:24:12.513426 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:24:12.556261 * shutting down connection #1 === End of file trace490 === Start of file valgrind490 ==257216== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind490 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 491 in state 4 Runner 2 (id 185908) running test 492 in state 4 Runner 3 (id 185910) running test 497 in state 4 Runner 4 (id 185912) running test 498 in state 4 Runner 5 (id 185914) running test 493 in state 4 Runner 6 (id 185916) running test 494 in state 4 Runner 7 (id 185918) running test 495 in state 4 Runner 8 (id 185920) running test 496 in state 4 test 0491...[Two globbed HTTP PUTs, the second upload file is missing] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind491 ../src/curl -q --output log/1/curl491.out --include --trace-ascii log/1/trace491 --trace-time http://127.0.0.1:40641/491 -T '{log/1/in491,log/1/bad491}' > log/1/stdout491 2> log/1/stderr491 valgrind ERROR ==257452== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 491 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind491 ../src/curl -q --output log/1/curl491.out --include --trace-ascii log/1/trace491 --trace-time http://127.0.0.1:40641/491 -T '{log/1/in491,log/1/bad491}' > log/1/stdout491 2> log/1/stderr491 === End of file commands.log === Start of file curl491.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl491.out === Start of file http_server.log 01:23:40.518051 ====> Client connect 01:23:40.518227 accept_connection 3 returned 4 01:23:40.518305 accept_connection 3 returned 0 01:23:40.525577 Read 93 bytes 01:23:40.525676 Process 93 bytes request 01:23:40.525771 Got request: GET /verifiedserver HTTP/1.1 01:23:40.525841 Are-we-friendly question received 01:23:40.525962 Wrote request (93 bytes) input to log/1/server.input 01:23:40.526057 Identifying ourselves as friends 01:23:40.526226 Response sent (57 bytes) and written to log/1/server.response 01:23:40.526290 special request received, no persistency 01:23:40.526349 ====> Client disconnect 0 01:24:28.459055 ====> Client connect 01:24:28.459209 accept_connection 3 returned 4 01:24:28.459293 accept_connection 3 returned 0 01:24:29.668103 Read 112 bytes 01:24:29.668297 Process 112 bytes request 01:24:29.668391 Got request: PUT /491 HTTP/1.1 01:24:29.668464 Serve test number 491 part 0 01:24:29.668644 - request found to be complete (491) 01:24:29.668799 Found Content-Length: 10 in the request 01:24:29.668958 Wrote request (112 bytes) input to log/1/server.input 01:24:29.669062 Send response test491 section 01:24:29.669428 Response sent (256 bytes) and written to log/1/server.response 01:24:29.669504 => persistent connection request ended, awaits new request 01:24:31.691443 Connection closed by client 01:24:31.691636 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 42612 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind492 ../src/curl -q --output log/2/curl492.out --include --trace-ascii log/2/trace492 --trace-time 'http://127.0.0.1:39863/{one,two}/' -T '{log/2/first492,log/2/second492}' -H "Testno: 492" > log/2/stdout492 2> log/2/stderr492 ROOLZ: 185951 === End of file http_verify.out === Start of file in491 surprise === End of file in491 === Start of file server.cmd Testnum 491 === End of file server.cmd === Start of file server.input PUT /491 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* Content-Length: 10 surprise === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr491 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 16 100 6 100 10 1 2 0:00:06 0:00:04 0:00:02 4 100 16 100 6 100 10 1 2 0:00:06 0:00:04 0:00:02 4 100 16 100 6 100 10 1 2 0:00:06 0:00:04 0:00:02 4 curl: cannot open 'log/1/bad491' curl: try 'curl --help' for more information curl: (26) Failed to open/read local data from file/application === End of file stderr491 === Start of file trace491 01:24:27.531517 * Trying 127.0.0.1:40641... 01:24:28.444601 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 51306 01:24:28.577328 * using HTTP/1.x 01:24:29.095216 => Send header, 102 bytes (0x66) 0000: PUT /491 HTTP/1.1 0013: Host: 127.0.0.1:40641 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: Content-Length: 10 0064: 01:24:29.194555 => Send data, 10 bytes (0xa) 0000: surprise!. 01:24:29.275157 * upload completely sent off: 10 bytes 01:24:29.546261 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:24:29.852990 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:24:29.953078 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:24:29.978825 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:24:29.986290 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:24:29.992999 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:24:30.025842 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:24:30.084484 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:24:30.120258 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:24:30.125084 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:24:30.203217 <= Recv header, 1 bytes (0x1) 0000: . 01:24:30.262365 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:24:30.878708 * shutting down connection #0 === End of file trace491 === Start of file valgrind491 ==257452== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind491 test 0492...[Two globbed HTTP PUTs to two globbed URLs] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind492 ../src/curl -q --output log/2/curl492.out --include --trace-ascii log/2/trace492 --trace-time 'http://127.0.0.1:39863/{one,two}/' -T '{log/2/first492,log/2/second492}' -H "Testno: 492" > log/2/stdout492 2> log/2/stderr492 valgrind ERROR ==257632== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 492 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind492 ../src/curl -q --output log/2/curl492.out --include --trace-ascii log/2/trace492 --trace-time 'http://127.0.0.1:39863/{one,two}/' -T '{log/2/first492,log/2/second492}' -H "Testno: 492" > log/2/stdout492 2> log/2/stderr492 === End of file commands.log === Start of file curl492.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl492.out === Start of file first492 first 492 contents === End of file first492 === Start of file http_server.log 01:23:47.607498 ====> Client connect 01:23:47.607656 accept_connection 3 returned 4 01:23:47.607731 accept_connection 3 returned 0 01:23:47.615065 Read 93 bytes 01:23:47.615183 Process 93 bytes request 01:23:47.615270 Got request: GET /verifiedserver HTTP/1.1 01:23:47.615334 Are-we-friendly question received 01:23:47.615445 Wrote request (93 bytes) input to log/2/server.input 01:23:47.615536 Identifying ourselves as friends 01:23:47.615710 Response sent (57 bytes) and written to log/2/server.response 01:23:47.615771 special request received, no persistency 01:23:47.615825 ====> Client disconnect 0 01:24:34.992835 ====> Client connect 01:24:34.992973 accept_connection 3 returned 4 01:24:34.993056 accept_connection 3 returned 0 01:24:36.262953 Read 143 bytes 01:24:36.263144 Process 143 bytes request 01:24:36.263238 Got request: PUT /one/first492 HTTP/1.1 01:24:36.263339 No test number in path 01:24:36.263445 [log/2/server.cmd] cmdfile says testnum 492 01:24:36.263638 - request found to be complete (492) 01:24:36.263815 Found Content-Length: 19 in the request 01:24:36.263981 Wrote request (143 bytes) input to log/2/server.input 01:24:36.264083 Send response test492 section 01:24:36.264432 Response sent (256 bytes) and written to log/2/server.response 01:24:36.264497 => persistent connection request ended, awaits new request 01:24:38.224091 Connection closed by client 01:24:38.224287 ====> Client disconnect 0 01:24:39.162975 ====> Client connect 01:24:39.163109 accept_connection 3 returned 4 01:24:39.163190 accept_connection 3 returned 0 01:24:39.229795 Read 143 bytes 01:24:39.230007 Process 143 bytes request 01:24:39.230103 Got request: PUT /two/first492 HTTP/1.1 01:24:39.230179 No test number in path 01:24:39.230282 [log/2/server.cmd] cmdfile says testnum 492 01:24:39.230490 - request found to be complete (492) 01:24:39.230662 Found Content-Length: 19 in the request 01:24:39.230777 Wrote request (143 bytes) input to log/2/server.input 01:24:39.230863 Send response test492 section 01:24:39.231225 Response sent (256 bytes) and written to log/2/server.response 01:24:39.231293 => persistent connection request ended, awaits new request 01:24:39.403263 Connection closed by client 01:24:39.403430 ====> Client disconnect 0 01:24:39.520488 ====> Client connect 01:24:39.520611 accept_connection 3 returned 4 01:24:39.520688 accept_connection 3 returned 0 01:24:39.530339 Read 145 bytes 01:24:39.530452 Process 145 bytes request 01:24:39.530546 Got request: PUT /one/second492 HTTP/1.1 01:24:39.530615 No test number in path 01:24:39.530712 [log/2/server.cmd] cmdfile says testnum 492 01:24:39.530905 - request found to be complete (492) 01:24:39.531065 Found Content-Length: 20 in the request 01:24:39.531171 Wrote request (145 bytes) input to log/2/server.input 01:24:39.531253 Send response test492 section 01:24:39.531602 Response sent (256 bytes) and written to log/2/server.response 01:24:39.531668 => persistent connection request ended, awaits new request 01:24:39.620365 Connection closed by client 01:24:39.620521 ====> Client disconnect 0 01:24:39.684402 ====> Client connect 01:24:39.684527 accept_connection 3 returned 4 01:24:39.684602 accept_connection 3 returned 0 01:24:39.695055 Read 145 bytes 01:24:39.695176 Process 145 bytes request 01:24:39.695269 Got request: PUT /two/second492 HTTP/1.1 01:24:39.695337 No test number in path 01:24:39.695437 [log/2/server.cmd] cmdfile says testnum 492 01:24:39.695625 - request found to be complete (492) 01:24:39.695787 Found Content-Length: 20 in the request 01:24:39.695896 Wrote request (145 bytes) input to log/2/server.input 01:24:39.695973 Send response test492 section 01:24:39.696322 Response sent (256 bytes) and written to log/2/server.response 01:24:39.696385 => persistent connection request ended, awaits new request 01:24:39.783697 Connection closed by client 01:24:39.783847 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 51662 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file second492 second 492 contents === End of file second492 === Start of file server.cmd Testnum 492 === End of file server.cmd === Start of file server.input PUT /one/first492 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* Testno: 492 Content-Length: 19 first 492 contents PUT /two/first492 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* Testno: 492 Content-Length: 19 first 492 contents PUT /one/second492 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* Testno: 492 Content-Length: 20 second 492 contents PUT /two/second492 HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* Testno: 492 Content-Length: 20 second 492 contents === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr492 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 19 0 0 100 19 0 5 0:00:03 0:00:03 --:--:-- 7 100 25 100 6 100 19 1 4 0:00:06 0:00:04 0:00:02 7 100 25 100 6 100 19 1 3 0:00:06 0:00:04 0:00:02 6 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 25 100 6 100 19 17 54 --:--:-- --:--:-- --:--:-- 102 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 26 100 6 100 20 46 153 --:--:-- --:--:-- --:--:-- 234 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 26 100 6 100 20 49 163 --:--:-- --:--:-- --:--:-- 236 === End of file stderr492 === Start of file trace492 01:24:34.071857 * Trying 127.0.0.1:39863... 01:24:34.971063 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 43200 01:24:35.085590 * using HTTP/1.x 01:24:35.689077 => Send header, 124 bytes (0x7c) 0000: PUT /one/first492 HTTP/1.1 001c: Host: 127.0.0.1:39863 0033: User-Agent: curl/8.17.0 004c: Accept: */* 0059: Testno: 492 0066: Content-Length: 19 007a: 01:24:35.783707 => Send data, 19 bytes (0x13) 0000: first 492 contents. 01:24:35.858884 * upload completely sent off: 19 bytes 01:24:36.138985 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:24:36.468166 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:24:36.568773 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:24:36.592512 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:24:36.601519 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:24:36.609896 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:24:36.641216 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:24:36.688860 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:24:36.724838 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:24:36.729938 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:24:36.809726 <= Recv header, 1 bytes (0x1) 0000: . 01:24:36.866588 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:24:37.418980 * shutting down connection #0 01:24:38.489566 * Hostname 127.0.0.1 was found in DNS cache 01:24:38.543277 * Trying 127.0.0.1:39863... 01:24:38.576352 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 43216 01:24:38.582863 * using HTTP/1.x 01:24:38.620331 => Send header, 124 bytes (0x7c) 0000: PUT /two/first492 HTTP/1.1 001c: Host: 127.0.0.1:39863 0033: User-Agent: curl/8.17.0 004c: Accept: */* 0059: Testno: 492 0066: Content-Length: 19 007a: 01:24:38.635361 => Send data, 19 bytes (0x13) 0000: first 492 contents. 01:24:38.642729 * upload completely sent off: 19 bytes 01:24:38.660638 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:24:38.673653 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:24:38.682718 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:24:38.688171 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:24:38.694780 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:24:38.699561 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:24:38.704869 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:24:38.711271 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:24:38.717011 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:24:38.721282 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:24:38.729228 <= Recv header, 1 bytes (0x1) 0000: . 01:24:38.734238 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:24:38.777443 * shutting down connection #1 01:24:38.879349 * Hostname 127.0.0.1 was found in DNS cache 01:24:38.905520 * Trying 127.0.0.1:39863... 01:24:38.910471 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 43222 01:24:38.912393 * using HTTP/1.x 01:24:38.918961 => Send header, 125 bytes (0x7d) 0000: PUT /one/second492 HTTP/1.1 001d: Host: 127.0.0.1:39863 0034: User-Agent: curl/8.17.0 004d: Accept: */* 005a: Testno: 492 0067: Content-Length: 20 007b: 01:24:38.932891 => Send data, 20 bytes (0x14) 0000: seconCMD (14336): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind493 ../src/curl -q --include --trace-ascii log/5/trace493 --trace-time -x http://127.0.0.1:46263 http://this.hsts.example/493 --hsts log/5/input493 -w '%{url_effective}\n' > log/5/stdout493 2> log/5/stderr493 d 492 contents. 01:24:38.936600 * upload completely sent off: 20 bytes 01:24:38.942281 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:24:38.946691 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:24:38.952365 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:24:38.956798 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:24:38.963182 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:24:38.967665 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:24:38.971603 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:24:38.975361 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:24:38.979177 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:24:38.983360 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:24:38.987172 <= Recv header, 1 bytes (0x1) 0000: . 01:24:38.988919 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:24:39.003149 * shutting down connection #2 01:24:39.044151 * Hostname 127.0.0.1 was found in DNS cache 01:24:39.070015 * Trying 127.0.0.1:39863... 01:24:39.075037 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 43234 01:24:39.076973 * using HTTP/1.x 01:24:39.083685 => Send header, 125 bytes (0x7d) 0000: PUT /two/second492 HTTP/1.1 001d: Host: 127.0.0.1:39863 0034: User-Agent: curl/8.17.0 004d: Accept: */* 005a: Testno: 492 0067: Content-Length: 20 007b: 01:24:39.097563 => Send data, 20 bytes (0x14) 0000: second 492 contents. 01:24:39.101244 * upload completely sent off: 20 bytes 01:24:39.107116 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:24:39.111520 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:24:39.117098 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:24:39.121632 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:24:39.128143 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:24:39.132654 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:24:39.136672 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:24:39.140376 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:24:39.144131 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:24:39.148321 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:24:39.152082 <= Recv header, 1 bytes (0x1) 0000: . 01:24:39.153841 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:24:39.166170 * shutting down connection #3 === End of file trace492 === Start of file valgrind492 ==257632== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind492 test 0493...[HSTS and %{url_effective} after upgrade] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind493 ../src/curl -q --include --trace-ascii log/5/trace493 --trace-time -x http://127.0.0.1:46263 http://this.hsts.example/493 --hsts log/5/input493 -w '%{url_effective}\n' > log/5/stdout493 2> log/5/stderr493 valgrind ERROR ==257797== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 493 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind493 ../src/curl -q --include --trace-ascii log/5/trace493 --trace-time -x http://127.0.0.1:46263 http://this.hsts.example/493 --hsts log/5/input493 -w '%{url_effective}\n' > log/5/stdout493 2> log/5/stderr493 === End of file commands.log === Start of file http_server.log 01:23:50.019090 ====> Client connect 01:23:50.019260 accept_connection 3 returned 4 01:23:50.019340 accept_connection 3 returned 0 01:23:50.026628 Read 93 bytes 01:23:50.026760 Process 93 bytes request 01:23:50.026854 Got request: GET /verifiedserver HTTP/1.1 01:23:50.026921 Are-we-friendly question received 01:23:50.027047 Wrote request (93 bytes) input to log/5/server.input 01:23:50.027164 Identifying ourselves as friends 01:23:50.027342 Response sent (57 bytes) and written to log/5/server.response 01:23:50.027408 special request received, no persistency 01:23:50.027468 ====> Client disconnect 0 01:24:38.911070 ====> Client connect 01:24:38.911213 accept_connection 3 returned 4 01:24:38.911288 accept_connection 3 returned 0 01:24:39.775785 Read 126 bytes 01:24:39.775993 Process 126 bytes request 01:24:39.776228 Received a CONNECT this.hsts.example:443 HTTP/1.1 request 01:24:39.776398 Port number: 443, test case number: -7 01:24:39.776683 [log/5/server.cmd] cmdfile says testnum 493 01:24:39.776929 - request found to be complete (493) 01:24:39.777214 Wrote request (126 bytes) input to log/5/server.input 01:24:39.777332 Send response test493 section 01:24:39.777718 Response sent (157 bytes) and written to log/5/server.response 01:24:39.777813 received CONNECT but isn't running as proxy 01:24:41.109272 recv() returned error (104) Connection reset by peer 01:24:41.109441 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 41124 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file input493 # Your HSTS cache. https://curl.se/docs/hsts.html # This file was generated by libcurl! Edit at your own risk. .hsts.example "99991001 04:47:41" === End of file input493 === Start of file server.cmd Testnum 493 === End of file server.cmd === Start of file server.input CONNECT this.hsts.example:443 HTTP/1.1 Host: this.hsts.example:443 User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 403 not OK at all Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 6 Connection: close Funny-head: yesyes -foo- === End of file server.response === Start of file stderr493 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (56) CONNECT tunnel failed, response 403 === End of file stderr493 === Start of file stdout493 HTTP/1.1 403 not OK at all Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 6 Connection: close Funny-head: yesyes https://this.hsts.example/493 === End of file stdout493 === Start of file trace493 01:24:37.188072 * Switched from HTTP to HTTPS due to HSTS => https://this.hsts.example/493 01:24:39.199810 * Trying 127.0.0.1:46263... 01:24:39.834789 * CONNECT: no ALPN negotiated 01:24:39.874833 * allocate connect buffer 01:24:40.036494 * Establish HTTP proxy tunnel to this.hsts.example:443 01:24:40.192012 => Send header, 126 bytes (0x7e) 0000: CONNECT this.hsts.example:443 HTTP/1.1 0028: Host: this.hsts.example:443 0045: User-Agent: curl/8.17.0 005e: Proxy-Connection: Keep-Alive 007c: 01:24:40.373196 <= Recv header, 28 bytes (0x1c) 0000: HTTP/1.1 403 not OK at all 01:24:40.690313 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:24:40.785428 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:24:40.807292 <= Recv header, 19 byteCMD (6656): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind496 ../src/curl -q --output log/8/curl496.out --include --trace-ascii log/8/trace496 --trace-time 0 -Z -Tz > log/8/stdout496 2> log/8/stderr496 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind494 ../src/curl -q --output log/6/curl494.out --include --trace-ascii log/6/trace494 --trace-time --netrc --netrc-file log/6/netrc494 ftp://127.0.0.1:39413/494 > log/6/stdout494 2> log/6/stderr494 s (0x13) 0000: Content-Length: 6 01:24:40.831572 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:24:40.865701 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:24:40.871378 <= Recv header, 2 bytes (0x2) 0000: 01:24:40.960985 * CONNECT tunnel failed, response 403 01:24:41.368550 * closing connection #0 === End of file trace493 === Start of file valgrind493 ==257797== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind493 test 0496...[parallel upload missing file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind496 ../src/curl -q --output log/8/curl496.out --include --trace-ascii log/8/trace496 --trace-time 0 -Z -Tz > log/8/stdout496 2> log/8/stderr496 valgrind ERROR ==258262== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 496 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind496 ../src/curl -q --output log/8/curl496.out --include --trace-ascii log/8/trace496 --trace-time 0 -Z -Tz > log/8/stdout496 2> log/8/stderr496 === End of file commands.log === Start of file server.cmd Testnum 496 === End of file server.cmd === Start of file stderr496 curl: cannot open 'z' curl: try 'curl --help' for more information curl: (26) Failed to open/read local data from file/application === End of file stderr496 === Start of file valgrind496 ==258262== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind496 test 0494...[skip 'macdef' when parsing netrc] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind494 ../src/curl -q --output log/6/curl494.out --include --trace-ascii log/6/trace494 --trace-time --netrc --netrc-file log/6/netrc494 ftp://127.0.0.1:39413/494 > log/6/stdout494 2> log/6/stderr494 valgrind ERROR ==257976== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 494 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind494 ../src/curl -q --output log/6/curl494.out --include --trace-ascii log/6/trace494 --trace-time --netrc --netrc-file log/6/netrc494 ftp://127.0.0.1:39413/494 > log/6/stdout494 2> log/6/stderr494 === End of file commands.log === Start of file curl494.out blipp === End of file curl494.out === Start of file ftp_server.log 01:24:07.128102 ====> Client connect 01:24:07.129062 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:24:07.137022 < "USER anonymous" 01:24:07.140849 > "331 We are happy you popped in![CR][LF]" 01:24:07.142056 < "PASS ftp@example.com" 01:24:07.142355 > "230 Welcome you silly person[CR][LF]" 01:24:07.143414 < "PWD" 01:24:07.143678 > "257 "/" is current directory[CR][LF]" 01:24:07.145926 < "EPSV" 01:24:07.146123 ====> Passive DATA channel requested by client 01:24:07.146265 DATA sockfilt for passive data channel starting... 01:24:07.188316 DATA sockfilt for passive data channel started (pid 257970) 01:24:07.189736 DATA sockfilt for passive data channel listens on port 43499 01:24:07.190106 > "229 Entering Passive Mode (|||43499|)[CR][LF]" 01:24:07.190294 Client has been notified that DATA conn will be accepted on port 43499 01:24:07.193053 Client connects to port 43499 01:24:07.193286 ====> Client established passive DATA connection on port 43499 01:24:07.194031 < "TYPE I" 01:24:07.194342 > "200 I modify TYPE as you wanted[CR][LF]" 01:24:07.195761 < "SIZE verifiedserver" 01:24:07.196387 > "213 18[CR][LF]" 01:24:07.197610 < "RETR verifiedserver" 01:24:07.197917 > "150 Binary junk (18 bytes).[CR][LF]" 01:24:07.201220 =====> Closing passive DATA connection... 01:24:07.201408 Server disconnects passive DATA connection 01:24:07.202401 Server disconnected passive DATA connection 01:24:07.202568 DATA sockfilt for passive data channel quits (pid 257970) 01:24:07.207483 DATA sockfilt for passive data channel quit (pid 257970) 01:24:07.207707 =====> Closed passive DATA connection 01:24:07.207979 > "226 File transfer complete[CR][LF]" 01:24:07.249454 < "QUIT" 01:24:07.249906 > "221 bye bye baby[CR][LF]" 01:24:07.254238 MAIN sockfilt said DISC 01:24:07.254611 ====> Client disconnected 01:24:07.254896 Awaiting input 01:24:55.031392 ====> Client connect 01:24:55.032137 FTPD: Getting commands from log/6/server.cmd 01:24:55.032500 FTPD: run test case number: 494 01:24:55.037561 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:24:56.372553 < "USER user1" 01:24:56.372981 > "331 We are happy you popped in![CR][LF]" 01:24:56.493407 < "PASS passwd1" 01:24:56.495083 > "230 Welcome you silly person[CR][LF]" 01:24:56.584000 < "PWD" 01:24:56.584454 > "257 "/" is current directory[CR][LF]" 01:24:56.789692 < "EPSV" 01:24:56.790029 ====> Passive DATA channel requested by client 01:24:56.790186 DATA sockfilt for passive data channel starting... 01:24:56.872888 DATA sockfilt for passive data channel started (pid 259154) 01:24:56.875427 DATA sockfilt for passive data channel listens on port 42093 01:24:56.875880 > "229 Entering Passive Mode (|||42093|)[CR][LF]" 01:24:56.876077 Client has been notified that DATA conn will be accepted on port 42093 01:24:57.077507 Client connects to port 42093 01:24:57.078098 ====> Client established passive DATA connection on port 42093 01:24:57.191815 < "TYPE I" 01:24:57.197545 > "200 I modify TYPE as you wanted[CR][LF]" 01:24:57.250747 < "SIZE 494" 01:24:57.252957 > "213 6[CR][LF]" 01:24:57.321601 < "RETR 494" 01:24:57.322650 > "150 Binary data connection for 494 () (6 bytes).[CR][LF]" 01:24:57.323229 =====> Closing passive DATA connection... 01:24:57.323409 Server disconnects passive DATA connection 01:24:57.327452 Server disconnected passive DATA connection 01:24:57.327663 DATA sockfilt for passive data channel quits (pid 259154) 01:24:57.334032 DATA sockfilt for passive data channel quit (pid 259154) 01:24:57.334414 =====> Closed passive DATA connection 01:24:57.334759 > "226 File transfer complete[CR][LF]" 01:24:59.357091 < "QUIT" 01:24:59.357556 > "221 bye bye baby[CR][LF]" 01:24:59.494493 MAIN sockfilt said DISC 01:24:59.495209 ====> Client disconnected 01:24:59.495543 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:24:06.740747 ====> Client connect 01:24:06.742306 Received DATA (on stdin) 01:24:06.742390 > 160 bytes data, server => client 01:24:06.742496 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:24:06.742594 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:24:06.742682 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:24:06.749210 < 16 bytes data, client => server 01:24:06.749339 'USER anonymous\r\n' 01:24:06.750363 Received DATA (on stdin) 01:24:06.750454 > 33 bytes data, server => client 01:24:06.754129 '331 We are happy you popped in!\r\n' 01:24:06.754475 < 22 bytes data, client => server 01:24:06.754551 'PASS ftp@example.com\r\n' 01:24:06.755547 Received DATA (on stdin) 01:24:06.755615 > 30 bytes data, server => client 01:24:06.755695 '230 Welcome you silly person\r\n' 01:24:06.755954 < 5 bytes data, client => server 01:24:06.756018 'PWD\r\n' 01:24:06.756865 Received DATA (on stdin) 01:24:06.756939 > 30 bytes data, server => client 01:24:06.757028 '257 "/" is current directory\r\n' 01:24:06.758468 < 6 bytes data, client => server 01:24:06.758532 'EPSV\r\n' 01:24:06.803036 Received DATA (on stdin) 01:24:06.803196 > 39 bytes data, server => client 01:24:06.803292 '229 Entering Passive Mode (|||43499|)\r\n' 01:24:06.807543 < 8 bytes data, client => server 01:24:06.807638 'TYPE I\r\n' 01:24:06.807713 Received DATA (on stdin) 01:24:06.807778 > 33 bytes data, server => client 01:24:06.807864 '200 I modify TYPE as you wanted\r\n' 01:24:06.808256 < 21 bytes data, client => server 01:24:06.808333 'SIZE verifiedserver\r\n' 01:24:06.809204 Received DATA (on stdin) 01:24:06.809271 > 8 bytes data, server => client 01:24:06.809586 '213 18\r\n' 01:24:06.810099 < 21 bytes data, client => server 01:24:06.810176 'RETR verifiedserver\r\n' 01:24:06.811605 Received DATA (on stdin) 01:24:06.811678 > 29 bytes data, server => client 01:24:06.811760 '150 Binary junk (18 bytes).\r\n' 01:24:06.821205 Received DATA (on stdin) 01:24:06.821326 > 28 bytes data, server => client 01:24:06.821422 '226 File transfer complete\r\n' 01:24:06.861321 < 6 bytes data, client => server 01:24:06.861483 'QUIT\r\n' 01:24:06.863320 Received DATA (on stdin) 01:24:06.863401 > 18 bytes data, server => client 01:24:06.863480 '221 bye bye baby\r\n' 01:24:06.867108 ====> Client disconnect 01:24:06.867470 Received ACKD (on stdin) 01:24:54.643974 ====> Client connect 01:24:54.646354 Received DATA (on stdin) 01:24:54.646466 > 160 bytes data, server => client 01:24:54.650728 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:24:54.650848 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:24:54.650945 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:24:55.984239 < 12 bytes data, client => server 01:24:55.984425 'USER user1\r\n' 01:24:55.986085 Received DATA (on stdin) 01:24:55.986166 > 33 bytes data, server => client 01:24:55.986257 '331 We are happy you popped in!\r\n' 01:24:56.105151 < 14 bytes data, client => server 01:24:56.105335 'PASS passwd1\r\n' 01:24:56.106655 Received DATA (on stdin) 01:24:56.106731 > 30 bytes data, server => client 01:24:56.108218 '230 Welcome you silly person\r\n' 01:24:56.195762 < 5 bytes data, client => server 01:24:56.195940 'PWD\r\n' 01:24:56.200307 Received DATA (on stdin) 01:24:56.200396 > 30 bytes data, server => client 01:24:56.200487 '257 "/" is current directory\r\n' 01:24:56.401394 < 6 bytes data, client => server 01:24:56.401594 'EPSV\r\n' 01:24:56.488696 Received DATA (on stdin) 01:24:56.488855 > 39 bytes data, server => client 01:24:56.488971 '229 Entering Passive Mode (|||42093|)\r\n' 01:24:56.803695 < 8 bytes data, client => server 01:24:56.803930 'TYPE I\r\n' 01:24:56.805077 Received DATA (on stdin) 01:24:56.805161 > 33 bytes data, server => client 01:24:56.810795 '200 I modify TYPE as you wanted\r\n' 01:24:56.862504 < 10 bytes data, client => server 01:24:56.862691 'SIZE 494\r\n' 01:24:56.866145 Received DATA (on stdin) 01:24:56.866250 > 7 bytes data, server => client 01:24:56.866326 '213 6\r\n' 01:24:56.931346 < 10 bytes data, client => server 01:24:56.931534 'RETR 494\r\n' 01:24:56.936494 Received DATA (on stdin) 01:24:56.936602 > 50 bytes data, server => client 01:24:56.936717 '150 Binary data connection for 494 () (6 bytes).\r\n' 01:24:56.947893 Received DATA (on stdin) 01:24:56.948039 > 28 bytes data, server => client 01:24:56.948125 '226 File transfer complete\r\n' 01:24:58.969037 < 6 bytes data, client => server 01:24:58.969324 'QUIT\r\n' 01:24:58.973642 Received DATA (on stdin) 01:24:58.973739 > 18 bytes data, server => client 01:24:58.973820 '221 bye bye baby\r\n' 01:24:59.107043 ====> Client disconnect 01:24:59.107884 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:24:07.791761 Running IPv4 version 01:24:07.799705 Listening on port 43499 01:24:07.800156 Wrote pid 257970 to log/6/server/ftp_sockdata.pid 01:24:07.800957 Received PING (on stdin) 01:24:07.802087 Received PORT (on stdin) 01:24:07.805882 ====> Client connect 01:24:07.811142 Received DATA (on stdin) 01:24:07.811466 > 18 bytes data, server => client 01:24:07.814838 'WE ROOLZ: 201819\r\n' 01:24:07.815095 Received DISC (on stdin) 01:24:07.815208 ====> Client forcibly disconnected 01:24:07.815774 Received QUIT (on stdin) 01:24:07.815855 quits 01:24:07.816355 ============> sockfilt quits 01:24:56.466140 Running IPv4 version 01:24:56.484026 Listening on port 42093 01:24:56.484575 Wrote pid 259154 to log/6/server/ftp_sockdata.pid 01:24:56.485347 Received PING (on stdin) 01:24:56.486983 Received PORT (on stdin) 01:24:56.688628 ====> Client connect 01:24:56.935811 Received DATA (on stdin) 01:24:56.936248 > 6 bytes data, server => client 01:24:56.936655 'blipp\n' 01:24:56.936966 Received DISC (on stdin) 01:24:56.937094 ====> Client forcibly disconnected 01:24:56.943642 Received QUIT (on stdin) 01:24:56.943785 quits 01:24:56.944336 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file netrc494 macdef testmacro bin cd default cd login put login.bin cd .. cd password put password.bin quit machine 127.0.0.1 login user1 password passwd1 === End of file netrc494 === Start of file server.cmd Testnum 494 === End of file server.cmd === Start of file server.input USER user1 PASS passwd1 PWD EPSV TYPE I SIZE 494 RETR 494 QUIT === End of file server.input === Start of file stderr494 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 6 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr494 === Start of file trace494 01:24:54.707006 * Trying 127.0.0.1:39413... 01:24:55.615084 * Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 41662 01:24:55.893243 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:24:56.244579 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:24:56.275867 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:24:56.282685 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:24:56.288302 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:24:56.391788 => Send header, 12 bytes (0xc) 0000: USER user1 01:24:56.472003 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:24:56.493542 => Send header, 14 bytes (0xe) 0000: PASS passwd1 01:24:56.563222 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:24:56.582940 => Send header, 5 bytes (0x5) 0000: PWD 01:24:56.599902 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:24:56.635622 * Entry path is '/' 01:24:56.738540 * Request has same path as previous transfer 01:24:56.788586 => Send header, 6 bytes (0x6) 0000: EPSV 01:24:56.803373 * Connect data stream passively 01:24:56.879897 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||42093|) 01:24:57.000755 * Connecting to 127.0.0.1 (127.0.0.1) port 42093 01:24:57.069743 * Trying 127.0.0.1:42093... 01:24:57.160119 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 42093) from 127.0.0.1 port 36678 01:24:57.190961 => Send header, 8 bytes (0x8) 0000: TYPE I 01:24:57.210507 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:24:57.247781 => Send header, 10 bytes (0xa) 0000: SIZE 494 01:24:57.279315 <= Recv header, 7 bytes (0x7) 0000: 213 6 01:24:57.318574 => Send header, 10 bytes (0xa) 0000: RETR 494 01:24:57.340924 <= Recv header, 50 bytes (0x32) 0000: 150 Binary data connection for 494 () (6 bytes). 01:24:57.384366 * Maxdownload = -1 01:24:57.394969 * Getting file with size: 6 01:24:57.569857 <= Recv data, 6 bytes (0x6) CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind495 ../src/curl -q --output log/7/curl495.out --include --trace-ascii log/7/trace495 --trace-time http://foo%40bar:secret@127.0.0.1:34897/495 --netrc-optional > log/7/stdout495 2> log/7/stderr495 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind499 ../src/curl -q --output log/1/curl499.out --include --trace-ascii log/1/trace499 --trace-time http://127.0.0.1:40641/499 -I > log/1/stdout499 2> log/1/stderr499 0000: blipp. 01:24:57.876657 * abort upload 01:24:57.901479 <= Recv data, 0 bytes (0x0) 01:24:58.073666 * Remembering we are in dir "" 01:24:58.280778 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:24:58.605824 * Connection #0 to host 127.0.0.1:39413 left intact === End of file trace494 === Start of file valgrind494 ==257976== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind494 test 0495...[user+password in URL with optional netrc] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind495 ../src/curl -q --output log/7/curl495.out --include --trace-ascii log/7/trace495 --trace-time http://foo%40bar:secret@127.0.0.1:34897/495 --netrc-optional > log/7/stdout495 2> log/7/stderr495 valgrind ERROR ==258146== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 495 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind495 ../src/curl -q --output log/7/curl495.out --include --trace-ascii log/7/trace495 --trace-time http://foo%40bar:secret@127.0.0.1:34897/495 --netrc-optional > log/7/stdout495 2> log/7/stderr495 === End of file commands.log === Start of file curl495.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl495.out === Start of file http_server.log 01:24:09.795720 ====> Client connect 01:24:09.795914 accept_connection 3 returned 4 01:24:09.796001 accept_connection 3 returned 0 01:24:09.802902 Read 93 bytes 01:24:09.803013 Process 93 bytes request 01:24:09.803116 Got request: GET /verifiedserver HTTP/1.1 01:24:09.803189 Are-we-friendly question received 01:24:09.803308 Wrote request (93 bytes) input to log/7/server.input 01:24:09.803408 Identifying ourselves as friends 01:24:09.803597 Response sent (57 bytes) and written to log/7/server.response 01:24:09.803664 special request received, no persistency 01:24:09.803722 ====> Client disconnect 0 01:24:57.265984 ====> Client connect 01:24:57.266139 accept_connection 3 returned 4 01:24:57.266228 accept_connection 3 returned 0 01:24:58.336978 Read 125 bytes 01:24:58.337175 Process 125 bytes request 01:24:58.337268 Got request: GET /495 HTTP/1.1 01:24:58.337332 Serve test number 495 part 0 01:24:58.337485 - request found to be complete (495) 01:24:58.337712 Wrote request (125 bytes) input to log/7/server.input 01:24:58.337815 Send response test495 section 01:24:58.338133 Response sent (256 bytes) and written to log/7/server.response 01:24:58.338198 => persistent connection request ended, awaits new request 01:25:00.215143 Connection closed by client 01:25:00.215327 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 37748 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 495 === End of file server.cmd === Start of file server.input GET /495 HTTP/1.1 Host: 127.0.0.1:34897 Authorization: Basic Zm9vQGJhcjpzZWNyZXQ= User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr495 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr495 === Start of file trace495 01:24:57.324010 * Trying 127.0.0.1:34897... 01:24:58.217503 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 49366 01:24:58.346600 * using HTTP/1.x 01:24:58.478112 * Server auth using Basic with user 'foo@bar' 01:24:58.762175 => Send header, 125 bytes (0x7d) 0000: GET /495 HTTP/1.1 0013: Host: 127.0.0.1:34897 002a: Authorization: Basic Zm9vQGJhcjpzZWNyZXQ= 0055: User-Agent: curl/8.17.0 006e: Accept: */* 007b: 01:24:59.099701 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:24:59.406749 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:24:59.500577 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:24:59.527723 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:24:59.535618 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:24:59.543199 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:24:59.575957 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:24:59.634323 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:24:59.668956 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:24:59.673993 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:24:59.753482 <= Recv header, 1 bytes (0x1) 0000: . 01:24:59.808505 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:24:59.910071 * we are done reading and this is set to close, stop send 01:24:59.939564 * abort upload 01:25:00.409315 * shutting down connection #0 === End of file trace495 === Start of file valgrind495 ==258146== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind495 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 499 in state 4 Runner 2 (id 185908) running test 500 in state 4 Runner 3 (id 185910) running test 497 in state 4 Runner 4 (id 185912) running test 498 in state 4 Runner 5 (id 185914) running test 501 in state 4 Runner 6 (id 185916) running test 503 in state 4 Runner 7 (id 185918) running test 504 in state 4 Runner 8 (id 185920) running test 502 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 499 in state 4 Runner 2 (id 185908) running test 500 in state 4 Runner 3 (id 185910) running test 497 in state 4 Runner 4 (id 185912) running test 498 in state 4 Runner 5 (id 185914) running test 501 in state 4 Runner 6 (id 185916) running test 503 in state 4 Runner 7 (id 185918) running test 504 in state 4 Runner 8 (id 185920) running test 502 in state 4 test 0499...[HTTP HEAD to server still sending a body] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind499 ../src/curl -q --output log/1/curl499.out --include --trace-ascii log/1/trace499 --trace-time http://127.0.0.1:40641/499 -I > log/1/stdout499 2> log/1/stderr499 valgrind ERROR ==258754== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind500 ./libtest/libtests lib500 http://127.0.0.1:39863/500 log/2/ip500 > log/2/stdout500 2> log/2/stderr500 / dir after test 499 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind499 ../src/curl -q --output log/1/curl499.out --include --trace-ascii log/1/trace499 --trace-time http://127.0.0.1:40641/499 -I > log/1/stdout499 2> log/1/stderr499 === End of file commands.log === Start of file curl499.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes === End of file curl499.out === Start of file http_server.log 01:24:35.809170 ====> Client connect 01:24:35.809342 accept_connection 3 returned 4 01:24:35.809418 accept_connection 3 returned 0 01:24:35.816231 Read 93 bytes 01:24:35.816340 Process 93 bytes request 01:24:35.816427 Got request: GET /verifiedserver HTTP/1.1 01:24:35.816491 Are-we-friendly question received 01:24:35.816608 Wrote request (93 bytes) input to log/1/server.input 01:24:35.816700 Identifying ourselves as friends 01:24:35.816857 Response sent (57 bytes) and written to log/1/server.response 01:24:35.816918 special request received, no persistency 01:24:35.816973 ====> Client disconnect 0 01:25:22.966487 ====> Client connect 01:25:22.966625 accept_connection 3 returned 4 01:25:22.966709 accept_connection 3 returned 0 01:25:23.934706 Read 83 bytes 01:25:23.934883 Process 83 bytes request 01:25:23.934975 Got request: HEAD /499 HTTP/1.1 01:25:23.935050 Serve test number 499 part 0 01:25:23.935229 - request found to be complete (499) 01:25:23.935481 Wrote request (83 bytes) input to log/1/server.input 01:25:23.935587 Send response test499 section 01:25:23.935953 Response sent (267 bytes) and written to log/1/server.response 01:25:23.936025 => persistent connection request ended, awaits new request 01:25:25.882191 Connection closed by client 01:25:25.882362 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 46544 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 499 === End of file server.cmd === Start of file server.input HEAD /499 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr499 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 6 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 6 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 === End of file stderr499 === Start of file trace499 01:25:22.031550 * Trying 127.0.0.1:40641... 01:25:22.905684 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 38454 01:25:23.015713 * using HTTP/1.x 01:25:23.362748 => Send header, 83 bytes (0x53) 0000: HEAD /499 HTTP/1.1 0014: Host: 127.0.0.1:40641 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: 01:25:23.704084 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:25:24.012065 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:25:24.108517 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:25:24.261751 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:25:24.268493 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:25:24.274791 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:25:24.303090 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:25:24.356572 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:25:24.389465 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:25:24.393869 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:25:24.471853 <= Recv header, 2 bytes (0x2) 0000: 01:25:24.529952 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:25:24.590700 * we are done reading and this is set to close, stop send 01:25:24.619049 * abort upload 01:25:25.079508 * shutting down connection #0 === End of file trace499 === Start of file valgrind499 ==258754== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind499 test 0500...[simple libcurl HTTP GET tool] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind500 ./libtest/libtests lib500 http://127.0.0.1:39863/500 log/2/ip500 > log/2/stdout500 2> log/2/stderr500 valgrind ERROR ==258928== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 500 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind500 ./libtest/libtests lib500 http://127.0.0.1:39863/500 log/2/ip500 > log/2/stdout500 2> log/2/stderr500 === End of file commands.log === Start of file http_server.log 01:24:42.962958 ====> Client connect 01:24:42.963117 accept_connection 3 returned 4 01:24:42.963204 accept_connection 3 returned 0 01:24:42.969960 Read 93 bytes 01:24:42.970055 Process 93 bytes request 01:24:42.970146 Got request: GET /verifiedserver HTTP/1.1 01:24:42.970215 Are-we-friendly question received 01:24:42.970342 Wrote request (93 bytes) input to log/2/server.input 01:24:42.970443 Identifying ourselves as friends 01:24:42.970620 Response sent (57 bytes) and written to log/2/server.response 01:24:42.970682 special request received, no persistency 01:24:42.970739 ====> Client disconnect 0 01:25:28.660250 ====> Client connect 01:25:28.660383 accept_connection 3 returned 4 01:25:28.660461 accept_connection 3 returned 0 01:25:29.727304 Read 57 bytes 01:25:29.727472 Process 57 bytes request 01:25:29.727567 Got request: GET /500 HTTP/1.1 01:25:29.727640 Serve test number 500 part 0 01:25:29.727820 - request found to be complete (500) 01:25:29.728099 Wrote request (57 bytes) input to log/2/server.input 01:25:29.728210 Send response test500 section 01:25:29.728639 Response sent (267 bytes) and written to log/2/server.response 01:25:29.728708 => persistent connection request ended, awaits new request 01:25:31.730895 Connection closed by client 01:25:31.731070 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 60168 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of CMD (768): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind501 ./libtest/libtests lib501 - > log/5/stdout501 2> log/5/stderr501 CMD (14336): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind498 ../src/curl -q --output log/4/curl498.out --include --trace-ascii log/4/trace498 --trace-time http://127.0.0.1:42621/498 --max-redirs 400 --location > log/4/stdout498 2> log/4/stderr498 CMD (14336): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind497 ../src/curl -q --output log/3/curl497.out --include --trace-ascii log/3/trace497 --trace-time http://127.0.0.1:46853/497 > log/3/stdout497 2> log/3/stderr497 file ip500 IP 127.0.0.1 === End of file ip500 === Start of file server.cmd Testnum 500 === End of file server.cmd === Start of file server.input GET /500 HTTP/1.1 Host: 127.0.0.1:39863 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr500 URL: http://127.0.0.1:39863/500 01:25:27.375909 == Info: Trying 127.0.0.1:39863... 01:25:28.212471 == Info: Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 45226 01:25:28.387273 == Info: using HTTP/1.x 01:25:28.765030 => Send header, 57 bytes (0x39) 0000: GET /500 HTTP/1.1 0013: Host: 127.0.0.1:39863 002a: Accept: */* 0037: 01:25:29.166774 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:25:29.450547 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:25:29.558617 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:25:29.592512 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:25:29.610018 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:25:29.626915 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:25:29.667542 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:25:29.734639 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:25:29.777401 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:25:29.789864 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:25:29.881438 <= Recv header, 2 bytes (0x2) 0000: 01:25:29.945552 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:25:30.043596 == Info: we are done reading and this is set to close, stop send 01:25:30.085073 == Info: abort upload 01:25:30.527587 == Info: shutting down connection #0 Test ended with result 0 === End of file stderr500 === Start of file stdout500 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file stdout500 === Start of file valgrind500 ==258928== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind500 test 0501...[simple libcurl attempt operation without URL set] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind501 ./libtest/libtests lib501 - > log/5/stdout501 2> log/5/stderr501 valgrind ERROR ==259053== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 501 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind501 ./libtest/libtests lib501 - > log/5/stdout501 2> log/5/stderr501 === End of file commands.log === Start of file server.cmd Testnum 501 === End of file server.cmd === Start of file stderr501 URL: - Test ended with result 3 === End of file stderr501 === Start of file valgrind501 ==259053== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind501 test 0498...[Reject too large HTTP response headers on endless redirects] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind498 ../src/curl -q --output log/4/curl498.out --include --trace-ascii log/4/trace498 --trace-time http://127.0.0.1:42621/498 --max-redirs 400 --location > log/4/stdout498 2> log/4/stderr498 valgrind ERROR ==258548== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 498 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind498 ../src/curl -q --output log/4/curl498.out --include --trace-ascii log/4/trace498 --trace-time http://127.0.0.1:42621/498 --max-redirs 400 --location > log/4/stdout498 2> log/4/stderr498 === End of file commands.log === Start of file curl498.out HTTP/1.1 301 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Location: / Connection: close Content-Type: text/html Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. === End of file curl498.out === Start of file http_server.log 01:24:16.594273 ====> Client connect 01:24:16.594420 accept_connection 3 returned 4 01:24:16.594495 accept_connection 3 returned 0 01:24:16.601460 Read 93 bytes 01:24:16.601556 Process 93 bytes request 01:24:16.601642 Got request: GET /verifiedserver HTTP/1.1 01:24:16.601704 Are-we-friendly question received 01:24:16.601814 Wrote request (93 bytes) input to log/4/server.input 01:24:16.601900 Identifying ourselves as friends 01:24:16.602054 Response sent (57 bytes) and written to log/4/server.response 01:24:16.602114 special request received, no persistency 01:24:16.602167 ====> Client disconnect 0 01:25:04.886277 ====> Client connect 01:25:04.886423 accept_connection 3 returned 4 01:25:04.886512 accept_connection 3 returned 0 01:25:05.978956 Read 82 bytes 01:25:05.979145 Process 82 bytes request 01:25:05.979251 Got request: GET /498 HTTP/1.1 01:25:05.979330 Serve test number 498 part 0 01:25:05.998778 - request found to be complete (498) 01:25:06.018517 Wrote request (82 bytes) input to log/4/server.input 01:25:06.018704 Send response test498 section 01:25:06.220215 Response sent (1514949 bytes) and written to log/4/server.response 01:25:06.220797 => persistent connection request ended, awaits new request 01:25:42.480583 recv() returned error (104) Connection reset by peer 01:25:42.480792 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 49578 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 498 === End of file server.cmd === Start of file server.input GET /498 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 301 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Location: / Connection: close Content-Type: text/html Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. === File too long: 313 lines omitted here Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar--except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. -foo- === End of file server.response === Start of file stderr498 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:39 --:--:-- 0 curl: (56) Too large response headers: 307637 > 307200 === End of file stderr498 === Start of file trace498 01:25:03.933741 * Trying 127.0.0.1:42621... 01:25:04.899000 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 55976 01:25:05.042343 * using HTTP/1.x 01:25:05.456211 => Send header, 82 bytes (0x52) 0000: GET /498 HTTP/1.1 0013: Host: 127.0.0.1:42621 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:25:05.802747 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 301 OK. 01:25:06.099161 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:25:06.198928 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:25:06.226489 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:25:06.234663 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:25:06.241732 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:25:06.308830 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:25:06.379442 <= Recv header, 12 bytes (0xc) 0000: Location: /. 01:25:06.425263 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:25:06.446308 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:25:06.463471 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:06.565080 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:06.663029 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:06.761401 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:06.860776 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:06.971290 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:07.074728 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:07.175761 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:07.280680 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:07.382060 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:07.489481 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:07.589240 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:07.687374 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:07.785774 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:07.886288 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:07.984824 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:08.086293 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:08.187056 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:08.293549 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:08.392377 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:08.500480 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:08.601491 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:08.700916 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:08.799964 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:08.897617 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:08.994967 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:09.093401 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:09.190631 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:09.293282 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:09.389114 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:09.494936 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:09.594023 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:09.695956 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:09.796649 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:09.896681 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:09.994853 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:10.098157 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:10.199860 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:10.311682 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:10.404638 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:10.504428 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:10.595517 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:10.687466 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:10.779737 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:10.872338 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:10.964818 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:11.059606 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:11.153376 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:11.250600 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:11.344217 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:11.498794 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:11.592297 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:11.690551 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:11.784650 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:11.875510 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:11.967315 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:12.058745 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:12.149774 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:12.246222 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:12.339127 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:12.438638 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:12.530017 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:12.620028 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:12.718191 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:12.808494 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:12.898834 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:12.988688 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:13.082367 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:13.173732 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:13.269458 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:13.362946 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:13.467643 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:13.564183 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:13.660987 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:13.757629 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:13.853722 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:13.949110 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:14.046881 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:14.143867 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the === File too long: 3805 lines omitted here 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:40.094100 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:40.194678 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:40.294515 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:40.394094 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:40.496555 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:40.597455 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:40.697175 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:40.797293 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:40.896918 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:40.995764 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:41.097495 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:41.198282 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:41.298267 <= Recv header, 891 bytes (0x37b) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife. Their house was 00c0: small, for the lumber to build it had to be carried by wagon ma 0100: ny miles. There were four walls, a floor and a roof, which made 0140: one room; and this room contained a rusty looking cookstove, a c 0180: upboard for the dishes, a table, three or four chairs, and the b 01c0: eds. Uncle Henry and Aunt Em had a big bed in one corner, and Do 0200: rothy a little bed in another corner. There was no garret at all 0240: , and no cellar--except a small hole dug in the ground, called a 0280: cyclone cellar, where the family could go in case one of those 02c0: great whirlwinds arose, mighty enough to crush any building in i 0300: ts path. It was reached by a trap door in the middle of the floo 0340: r, from which a ladder led down into the small, dark hole.. 01:25:41.429652 * Too large response headers: 307637 > 307200 01:25:41.771172 * closing connection #0 === End of file trace498 === Start of file valgrind498 ==258548== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind498 test 0497...[Reject too large accumulated HTTP response headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind497 ../src/curl -q --output log/3/curl497.out --include --trace-ascii log/3/trace497 --trace-time http://127.0.0.1:46853/497 > log/3/stdout497 2> log/3/stderr497 valgrind ERROR ==258461== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 497 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind497 ../src/curl -q --output log/3/curl497.out --include --trace-ascii log/3/trace497 --trace-time http://127.0.0.1:46853/497 > log/3/stdout497 2> log/3/stderr497 === End of file commands.log === Start of file curl497.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. === File too long: 343 lines omitted here Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. === End of file curl497.out === Start of file http_server.log 01:24:14.798739 ====> Client connect 01:24:14.798912 accept_connection 3 returned 4 01:24:14.798998 accept_connection 3 returned 0 01:24:14.805967 Read 93 bytes 01:24:14.806085 Process 93 bytes request 01:24:14.806178 Got request: GET /verifiedserver HTTP/1.1 01:24:14.806253 Are-we-friendly question received 01:24:14.806382 Wrote request (93 bytes) input to log/3/server.input 01:24:14.806494 Identifying ourselves as friends 01:24:14.806709 Response sent (57 bytes) and written to log/3/server.response 01:24:14.806781 special request received, no persistency 01:24:14.806845 ====> Client disconnect 0 01:25:02.194982 ====> Client connect 01:25:02.195133 accept_connection 3 returned 4 01:25:02.195215 accept_connection 3 returned 0 01:25:03.302663 Read 82 bytes 01:25:03.302883 Process 82 bytes request 01:25:03.302992 Got request: GET /497 HTTP/1.1 01:25:03.303070 Serve test number 497 part 0 01:25:03.305913 - request found to be complete (497) 01:25:03.315486 Wrote request (82 bytes) input to log/3/server.input 01:25:03.315632 Send response test497 section 01:25:03.402778 Response sent (309987 bytes) and written to log/3/server.response 01:25:03.403210 => persistent connection request ended, awaits new request 01:25:41.690801 Connection closed by client 01:25:41.691008 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 42456 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 497 === End of file server.cmd === Start of file server.input GET /497 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. === File too long: 362 lines omitted here Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. Repeat-this-Header-a-large-number-of-times: Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer's wife. -foo- === End of file server.response === Start of file stderr497 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:41 --:--:-- 0 curl: (56) Too large response headers: 307325 > 307200 === End of file stderr497 === Start of file trace497 01:25:02.253011 * Trying 127.0.0.1:46853... 01:25:03.158684 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 44850 01:25:03.296729 * using HTTP/1.x 01:25:03.784442 => Send header, 82 bytes (0x52) 0000: GET /497 HTTP/1.1 0013: Host: 127.0.0.1:46853 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:25:04.174963 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:25:04.527007 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:25:04.636890 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:25:04.666232 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:25:04.677330 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:25:04.685336 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:25:04.720877 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:25:04.780053 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:25:04.820200 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:25:04.836882 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:04.859176 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:04.881281 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:04.902468 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:04.923958 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:04.945506 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:04.967405 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:04.989121 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.013797 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.038862 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.061394 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.083543 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.105499 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.127590 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.150118 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.169246 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.188850 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.214570 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.238473 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.262386 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.284056 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.307454 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.339155 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.366578 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.388337 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.413647 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.436628 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.457602 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.478500 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.499460 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.520671 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.550771 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.577558 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.603012 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.623466 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.643561 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.662689 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.682467 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.702164 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.721149 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.741079 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.760251 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.779351 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.798618 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.821592 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.845370 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.865746 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.886555 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.909034 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.933399 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.956055 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:05.977765 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.000101 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.024223 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.044274 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.063740 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.083686 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.103128 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.122438 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.142400 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.162075 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.181915 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.201542 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.221243 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.283093 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.302778 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.323671 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.343226 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.363534 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.383939 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.405182 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.424678 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.444969 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.464493 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.483916 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.503012 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.522282 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.541673 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.562678 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.581951 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.600903 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.619995 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.639145 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.658176 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.677179 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.696106 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.714947 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.734885 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.755275 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.775636 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.795757 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.816071 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.837264 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.857858 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.878426 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.898944 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.919588 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.939745 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.960285 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:06.980890 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.002117 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.026802 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.048106 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.069010 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.089844 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.110741 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.132374 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.153128 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.173667 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.194412 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.214715 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.235351 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.255985 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.280859 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.301561 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.322725 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.342995 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.362825 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.382722 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.404452 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.427680 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.450610 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.470528 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.489035 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.507611 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.525952 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.544841 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.563073 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.581289 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.599449 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.619289 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.637984 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.656959 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.675417 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.693731 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.713351 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.732696 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.752550 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.772017 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.791013 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.809997 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.829385 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.848311 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.867280 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.887544 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.906660 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.925599 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.944445 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.963342 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:07.982398 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.004172 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.026349 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.045451 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.064448 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.083269 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.102186 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.121081 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.139851 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.158546 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.177435 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.196387 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.216564 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.236448 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.256600 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.276992 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.297191 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.317294 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.337424 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.357482 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.377933 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.400176 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.421042 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.441618 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.461840 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.482228 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.502649 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.523278 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.544243 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.564810 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.585286 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.605618 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.626089 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.647241 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.667502 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.687890 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.708127 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.728262 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.748513 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.768686 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.788750 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.809095 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.829300 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.849276 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.869074 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.888760 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.908515 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.928197 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.948083 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.971810 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:08.991646 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.011783 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.031613 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.049971 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.068197 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.087031 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.105263 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.123736 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.143334 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.162968 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.181911 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.200963 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.219379 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.237857 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.257393 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.278827 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.299626 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.320543 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.341889 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.362386 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.382987 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.405654 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.426626 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.447442 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.468066 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.488536 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.509101 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.529448 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.549705 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.570541 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.640839 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.662469 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.684453 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.705600 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.726654 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.748863 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.770311 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.791361 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.812431 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.833579 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.854605 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.875792 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.896876 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.917870 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.938688 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.959521 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:09.980491 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.001660 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.024298 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.045488 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.066850 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.087926 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.108991 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.130203 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.151115 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.172333 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.193236 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.214089 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.235546 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.256930 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.278145 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.299975 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.321137 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.342561 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.363408 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.384955 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.407716 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.428828 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.449693 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.470684 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.491620 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.512175 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.533064 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.553686 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.574421 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.595118 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind502 ./libtest/libtests lib502 file:///build/curl/src/build-curl/tests/log/8/test502.txt > log/8/stdout502 2> log/8/stderr502 : midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.615462 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.636209 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.657278 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.678246 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.698974 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.719489 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.739596 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.760440 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.781013 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.801537 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.823345 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.844088 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.864846 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.885279 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.905920 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.926340 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.946994 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.967640 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:10.988493 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the === File too long: 5568 lines omitted here 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.559811 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.582213 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.601987 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.621540 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.644594 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.668287 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.690063 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.711760 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.736856 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.758215 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.779129 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.800673 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.821407 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.842372 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.863079 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.883531 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.904570 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.925462 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.946320 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.967028 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:40.987858 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.009723 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.033092 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.054150 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.075287 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.096444 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.117962 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.139234 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.160440 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.181243 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.202241 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.223171 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.243891 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.265019 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.286043 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.306976 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.327940 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.348896 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.369892 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.390772 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.412798 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.435781 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.456940 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.477926 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.498703 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.519738 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great KansCMD (10496): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind504 ./libtest/libtests lib504 http://127.0.0.1:47/504 127.0.0.1:47 > log/7/stdout504 2> log/7/stderr504 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind503 ./libtest/libtests lib503 http://machine.503:38277/503 127.0.0.1:36617 > log/6/stdout503 2> log/6/stderr503 as prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.540793 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.561687 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.582842 <= Recv header, 177 bytes (0xb1) 0000: Repeat-this-Header-a-large-number-of-times: Dorothy lived in the 0040: midst of the great Kansas prairies, with Uncle Henry, who was a 0080: farmer, and Aunt Em, who was the farmer's wife.. 01:25:41.637143 * Too large response headers: 307325 > 307200 01:25:41.982469 * closing connection #0 === End of file trace497 === Start of file valgrind497 ==258461== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind497 test 0502...[simple multi file:// get] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind502 ./libtest/libtests lib502 file:///build/curl/src/build-curl/tests/log/8/test502.txt > log/8/stdout502 2> log/8/stderr502 valgrind ERROR ==259172== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 502 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind502 ./libtest/libtests lib502 file:///build/curl/src/build-curl/tests/log/8/test502.txt > log/8/stdout502 2> log/8/stderr502 === End of file commands.log === Start of file server.cmd Testnum 502 === End of file server.cmd === Start of file stderr502 URL: file:///build/curl/src/build-curl/tests/log/8/test502.txt Test ended with result 0 === End of file stderr502 === Start of file stdout502 foo bar swsclose bar foo moo === End of file stdout502 === Start of file test502.txt foo bar swsclose bar foo moo === End of file test502.txt === Start of file valgrind502 ==259172== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind502 test 0504...[simple multi through local proxy without listener] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind504 ./libtest/libtests lib504 http://127.0.0.1:47/504 127.0.0.1:47 > log/7/stdout504 2> log/7/stderr504 valgrind ERROR ==259359== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 504 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind504 ./libtest/libtests lib504 http://127.0.0.1:47/504 127.0.0.1:47 > log/7/stdout504 2> log/7/stderr504 === End of file commands.log === Start of file server.cmd Testnum 504 === End of file server.cmd === Start of file stderr504 URL: http://127.0.0.1:47/504 curl_multi_perform() * Trying 127.0.0.1:47... * connect to 127.0.0.1 port 47 from 127.0.0.1 port 38466 failed: Connection refused * Failed to connect to 127.0.0.1 port 47 via 127.0.0.1 after 2884 ms: Could not connect to server * closing connection #0 Expected: not running Test ended with result 41 === End of file stderr504 === Start of file valgrind504 ==259359== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind504 test 0503...[simple multi http:// through proxytunnel with authentication info] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind503 ./libtest/libtests lib503 http://machine.503:38277/503 127.0.0.1:36617 > log/6/stdout503 2> log/6/stderr503 valgrind ERROR ==259395== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 503 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind503 ./libtest/libtests lib503 http://machine.503:38277/503 127.0.0.1:36617 > log/6/stdout503 2> log/6/stderr503 === End of file commands.log === Start of file http2_server.log 01:25:03.455058 ====> Client connect 01:25:03.455219 accept_connection 3 returned 4 01:25:03.455298 accept_connection 3 returned 0 01:25:03.462700 Read 93 bytes 01:25:03.462820 Process 93 bytes request 01:25:03.462987 Got request: GET /verifiedserver HTTP/1.1 01:25:03.463333 Are-we-friendly question received 01:25:03.463493 Wrote request (93 bytes) input to log/6/proxy.input 01:25:03.463631 Identifying ourselves as friends 01:25:03.463938 Response sent (57 bytes) and written to log/6/proxy.response 01:25:03.464026 special request received, no persistency 01:25:03.464111 ====> Client disconnect 0 01:25:48.159830 ====> Client connect 01:25:48.159985 accept_connection 3 returned 4 01:25:48.160071 accept_connection 3 returned 0 01:25:49.422871 Read 142 bytes 01:25:49.423070 Process 142 bytes request 01:25:49.423175 Received a CONNECT machine.503:38277 HTTP/1.1 request 01:25:49.423245 Port number: 38277, test case number: -7 01:25:49.423400 [log/6/server.cmd] cmdfile says testnum 503 01:25:49.423808 enabled connection monitoring 01:25:49.423955 - request found to be complete (503) 01:25:49.424078 enabled connection monitoring 01:25:49.424256 Wrote request (142 bytes) input to log/6/proxy.input 01:25:49.424366 Send response test503 section 01:25:49.424678 Response sent (35 bytes) and written to log/6/proxy.response 01:25:49.926837 about to connect to 127.0.0.1:38277 01:25:49.927186 connected fine to 127.0.0.1:38277, now tunnel 01:25:50.570939 [CTRL] READ 94 bytes from client 01:25:50.571157 [CTRL] READ "GET /503 HTTP/1.1%0d%0aHost: machine.503:38277%0d%0aAuthorization: Basic dGVzdDppbmc=%0d%0aAccept: */*%0d%0a%0d%0a" 01:25:50.571273 [CTRL] SENT 94 bytes to server 01:25:50.571360 [CTRL] SENT "GET /503 HTTP/1.1%0d%0aHost: machine.503:38277%0d%0aAuthorization: Basic dGVzdDppbmc=%0d%0aAccept: */*%0d%0a%0d%0a" 01:25:50.573142 [CTRL] READ 20 bytes from server 01:25:50.573216 [CTRL] READ "HTTP/1.1 200 OK swsc" 01:25:50.573294 [CTRL] READ 139 bytes from server 01:25:50.573371 [CTRL] READ "lose%0aDate: Tue, 09 Nov 2010 14:49:00 GMT%0aServer: test-server/fake%0aLast-Modified: Tue, 13 Jun 2000 12:10:00 GMT%0aETag: "21025-dc7-39462498"%0a%0a" 01:25:50.573451 [CTRL] SENT 159 bytes to client 01:25:50.573536 [CTRL] SENT "HTTP/1.1 200 OK swsclose%0aDate: Tue, 09 Nov 2010 14:49:00 GMT%0aServer: test-server/fake%0aLast-Modified: Tue, 13 Jun 2000 12:10:00 GMT%0aETag: "21025-dc7-39462498"%0a%0a" 01:25:50.626944 [CTRL] got 0, STOP READING server 01:25:50.627122 [CTRL] DISABLED WRITING client 01:25:51.801970 [CTRL] got 0, STOP READING client 01:25:51.802178 [CTRL] DISABLED WRITING server 01:25:52.052551 [CTRL] CLOSING client socket 01:25:52.052753 [CTRL] CLOSING server socket 01:25:52.052827 [CTRL] ENDING 01:25:52.052891 ====> Client disconnect 1 01:25:52.053007 Wrote request (13 bytes) input to log/6/proxy.input === End of file http2_server.log === Start of file http2_verify.log * Trying 127.0.0.1:36617... * Established connection to 127.0.0.1 (127.0.0.1 port 36617) from 127.0.0.1 port 44744 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:36617 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:36617 left intact === End of file http2_verify.log === Start of file http2_verify.out WE ROOLZ: 230336 === End of file http2_vCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind505 ./libtest/libtests lib505 ftp://127.0.0.1:37481/505 log/1/upload505 > log/1/stdout505 2> log/1/stderr505 erify.out === Start of file http_server.log 01:25:02.472258 ====> Client connect 01:25:02.472443 accept_connection 3 returned 4 01:25:02.472532 accept_connection 3 returned 0 01:25:02.479144 Read 93 bytes 01:25:02.479261 Process 93 bytes request 01:25:02.479364 Got request: GET /verifiedserver HTTP/1.1 01:25:02.479439 Are-we-friendly question received 01:25:02.479571 Wrote request (93 bytes) input to log/6/server.input 01:25:02.479679 Identifying ourselves as friends 01:25:02.479882 Response sent (57 bytes) and written to log/6/server.response 01:25:02.479954 special request received, no persistency 01:25:02.480020 ====> Client disconnect 0 01:25:49.927338 ====> Client connect 01:25:49.927478 accept_connection 3 returned 4 01:25:49.927558 accept_connection 3 returned 0 01:25:50.571300 Read 94 bytes 01:25:50.571486 Process 94 bytes request 01:25:50.571597 Got request: GET /503 HTTP/1.1 01:25:50.571683 Serve test number 503 part 0 01:25:50.572077 enabled connection monitoring 01:25:50.572254 - request found to be complete (503) 01:25:50.572396 enabled connection monitoring 01:25:50.572586 Wrote request (94 bytes) input to log/6/server.input 01:25:50.572713 Send response test503 section 01:25:50.573009 connection close instruction "swsclose" found in response 01:25:50.573247 Response sent (159 bytes) and written to log/6/server.response 01:25:50.573327 instructed to close connection after server-reply 01:25:50.573400 ====> Client disconnect 1 01:25:50.573528 Wrote request (13 bytes) input to log/6/server.input === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 35788 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file proxy.input CONNECT machine.503:38277 HTTP/1.1 Host: machine.503:38277 Proxy-Authorization: Basic dGVzdCUyMDppbmclNDE= Proxy-Connection: Keep-Alive [DISCONNECT] === End of file proxy.input === Start of file proxy.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 230336 HTTP/1.1 200 Mighty fine indeed === End of file proxy.response === Start of file server.cmd connection-monitor Testnum 503 === End of file server.cmd === Start of file server.input GET /503 HTTP/1.1 Host: machine.503:38277 Authorization: Basic dGVzdDppbmc= Accept: */* [DISCONNECT] === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" === End of file server.response === Start of file stderr503 URL: http://machine.503:38277/503 * Trying 127.0.0.1:36617... * CONNECT: no ALPN negotiated * allocate connect buffer * Proxy auth using Basic with user 'test%20' * Server auth using Basic with user 'test' * Establish HTTP proxy tunnel to machine.503:38277 > CONNECT machine.503:38277 HTTP/1.1 Host: machine.503:38277 Proxy-Authorization: Basic dGVzdCUyMDppbmclNDE= Proxy-Connection: Keep-Alive < HTTP/1.1 200 Mighty fine indeed < * CONNECT phase completed * CONNECT tunnel established, response 200 * Established connection to 127.0.0.1 (127.0.0.1 port 36617) from 127.0.0.1 port 45320 * using HTTP/1.x * Server auth using Basic with user 'test' > GET /503 HTTP/1.1 Host: machine.503:38277 Authorization: Basic dGVzdDppbmc= Accept: */* < HTTP/1.1 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT < ETag: "21025-dc7-39462498" * no chunk, no close, no size. Assume close to signal end < * abort upload * shutting down connection #0 Test ended with result 0 === End of file stderr503 === Start of file stdout503 HTTP/1.1 200 Mighty fine indeed HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" === End of file stdout503 === Start of file test503.txt foo bar bar foo moo === End of file test503.txt === Start of file valgrind503 ==259395== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind503 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 505 in state 4 Runner 2 (id 185908) running test 507 in state 4 Runner 3 (id 185910) running test 510 in state 4 Runner 4 (id 185912) running test 509 in state 4 Runner 5 (id 185914) running test 508 in state 4 Runner 6 (id 185916) running test 513 in state 4 Runner 7 (id 185918) running test 512 in state 4 Runner 8 (id 185920) running test 511 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 505 in state 4 Runner 2 (id 185908) running test 507 in state 4 Runner 3 (id 185910) running test 510 in state 4 Runner 4 (id 185912) running test 509 in state 4 Runner 5 (id 185914) running test 508 in state 4 Runner 6 (id 185916) running test 513 in state 4 Runner 7 (id 185918) running test 512 in state 4 Runner 8 (id 185920) running test 511 in state 4 test 0505...[FTP upload with rename after transfer] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind505 ./libtest/libtests lib505 ftp://127.0.0.1:37481/505 log/1/upload505 > log/1/stdout505 2> log/1/stderr505 valgrind ERROR ==259664== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 505 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind505 ./libtest/libtests lib505 ftp://127.0.0.1:37481/505 log/1/upload505 > log/1/stdout505 2> log/1/stderr505 === End of file commands.log === Start of file ftp_server.log 01:25:29.005989 ====> Client connect 01:25:29.006943 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:25:29.017132 < "USER anonymous" 01:25:29.017824 > "331 We are happy you popped in![CR][LF]" 01:25:29.018620 < "PASS ftp@example.com" 01:25:29.024171 > "230 Welcome you silly person[CR][LF]" 01:25:29.026991 < "PWD" 01:25:29.027298 > "257 "/" is current directory[CR][LF]" 01:25:29.029482 < "EPSV" 01:25:29.029688 ====> Passive DATA channel requested by client 01:25:29.029834 DATA sockfilt for passive data channel starting... 01:25:29.071303 DATA sockfilt for passive data channel started (pid 259658) 01:25:29.072505 DATA sockfilt for passive data channel listens on port 36793 01:25:29.075542 > "229 Entering Passive Mode (|||36793|)[CR][LF]" 01:25:29.075752 Client has been notified that DATA conn will be accepted on port 36793 01:25:29.076456 Client connects to port 36793 01:25:29.076667 ====> Client established passive DATA connection on port 36793 01:25:29.077335 < "TYPE I" 01:25:29.078431 > "200 I modify TYPE as you wanted[CR][LF]" 01:25:29.078950 < "SIZE verifiedserver" 01:25:29.079277 > "213 18[CR][LF]" 01:25:29.080617 < "RETR verifiedserver" 01:25:29.083186 > "150 Binary junk (18 bytes).[CR][LF]" 01:25:29.083725 =====> Closing passive DATA connection... 01:25:29.083888 Server disconnects passive DATA connection 01:25:29.085370 Server disconnected passive DATA connection 01:25:29.085549 DATA sockfilt for passive data channel quits (pid 259658) 01:25:29.093132 DATA sockfilt for passive data channel quit (pid 259658) 01:25:29.093369 =====> Closed passive DATA connection 01:25:29.093654 > "226 File transfer complete[CR][LF]" 01:25:29.132505 < "QUIT" 01:25:29.132894 > "221 bye bye baby[CR][LF]" 01:25:29.134124 MAIN sockfilt said DISC 01:25:29.134455 ====> Client disconnected 01:25:29.134740 Awaiting input 01:26:14.021182 ====> Client connect 01:26:14.021973 FTPD: Getting commands from log/1/server.cmd 01:26:14.022316 FTPD: run test case number: 505 01:26:14.023399 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:26:15.095067 < "USER anonymous" 01:26:15.098643 > "331 We are happy you popped in![CR][LF]" 01:26:15.191368 < "PASS ftp@example.com" 01:26:15.194163 > "230 Welcome you silly person[CR][LF]" 01:26:15.274325 < "PWD" 01:26:15.275098 > "257 "/" is current directory[CR][LF]" 01:26:15.473916 < "EPSV" 01:26:15.474269 ====> Passive DATA channel requested by client 01:26:15.474423 DATA sockfilt for passive data channel starting... 01:26:15.551410 DATA sockfilt for passive data channel started (pid 260849) 01:26:15.552527 DATA sockfilt for passive data channel listens on port 37807 01:26:15.552906 > "229 Entering Passive Mode (|||37807|)[CR][LF]" 01:26:15.553086 Client has been notified that DATA conn will be accepted on port 37807 01:26:15.750840 Client connects to port 37807 01:26:15.751394 ====> Client established passive DATA connection on port 37807 01:26:15.856285 < "TYPE I" 01:26:15.856718 > "200 I modify TYPE as you wanted[CR][LF]" 01:26:15.904410 < "STOR 505" 01:26:15.904812 STOR test number 505 in log/1/upload.505 01:26:15.905295 > "125 Gimme gimme gimme![CR][LF]" 01:26:16.238005 > Appending 49 bytes to file 01:26:16.662677 =====> Closing passive DATA connection... 01:26:16.662957 Server knows passive DATA connection is already disconnected 01:26:16.663137 DATA sockfilt for passive data channel quits (pid 260849) 01:26:16.669386 DATA sockfilt for passive data channel quit (pid 260849) 01:26:16.669611 =====> Closed passive DATA connection 01:26:16.669793 received 49 bytes upload 01:26:16.670090 > "226 File transfer complete[CR][LF]" 01:26:16.811738 < "RNFR 505" 01:26:16.817530 > "350 Received your order. Please provide more[CR][LF]" 01:26:16.830030 < "RNTO 505-forreal" 01:26:16.830389 > "250 Ok, thanks. File renaming completed.[CR][LF]" 01:26:17.549707 < "QUIT" 01:26:17.550119 > "221 bye bye baby[CR][LF]" 01:26:17.682774 MAIN sockfilt said DISC 01:26:17.683274 ====> Client disconnected 01:26:17.683569 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:25:29.618411 ====> Client connect 01:25:29.623563 Received DATA (on stdin) 01:25:29.623694 > 160 bytes data, server => client 01:25:29.623802 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:25:29.623901 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:25:29.623988 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:25:29.628930 < 16 bytes data, client => server 01:25:29.629031 'USER anonymous\r\n' 01:25:29.630266 Received DATA (on stdin) 01:25:29.630344 > 33 bytes data, server => client 01:25:29.630453 '331 We are happy you popped in!\r\n' 01:25:29.630736 < 22 bytes data, client => server 01:25:29.630815 'PASS ftp@example.com\r\n' 01:25:29.631672 Received DATA (on stdin) 01:25:29.631743 > 30 bytes data, server => client 01:25:29.637264 '230 Welcome you silly person\r\n' 01:25:29.639179 < 5 bytes data, client => server 01:25:29.639252 'PWD\r\n' 01:25:29.640225 Received DATA (on stdin) 01:25:29.640310 > 30 bytes data, server => client 01:25:29.640391 '257 "/" is current directory\r\n' 01:25:29.641918 < 6 bytes data, client => server 01:25:29.641986 'EPSV\r\n' 01:25:29.685595 Received DATA (on stdin) 01:25:29.685737 > 39 bytes data, server => client 01:25:29.685854 '229 Entering Passive Mode (|||36793|)\r\n' 01:25:29.688814 < 8 bytes data, client => server 01:25:29.688895 'TYPE I\r\n' 01:25:29.690377 Received DATA (on stdin) 01:25:29.690452 > 33 bytes data, server => client 01:25:29.690560 '200 I modify TYPE as you wanted\r\n' 01:25:29.690940 < 21 bytes data, client => server 01:25:29.691015 'SIZE verifiedserver\r\n' 01:25:29.692271 Received DATA (on stdin) 01:25:29.692339 > 8 bytes data, server => client 01:25:29.692408 '213 18\r\n' 01:25:29.692849 < 21 bytes data, client => server 01:25:29.692925 'RETR verifiedserver\r\n' 01:25:29.693775 Received DATA (on stdin) 01:25:29.693848 > 29 bytes data, server => client 01:25:29.693952 '150 Binary junk (18 bytes).\r\n' 01:25:29.706675 Received DATA (on stdin) 01:25:29.706792 > 28 bytes data, server => client 01:25:29.706887 '226 File transfer complete\r\n' 01:25:29.744338 < 6 bytes data, client => server 01:25:29.744473 'QUIT\r\n' 01:25:29.745905 Received DATA (on stdin) 01:25:29.745977 > 18 bytes data, server => client 01:25:29.746052 '221 bye bye baby\r\n' 01:25:29.746811 ====> Client disconnect 01:25:29.747117 Received ACKD (on stdin) 01:26:14.633315 ====> Client connect 01:26:14.640114 Received DATA (on stdin) 01:26:14.640258 > 160 bytes data, server => client 01:26:14.640375 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:26:14.640476 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:26:14.640563 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:26:15.706657 < 16 bytes data, client => server 01:26:15.706864 'USER anonymous\r\n' 01:26:15.708112 Received DATA (on stdin) 01:26:15.708191 > 33 bytes data, server => client 01:26:15.711627 '331 We are happy you popped in!\r\n' 01:26:15.802933 < 22 bytes data, client => server 01:26:15.803109 'PASS ftp@example.com\r\n' 01:26:15.804404 Received DATA (on stdin) 01:26:15.804481 > 30 bytes data, server => client 01:26:15.807120 '230 Welcome you silly person\r\n' 01:26:15.885943 < 5 bytes data, client => server 01:26:15.886107 'PWD\r\n' 01:26:15.887388 Received DATA (on stdin) 01:26:15.887473 > 30 bytes data, server => client 01:26:15.887597 '257 "/" is current directory\r\n' 01:26:16.085450 < 6 bytes data, client => server 01:26:16.085622 'EPSV\r\n' 01:26:16.166009 Received DATA (on stdin) 01:26:16.166151 > 39 bytes data, server => client 01:26:16.166257 '229 Entering Passive Mode (|||37807|)\r\n' 01:26:16.469624 < 8 bytes data, client => server 01:26:16.469758 'TYPE I\r\n' 01:26:16.469839 Received DATA (on stdin) 01:26:16.469906 > 33 bytes data, server => client 01:26:16.469994 '200 I modify TYPE as you wanted\r\n' 01:26:16.516300 < 10 bytes data, client => server 01:26:16.516468 'STOR 505\r\n' 01:26:16.517728 Received DATA (on stdin) 01:26:16.517814 > 24 bytes data, server => client 01:26:16.518310 '125 Gimme gimme gimme!\r\n' 01:26:17.282696 Received DATA (on stdin) 01:26:17.282861 > 28 bytes data, server => client 01:26:17.282948 '226 File transfer complete\r\n' 01:26:17.423488 < 10 bytes data, client => server 01:26:17.423691 'RNFR 505\r\n' 01:26:17.424814 Received DATA (on stdin) 01:26:17.424888 > 46 bytes data, server => client 01:26:17.430545 '350 Received your order. Please provide more\r\n' 01:26:17.442097 < 18 bytes data, client => server 01:26:17.442216 'RNTO 505-forreal\r\n' 01:26:17.443022 Received DATA (on stdin) 01:26:17.443096 > 42 bytes data, server => client 01:26:17.443188 '250 Ok, thanks. File renaming completed.\r\n' 01:26:18.161487 < 6 bytes data, client => server 01:26:18.161687 'QUIT\r\n' 01:26:18.162743 Received DATA (on stdin) 01:26:18.162822 > 18 bytes data, server => client 01:26:18.162906 '221 bye bye baby\r\n' 01:26:18.295125 ====> Client disconnect 01:26:18.295949 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:25:29.674372 Running IPv4 version 01:25:29.682266 Listening on port 36793 01:25:29.682727 Wrote pid 259658 to log/1/server/ftp_sockdata.pid 01:25:29.683509 Received PING (on stdin) 01:25:29.684611 Received PORT (on stdin) 01:25:29.689056 ====> Client connect 01:25:29.696872 Received DATA (oCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind508 ./libtest/libtests lib508 http://127.0.0.1:46263/508 > log/5/stdout508 2> log/5/stderr508 n stdin) 01:25:29.697210 > 18 bytes data, server => client 01:25:29.697589 'WE ROOLZ: 202066\r\n' 01:25:29.697847 Received DISC (on stdin) 01:25:29.697964 ====> Client forcibly disconnected 01:25:29.700229 Received QUIT (on stdin) 01:25:29.700321 quits 01:25:29.700829 ============> sockfilt quits 01:26:15.145765 Running IPv4 version 01:26:15.159209 Listening on port 37807 01:26:15.159666 Wrote pid 260849 to log/1/server/ftp_sockdata.pid 01:26:15.163721 Received PING (on stdin) 01:26:15.164590 Received PORT (on stdin) 01:26:15.360152 ====> Client connect 01:26:15.846972 < 49 bytes data, client => server 01:26:15.847454 'Contents\nof\na file\nto verify\nftp\nupload\n\n\nworks?\n' 01:26:16.274349 ====> Client disconnect 01:26:16.274770 Received ACKD (on stdin) 01:26:16.276001 Received QUIT (on stdin) 01:26:16.276091 quits 01:26:16.276594 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 505 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I STOR 505 RNFR 505 RNTO 505-forreal QUIT === End of file server.input === Start of file stderr505 URL: ftp://127.0.0.1:37481/505 * Trying 127.0.0.1:37481... * Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 127.0.0.1 port 37656 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||37807|) * Connecting to 127.0.0.1 (127.0.0.1) port 37807 * Trying 127.0.0.1:37807... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 37807) from 127.0.0.1 port 52538 > TYPE I < 200 I modify TYPE as you wanted > STOR 505 < 125 Gimme gimme gimme * upload completely sent off: 49 bytes * Remembering we are in dir "" < 226 File transfer complete > RNFR 505 < 350 Received your order. Please provide more > RNTO 505-forreal < 250 Ok, thanks. File renaming completed. * Connection #0 to host 127.0.0.1:37481 left intact Test ended with result 0 === End of file stderr505 === Start of file upload.505 Contents of a file to verify ftp upload works? === End of file upload.505 === Start of file upload505 Contents of a file to verify ftp upload works? === End of file upload505 === Start of file valgrind505 ==259664== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind505 test 0508...[send HTTP POST using read callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind508 ./libtest/libtests lib508 http://127.0.0.1:46263/508 > log/5/stdout508 2> log/5/stderr508 valgrind ERROR ==259984== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 508 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind508 ./libtest/libtests lib508 http://127.0.0.1:46263/508 > log/5/stdout508 2> log/5/stderr508 === End of file commands.log === Start of file http_server.log 01:25:37.684837 ====> Client connect 01:25:37.684996 accept_connection 3 returned 4 01:25:37.685067 accept_connection 3 returned 0 01:25:37.691852 Read 93 bytes 01:25:37.691937 Process 93 bytes request 01:25:37.692023 Got request: GET /verifiedserver HTTP/1.1 01:25:37.692085 Are-we-friendly question received 01:25:37.692188 Wrote request (93 bytes) input to log/5/server.input 01:25:37.692274 Identifying ourselves as friends 01:25:37.692424 Response sent (57 bytes) and written to log/5/server.response 01:25:37.692483 special request received, no persistency 01:25:37.692535 ====> Client disconnect 0 01:26:22.637281 ====> Client connect 01:26:22.637455 accept_connection 3 returned 4 01:26:22.637543 accept_connection 3 returned 0 01:26:23.747078 Read 128 bytes 01:26:23.747313 Process 128 bytes request 01:26:23.747434 Got request: POST /508 HTTP/1.1 01:26:23.747509 Serve test number 508 part 0 01:26:23.747686 - request found to be complete (508) 01:26:23.747843 Found Content-Length: 45 in the request 01:26:23.990524 Read 1 bytes 01:26:23.990760 Process 129 bytes request [CONTINUED] 01:26:23.990841 - request found to be complete (508) 01:26:24.093200 Read 1 bytes 01:26:24.093412 Process 130 bytes request [CONTINUED] 01:26:24.093495 - request found to be complete (508) 01:26:24.104477 Read 1 bytes 01:26:24.104564 Process 131 bytes request [CONTINUED] 01:26:24.104632 - request found to be complete (508) 01:26:24.106407 Read 1 bytes 01:26:24.106482 Process 132 bytes request [CONTINUED] 01:26:24.106550 - request found to be complete (508) 01:26:24.108215 Read 1 bytes 01:26:24.108290 Process 133 bytes request [CONTINUED] 01:26:24.108358 - request found to be complete (508) 01:26:24.109996 Read 1 bytes 01:26:24.110075 Process 134 bytes request [CONTINUED] 01:26:24.110146 - request found to be complete (508) 01:26:24.111795 Read 1 bytes 01:26:24.111867 Process 135 bytes request [CONTINUED] 01:26:24.111935 - request found to be complete (508) 01:26:24.113576 Read 1 bytes 01:26:24.113651 Process 136 bytes request [CONTINUED] 01:26:24.113718 - request found to be complete (508) 01:26:24.115343 Read 1 bytes 01:26:24.115414 Process 137 bytes request [CONTINUED] 01:26:24.115481 - request found to be complete (508) 01:26:24.117108 Read 1 bytes 01:26:24.117183 Process 138 bytes request [CONTINUED] 01:26:24.117250 - request found to be complete (508) 01:26:24.118867 Read 1 bytes 01:26:24.118938 Process 139 bytes request [CONTINUED] 01:26:24.119005 - request found to be complete (508) 01:26:24.120648 Read 1 bytes 01:26:24.120740 Process 140 bytes request [CONTINUED] 01:26:24.120802 - request found to be complete (508) 01:26:24.122352 Read 1 bytes 01:26:24.122423 Process 141 bytes request [CONTINUED] 01:26:24.122486 - request found to be complete (508) 01:26:24.124087 Read 1 bytes 01:26:24.124157 Process 142 bytes request [CONTINUED] 01:26:24.124219 - request found to be complete (508) 01:26:24.125802 Read 1 bytes 01:26:24.125871 Process 143 bytes request [CONTINUED] 01:26:24.125932 - request found to be complete (508) 01:26:24.128227 Read 1 bytes 01:26:24.128303 Process 144 bytes request [CONTINUED] 01:26:24.128365 - request found to be complete (508) 01:26:24.129238 Read 1 bytes 01:26:24.129307 Process 145 bytes request [CONTINUED] 01:26:24.129370 - request found to be complete (508) 01:26:24.130948 Read 1 bytes 01:26:24.131019 Process 146 bytes request [CONTINUED] 01:26:24.131080 - request found to be complete (508) 01:26:24.132644 Read 1 bytes 01:26:24.132711 Process 147 bytes request [CONTINUED] 01:26:24.132772 - request found to be complete (508) 01:26:24.134354 Read 1 bytes 01:26:24.134427 Process 148 bytes request [CONTINUED] 01:26:24.134489 - request found to be complete (508) 01:26:24.136086 Read 1 bytes 01:26:24.136156 Process 149 bytes request [CONTINUED] 01:26:24.136218 - request found to be complete (508) 01:26:24.137795 Read 1 bytes 01:26:24.137864 Process 150 bytes request [CONTINUED] 01:26:24.137928 - request found to be complete (508) 01:26:24.139495 Read 1 bytes 01:26:24.139562 Process 151 bytes request [CONTINUED] 01:26:24.139623 - request found to be complete (508) 01:26:24.141199 Read 1 bytes 01:26:24.141269 Process 152 bytes request [CONTINUED] 01:26:24.141329 - request found to be complete (508) 01:26:24.142896 Read 1 bytes 01:26:24.142959 Process 153 bytes request [CONTINUED] 01:26:24.143013 - request found to be complete (508) 01:26:24.144607 Read 1 bytes 01:26:24.144672 Process 154 bytes request [CONTINUED] 01:26:24.144728 - request found to be completeCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind509 ./libtest/libtests lib509 - > log/4/stdout509 2> log/4/stderr509 CMD (1536): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind507 ./libtest/libtests lib507 http://non-existing-host.haxx.se/ > log/2/stdout507 2> log/2/stderr507 (508) 01:26:24.146299 Read 1 bytes 01:26:24.146363 Process 155 bytes request [CONTINUED] 01:26:24.146423 - request found to be complete (508) 01:26:24.147995 Read 1 bytes 01:26:24.148062 Process 156 bytes request [CONTINUED] 01:26:24.148120 - request found to be complete (508) 01:26:24.149696 Read 1 bytes 01:26:24.149760 Process 157 bytes request [CONTINUED] 01:26:24.149818 - request found to be complete (508) 01:26:24.151397 Read 1 bytes 01:26:24.151464 Process 158 bytes request [CONTINUED] 01:26:24.151521 - request found to be complete (508) 01:26:24.153095 Read 1 bytes 01:26:24.153157 Process 159 bytes request [CONTINUED] 01:26:24.153214 - request found to be complete (508) 01:26:24.154794 Read 1 bytes 01:26:24.154862 Process 160 bytes request [CONTINUED] 01:26:24.154919 - request found to be complete (508) 01:26:24.156482 Read 1 bytes 01:26:24.156545 Process 161 bytes request [CONTINUED] 01:26:24.156602 - request found to be complete (508) 01:26:24.158185 Read 1 bytes 01:26:24.158254 Process 162 bytes request [CONTINUED] 01:26:24.158313 - request found to be complete (508) 01:26:24.159900 Read 1 bytes 01:26:24.159966 Process 163 bytes request [CONTINUED] 01:26:24.160025 - request found to be complete (508) 01:26:24.161602 Read 1 bytes 01:26:24.161661 Process 164 bytes request [CONTINUED] 01:26:24.161721 - request found to be complete (508) 01:26:24.163300 Read 1 bytes 01:26:24.163364 Process 165 bytes request [CONTINUED] 01:26:24.163435 - request found to be complete (508) 01:26:24.164998 Read 1 bytes 01:26:24.165060 Process 166 bytes request [CONTINUED] 01:26:24.165117 - request found to be complete (508) 01:26:24.166690 Read 1 bytes 01:26:24.166763 Process 167 bytes request [CONTINUED] 01:26:24.166820 - request found to be complete (508) 01:26:24.168383 Read 1 bytes 01:26:24.168446 Process 168 bytes request [CONTINUED] 01:26:24.168503 - request found to be complete (508) 01:26:24.170074 Read 1 bytes 01:26:24.170144 Process 169 bytes request [CONTINUED] 01:26:24.170203 - request found to be complete (508) 01:26:24.171762 Read 1 bytes 01:26:24.171828 Process 170 bytes request [CONTINUED] 01:26:24.171888 - request found to be complete (508) 01:26:24.173457 Read 1 bytes 01:26:24.173525 Process 171 bytes request [CONTINUED] 01:26:24.173583 - request found to be complete (508) 01:26:24.185534 Read 1 bytes 01:26:24.185605 Process 172 bytes request [CONTINUED] 01:26:24.185666 - request found to be complete (508) 01:26:24.185896 Wrote request (172 bytes) input to log/5/server.input 01:26:24.186004 Send response test508 section 01:26:24.186205 connection close instruction "swsclose" found in response 01:26:24.186397 Response sent (141 bytes) and written to log/5/server.response 01:26:24.186461 instructed to close connection after server-reply 01:26:24.186520 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 50278 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 508 === End of file server.cmd === Start of file server.input POST /508 HTTP/1.1 Host: 127.0.0.1:46263 Accept: */* Content-Length: 45 Content-Type: application/x-www-form-urlencoded this is what we post to the silly web server === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file server.response === Start of file stderr508 URL: http://127.0.0.1:46263/508 * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 46212 * using HTTP/1.x > POST /508 HTTP/1.1 Host: 127.0.0.1:46263 Accept: */* Content-Length: 45 Content-Type: application/x-www-form-urlencoded * upload completely sent off: 45 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * shutting down connection #0 Test ended with result 0 === End of file stderr508 === Start of file stdout508 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file stdout508 === Start of file valgrind508 ==259984== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind508 test 0509...[initialization with memory callbacks and actual usage] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind509 ./libtest/libtests lib509 - > log/4/stdout509 2> log/4/stderr509 valgrind ERROR ==260115== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 509 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind509 ./libtest/libtests lib509 - > log/4/stdout509 2> log/4/stderr509 === End of file commands.log === Start of file server.cmd Testnum 509 === End of file server.cmd === Start of file stderr509 URL: - Test ended with result 0 === End of file stderr509 === Start of file stdout509 Callbacks were invoked === End of file stdout509 === Start of file valgrind509 ==260115== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind509 test 0507...[multi interface get with non-existing host name] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind507 ./libtest/libtests lib507 http://non-existing-host.haxx.se/ > log/2/stdout507 2> log/2/stderr507 valgrind ERROR ==259834== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 507 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind507 ./libtest/libtests lib507 http://non-existing-host.haxx.se/ > log/2/stdout507 2> log/2/stderr507 === End of file commands.log === Start of file http_server.log 01:25:36.448751 ====> Client connect 01:25:36.448915 accept_connection 3 returned 4 01:25:36.448989 accept_connection 3 returned 0 01:25:36.455656 Read 93 bytes 01:25:36.455746 Process 93 bytes request 01:25:36.455824 Got request: GET /verifiedserver HTTP/1.1 01:25:36.455881 Are-we-friendly question received 01:25:36.455983 Wrote request (93 bytes) input to log/2/server.input 01:25:36.456066 Identifying ourselves as friends 01:25:36.456228 Response sent (57 bytes) and written to log/2/server.response 01:25:36.456283 special request received, no persistency 01:25:36.456331 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 36588 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 507 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 === CMD (19968): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind511 ./libtest/libtests lib511 ftp://127.0.0.1:33545/511 > log/8/stdout511 2> log/8/stderr511 End of file server.response === Start of file stderr507 URL: http://non-existing-host.haxx.se/ Test ended with result 6 === End of file stderr507 === Start of file valgrind507 ==259834== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind507 test 0511...[FTP with FILETIME and NOBODY but missing file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind511 ./libtest/libtests lib511 ftp://127.0.0.1:33545/511 > log/8/stdout511 2> log/8/stderr511 valgrind ERROR ==260291== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 511 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind511 ./libtest/libtests lib511 ftp://127.0.0.1:33545/511 > log/8/stdout511 2> log/8/stderr511 === End of file commands.log === Start of file ftp_server.log 01:25:49.047298 ====> Client connect 01:25:49.048340 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:25:49.057547 < "USER anonymous" 01:25:49.057910 > "331 We are happy you popped in![CR][LF]" 01:25:49.060486 < "PASS ftp@example.com" 01:25:49.060934 > "230 Welcome you silly person[CR][LF]" 01:25:49.061967 < "PWD" 01:25:49.062221 > "257 "/" is current directory[CR][LF]" 01:25:49.064696 < "EPSV" 01:25:49.064913 ====> Passive DATA channel requested by client 01:25:49.065065 DATA sockfilt for passive data channel starting... 01:25:49.108966 DATA sockfilt for passive data channel started (pid 260246) 01:25:49.110221 DATA sockfilt for passive data channel listens on port 39485 01:25:49.111002 > "229 Entering Passive Mode (|||39485|)[CR][LF]" 01:25:49.111234 Client has been notified that DATA conn will be accepted on port 39485 01:25:49.113170 Client connects to port 39485 01:25:49.113402 ====> Client established passive DATA connection on port 39485 01:25:49.115355 < "TYPE I" 01:25:49.115681 > "200 I modify TYPE as you wanted[CR][LF]" 01:25:49.116950 < "SIZE verifiedserver" 01:25:49.117327 > "213 18[CR][LF]" 01:25:49.118518 < "RETR verifiedserver" 01:25:49.118835 > "150 Binary junk (18 bytes).[CR][LF]" 01:25:49.122118 =====> Closing passive DATA connection... 01:25:49.122304 Server disconnects passive DATA connection 01:25:49.123294 Server disconnected passive DATA connection 01:25:49.123460 DATA sockfilt for passive data channel quits (pid 260246) 01:25:49.130093 DATA sockfilt for passive data channel quit (pid 260246) 01:25:49.130368 =====> Closed passive DATA connection 01:25:49.132091 > "226 File transfer complete[CR][LF]" 01:25:49.169366 < "QUIT" 01:25:49.169785 > "221 bye bye baby[CR][LF]" 01:25:49.174221 MAIN sockfilt said DISC 01:25:49.174441 ====> Client disconnected 01:25:49.174711 Awaiting input 01:26:33.932068 ====> Client connect 01:26:33.932797 FTPD: Getting commands from log/8/server.cmd 01:26:33.933600 FTPD: set custom reply for MDTM command 01:26:33.934010 FTPD: set custom reply for SIZE command 01:26:33.937632 FTPD: run test case number: 511 01:26:33.938764 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:26:35.040244 < "USER anonymous" 01:26:35.041993 > "331 We are happy you popped in![CR][LF]" 01:26:35.133387 < "PASS ftp@example.com" 01:26:35.133854 > "230 Welcome you silly person[CR][LF]" 01:26:35.214994 < "PWD" 01:26:35.217549 > "257 "/" is current directory[CR][LF]" 01:26:35.448000 < "MDTM 511" 01:26:35.451037 > "550 bluah you f00l![CR][LF]" 01:26:35.554471 < "TYPE I" 01:26:35.560861 > "200 I modify TYPE as you wanted[CR][LF]" 01:26:35.600086 < "SIZE 511" 01:26:35.600508 > "550 bluah you f00l![CR][LF]" 01:26:36.495033 < "QUIT" 01:26:36.495800 > "221 bye bye baby[CR][LF]" 01:26:36.746626 MAIN sockfilt said DISC 01:26:36.747346 ====> Client disconnected 01:26:36.747702 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:25:49.659738 ====> Client connect 01:25:49.660962 Received DATA (on stdin) 01:25:49.661059 > 160 bytes data, server => client 01:25:49.661169 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:25:49.661271 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:25:49.661362 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:25:49.668914 < 16 bytes data, client => server 01:25:49.669012 'USER anonymous\r\n' 01:25:49.670610 Received DATA (on stdin) 01:25:49.670690 > 33 bytes data, server => client 01:25:49.670780 '331 We are happy you popped in!\r\n' 01:25:49.671063 < 22 bytes data, client => server 01:25:49.671140 'PASS ftp@example.com\r\n' 01:25:49.673475 Received DATA (on stdin) 01:25:49.673558 > 30 bytes data, server => client 01:25:49.673902 '230 Welcome you silly person\r\n' 01:25:49.674227 < 5 bytes data, client => server 01:25:49.674295 'PWD\r\n' 01:25:49.675151 Received DATA (on stdin) 01:25:49.675216 > 30 bytes data, server => client 01:25:49.675296 '257 "/" is current directory\r\n' 01:25:49.676867 < 6 bytes data, client => server 01:25:49.676961 'EPSV\r\n' 01:25:49.723280 Received DATA (on stdin) 01:25:49.723418 > 39 bytes data, server => client 01:25:49.723541 '229 Entering Passive Mode (|||39485|)\r\n' 01:25:49.727378 < 8 bytes data, client => server 01:25:49.727464 'TYPE I\r\n' 01:25:49.728645 Received DATA (on stdin) 01:25:49.728718 > 33 bytes data, server => client 01:25:49.728802 '200 I modify TYPE as you wanted\r\n' 01:25:49.729194 < 21 bytes data, client => server 01:25:49.729268 'SIZE verifiedserver\r\n' 01:25:49.730160 Received DATA (on stdin) 01:25:49.730254 > 8 bytes data, server => client 01:25:49.730328 '213 18\r\n' 01:25:49.730783 < 21 bytes data, client => server 01:25:49.730861 'RETR verifiedserver\r\n' 01:25:49.731803 Received DATA (on stdin) 01:25:49.731872 > 29 bytes data, server => client 01:25:49.731950 '150 Binary junk (18 bytes).\r\n' 01:25:49.743375 Received DATA (on stdin) 01:25:49.743503 > 28 bytes data, server => client 01:25:49.745114 '226 File transfer complete\r\n' 01:25:49.781006 < 6 bytes data, client => server 01:25:49.781179 'QUIT\r\n' 01:25:49.782933 Received DATA (on stdin) 01:25:49.783007 > 18 bytes data, server => client 01:25:49.783083 '221 bye bye baby\r\n' 01:25:49.786841 ====> Client disconnect 01:25:49.787630 Received ACKD (on stdin) 01:26:34.544401 ====> Client connect 01:26:34.551105 Received DATA (on stdin) 01:26:34.551218 > 160 bytes data, server => client 01:26:34.551645 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:26:34.551748 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:26:34.551834 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:26:35.651561 < 16 bytes data, client => server 01:26:35.651750 'USER anonymous\r\n' 01:26:35.653261 Received DATA (on stdin) 01:26:35.653349 > 33 bytes data, server => client 01:26:35.654400 '331 We are happy you popped in!\r\n' 01:26:35.744789 < 22 bytes data, client => server 01:26:35.744991 'PASS ftp@example.com\r\n' 01:26:35.750063 Received DATA (on stdin) 01:26:35.750176 > 30 bytes data, server => client 01:26:35.750286 '230 Welcome you silly person\r\n' 01:26:35.826371 < 5 bytes data, client => server 01:26:35.826549 'PWD\r\n' 01:26:35.828108 Received DATA (on stdin) 01:26:35.828201 > 30 bytes data, server => client 01:26:35.830536 '257 "/" is current directory\r\n' 01:26:36.059429 < 10 bytes data, client => server 01:26:36.059620 'MDTM 511\r\n' 01:26:36.060988 Received DATA (on stdin) 01:26:36.061067 > 21 bytes data, server => client 01:26:36.063434 '550 bluah you f00l!\r\n' 01:26:36.143574 < 8 bytes data, client => server 01:26:36.143775 'TYPE I\r\n' 01:26:36.167632 Received DATA (on stdin) 01:26CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind510 ./libtest/libtests lib510 http://127.0.0.1:46853/510 > log/3/stdout510 2> log/3/stderr510 CMD (0): ./libtest/libtests lib518 http://127.0.0.1:39461/518 > log/8/stdout518 2> log/8/stderr518 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind512 ./libtest/libtests lib512 http://127.0.0.1:34897/512 > log/7/stdout512 2> log/7/stderr512 :36.167761 > 33 bytes data, server => client 01:26:36.173890 '200 I modify TYPE as you wanted\r\n' 01:26:36.211523 < 10 bytes data, client => server 01:26:36.211713 'SIZE 511\r\n' 01:26:36.213351 Received DATA (on stdin) 01:26:36.213445 > 21 bytes data, server => client 01:26:36.213526 '550 bluah you f00l!\r\n' 01:26:37.106481 < 6 bytes data, client => server 01:26:37.106681 'QUIT\r\n' 01:26:37.108047 Received DATA (on stdin) 01:26:37.108130 > 18 bytes data, server => client 01:26:37.108241 '221 bye bye baby\r\n' 01:26:37.358914 ====> Client disconnect 01:26:37.359788 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:25:49.711859 Running IPv4 version 01:25:49.719816 Listening on port 39485 01:25:49.720354 Wrote pid 260246 to log/8/server/ftp_sockdata.pid 01:25:49.721154 Received PING (on stdin) 01:25:49.722245 Received PORT (on stdin) 01:25:49.725734 ====> Client connect 01:25:49.734025 Received DATA (on stdin) 01:25:49.734374 > 18 bytes data, server => client 01:25:49.735475 'WE ROOLZ: 220580\r\n' 01:25:49.735727 Received DISC (on stdin) 01:25:49.735843 ====> Client forcibly disconnected 01:25:49.736415 Received QUIT (on stdin) 01:25:49.736489 quits 01:25:49.740360 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY MDTM 550 bluah you f00l REPLY SIZE 550 bluah you f00l Testnum 511 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD MDTM 511 TYPE I SIZE 511 QUIT === End of file server.input === Start of file stderr511 URL: ftp://127.0.0.1:33545/511 * Trying 127.0.0.1:33545... * Established connection to 127.0.0.1 (127.0.0.1 port 33545) from 127.0.0.1 port 47264 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' * Request has same path as previous transfer > MDTM 511 < 550 bluah you f00l * MDTM failed: file does not exist or permission problem, continuing > TYPE I < 200 I modify TYPE as you wanted > SIZE 511 < 550 bluah you f00l * The file does not exist * Remembering we are in dir "" * Connection #0 to host 127.0.0.1:33545 left intact Test ended with result 78 === End of file stderr511 === Start of file valgrind511 ==260291== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind511 test 0510...[send HTTP POST using read callback, using chunked transfer-encoding] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind510 ./libtest/libtests lib510 http://127.0.0.1:46853/510 > log/3/stdout510 2> log/3/stderr510 valgrind ERROR ==260288== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 510 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind510 ./libtest/libtests lib510 http://127.0.0.1:46853/510 > log/3/stdout510 2> log/3/stderr510 === End of file commands.log === Start of file http_server.log 01:25:48.651854 ====> Client connect 01:25:48.652024 accept_connection 3 returned 4 01:25:48.652096 accept_connection 3 returned 0 01:25:48.659408 Read 93 bytes 01:25:48.659515 Process 93 bytes request 01:25:48.659608 Got request: GET /verifiedserver HTTP/1.1 01:25:48.659674 Are-we-friendly question received 01:25:48.659799 Wrote request (93 bytes) input to log/3/server.input 01:25:48.659901 Identifying ourselves as friends 01:25:48.660067 Response sent (57 bytes) and written to log/3/server.response 01:25:48.660134 special request received, no persistency 01:25:48.660206 ====> Client disconnect 0 01:26:33.918581 ====> Client connect 01:26:33.918723 accept_connection 3 returned 4 01:26:33.918804 accept_connection 3 returned 0 01:26:35.285530 Read 157 bytes 01:26:35.285735 Process 157 bytes request 01:26:35.285830 Got request: POST /510 HTTP/1.1 01:26:35.285900 Serve test number 510 part 0 01:26:35.286077 - request found to be complete (510) 01:26:36.796233 Read 8 bytes 01:26:36.796445 Process 165 bytes request [CONTINUED] 01:26:36.796517 - request found to be complete (510) 01:26:36.877483 Read 8 bytes 01:26:36.877687 Process 173 bytes request [CONTINUED] 01:26:36.877753 - request found to be complete (510) 01:26:36.885848 Read 10 bytes 01:26:36.885968 Process 183 bytes request [CONTINUED] 01:26:36.886040 - request found to be complete (510) 01:26:36.895574 Read 35 bytes 01:26:36.895709 Process 218 bytes request [CONTINUED] 01:26:36.895775 - request found to be complete (510) 01:26:36.940079 Read 5 bytes 01:26:36.940324 Process 223 bytes request [CONTINUED] 01:26:36.940398 - request found to be complete (510) 01:26:36.940702 Wrote request (223 bytes) input to log/3/server.input 01:26:36.940827 Send response test510 section 01:26:36.941045 connection close instruction "swsclose" found in response 01:26:36.941289 Response sent (141 bytes) and written to log/3/server.response 01:26:36.941358 instructed to close connection after server-reply 01:26:36.941420 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 35736 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 510 === End of file server.cmd === Start of file server.input POST /510 HTTP/1.1 Host: 127.0.0.1:46853 Accept: */* Transfer-Encoding: chunked Content-Type: application/x-www-form-urlencoded Expect: 100-continue 3 one 3 two 5 three 1d and a final longer crap: four 0 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file server.response === Start of file stderr510 URL: http://127.0.0.1:46853/510 * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 38308 * using HTTP/1.x > POST /510 HTTP/1.1 Host: 127.0.0.1:46853 Accept: */* Transfer-Encoding: chunked Content-Type: application/x-www-form-urlencoded Expect: 100-continue * Done waiting for 100-continue * upload completely sent off: 66 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * shutting down connection #0 Test ended with result 0 === End of file stderr510 === Start of file stdout510 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file stdout510 === Start of file valgrind510 ==260288== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind510 prechecked ./libtest/libtests lib518 check test 0518...[HTTP GET with more than FD_SETSIZE descriptors open] ./libtest/libtests lib518 http://127.0.0.1:39461/518 > log/8/stdout518 2> log/8/stderr518 valgrind SKIPPED --pd---e--- OK (494 out of 1746, remaining: 135:45, took 3.269s, duration: 53:33) test 0512...[simple curl_easy_duplicate() test] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind512 .CMD (10752): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind513 ./libtest/libtests lib513 http://127.0.0.1:38277/513 > log/6/stdout513 2> log/6/stderr513 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind517 ./libtest/libtests lib517 - > log/2/stdout517 2> log/2/stderr517 /libtest/libtests lib512 http://127.0.0.1:34897/512 > log/7/stdout512 2> log/7/stderr512 valgrind ERROR ==260547== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 512 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind512 ./libtest/libtests lib512 http://127.0.0.1:34897/512 > log/7/stdout512 2> log/7/stderr512 === End of file commands.log === Start of file http_server.log 01:25:53.430897 ====> Client connect 01:25:53.431049 accept_connection 3 returned 4 01:25:53.431121 accept_connection 3 returned 0 01:25:53.438051 Read 93 bytes 01:25:53.438144 Process 93 bytes request 01:25:53.438229 Got request: GET /verifiedserver HTTP/1.1 01:25:53.438291 Are-we-friendly question received 01:25:53.438397 Wrote request (93 bytes) input to log/7/server.input 01:25:53.438482 Identifying ourselves as friends 01:25:53.438633 Response sent (57 bytes) and written to log/7/server.response 01:25:53.438693 special request received, no persistency 01:25:53.438745 ====> Client disconnect 0 01:26:38.149565 ====> Client connect 01:26:38.149705 accept_connection 3 returned 4 01:26:38.149783 accept_connection 3 returned 0 01:26:39.095420 Read 57 bytes 01:26:39.095625 Process 57 bytes request 01:26:39.095719 Got request: GET /512 HTTP/1.1 01:26:39.095788 Serve test number 512 part 0 01:26:39.095953 - request found to be complete (512) 01:26:39.096196 Wrote request (57 bytes) input to log/7/server.input 01:26:39.096320 Send response test512 section 01:26:39.096535 connection close instruction "swsclose" found in response 01:26:39.096696 Response sent (103 bytes) and written to log/7/server.response 01:26:39.096765 instructed to close connection after server-reply 01:26:39.096826 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 48938 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 512 === End of file server.cmd === Start of file server.input GET /512 HTTP/1.1 Host: 127.0.0.1:34897 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: yes Connection: close hello === End of file server.response === Start of file stderr512 URL: http://127.0.0.1:34897/512 * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 52792 * using HTTP/1.x > GET /512 HTTP/1.1 Host: 127.0.0.1:34897 Accept: */* < HTTP/1.1 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: yes < Connection: close < * abort upload * shutting down connection #0 Test ended with result 0 === End of file stderr512 === Start of file stdout512 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: yes Connection: close hello === End of file stdout512 === Start of file valgrind512 ==260547== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind512 test 0513...[send HTTP POST using read callback that returns CURL_READFUNC_ABORT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind513 ./libtest/libtests lib513 http://127.0.0.1:38277/513 > log/6/stdout513 2> log/6/stderr513 valgrind ERROR ==260700== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 513 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind513 ./libtest/libtests lib513 http://127.0.0.1:38277/513 > log/6/stdout513 2> log/6/stderr513 === End of file commands.log === Start of file http_server.log 01:25:56.466578 ====> Client connect 01:25:56.466768 accept_connection 3 returned 4 01:25:56.466866 accept_connection 3 returned 0 01:25:56.470090 Read 93 bytes 01:25:56.470183 Process 93 bytes request 01:25:56.470272 Got request: GET /verifiedserver HTTP/1.1 01:25:56.470336 Are-we-friendly question received 01:25:56.470448 Wrote request (93 bytes) input to log/6/server.input 01:25:56.470537 Identifying ourselves as friends 01:25:56.470711 Response sent (57 bytes) and written to log/6/server.response 01:25:56.470774 special request received, no persistency 01:25:56.470829 ====> Client disconnect 1 01:25:56.470906 Wrote request (13 bytes) input to log/6/server.input 01:26:40.866881 ====> Client connect 01:26:40.867035 accept_connection 3 returned 4 01:26:40.867110 accept_connection 3 returned 0 01:26:42.357135 Connection closed by client 01:26:42.357338 ====> Client disconnect 1 01:26:42.357494 Wrote request (13 bytes) input to log/6/server.input === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 48548 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 513 === End of file server.cmd === Start of file server.input [DISCONNECT] === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 === End of file server.response === Start of file stderr513 URL: http://127.0.0.1:38277/513 * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 35014 * using HTTP/1.x * operation aborted by callback * closing connection #0 Test ended with result 42 === End of file stderr513 === Start of file valgrind513 ==260700== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind513 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 514 in state 4 Runner 2 (id 185908) running test 517 in state 4 Runner 3 (id 185910) running test 519 in state 4 Runner 4 (id 185912) running test 516 in state 4 Runner 5 (id 185914) running test 515 in state 4 Runner 6 (id 185916) running test 522 in state 4 Runner 7 (id 185918) running test 521 in state 4 Runner 8 (id 185920) running test 520 in state 4 test 0517...[curl_getdate() testing] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind517 ./libtest/libtests lib517 - > log/2/stdout517 2> log/2/stderr517 valgrind ERROR ==261318== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 517 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind517 ./libtest/libtests lib517 - > log/2/stdout517 2> log/2/stderr517 === End of file commands.log === Start of file server.cmd Testnum 517 === End of file server.cmd === Start of file stderr517 URL: - Test ended with result 0 === End of file stderr517 === Start of file valgrind517 ==261318== error calling PR_SET_PTRACER, vgdb mighCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind514 ./libtest/libtests lib514 http://127.0.0.1:40641/514 > log/1/stdout514 2> log/1/stderr514 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind515 ./libtest/libtests lib515 http://127.0.0.1:46263/515 > log/5/stdout515 2> log/5/stderr515 t block === End of file valgrind517 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 514 in state 4 Runner 2 (id 185908) running test 523 in state 4 Runner 3 (id 185910) running test 519 in state 4 Runner 4 (id 185912) running test 516 in state 4 Runner 5 (id 185914) running test 515 in state 4 Runner 6 (id 185916) running test 522 in state 4 Runner 7 (id 185918) running test 521 in state 4 Runner 8 (id 185920) running test 520 in state 4 test 0514...[First set options to POST and then to make HEAD] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind514 ./libtest/libtests lib514 http://127.0.0.1:40641/514 > log/1/stdout514 2> log/1/stderr514 valgrind ERROR ==260914== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 514 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind514 ./libtest/libtests lib514 http://127.0.0.1:40641/514 > log/1/stdout514 2> log/1/stderr514 === End of file commands.log === Start of file http_server.log 01:26:22.736555 ====> Client connect 01:26:22.736717 accept_connection 3 returned 4 01:26:22.736810 accept_connection 3 returned 0 01:26:22.744158 Read 93 bytes 01:26:22.744254 Process 93 bytes request 01:26:22.744348 Got request: GET /verifiedserver HTTP/1.1 01:26:22.744416 Are-we-friendly question received 01:26:22.744536 Wrote request (93 bytes) input to log/1/server.input 01:26:22.744629 Identifying ourselves as friends 01:26:22.744789 Response sent (57 bytes) and written to log/1/server.response 01:26:22.744854 special request received, no persistency 01:26:22.744913 ====> Client disconnect 0 01:27:07.469019 ====> Client connect 01:27:07.469174 accept_connection 3 returned 4 01:27:07.469264 accept_connection 3 returned 0 01:27:08.447288 Read 58 bytes 01:27:08.447491 Process 58 bytes request 01:27:08.447586 Got request: HEAD /514 HTTP/1.1 01:27:08.447667 Serve test number 514 part 0 01:27:08.447852 - request found to be complete (514) 01:27:08.448116 Wrote request (58 bytes) input to log/1/server.input 01:27:08.448233 Send response test514 section 01:27:08.448594 Response sent (261 bytes) and written to log/1/server.response 01:27:08.448663 => persistent connection request ended, awaits new request 01:27:09.968700 Connection closed by client 01:27:09.968892 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 41874 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 514 === End of file server.cmd === Start of file server.input HEAD /514 HTTP/1.1 Host: 127.0.0.1:40641 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes === End of file server.response === Start of file stderr514 URL: http://127.0.0.1:40641/514 * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 50884 * using HTTP/1.x > HEAD /514 HTTP/1.1 Host: 127.0.0.1:40641 Accept: */* < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT < ETag: "21025-dc7-39462498" < Accept-Ranges: bytes < Content-Length: 6 < Connection: close < Content-Type: text/html < Funny-head: yesyes < * we are done reading and this is set to close, stop send * abort upload * shutting down connection #0 Test ended with result 0 === End of file stderr514 === Start of file stdout514 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes === End of file stdout514 === Start of file valgrind514 ==260914== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind514 test 0515...[make a POSTFIELDS set to NULL with POSTFIELDSIZE set to zero] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind515 ./libtest/libtests lib515 http://127.0.0.1:46263/515 > log/5/stdout515 2> log/5/stderr515 valgrind ERROR ==261089== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 515 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind515 ./libtest/libtests lib515 http://127.0.0.1:46263/515 > log/5/stdout515 2> log/5/stderr515 === End of file commands.log === Start of file http_server.log 01:26:30.100215 ====> Client connect 01:26:30.100389 accept_connection 3 returned 4 01:26:30.100469 accept_connection 3 returned 0 01:26:30.104650 Read 93 bytes 01:26:30.104743 Process 93 bytes request 01:26:30.104834 Got request: GET /verifiedserver HTTP/1.1 01:26:30.104902 Are-we-friendly question received 01:26:30.105020 Wrote request (93 bytes) input to log/5/server.input 01:26:30.105119 Identifying ourselves as friends 01:26:30.105306 Response sent (57 bytes) and written to log/5/server.response 01:26:30.105370 special request received, no persistency 01:26:30.105429 ====> Client disconnect 0 01:27:14.923215 ====> Client connect 01:27:14.923387 accept_connection 3 returned 4 01:27:14.923465 accept_connection 3 returned 0 01:27:15.939265 Read 126 bytes 01:27:15.939477 Process 126 bytes request 01:27:15.939578 Got request: POST /515 HTTP/1.1 01:27:15.939653 Serve test number 515 part 0 01:27:15.939831 - request found to be complete (515) 01:27:15.939998 Found Content-Length: 0 in the request 01:27:15.940178 Wrote request (126 bytes) input to log/5/server.input 01:27:15.940292 Send response test515 section 01:27:15.940497 connection close instruction "swsclose" found in response 01:27:15.940680 Response sent (113 bytes) and written to log/5/server.response 01:27:15.940748 instructed to close connection after server-reply 01:27:15.940809 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 46224 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 515 === End of file server.cmd === Start of file server.input POST /515 HTTP/1.1 Host: 127.0.0.1:46263 Accept: */* Content-Length: 0 Content-Type: application/x-www-form-urlencoded === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT SCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind516 ./libtest/libtests lib516 http://127.0.0.1:42621/516 > log/4/stdout516 2> log/4/stderr516 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind519 ./libtest/libtests lib519 http://127.0.0.1:46853/519 > log/3/stdout519 2> log/3/stderr519 erver: test-server/fake Content-Length: 3 OK === End of file server.response === Start of file stderr515 URL: http://127.0.0.1:46263/515 * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 53688 * using HTTP/1.x > POST /515 HTTP/1.1 Host: 127.0.0.1:46263 Accept: */* Content-Length: 0 Content-Type: application/x-www-form-urlencoded < HTTP/1.1 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Content-Length: 3 < * Connection #0 to host 127.0.0.1:46263 left intact Test ended with result 0 === End of file stderr515 === Start of file stdout515 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 3 OK === End of file stdout515 === Start of file valgrind515 ==261089== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind515 test 0516...[make an HTTPPOST set to NULL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind516 ./libtest/libtests lib516 http://127.0.0.1:42621/516 > log/4/stdout516 2> log/4/stderr516 valgrind ERROR ==261239== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 516 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind516 ./libtest/libtests lib516 http://127.0.0.1:42621/516 > log/4/stdout516 2> log/4/stderr516 === End of file commands.log === Start of file http_server.log 01:26:34.590161 ====> Client connect 01:26:34.590310 accept_connection 3 returned 4 01:26:34.590384 accept_connection 3 returned 0 01:26:34.596983 Read 93 bytes 01:26:34.597088 Process 93 bytes request 01:26:34.597172 Got request: GET /verifiedserver HTTP/1.1 01:26:34.597231 Are-we-friendly question received 01:26:34.597337 Wrote request (93 bytes) input to log/4/server.input 01:26:34.597422 Identifying ourselves as friends 01:26:34.597594 Response sent (57 bytes) and written to log/4/server.response 01:26:34.597653 special request received, no persistency 01:26:34.597703 ====> Client disconnect 0 01:27:19.364261 ====> Client connect 01:27:19.364389 accept_connection 3 returned 4 01:27:19.364461 accept_connection 3 returned 0 01:27:20.391174 Read 77 bytes 01:27:20.391364 Process 77 bytes request 01:27:20.391457 Got request: POST /516 HTTP/1.1 01:27:20.391525 Serve test number 516 part 0 01:27:20.391694 - request found to be complete (516) 01:27:20.391841 Found Content-Length: 0 in the request 01:27:20.392004 Wrote request (77 bytes) input to log/4/server.input 01:27:20.392113 Send response test516 section 01:27:20.392324 connection close instruction "swsclose" found in response 01:27:20.392507 Response sent (113 bytes) and written to log/4/server.response 01:27:20.392574 instructed to close connection after server-reply 01:27:20.392635 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 52334 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 516 === End of file server.cmd === Start of file server.input POST /516 HTTP/1.1 Host: 127.0.0.1:42621 Accept: */* Content-Length: 0 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 3 OK === End of file server.response === Start of file stderr516 URL: http://127.0.0.1:42621/516 * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 41536 * using HTTP/1.x > POST /516 HTTP/1.1 Host: 127.0.0.1:42621 Accept: */* Content-Length: 0 < HTTP/1.1 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Content-Length: 3 < * Connection #0 to host 127.0.0.1:42621 left intact Test ended with result 0 === End of file stderr516 === Start of file stdout516 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 3 OK === End of file stdout516 === Start of file valgrind516 ==261239== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind516 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 524 in state 4 Runner 2 (id 185908) running test 523 in state 4 Runner 3 (id 185910) running test 519 in state 4 Runner 4 (id 185912) running test 526 in state 4 Runner 5 (id 185914) running test 525 in state 4 Runner 6 (id 185916) running test 522 in state 4 Runner 7 (id 185918) running test 521 in state 4 Runner 8 (id 185920) running test 520 in state 4 test 0519...[GET same URL twice with different users] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind519 ./libtest/libtests lib519 http://127.0.0.1:46853/519 > log/3/stdout519 2> log/3/stderr519 valgrind ERROR ==261635== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 519 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind519 ./libtest/libtests lib519 http://127.0.0.1:46853/519 > log/3/stdout519 2> log/3/stderr519 === End of file commands.log === Start of file http_server.log 01:26:43.074842 ====> Client connect 01:26:43.075004 accept_connection 3 returned 4 01:26:43.075082 accept_connection 3 returned 0 01:26:43.082260 Read 93 bytes 01:26:43.082348 Process 93 bytes request 01:26:43.082441 Got request: GET /verifiedserver HTTP/1.1 01:26:43.082509 Are-we-friendly question received 01:26:43.082618 Wrote request (93 bytes) input to log/3/server.input 01:26:43.082708 Identifying ourselves as friends 01:26:43.082865 Response sent (57 bytes) and written to log/3/server.response 01:26:43.082928 special request received, no persistency 01:26:43.082986 ====> Client disconnect 0 01:27:28.717272 ====> Client connect 01:27:28.717418 accept_connection 3 returned 4 01:27:28.717495 accept_connection 3 returned 0 01:27:29.802366 Read 104 bytes 01:27:29.802581 Process 104 bytes request 01:27:29.802670 Got request: GET /519 HTTP/1.1 01:27:29.802735 Serve test number 519 part 0 01:27:29.802908 - request found to be complete (519) 01:27:29.803156 Wrote request (104 bytes) input to log/3/server.input 01:27:29.803281 Send response test519 section 01:27:29.803489 enable "swsbounce" in the next request 01:27:29.803657 Response sent (119 bytes) and written to log/3/server.response 01:27:29.803720 => persistent connection request ended, awaits new request 01:27:31.777614 Read 116 bytes 01:27:31.777806 Process 116 bytes request 01:27:31.777902 Got request: GET /519 HTTP/1.1 01:27:31.777974 Serve test number 519 part 0 01:27:31.778158 - request found to be complete (519) 01:27:31.778369 Wrote request (116 bytes) input to log/3/server.input 01:27:31.778450 BOUNCE part number to 1 01:27:31.778520 Send response test519 section 01:27:31.778743 connection close instruction "swsclose" found in response 01:27:31.778915 Response sent (119 bytes) and written to log/3/server.response 01:27:31.778979 instructed to close connection after server-reply 01:CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind520 ./libtest/libtests lib520 ftp://127.0.0.1:33545/520 > log/8/stdout520 2> log/8/stderr520 27:31.779038 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 41752 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 519 === End of file server.cmd === Start of file server.input GET /519 HTTP/1.1 Host: 127.0.0.1:46853 Authorization: Basic bW9uc3Rlcjp1bmRlcmJlZA== Accept: */* GET /519 HTTP/1.1 Host: 127.0.0.1:46853 Authorization: Basic YW5vdGhlcm1vbnN0ZXI6aW53YXJkcm9iZQ== Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK swsbounce Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 8 content HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 9 content2 === End of file server.response === Start of file stderr519 URL: http://127.0.0.1:46853/519 * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 52786 * using HTTP/1.x * Server auth using Basic with user 'monster' > GET /519 HTTP/1.1 Host: 127.0.0.1:46853 Authorization: Basic bW9uc3Rlcjp1bmRlcmJlZA== Accept: */* < HTTP/1.1 200 OK swsbounce < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Content-Length: 8 < * Connection #0 to host 127.0.0.1:46853 left intact * Reusing existing http: connection with host 127.0.0.1 * Server auth using Basic with user 'anothermonster' > GET /519 HTTP/1.1 Host: 127.0.0.1:46853 Authorization: Basic YW5vdGhlcm1vbnN0ZXI6aW53YXJkcm9iZQ== Accept: */* < HTTP/1.1 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Content-Length: 9 < * Connection #0 to host 127.0.0.1:46853 left intact Test ended with result 0 === End of file stderr519 === Start of file stdout519 HTTP/1.1 200 OK swsbounce Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 8 content HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 9 content2 === End of file stdout519 === Start of file valgrind519 ==261635== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind519 test 0520...[FTP RETR with FILETIME] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind520 ./libtest/libtests lib520 ftp://127.0.0.1:33545/520 > log/8/stdout520 2> log/8/stderr520 valgrind ERROR ==261752== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 520 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind520 ./libtest/libtests lib520 ftp://127.0.0.1:33545/520 > log/8/stdout520 2> log/8/stderr520 === End of file commands.log === Start of file ftp_server.log 01:26:44.490043 ====> Client connect 01:26:44.491143 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:26:44.498313 < "USER anonymous" 01:26:44.498781 > "331 We are happy you popped in![CR][LF]" 01:26:44.499795 < "PASS ftp@example.com" 01:26:44.500711 > "230 Welcome you silly person[CR][LF]" 01:26:44.501465 < "PWD" 01:26:44.501927 > "257 "/" is current directory[CR][LF]" 01:26:44.504909 < "EPSV" 01:26:44.505155 ====> Passive DATA channel requested by client 01:26:44.505320 DATA sockfilt for passive data channel starting... 01:26:44.553699 DATA sockfilt for passive data channel started (pid 261684) 01:26:44.554945 DATA sockfilt for passive data channel listens on port 40883 01:26:44.558430 > "229 Entering Passive Mode (|||40883|)[CR][LF]" 01:26:44.558650 Client has been notified that DATA conn will be accepted on port 40883 01:26:44.559382 Client connects to port 40883 01:26:44.559603 ====> Client established passive DATA connection on port 40883 01:26:44.560369 < "TYPE I" 01:26:44.561028 > "200 I modify TYPE as you wanted[CR][LF]" 01:26:44.562209 < "SIZE verifiedserver" 01:26:44.563506 > "213 18[CR][LF]" 01:26:44.564087 < "RETR verifiedserver" 01:26:44.564421 > "150 Binary junk (18 bytes).[CR][LF]" 01:26:44.564949 =====> Closing passive DATA connection... 01:26:44.565121 Server disconnects passive DATA connection 01:26:44.569423 Server disconnected passive DATA connection 01:26:44.569643 DATA sockfilt for passive data channel quits (pid 261684) 01:26:44.573275 DATA sockfilt for passive data channel quit (pid 261684) 01:26:44.573482 =====> Closed passive DATA connection 01:26:44.573988 > "226 File transfer complete[CR][LF]" 01:26:44.617759 < "QUIT" 01:26:44.618223 > "221 bye bye baby[CR][LF]" 01:26:44.624126 MAIN sockfilt said DISC 01:26:44.624400 ====> Client disconnected 01:26:44.624694 Awaiting input 01:27:29.750336 ====> Client connect 01:27:29.751052 FTPD: Getting commands from log/8/server.cmd 01:27:29.751813 FTPD: set custom reply for MDTM command 01:27:29.752077 FTPD: run test case number: 520 01:27:29.753021 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:27:30.843174 < "USER anonymous" 01:27:30.843559 > "331 We are happy you popped in![CR][LF]" 01:27:30.939716 < "PASS ftp@example.com" 01:27:30.940390 > "230 Welcome you silly person[CR][LF]" 01:27:31.026356 < "PWD" 01:27:31.027050 > "257 "/" is current directory[CR][LF]" 01:27:31.207632 < "MDTM 520" 01:27:31.210818 > "213 20030405060708[CR][LF]" 01:27:31.440399 < "EPSV" 01:27:31.440711 ====> Passive DATA channel requested by client 01:27:31.440870 DATA sockfilt for passive data channel starting... 01:27:31.519210 DATA sockfilt for passive data channel started (pid 262868) 01:27:31.520407 DATA sockfilt for passive data channel listens on port 44739 01:27:31.521174 > "229 Entering Passive Mode (|||44739|)[CR][LF]" 01:27:31.521362 Client has been notified that DATA conn will be accepted on port 44739 01:27:31.694515 Client connects to port 44739 01:27:31.695051 ====> Client established passive DATA connection on port 44739 01:27:31.817427 < "TYPE I" 01:27:31.817870 > "200 I modify TYPE as you wanted[CR][LF]" 01:27:31.865564 < "SIZE 520" 01:27:31.867560 > "213 17[CR][LF]" 01:27:31.941952 < "RETR 520" 01:27:31.947491 > "150 Binary data connection for 520 () (17 bytes).[CR][LF]" 01:27:31.948093 =====> Closing passive DATA connection... 01:27:31.948258 Server disconnects passive DATA connection 01:27:31.949965 Server disconnected passive DATA connection 01:27:31.950143 DATA sockfilt for passive data channel quits (pid 262868) 01:27:31.953423 DATA sockfilt for passive data channel quit (pid 262868) 01:27:31.953605 =====> Closed passive DATA connection 01:27:31.954189 > "226 File transfer complete[CR][LF]" 01:27:33.556477 < "QUIT" 01:27:33.557181 > "221 bye bye baby[CR][LF]" 01:27:33.691161 MAIN sockfilt said DISC 01:27:33.691829 ====> Client disconnected 01:27:33.692109 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:26:45.102244 ====> Client connect 01:26:45.106548 Received DATA (on stdin) 01:26:45.106689 > 160 bytes data, server => client 01:26:45.106816 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:26:45.106923 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:26:45.107012 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:26:45CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind521 ./libtest/libtests lib521 ftp://127.0.0.1/521/ 45353 > log/7/stdout521 2> log/7/stderr521 .110167 < 16 bytes data, client => server 01:26:45.110271 'USER anonymous\r\n' 01:26:45.111233 Received DATA (on stdin) 01:26:45.111313 > 33 bytes data, server => client 01:26:45.111413 '331 We are happy you popped in!\r\n' 01:26:45.111810 < 22 bytes data, client => server 01:26:45.111901 'PASS ftp@example.com\r\n' 01:26:45.112648 Received DATA (on stdin) 01:26:45.112726 > 30 bytes data, server => client 01:26:45.112844 '230 Welcome you silly person\r\n' 01:26:45.113112 < 5 bytes data, client => server 01:26:45.113186 'PWD\r\n' 01:26:45.114323 Received DATA (on stdin) 01:26:45.114403 > 30 bytes data, server => client 01:26:45.114766 '257 "/" is current directory\r\n' 01:26:45.116945 < 6 bytes data, client => server 01:26:45.117045 'EPSV\r\n' 01:26:45.167855 Received DATA (on stdin) 01:26:45.168010 > 39 bytes data, server => client 01:26:45.168142 '229 Entering Passive Mode (|||40883|)\r\n' 01:26:45.171542 < 8 bytes data, client => server 01:26:45.171635 'TYPE I\r\n' 01:26:45.173258 Received DATA (on stdin) 01:26:45.173346 > 33 bytes data, server => client 01:26:45.173471 '200 I modify TYPE as you wanted\r\n' 01:26:45.174234 < 21 bytes data, client => server 01:26:45.174320 'SIZE verifiedserver\r\n' 01:26:45.175123 Received DATA (on stdin) 01:26:45.175198 > 8 bytes data, server => client 01:26:45.175418 '213 18\r\n' 01:26:45.175903 < 21 bytes data, client => server 01:26:45.175989 'RETR verifiedserver\r\n' 01:26:45.179323 Received DATA (on stdin) 01:26:45.179402 > 29 bytes data, server => client 01:26:45.179497 '150 Binary junk (18 bytes).\r\n' 01:26:45.186327 Received DATA (on stdin) 01:26:45.186422 > 28 bytes data, server => client 01:26:45.186538 '226 File transfer complete\r\n' 01:26:45.229229 < 6 bytes data, client => server 01:26:45.229448 'QUIT\r\n' 01:26:45.231095 Received DATA (on stdin) 01:26:45.231189 > 18 bytes data, server => client 01:26:45.231277 '221 bye bye baby\r\n' 01:26:45.231956 ====> Client disconnect 01:26:45.237493 Received ACKD (on stdin) 01:27:30.362511 ====> Client connect 01:27:30.365738 Received DATA (on stdin) 01:27:30.365831 > 160 bytes data, server => client 01:27:30.365942 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:27:30.366043 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:27:30.366135 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:27:31.454488 < 16 bytes data, client => server 01:27:31.454675 'USER anonymous\r\n' 01:27:31.459904 Received DATA (on stdin) 01:27:31.459998 > 33 bytes data, server => client 01:27:31.460083 '331 We are happy you popped in!\r\n' 01:27:31.551113 < 22 bytes data, client => server 01:27:31.551290 'PASS ftp@example.com\r\n' 01:27:31.552552 Received DATA (on stdin) 01:27:31.552624 > 30 bytes data, server => client 01:27:31.552729 '230 Welcome you silly person\r\n' 01:27:31.637784 < 5 bytes data, client => server 01:27:31.637931 'PWD\r\n' 01:27:31.639209 Received DATA (on stdin) 01:27:31.639281 > 30 bytes data, server => client 01:27:31.639385 '257 "/" is current directory\r\n' 01:27:31.819012 < 10 bytes data, client => server 01:27:31.819184 'MDTM 520\r\n' 01:27:31.820448 Received DATA (on stdin) 01:27:31.820521 > 20 bytes data, server => client 01:27:31.823551 '213 20030405060708\r\n' 01:27:32.051792 < 6 bytes data, client => server 01:27:32.051971 'EPSV\r\n' 01:27:32.133162 Received DATA (on stdin) 01:27:32.133315 > 39 bytes data, server => client 01:27:32.133434 '229 Entering Passive Mode (|||44739|)\r\n' 01:27:32.428726 < 8 bytes data, client => server 01:27:32.428907 'TYPE I\r\n' 01:27:32.433240 Received DATA (on stdin) 01:27:32.433337 > 33 bytes data, server => client 01:27:32.433432 '200 I modify TYPE as you wanted\r\n' 01:27:32.476900 < 10 bytes data, client => server 01:27:32.477109 'SIZE 520\r\n' 01:27:32.483240 Received DATA (on stdin) 01:27:32.483346 > 8 bytes data, server => client 01:27:32.483416 '213 17\r\n' 01:27:32.553289 < 10 bytes data, client => server 01:27:32.553478 'RETR 520\r\n' 01:27:32.555457 Received DATA (on stdin) 01:27:32.555529 > 51 bytes data, server => client 01:27:32.560976 '150 Binary data connection for 520 () (17 bytes).\r\n' 01:27:32.566308 Received DATA (on stdin) 01:27:32.566393 > 28 bytes data, server => client 01:27:32.566508 '226 File transfer complete\r\n' 01:27:34.167786 < 6 bytes data, client => server 01:27:34.167997 'QUIT\r\n' 01:27:34.169316 Received DATA (on stdin) 01:27:34.169391 > 18 bytes data, server => client 01:27:34.169492 '221 bye bye baby\r\n' 01:27:34.303332 ====> Client disconnect 01:27:34.304158 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:26:44.155136 Running IPv4 version 01:26:44.164504 Listening on port 40883 01:26:44.165041 Wrote pid 261684 to log/8/server/ftp_sockdata.pid 01:26:44.165961 Received PING (on stdin) 01:26:44.166816 Received PORT (on stdin) 01:26:44.171810 ====> Client connect 01:26:44.178017 Received DATA (on stdin) 01:26:44.178352 > 18 bytes data, server => client 01:26:44.178750 'WE ROOLZ: 220580\r\n' 01:26:44.179017 Received DISC (on stdin) 01:26:44.179139 ====> Client forcibly disconnected 01:26:44.182444 Received QUIT (on stdin) 01:26:44.182535 quits 01:26:44.183087 ============> sockfilt quits 01:27:31.115401 Running IPv4 version 01:27:31.130007 Listening on port 44739 01:27:31.130556 Wrote pid 262868 to log/8/server/ftp_sockdata.pid 01:27:31.131340 Received PING (on stdin) 01:27:31.132236 Received PORT (on stdin) 01:27:31.306675 ====> Client connect 01:27:31.561124 Received DATA (on stdin) 01:27:31.561493 > 17 bytes data, server => client 01:27:31.561871 'contents of file\n' 01:27:31.562140 Received DISC (on stdin) 01:27:31.562267 ====> Client forcibly disconnected 01:27:31.562850 Received QUIT (on stdin) 01:27:31.562934 quits 01:27:31.563472 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY MDTM 213 20030405060708 Testnum 520 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD MDTM 520 EPSV TYPE I SIZE 520 RETR 520 QUIT === End of file server.input === Start of file stderr520 URL: ftp://127.0.0.1:33545/520 * Trying 127.0.0.1:33545... * Established connection to 127.0.0.1 (127.0.0.1 port 33545) from 127.0.0.1 port 59934 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' * Request has same path as previous transfer > MDTM 520 < 213 20030405060708 > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||44739|) * Connecting to 127.0.0.1 (127.0.0.1) port 44739 * Trying 127.0.0.1:44739... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 44739) from 127.0.0.1 port 54496 > TYPE I < 200 I modify TYPE as you wanted > SIZE 520 < 213 17 > RETR 520 < 150 Binary data connection for 520 () (17 bytes). * Maxdownload = -1 * Getting file with size: 17 * abort upload * Remembering we are in dir "" < 226 File transfer complete * Connection #0 to host 127.0.0.1:33545 left intact Test ended with result 0 === End of file stderr520 === Start of file stdout520 contents of file === End of file stdout520 === Start of file valgrind520 ==261752== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind520 test 0521...[FTP dir list PASV with CURLOPT_PORT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind521 ./libtest/libtests lib521 ftp://127.0.0.1/521/ 45353 > log/7/stdout521 2> log/7/stderr521 valgrind ERROR ==261908== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 521 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind521 ./libtest/libtests lib521 ftp://127.0.0.1/521/ 45353 > log/7/stdout521 2> log/7/stderr521 === End of file commands.log === Start of file ftp_server.log 01:26:45.837501 ====> Client connect 01:26:45.838478 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:26:45.843544 < "USER anonymous" 01:26:45.843863 > "331 We are happy you popped in![CR][LF]" 01:26:45.847760 < "PASS ftp@example.com" 01:26:45.848012 > "230 Welcome you silly person[CR][LF]" 01:26:45.848713 < "PWD" 01:26:45.848984 > "257 "/" is current directory[CR][LF]" 01:26:45.850679 < "EPSV" 01:26:45.850892 ====> Passive DATA channel requested by client 01:26:45.851035 DATA sockfilt for passive data channel starting... 01:26:45.892530 DATA sockfilt for passive data channel started (pid 261861) 01:26:45.894023 DATA sockfilt for passive data channel listens on port 37251 01:26:45.897283 > "229 Entering Passive Mode (|||37251|)[CR][LF]" 01:26:45.897531 Client has been notified that DATA conn will be accepted on port 37251 01:26:45.898181 Client connects to port 37251 01:26:45.898391 ====> Client established passive DATA connection on port 37251 01:26:45.899096 < "TYPE I" 01:26:45.900119 > "200 I modify TYPE as you wanted[CR][LF]" 01:26:45.900617 < "SIZE verifiedserver" 01:26:45.900933 > "213 18[CR][LF]" 01:26:45.902156 < "RETR verifiedserver" 01:26:45.902439 > "150 Binary junk (18 bytes).[CR][LF]" 01:26:45.905454 =====> Closing passive DATA connection... 01:26:45.905617 Server disconnects passive DATA connection 01:26:45.906544 Server disconnected passive DATA connection 01:26:45.906699 DATA sockfilt for passive data channel quits (pid 261861) 01:26:45.909844 DATA sockfilt for passive data channel quit (pid 261861) 01:26:45.909999 =====> Closed passive DATA connection 01:26:45.914156 > "226 File transfer complete[CR][LF]" 01:26:45.958502 < "QUIT" 01:26:45.958893 > "221 bye bye baby[CR][LF]" 01:26:45.960001 MAIN sockfilt said DISC 01:26:45.960177 ====> Client disconnected 01:26:45.960438 Awaiting input 01:27:30.587682 ====> Client connect 01:27:30.588446 FTPD: Getting commands from log/7/server.cmd 01:27:30.588791 FTPD: run test case number: 521 01:27:30.589961 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:27:31.653236 < "USER xxx" 01:27:31.657494 > "331 We are happy you popped in![CR][LF]" 01:27:31.750187 < "PASS yyy" 01:27:31.750590 > "230 Welcome you silly person[CR][LF]" 01:27:31.834295 < "PWD" 01:27:31.834997 > "257 "/" is current directory[CR][LF]" 01:27:32.042665 < "CWD 521" 01:27:32.043057 > "250 CWD command successful.[CR][LF]" 01:27:32.105305 < "EPSV" 01:27:32.105614 ====> Passive DATA channel requested by client 01:27:32.105757 DATA sockfilt for passive data channel starting... 01:27:32.194213 DATA sockfilt for passive data channel started (pid 262874) 01:27:32.198153 DATA sockfilt for passive data channel listens on port 35897 01:27:32.198535 > "229 Entering Passive Mode (|||35897|)[CR][LF]" 01:27:32.198706 Client has been notified that DATA conn will be accepted on port 35897 01:27:32.372979 Client connects to port 35897 01:27:32.373548 ====> Client established passive DATA connection on port 35897 01:27:32.498393 < "TYPE A" 01:27:32.498823 > "200 I modify TYPE as you wanted[CR][LF]" 01:27:32.544849 < "LIST" 01:27:32.545234 > "150 here comes a directory[CR][LF]" 01:27:32.545424 pass LIST data on data connection 01:27:32.546599 send total 20 as data 01:27:32.547411 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 01:27:32.547630 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 01:27:32.547849 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 01:27:32.548075 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 01:27:32.548291 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 01:27:32.548505 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 01:27:32.548723 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 01:27:32.548948 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 01:27:32.549153 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 01:27:32.549361 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 01:27:32.549834 =====> Closing passive DATA connection... 01:27:32.550002 Server disconnects passive DATA connection 01:27:32.557437 Server disconnected passive DATA connection 01:27:32.557670 DATA sockfilt for passive data channel quits (pid 262874) 01:27:32.564577 DATA sockfilt for passive data channel quit (pid 262874) 01:27:32.564817 =====> Closed passive DATA connection 01:27:32.565089 > "226 ASCII transfer complete[CR][LF]" 01:27:34.184973 < "QUIT" 01:27:34.185416 > "221 bye bye baby[CR][LF]" 01:27:34.321501 MAIN sockfilt said DISC 01:27:34.322156 ====> Client disconnected 01:27:34.322438 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:26:45.447013 ====> Client connect 01:26:45.450954 Received DATA (on stdin) 01:26:45.451055 > 160 bytes data, server => client 01:26:45.451155 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:26:45.451246 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:26:45.451327 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:26:45.455492 < 16 bytes data, client => server 01:26:45.455575 'USER anonymous\r\n' 01:26:45.456416 Received DATA (on stdin) 01:26:45.456481 > 33 bytes data, server => client 01:26:45.456557 '331 We are happy you popped in!\r\n' 01:26:45.456818 < 22 bytes data, client => server 01:26:45.456893 'PASS ftp@example.com\r\n' 01:26:45.460582 Received DATA (on stdin) 01:26:45.460647 > 30 bytes data, server => client 01:26:45.460722 '230 Welcome you silly person\r\n' 01:26:45.460989 < 5 bytes data, client => server 01:26:45.461049 'PWD\r\n' 01:26:45.461558 Received DATA (on stdin) 01:26:45.461616 > 30 bytes data, server => client 01:26:45.461690 '257 "/" is current directory\r\n' 01:26:45.462972 < 6 bytes data, client => server 01:26:45.463033 'EPSV\r\n' 01:26:45.507136 Received DATA (on stdin) 01:26:45.507277 > 39 bytes data, server => client 01:26:45.507401 '229 Entering Passive Mode (|||37251|)\r\n' 01:26:45.510390 < 8 bytes data, client => server 01:26:45.510463 'TYPE I\r\n' 01:26:45.511935 Received DATA (on stdin) 01:26:45.512001 > 33 bytes data, server => client 01:26:45.512097 '200 I modify TYPE as you wanted\r\n' 01:26:45.512454 < 21 bytes data, client => server 01:26:45.512525 'SIZE verifiedserver\r\n' 01:26:45.513722 Received DATA (on stdin) 01:26:45.513789 > 8 bytes data, server => client 01:26:45.513851 '213 18\r\n' 01:26:45.514250 < 21 bytes data, client => server 01:26:45.514320 'RETR verifiedserver\r\n' 01:26:45.515661 Received DATA (on stdin) 01:26:45.515724 > 29 bytes data, server => client 01:26:45.515799 '150 Binary junk (18 bytes).\r\n' 01:26:45.522809 Received DATA (on stdin) 01:26:45.522897 > 28 bytes data, server => client 01:26:45.527008 '226 File transfer complete\r\n' 01:26:45.570060 < 6 bytes data, client => server 01:26:45.570231 'QUIT\r\n' 01:26:45.571701 Received DATA (on stdin) 01:26:45.571768 > 18 bytes data, server => client 01:26:45.571836 '221 bye bye baby\r\n' 01:26:45.572521 ====> Client disconnect 01:26:45.573203 Received ACKD (on stdin) 01:27:30.199821 ====> Client connect 01:27:30.206574 Received DATA (on stdin) 01:27:30.206683 > 160 bytes data, server => client 01:27:30.206794 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:27:30.206900 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:27:CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind522 ./libtest/libtests lib521 http://127.0.0.1/522 38277 > log/6/stdout522 2> log/6/stderr522 30.206996 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:27:31.264515 < 10 bytes data, client => server 01:27:31.264691 'USER xxx\r\n' 01:27:31.266086 Received DATA (on stdin) 01:27:31.266157 > 33 bytes data, server => client 01:27:31.270266 '331 We are happy you popped in!\r\n' 01:27:31.361604 < 10 bytes data, client => server 01:27:31.361776 'PASS yyy\r\n' 01:27:31.363290 Received DATA (on stdin) 01:27:31.363362 > 30 bytes data, server => client 01:27:31.363442 '230 Welcome you silly person\r\n' 01:27:31.445717 < 5 bytes data, client => server 01:27:31.445867 'PWD\r\n' 01:27:31.447153 Received DATA (on stdin) 01:27:31.447227 > 30 bytes data, server => client 01:27:31.447328 '257 "/" is current directory\r\n' 01:27:31.654066 < 9 bytes data, client => server 01:27:31.654241 'CWD 521\r\n' 01:27:31.656594 Received DATA (on stdin) 01:27:31.656686 > 29 bytes data, server => client 01:27:31.656769 '250 CWD command successful.\r\n' 01:27:31.716754 < 6 bytes data, client => server 01:27:31.716916 'EPSV\r\n' 01:27:31.810957 Received DATA (on stdin) 01:27:31.811098 > 39 bytes data, server => client 01:27:31.811189 '229 Entering Passive Mode (|||35897|)\r\n' 01:27:32.109946 < 8 bytes data, client => server 01:27:32.110130 'TYPE A\r\n' 01:27:32.111247 Received DATA (on stdin) 01:27:32.111313 > 33 bytes data, server => client 01:27:32.111394 '200 I modify TYPE as you wanted\r\n' 01:27:32.153510 < 6 bytes data, client => server 01:27:32.153676 'LIST\r\n' 01:27:32.157666 Received DATA (on stdin) 01:27:32.157744 > 28 bytes data, server => client 01:27:32.157819 '150 here comes a directory\r\n' 01:27:32.179910 Received DATA (on stdin) 01:27:32.180037 > 29 bytes data, server => client 01:27:32.180115 '226 ASCII transfer complete\r\n' 01:27:33.794420 < 6 bytes data, client => server 01:27:33.794629 'QUIT\r\n' 01:27:33.797839 Received DATA (on stdin) 01:27:33.797920 > 18 bytes data, server => client 01:27:33.797994 '221 bye bye baby\r\n' 01:27:33.933678 ====> Client disconnect 01:27:33.934489 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:26:45.495919 Running IPv4 version 01:26:45.503167 Listening on port 37251 01:26:45.503689 Wrote pid 261861 to log/7/server/ftp_sockdata.pid 01:26:45.504456 Received PING (on stdin) 01:26:45.505751 Received PORT (on stdin) 01:26:45.510620 ====> Client connect 01:26:45.515257 Received DATA (on stdin) 01:26:45.515531 > 18 bytes data, server => client 01:26:45.518624 'WE ROOLZ: 202639\r\n' 01:26:45.518862 Received DISC (on stdin) 01:26:45.518972 ====> Client forcibly disconnected 01:26:45.519459 Received QUIT (on stdin) 01:26:45.519530 quits 01:26:45.520029 ============> sockfilt quits 01:27:32.785424 Running IPv4 version 01:27:32.799842 Listening on port 35897 01:27:32.803739 Wrote pid 262874 to log/7/server/ftp_sockdata.pid 01:27:32.804580 Received PING (on stdin) 01:27:32.809914 Received PORT (on stdin) 01:27:32.985141 ====> Client connect 01:27:33.159329 Received DATA (on stdin) 01:27:33.159698 > 10 bytes data, server => client 01:27:33.162907 'total 20\r\n' 01:27:33.163172 Received DATA (on stdin) 01:27:33.163292 > 57 bytes data, server => client 01:27:33.163398 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 01:27:33.163496 Received DATA (on stdin) 01:27:33.163562 > 58 bytes data, server => client 01:27:33.163664 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 01:27:33.163755 Received DATA (on stdin) 01:27:33.163830 > 61 bytes data, server => client 01:27:33.163959 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 01:27:33.164038 '\n' 01:27:33.164125 Received DATA (on stdin) 01:27:33.164193 > 62 bytes data, server => client 01:27:33.164298 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 01:27:33.164364 '\n' 01:27:33.164451 Received DATA (on stdin) 01:27:33.164520 > 70 bytes data, server => client 01:27:33.164624 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 01:27:33.164693 'usr/bin\r\n' 01:27:33.164778 Received DATA (on stdin) 01:27:33.164844 > 59 bytes data, server => client 01:27:33.164946 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 01:27:33.165039 Received DATA (on stdin) 01:27:33.165113 > 69 bytes data, server => client 01:27:33.165222 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 01:27:33.165292 'd.html\r\n' 01:27:33.165390 Received DATA (on stdin) 01:27:33.165456 > 59 bytes data, server => client 01:27:33.165563 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 01:27:33.165653 Received DATA (on stdin) 01:27:33.165719 > 59 bytes data, server => client 01:27:33.165822 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 01:27:33.165907 Received DATA (on stdin) 01:27:33.165973 > 59 bytes data, server => client 01:27:33.166075 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 01:27:33.166167 Received DISC (on stdin) 01:27:33.170401 ====> Client forcibly disconnected 01:27:33.170591 Received QUIT (on stdin) 01:27:33.170678 quits 01:27:33.171205 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 521 === End of file server.cmd === Start of file server.input USER xxx PASS yyy PWD CWD 521 EPSV TYPE A LIST QUIT === End of file server.input === Start of file stderr521 URL: ftp://127.0.0.1/521/ * Trying 127.0.0.1:45353... * Established connection to 127.0.0.1 (127.0.0.1 port 45353) from 127.0.0.1 port 46632 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER xxx < 331 We are happy you popped in > PASS yyy < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' > CWD 521 < 250 CWD command successful. > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||35897|) * Connecting to 127.0.0.1 (127.0.0.1) port 35897 * Trying 127.0.0.1:35897... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 35897) from 127.0.0.1 port 45624 > TYPE A < 200 I modify TYPE as you wanted > LIST < 150 here comes a directory * Maxdownload = -1 * abort upload * Remembering we are in dir "521/" < 226 ASCII transfer complete * Connection #0 to host 127.0.0.1:45353 left intact Test ended with result 0 === End of file stderr521 === Start of file stdout521 total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file stdout521 === Start of file valgrind521 ==261908== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind521 test 0522...[HTTP GET with CURLOPT_PORT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind522 ./libtest/libtests lib521 http://127.0.0.1/522 38277 > log/6/stdout522 2> log/6/stderr522 valgrind ERROR ==262063== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 522 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind522 ./libtest/libtests lib521 http://127.0.0.1/522 38277 > log/6/stdout522 2> log/6/stderr522 === End of file commands.log === Start of file http_server.log 01:26:48.394969 ====> Client connect 01:26:48.395123 accept_connection CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind523 ./libtest/libtests lib523 http://www.example.com:999/523 http://127.0.0.1:39863 > log/2/stdout523 2> log/2/stderr523 CMD (768): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind524 ./libtest/libtests lib524 ftp://127.0.0.1:37481/path/to/ > log/1/stdout524 2> log/1/stderr524 3 returned 4 01:26:48.395196 accept_connection 3 returned 0 01:26:48.401628 Read 93 bytes 01:26:48.401707 Process 93 bytes request 01:26:48.401788 Got request: GET /verifiedserver HTTP/1.1 01:26:48.401848 Are-we-friendly question received 01:26:48.401950 Wrote request (93 bytes) input to log/6/server.input 01:26:48.402032 Identifying ourselves as friends 01:26:48.402198 Response sent (57 bytes) and written to log/6/server.response 01:26:48.402257 special request received, no persistency 01:26:48.402309 ====> Client disconnect 1 01:26:48.402382 Wrote request (13 bytes) input to log/6/server.input 01:27:33.431020 ====> Client connect 01:27:33.431166 accept_connection 3 returned 4 01:27:33.431245 accept_connection 3 returned 0 01:27:34.496786 Read 92 bytes 01:27:34.496964 Process 92 bytes request 01:27:34.497056 Got request: GET /522 HTTP/1.1 01:27:34.497123 Serve test number 522 part 0 01:27:34.497288 - request found to be complete (522) 01:27:34.497527 Wrote request (92 bytes) input to log/6/server.input 01:27:34.497630 Send response test522 section 01:27:34.497996 Response sent (203 bytes) and written to log/6/server.response 01:27:34.498061 => persistent connection request ended, awaits new request 01:27:36.225369 Connection closed by client 01:27:36.225566 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 53040 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 522 === End of file server.cmd === Start of file server.input GET /522 HTTP/1.1 Host: 127.0.0.1:38277 Authorization: Basic eHh4Onl5eQ== Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 hello === End of file server.response === Start of file stderr522 URL: http://127.0.0.1/522 * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 39866 * using HTTP/1.x * Server auth using Basic with user 'xxx' > GET /522 HTTP/1.1 Host: 127.0.0.1:38277 Authorization: Basic eHh4Onl5eQ== Accept: */* < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT < ETag: "21025-dc7-39462498" < Accept-Ranges: bytes < Content-Length: 6 < * Connection #0 to host 127.0.0.1:38277 left intact Test ended with result 0 === End of file stderr522 === Start of file stdout522 hello === End of file stdout522 === Start of file valgrind522 ==262063== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind522 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 524 in state 4 Runner 2 (id 185908) running test 523 in state 4 Runner 3 (id 185910) running test 527 in state 4 Runner 4 (id 185912) running test 526 in state 4 Runner 5 (id 185914) running test 525 in state 4 Runner 6 (id 185916) running test 530 in state 4 Runner 7 (id 185918) running test 529 in state 4 Runner 8 (id 185920) running test 528 in state 4 test 0523...[HTTP GET with proxy and CURLOPT_PORT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind523 ./libtest/libtests lib523 http://www.example.com:999/523 http://127.0.0.1:39863 > log/2/stdout523 2> log/2/stderr523 valgrind ERROR ==262246== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 523 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind523 ./libtest/libtests lib523 http://www.example.com:999/523 http://127.0.0.1:39863 > log/2/stdout523 2> log/2/stderr523 === End of file commands.log === Start of file http_server.log 01:27:05.130260 ====> Client connect 01:27:05.130415 accept_connection 3 returned 4 01:27:05.130489 accept_connection 3 returned 0 01:27:05.137439 Read 93 bytes 01:27:05.137546 Process 93 bytes request 01:27:05.137636 Got request: GET /verifiedserver HTTP/1.1 01:27:05.137701 Are-we-friendly question received 01:27:05.137815 Wrote request (93 bytes) input to log/2/server.input 01:27:05.137905 Identifying ourselves as friends 01:27:05.138065 Response sent (57 bytes) and written to log/2/server.response 01:27:05.138130 special request received, no persistency 01:27:05.138187 ====> Client disconnect 0 01:27:50.322421 ====> Client connect 01:27:50.322562 accept_connection 3 returned 4 01:27:50.322642 accept_connection 3 returned 0 01:27:51.411571 Read 156 bytes 01:27:51.411792 Process 156 bytes request 01:27:51.411888 Got request: GET http://www.example.com:19999/523 HTTP/1.1 01:27:51.411958 Serve test number 523 part 0 01:27:51.412133 - request found to be complete (523) 01:27:51.412397 Wrote request (156 bytes) input to log/2/server.input 01:27:51.412508 Send response test523 section 01:27:51.412730 connection close instruction "swsclose" found in response 01:27:51.412960 Response sent (212 bytes) and written to log/2/server.response 01:27:51.413026 instructed to close connection after server-reply 01:27:51.413087 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 37870 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 523 === End of file server.cmd === Start of file server.input GET http://www.example.com:19999/523 HTTP/1.1 Host: www.example.com:19999 Authorization: Basic eHh4Onl5eQ== Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 hello === End of file server.response === Start of file stderr523 URL: http://www.example.com:999/523 * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 56842 * using HTTP/1.x * Server auth using Basic with user 'xxx' > GET http://www.example.com:19999/523 HTTP/1.1 Host: www.example.com:19999 Authorization: Basic eHh4Onl5eQ== Accept: */* Proxy-Connection: Keep-Alive < HTTP/1.1 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT < ETag: "21025-dc7-39462498" < Accept-Ranges: bytes < Content-Length: 6 < * Connection #0 to host 127.0.0.1:39863 left intact Test ended with result 0 === End of file stderr523 === Start of file stdout523 hello === End of file stdout523 === Start of file valgrind523 ==262246== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind523 test 0524...[FTP upload with target URL ending with slash] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind524 ./libtest/libtests lib524 ftp://127.0.0.1:37481/path/to/ > log/1/stdout524 2> log/1/stderr524 valgrind ERROR ==262429== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 524 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind524 ./libtest/libtests lib524 ftp://127.0.0.1:37481/path/to/ > log/1/stdout524 2> log/1/stderr524 === End of file commands.log === Start of file ftp_server.log 01:27:14.944177 ====> Client connect 01:27:14.945166 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:27:14.951298 < "USER anonymous" 01:27:14.951620 > "331 We are happy you popped in![CR][LF]" 01:27:14.957828 < "PASS ftp@example.com" 01:27:14.958115 > "230 Welcome you silly person[CR][LF]" 01:27:14.958812 < "PWD" 01:27:14.959083 > "257 "/" is current directory[CR][LF]" 01:27:14.960911 < "EPSV" 01:27:14.961122 ====> Passive DATA channel requested by client 01:27:14.961270 DATA sockfilt for passive data channel starting... 01:27:15.000986 DATA sockfilt for passive data channel started (pid 262423) 01:27:15.002646 DATA sockfilt for passive data channel listens on port 45991 01:27:15.003059 > "229 Entering Passive Mode (|||45991|)[CR][LF]" 01:27:15.003245 Client has been notified that DATA conn will be accepted on port 45991 01:27:15.007576 Client connects to port 45991 01:27:15.007809 ====> Client established passive DATA connection on port 45991 01:27:15.008439 < "TYPE I" 01:27:15.008712 > "200 I modify TYPE as you wanted[CR][LF]" 01:27:15.009504 < "SIZE verifiedserver" 01:27:15.009798 > "213 18[CR][LF]" 01:27:15.010619 < "RETR verifiedserver" 01:27:15.010913 > "150 Binary junk (18 bytes).[CR][LF]" 01:27:15.011400 =====> Closing passive DATA connection... 01:27:15.011553 Server disconnects passive DATA connection 01:27:15.014097 Server disconnected passive DATA connection 01:27:15.014278 DATA sockfilt for passive data channel quits (pid 262423) 01:27:15.017361 DATA sockfilt for passive data channel quit (pid 262423) 01:27:15.017551 =====> Closed passive DATA connection 01:27:15.017808 > "226 File transfer complete[CR][LF]" 01:27:15.062736 < "QUIT" 01:27:15.067481 > "221 bye bye baby[CR][LF]" 01:27:15.067834 MAIN sockfilt said DISC 01:27:15.068029 ====> Client disconnected 01:27:15.068307 Awaiting input 01:28:00.062235 ====> Client connect 01:28:00.062962 FTPD: Getting commands from log/1/server.cmd 01:28:00.063290 FTPD: run test case number: 524 01:28:00.064795 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:28:01.136583 < "USER anonymous" 01:28:01.140823 > "331 We are happy you popped in![CR][LF]" 01:28:01.229266 < "PASS ftp@example.com" 01:28:01.229713 > "230 Welcome you silly person[CR][LF]" 01:28:01.308182 < "PWD" 01:28:01.314193 > "257 "/" is current directory[CR][LF]" 01:28:01.993091 MAIN sockfilt said DISC 01:28:01.993595 ====> Client disconnected 01:28:01.993890 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:27:15.554259 ====> Client connect 01:27:15.557568 Received DATA (on stdin) 01:27:15.557664 > 160 bytes data, server => client 01:27:15.557768 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:27:15.557860 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:27:15.557941 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:27:15.563141 < 16 bytes data, client => server 01:27:15.563233 'USER anonymous\r\n' 01:27:15.564109 Received DATA (on stdin) 01:27:15.564174 > 33 bytes data, server => client 01:27:15.564255 '331 We are happy you popped in!\r\n' 01:27:15.564599 < 22 bytes data, client => server 01:27:15.564670 'PASS ftp@example.com\r\n' 01:27:15.570609 Received DATA (on stdin) 01:27:15.570683 > 30 bytes data, server => client 01:27:15.570762 '230 Welcome you silly person\r\n' 01:27:15.571000 < 5 bytes data, client => server 01:27:15.571063 'PWD\r\n' 01:27:15.571577 Received DATA (on stdin) 01:27:15.571639 > 30 bytes data, server => client 01:27:15.571716 '257 "/" is current directory\r\n' 01:27:15.573067 < 6 bytes data, client => server 01:27:15.573131 'EPSV\r\n' 01:27:15.615514 Received DATA (on stdin) 01:27:15.615664 > 39 bytes data, server => client 01:27:15.615757 '229 Entering Passive Mode (|||45991|)\r\n' 01:27:15.618593 < 8 bytes data, client => server 01:27:15.618672 'TYPE I\r\n' 01:27:15.621201 Received DATA (on stdin) 01:27:15.621270 > 33 bytes data, server => client 01:27:15.621351 '200 I modify TYPE as you wanted\r\n' 01:27:15.621704 < 21 bytes data, client => server 01:27:15.621779 'SIZE verifiedserver\r\n' 01:27:15.622300 Received DATA (on stdin) 01:27:15.622361 > 8 bytes data, server => client 01:27:15.622424 '213 18\r\n' 01:27:15.622833 < 21 bytes data, client => server 01:27:15.622905 'RETR verifiedserver\r\n' 01:27:15.623412 Received DATA (on stdin) 01:27:15.623477 > 29 bytes data, server => client 01:27:15.623554 '150 Binary junk (18 bytes).\r\n' 01:27:15.630302 Received DATA (on stdin) 01:27:15.630385 > 28 bytes data, server => client 01:27:15.630467 '226 File transfer complete\r\n' 01:27:15.674581 < 6 bytes data, client => server 01:27:15.674753 'QUIT\r\n' 01:27:15.675623 Received DATA (on stdin) 01:27:15.675693 > 18 bytes data, server => client 01:27:15.675789 '221 bye bye baby\r\n' 01:27:15.680264 ====> Client disconnect 01:27:15.681006 Received ACKD (on stdin) 01:28:00.674346 ====> Client connect 01:28:00.676563 Received DATA (on stdin) 01:28:00.676659 > 160 bytes data, server => client 01:28:00.676786 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:28:00.676886 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:28:00.676977 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:28:01.747730 < 16 bytes data, client => server 01:28:01.747931 'USER anonymous\r\n' 01:28:01.749384 Received DATA (on stdin) 01:28:01.749463 > 33 bytes data, server => client 01:28:01.753528 '331 We are happy you popped in!\r\n' 01:28:01.840612 < 22 bytes data, client => server 01:28:01.842471 'PASS ftp@example.com\r\n' 01:28:01.842575 Received DATA (on stdin) 01:28:01.842658 > 30 bytes data, server => client 01:28:01.842753 '230 Welcome you silly person\r\n' 01:28:01.919472 < 5 bytes data, client => server 01:28:01.919645 'PWD\r\n' 01:28:01.921005 Received DATA (on stdin) 01:28:01.921095 > 30 bytes data, server => client 01:28:01.926996 '257 "/" is current directory\r\n' 01:28:02.605200 ====> Client disconnect 01:28:02.606519 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:27:14.604500 Running IPv4 version 01:27:14.611921 Listening on port 45991 01:27:14.612356 Wrote pid 262423 to log/1/server/ftp_sockdata.pid 01:27:14.613106 Received PING (on stdin) 01:27:14.614506 Received PORT (on stdin) 01:27:14.618426 ====> Client connect 01:27:14.623656 Received DATA (on stdin) 01:27:14.623938 > 18 bytes data, server => client 01:27:14.624293 'WE ROOLZ: 202066\r\n' 01:27:14.624513 Received DISC (on stdin) 01:27:14.624626 ====> Client forcibly disconnected 01:27:14.626975 Received QUIT (on stdin) 01:27:14.627058 quits 01:27:14.627550 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 524 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD === End of file server.input === Start of file stderr524 URL: ftp://127.0.0.1:37481/path/to/ * Trying 127.0.0.1:37481... * Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 1CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind525 ./libtest/libtests lib525 ftp://127.0.0.1:33729/path/525 log/5/upload525 > log/5/stdout525 2> log/5/stderr525 27.0.0.1 port 42668 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' * Uploading to a URL without a filename * shutting down connection #0 Test ended with result 3 === End of file stderr524 === Start of file valgrind524 ==262429== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind524 test 0525...[FTP PORT upload using multi interface] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind525 ./libtest/libtests lib525 ftp://127.0.0.1:33729/path/525 log/5/upload525 > log/5/stdout525 2> log/5/stderr525 valgrind ERROR ==262591== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 525 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind525 ./libtest/libtests lib525 ftp://127.0.0.1:33729/path/525 log/5/upload525 > log/5/stdout525 2> log/5/stderr525 === End of file commands.log === Start of file ftp_server.log 01:27:22.357540 ====> Client connect 01:27:22.358499 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:27:22.366816 < "USER anonymous" 01:27:22.367091 > "331 We are happy you popped in![CR][LF]" 01:27:22.367978 < "PASS ftp@example.com" 01:27:22.368215 > "230 Welcome you silly person[CR][LF]" 01:27:22.368853 < "PWD" 01:27:22.369101 > "257 "/" is current directory[CR][LF]" 01:27:22.370950 < "EPSV" 01:27:22.371134 ====> Passive DATA channel requested by client 01:27:22.371265 DATA sockfilt for passive data channel starting... 01:27:22.434274 DATA sockfilt for passive data channel started (pid 262585) 01:27:22.435385 DATA sockfilt for passive data channel listens on port 37225 01:27:22.436083 > "229 Entering Passive Mode (|||37225|)[CR][LF]" 01:27:22.436243 Client has been notified that DATA conn will be accepted on port 37225 01:27:22.440900 Client connects to port 37225 01:27:22.441089 ====> Client established passive DATA connection on port 37225 01:27:22.441639 < "TYPE I" 01:27:22.441887 > "200 I modify TYPE as you wanted[CR][LF]" 01:27:22.442987 < "SIZE verifiedserver" 01:27:22.443268 > "213 18[CR][LF]" 01:27:22.444433 < "RETR verifiedserver" 01:27:22.444939 > "150 Binary junk (18 bytes).[CR][LF]" 01:27:22.445388 =====> Closing passive DATA connection... 01:27:22.445532 Server disconnects passive DATA connection 01:27:22.446138 Server disconnected passive DATA connection 01:27:22.446286 DATA sockfilt for passive data channel quits (pid 262585) 01:27:22.454130 DATA sockfilt for passive data channel quit (pid 262585) 01:27:22.454307 =====> Closed passive DATA connection 01:27:22.454544 > "226 File transfer complete[CR][LF]" 01:27:22.495235 < "QUIT" 01:27:22.500794 > "221 bye bye baby[CR][LF]" 01:27:22.501031 MAIN sockfilt said DISC 01:27:22.501225 ====> Client disconnected 01:27:22.501485 Awaiting input 01:28:07.169959 ====> Client connect 01:28:07.170657 FTPD: Getting commands from log/5/server.cmd 01:28:07.170988 FTPD: run test case number: 525 01:28:07.177733 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:28:08.386968 < "USER anonymous" 01:28:08.387592 > "331 We are happy you popped in![CR][LF]" 01:28:08.481585 < "PASS ftp@example.com" 01:28:08.487483 > "230 Welcome you silly person[CR][LF]" 01:28:08.564746 < "PWD" 01:28:08.565173 > "257 "/" is current directory[CR][LF]" 01:28:08.759061 < "CWD path" 01:28:08.759475 > "250 CWD command successful.[CR][LF]" 01:28:08.929716 < "EPRT |1|127.0.0.1|50541|" 01:28:08.930063 ====> Active DATA channel requested by client 01:28:08.930367 > "200 Thanks for dropping by. We contact you later[CR][LF]" 01:28:08.930555 DATA sockfilt for active data channel starting... 01:28:09.006679 DATA sockfilt for active data channel started (pid 263865) 01:28:09.007206 ====> Active DATA channel connected to client port 50541 01:28:09.298065 < "TYPE I" 01:28:09.301011 > "200 I modify TYPE as you wanted[CR][LF]" 01:28:09.337491 < "STOR 525" 01:28:09.337760 STOR test number 525 in log/5/upload.525 01:28:09.338019 > "125 Gimme gimme gimme![CR][LF]" 01:28:09.707912 > Appending 27 bytes to file 01:28:10.064632 =====> Closing active DATA connection... 01:28:10.064910 Server knows active DATA connection is already disconnected 01:28:10.065091 DATA sockfilt for active data channel quits (pid 263865) 01:28:10.070818 DATA sockfilt for active data channel quit (pid 263865) 01:28:10.071013 =====> Closed active DATA connection 01:28:10.071201 received 27 bytes upload 01:28:10.071872 > "226 File transfer complete[CR][LF]" 01:28:11.064513 < "QUIT" 01:28:11.067485 > "221 bye bye baby[CR][LF]" 01:28:11.217663 MAIN sockfilt said DISC 01:28:11.218104 ====> Client disconnected 01:28:11.218395 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:27:22.969696 ====> Client connect 01:27:22.970896 Received DATA (on stdin) 01:27:22.970976 > 160 bytes data, server => client 01:27:22.971078 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:27:22.971172 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:27:22.971255 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:27:22.978733 < 16 bytes data, client => server 01:27:22.978826 'USER anonymous\r\n' 01:27:22.979567 Received DATA (on stdin) 01:27:22.979637 > 33 bytes data, server => client 01:27:22.979720 '331 We are happy you popped in!\r\n' 01:27:22.980186 < 22 bytes data, client => server 01:27:22.980273 'PASS ftp@example.com\r\n' 01:27:22.980703 Received DATA (on stdin) 01:27:22.980770 > 30 bytes data, server => client 01:27:22.980850 '230 Welcome you silly person\r\n' 01:27:22.981075 < 5 bytes data, client => server 01:27:22.981139 'PWD\r\n' 01:27:22.981588 Received DATA (on stdin) 01:27:22.981661 > 30 bytes data, server => client 01:27:22.981753 '257 "/" is current directory\r\n' 01:27:22.983166 < 6 bytes data, client => server 01:27:22.983234 'EPSV\r\n' 01:27:23.048150 Received DATA (on stdin) 01:27:23.048277 > 39 bytes data, server => client 01:27:23.048391 '229 Entering Passive Mode (|||37225|)\r\n' 01:27:23.053264 < 8 bytes data, client => server 01:27:23.053334 'TYPE I\r\n' 01:27:23.054585 Received DATA (on stdin) 01:27:23.054648 > 33 bytes data, server => client 01:27:23.054725 '200 I modify TYPE as you wanted\r\n' 01:27:23.055065 < 21 bytes data, client => server 01:27:23.055135 'SIZE verifiedserver\r\n' 01:27:23.055962 Received DATA (on stdin) 01:27:23.056024 > 8 bytes data, server => client 01:27:23.056086 '213 18\r\n' 01:27:23.056503 < 21 bytes data, client => server 01:27:23.056578 'RETR verifiedserver\r\n' 01:27:23.057186 Received DATA (on stdin) 01:27:23.057248 > 29 bytes data, server => client 01:27:23.057340 '150 Binary junk (18 bytes).\r\n' 01:27:23.067243 Received DATA (on stdin) 01:27:23.067325 > 28 bytes data, server => client 01:27:23.067401 '226 File transfer complete\r\n' 01:27:23.107018 < 6 bytes data, client => server 01:27:23.107101 'QUIT\r\n' 01:27:23.108019 Received DATA (on stdin) 01:27:23.108094 > 18 bytes data, server => client 01:27:23.108192 '221 bye bye baby\r\n' 01:27:23.108744 ====> Client disconnect 01:27:23.114169 Received ACKD (on stdin) 01:28:07.782079 ====> Client connect 01:28:07.789815 Received DATA (on stdin) 01:28:07.789932 > 160 bytes data, server => client 01:28:07.790407 '220- _ _ ____ _ \r\n220- ___| | |CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind526 ./libtest/libtests lib526 ftp://127.0.0.1:38207/path/526 > log/4/stdout526 2> log/4/stderr526 | _ \| | ' 01:28:07.790511 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:28:07.790599 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:28:08.998066 < 16 bytes data, client => server 01:28:08.998258 'USER anonymous\r\n' 01:28:08.999750 Received DATA (on stdin) 01:28:08.999843 > 33 bytes data, server => client 01:28:09.000237 '331 We are happy you popped in!\r\n' 01:28:09.092846 < 22 bytes data, client => server 01:28:09.093010 'PASS ftp@example.com\r\n' 01:28:09.094347 Received DATA (on stdin) 01:28:09.094429 > 30 bytes data, server => client 01:28:09.094534 '230 Welcome you silly person\r\n' 01:28:09.177770 < 5 bytes data, client => server 01:28:09.177902 'PWD\r\n' 01:28:09.177979 Received DATA (on stdin) 01:28:09.178044 > 30 bytes data, server => client 01:28:09.178127 '257 "/" is current directory\r\n' 01:28:09.370745 < 10 bytes data, client => server 01:28:09.370915 'CWD path\r\n' 01:28:09.372203 Received DATA (on stdin) 01:28:09.372281 > 29 bytes data, server => client 01:28:09.372364 '250 CWD command successful.\r\n' 01:28:09.540908 < 26 bytes data, client => server 01:28:09.541101 'EPRT |1|127.0.0.1|50541|\r\n' 01:28:09.549821 Received DATA (on stdin) 01:28:09.549939 > 50 bytes data, server => client 01:28:09.550045 '200 Thanks for dropping by. We contact you later\r\n' 01:28:09.909501 < 8 bytes data, client => server 01:28:09.909698 'TYPE I\r\n' 01:28:09.910834 Received DATA (on stdin) 01:28:09.910918 > 33 bytes data, server => client 01:28:09.913193 '200 I modify TYPE as you wanted\r\n' 01:28:09.949040 < 10 bytes data, client => server 01:28:09.949159 'STOR 525\r\n' 01:28:09.950727 Received DATA (on stdin) 01:28:09.950800 > 24 bytes data, server => client 01:28:09.950880 '125 Gimme gimme gimme!\r\n' 01:28:10.683830 Received DATA (on stdin) 01:28:10.683962 > 28 bytes data, server => client 01:28:10.684071 '226 File transfer complete\r\n' 01:28:11.675782 < 6 bytes data, client => server 01:28:11.675951 'QUIT\r\n' 01:28:11.677260 Received DATA (on stdin) 01:28:11.677337 > 18 bytes data, server => client 01:28:11.680127 '221 bye bye baby\r\n' 01:28:11.829820 ====> Client disconnect 01:28:11.830980 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:27:22.015110 Running IPv4 version 01:27:22.045091 Listening on port 37225 01:27:22.045589 Wrote pid 262585 to log/5/server/ftp_sockdata.pid 01:27:22.046404 Received PING (on stdin) 01:27:22.047279 Received PORT (on stdin) 01:27:22.051023 ====> Client connect 01:27:22.057656 Received DATA (on stdin) 01:27:22.057942 > 18 bytes data, server => client 01:27:22.058308 'WE ROOLZ: 202313\r\n' 01:27:22.058541 Received DISC (on stdin) 01:27:22.058653 ====> Client forcibly disconnected 01:27:22.061979 Received QUIT (on stdin) 01:27:22.062068 quits 01:27:22.062581 ============> sockfilt quits 01:28:08.605014 ====> Client connect 01:28:08.616142 Running IPv4 version 01:28:08.616294 Connected to port 50541 01:28:08.616765 Wrote pid 263865 to log/5/server/ftp_sockdata.pid 01:28:08.617532 Received PING (on stdin) 01:28:09.316765 < 27 bytes data, client => server 01:28:09.317209 'Moooooooooooo\n upload this\n' 01:28:09.676095 ====> Client disconnect 01:28:09.679828 Received ACKD (on stdin) 01:28:09.680126 disconnected, no socket to read on 01:28:09.680227 Received QUIT (on stdin) 01:28:09.680319 quits 01:28:09.680825 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 525 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD path EPRT |1|127.0.0.1|50541| TYPE I STOR 525 QUIT === End of file server.input === Start of file stderr525 URL: ftp://127.0.0.1:33729/path/525 * Trying 127.0.0.1:33729... * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 59758 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' > CWD path < 250 CWD command successful. > EPRT |1|127.0.0.1|50541| < 200 Thanks for dropping by. We contact you later * Connect data stream actively * Ready to accept data connection from server * Connection accepted from server * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 54918) from 127.0.0.1 port 50541 > TYPE I < 200 I modify TYPE as you wanted > STOR 525 < 125 Gimme gimme gimme * upload completely sent off: 27 bytes * Remembering we are in dir "path/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:33729 left intact Test ended with result 0 === End of file stderr525 === Start of file upload.525 Moooooooooooo upload this === End of file upload.525 === Start of file upload525 Moooooooooooo upload this === End of file upload525 === Start of file valgrind525 ==262591== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind525 test 0526...[FTP RETR same file using different handles but same connection] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind526 ./libtest/libtests lib526 ftp://127.0.0.1:38207/path/526 > log/4/stdout526 2> log/4/stderr526 valgrind ERROR ==262758== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 526 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind526 ./libtest/libtests lib526 ftp://127.0.0.1:38207/path/526 > log/4/stdout526 2> log/4/stderr526 === End of file commands.log === Start of file ftp_server.log 01:27:25.930373 ====> Client connect 01:27:25.931419 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:27:25.940272 < "USER anonymous" 01:27:25.942450 > "331 We are happy you popped in![CR][LF]" 01:27:25.943683 < "PASS ftp@example.com" 01:27:25.943945 > "230 Welcome you silly person[CR][LF]" 01:27:25.945107 < "PWD" 01:27:25.945369 > "257 "/" is current directory[CR][LF]" 01:27:25.948159 < "EPSV" 01:27:25.948368 ====> Passive DATA channel requested by client 01:27:25.948510 DATA sockfilt for passive data channel starting... 01:27:25.991775 DATA sockfilt for passive data channel started (pid 262752) 01:27:25.993167 DATA sockfilt for passive data channel listens on port 36179 01:27:25.993520 > "229 Entering Passive Mode (|||36179|)[CR][LF]" 01:27:25.993679 Client has been notified that DATA conn will be accepted on port 36179 01:27:25.996947 Client connects to port 36179 01:27:25.997173 ====> Client established passive DATA connection on port 36179 01:27:25.997822 < "TYPE I" 01:27:25.998400 > "200 I modify TYPE as you wanted[CR][LF]" 01:27:25.999442 < "SIZE verifiedserver" 01:27:26.000119 > "213 18[CR][LF]" 01:27:26.004428 < "RETR verifiedserver" 01:27:26.004846 > "150 Binary junk (18 bytes).[CR][LF]" 01:27:26.006844 =====> Closing passive DATA connection... 01:27:26.007025 Server disconnects passive DATA connection 01:27:26.007604 Server disconnected passive DATA connection 01:27:26.007787 DATA sockfilt for passive data channel quits (pid 262752) 01:27:26.011290 DATA sockfilt for passive data channel quit (pid 262752) 01:27:26.011470 =====> Closed passive DATA connection 01:27:26.011732 > "226 File transfer complete[CR][LF]" 01:27:26.056079 < "QUIT" 01:27:26.056493 > "221 bye bye baby[CR][LF]" 01:27:26.057765 MAIN sockfilt said DISC 01:27:26.057965 ====> Client disconnected 01:27:26.058237 Awaiting input 01:28:10.310040 ====> Client connect 01:28:10.310804 FTPD: Getting commands from log/4/server.cmd 01:28:10.311147 FTPD: run test case number: 526 01:28:10.312201 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:28:11.496356 < "USER anonymous" 01:28:11.500817 > "331 We are happy you popped in![CR][LF]" 01:28:11.589970 < "PASS ftp@example.com" 01:28:11.590375 > "230 Welcome you silly person[CR][LF]" 01:28:11.675967 < "PWD" 01:28:11.676694 > "257 "/" is current directory[CR][LF]" 01:28:11.860008 < "CWD path" 01:28:11.860422 > "250 CWD command successful.[CR][LF]" 01:28:11.919828 < "EPSV" 01:28:11.920125 ====> Passive DATA channel requested by client 01:28:11.920273 DATA sockfilt for passive data channel starting... 01:28:11.994802 DATA sockfilt for passive data channel started (pid 263868) 01:28:11.996133 DATA sockfilt for passive data channel listens on port 33887 01:28:11.996989 > "229 Entering Passive Mode (|||33887|)[CR][LF]" 01:28:11.997188 Client has been notified that DATA conn will be accepted on port 33887 01:28:12.181174 Client connects to port 33887 01:28:12.181738 ====> Client established passive DATA connection on port 33887 01:28:12.290728 < "TYPE I" 01:28:12.294148 > "200 I modify TYPE as you wanted[CR][LF]" 01:28:12.333800 < "SIZE 526" 01:28:12.337462 > "213 47[CR][LF]" 01:28:12.404878 < "RETR 526" 01:28:12.405995 > "150 Binary data connection for 526 () (47 bytes).[CR][LF]" 01:28:12.406538 =====> Closing passive DATA connection... 01:28:12.406702 Server disconnects passive DATA connection 01:28:12.414101 Server disconnected passive DATA connection 01:28:12.414307 DATA sockfilt for passive data channel quits (pid 263868) 01:28:12.420450 DATA sockfilt for passive data channel quit (pid 263868) 01:28:12.420635 =====> Closed passive DATA connection 01:28:12.421249 > "226 File transfer complete[CR][LF]" 01:28:15.182306 < "EPSV" 01:28:15.182622 ====> Passive DATA channel requested by client 01:28:15.182766 DATA sockfilt for passive data channel starting... 01:28:15.229013 DATA sockfilt for passive data channel started (pid 263922) 01:28:15.230301 DATA sockfilt for passive data channel listens on port 32865 01:28:15.230681 > "229 Entering Passive Mode (|||32865|)[CR][LF]" 01:28:15.230869 Client has been notified that DATA conn will be accepted on port 32865 01:28:15.250790 Client connects to port 32865 01:28:15.251090 ====> Client established passive DATA connection on port 32865 01:28:15.275657 < "SIZE 526" 01:28:15.276207 > "213 47[CR][LF]" 01:28:15.281709 < "RETR 526" 01:28:15.282320 > "150 Binary data connection for 526 () (47 bytes).[CR][LF]" 01:28:15.283916 =====> Closing passive DATA connection... 01:28:15.284084 Server disconnects passive DATA connection 01:28:15.284558 Server disconnected passive DATA connection 01:28:15.284717 DATA sockfilt for passive data channel quits (pid 263922) 01:28:15.290826 DATA sockfilt for passive data channel quit (pid 263922) 01:28:15.290995 =====> Closed passive DATA connection 01:28:15.291248 > "226 File transfer complete[CR][LF]" 01:28:16.433178 < "EPSV" 01:28:16.433515 ====> Passive DATA channel requested by client 01:28:16.433666 DATA sockfilt for passive data channel starting... 01:28:16.480878 DATA sockfilt for passive data channel started (pid 263988) 01:28:16.484517 DATA sockfilt for passive data channel listens on port 39185 01:28:16.484915 > "229 Entering Passive Mode (|||39185|)[CR][LF]" 01:28:16.485083 Client has been notified that DATA conn will be accepted on port 39185 01:28:16.499339 Client connects to port 39185 01:28:16.499630 ====> Client established passive DATA connection on port 39185 01:28:16.511411 < "SIZE 526" 01:28:16.511987 > "213 47[CR][LF]" 01:28:16.514932 < "RETR 526" 01:28:16.515414 > "150 Binary data connection for 526 () (47 bytes).[CR][LF]" 01:28:16.515929 =====> Closing passive DATA connection... 01:28:16.516095 Server disconnects passive DATA connection 01:28:16.520769 Server disconnected passive DATA connection 01:28:16.520973 DATA sockfilt for passive data channel quits (pid 263988) 01:28:16.524221 DATA sockfilt for passive data channel quit (pid 263988) 01:28:16.524396 =====> Closed passive DATA connection 01:28:16.527483 > "226 File transfer complete[CR][LF]" 01:28:17.615703 < "EPSV" 01:28:17.616045 ====> Passive DATA channel requested by client 01:28:17.616204 DATA sockfilt for passive data channel starting... 01:28:17.661721 DATA sockfilt for passive data channel started (pid 264045) 01:28:17.662962 DATA sockfilt for passive data channel listens on port 39101 01:28:17.663760 > "229 Entering Passive Mode (|||39101|)[CR][LF]" 01:28:17.663944 Client has been notified that DATA conn will be accepted on port 39101 01:28:17.684154 Client connects to port 39101 01:28:17.684630 ====> Client established passive DATA connection on port 39101 01:28:17.687687 < "SIZE 526" 01:28:17.688267 > "213 47[CR][LF]" 01:28:17.691288 < "RETR 526" 01:28:17.691780 > "150 Binary data connection for 526 () (47 bytes).[CR][LF]" 01:28:17.692301 =====> Closing passive DATA connection... 01:28:17.692466 Server disconnects passive DATA connection 01:28:17.697539 Server disconnected passive DATA connection 01:28:17.697830 DATA sockfilt for passive data channel quits (pid 264045) 01:28:17.701415 DATA sockfilt for passive data channel quit (pid 264045) 01:28:17.701615 =====> Closed passive DATA connection 01:28:17.701913 > "226 File transfer complete[CR][LF]" 01:28:18.276722 < "QUIT" 01:28:18.277125 > "221 bye bye baby[CR][LF]" 01:28:18.403593 MAIN sockfilt said DISC 01:28:18.404277 ====> Client disconnected 01:28:18.404606 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:27:25.542498 ====> Client connect 01:27:25.543789 Received DATA (on stdin) 01:27:25.543893 > 160 bytes data, server => client 01:27:25.544009 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:27:25.544120 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:27:25.544213 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:27:25.550805 < 16 bytes data, client => server 01:27:25.550930 'USER anonymous\r\n' 01:27:25.553119 Received DATA (on stdin) 01:27:25.553193 > 33 bytes data, server => client 01:27:25.555224 '331 We are happy you popped in!\r\n' 01:27:25.555621 < 22 bytes data, client => server 01:27:25.555698 'PASS ftp@example.com\r\n' 01:27:25.556659 Received DATA (on stdin) 01:27:25.556730 > 30 bytes data, server => client 01:27:25.556808 '230 Welcome you silly person\r\n' 01:27:25.557052 < 5 bytes data, client => server 01:27:25.557117 'PWD\r\n' 01:27:25.558060 Received DATA (on stdin) 01:27:25.558124 > 30 bytes data, server => client 01:27:25.558203 '257 "/" is current directory\r\n' 01:27:25.560168 < 6 bytes data, client => server 01:27:25.560246 'EPSV\r\n' 01:27:25.606414 Received DATA (on stdin) 01:27:25.606555 > 39 bytes data, server => client 01:27:25.606661 '229 Entering Passive Mode (|||36179|)\r\n' 01:27:25.609284 < 8 bytes data, client => server 01:27:25.609359 'TYPE I\r\n' 01:27:25.610567 Received DATA (on stdin) 01:27:25.610640 > 33 bytes data, server => client 01:27:25.610748 '200 I modify TYPE as you wanted\r\n' 01:27:25.611434 < 21 bytes data, client => server 01:27:25.611518 'SIZE verifiedserver\r\n' 01:27:25.612228 Received DATA (on stdin) 01:27:25.612295 > 8 bytes data, server => client 01:27:25.612489 '213 18\r\n' 01:27:25.613178 < 21 bytes data, client => server 01:27:25.613269 'RETR verifiedserver\r\n' 01:27:25.617842 Received DATA (on stdin) 01:27:25.617939 > 29 bytes data, server => client 01:27:25.618017 '150 Binary junk (18 bytes).\r\n' 01:27:25.624453 Received DATA (on stdin) 01:27:25.624538 > 28 bytes data, server => client 01:27:25.624615 '226 File transfer complete\r\n' 01:27:25.667871 < 6 bytes data, client => server 01:27:25.668044 'QUIT\r\n' 01:27:25.669217 Received DATA (on stdin) 01:27:25.669289 > 18 bytes data, server => client 01:27:25.669369 '221 bye bye baby\r\n' 01:27:25.670165 ====> Client disconnect 01:27:25.673244 Received ACKD (on stdin) 01:28:09.922116 ====> Client connect 01:28:09.926473 Received DATA (on stdin) 01:28:09.926589 > 160 bytes data, server => client 01:28:09.926698 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:28:09.926799 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:28:09.926890 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:28:11.107439 < 16 bytes data, client => server 01:28:11.107637 'USER anonymous\r\n' 01:28:11.109142 Received DATA (on stdin) 01:28:11.109221 > 33 bytes data, server => client 01:28:11.113493 '331 We are happy you popped in!\r\n' 01:28:11.201283 < 22 bytes data, client => server 01:28:11.201449 'PASS ftp@example.com\r\n' 01:28:11.202976 Received DATA (on stdin) 01:28:11.203054 > 30 bytes data, server => client 01:28:11.203148 '230 Welcome you silly person\r\n' 01:28:11.287332 < 5 bytes data, client => server 01:28:11.287475 'PWD\r\n' 01:28:11.288727 Received DATA (on stdin) 01:28:11.288803 > 30 bytes data, server => client 01:28:11.288910 '257 "/" is current directory\r\n' 01:28:11.471272 < 10 bytes data, client => server 01:28:11.471455 'CWD path\r\n' 01:28:11.476474 Received DATA (on stdin) 01:28:11.476567 > 29 bytes data, server => client 01:28:11.476652 '250 CWD command successful.\r\n' 01:28:11.531286 < 6 bytes data, client => server 01:28:11.531404 'EPSV\r\n' 01:28:11.608852 Received DATA (on stdin) 01:28:11.608999 > 39 bytes data, server => client 01:28:11.609134 '229 Entering Passive Mode (|||33887|)\r\n' 01:28:11.901995 < 8 bytes data, client => server 01:28:11.902155 'TYPE I\r\n' 01:28:11.903466 Received DATA (on stdin) 01:28:11.903545 > 33 bytes data, server => client 01:28:11.906793 '200 I modify TYPE as you wanted\r\n' 01:28:11.945388 < 10 bytes data, client => server 01:28:11.945509 'SIZE 526\r\n' 01:28:11.948193 Received DATA (on stdin) 01:28:11.948270 > 8 bytes data, server => client 01:28:11.950103 '213 47\r\n' 01:28:12.016289 < 10 bytes data, client => server 01:28:12.016418 'RETR 526\r\n' 01:28:12.026880 Received DATA (on stdin) 01:28:12.026970 > 51 bytes data, server => client 01:28:12.027066 '150 Binary data connection for 526 () (47 bytes).\r\n' 01:28:12.033284 Received DATA (on stdin) 01:28:12.033368 > 28 bytes data, server => client 01:28:12.033471 '226 File transfer complete\r\n' 01:28:14.793613 < 6 bytes data, client => server 01:28:14.793758 'EPSV\r\n' 01:28:14.843479 Received DATA (on stdin) 01:28:14.843611 > 39 bytes data, server => client 01:28:14.843696 '229 Entering Passive Mode (|||32865|)\r\n' 01:28:14.887225 < 10 bytes data, client => server 01:28:14.887349 'SIZE 526\r\n' 01:28:14.888791 Received DATA (on stdin) 01:28:14.888858 > 8 bytes data, server => client 01:28:14.888925 '213 47\r\n' 01:28:14.893566 < 10 bytes data, client => server 01:28:14.893640 'RETR 526\r\n' 01:28:14.894514 Received DATA (on stdin) 01:28:14.894578 > 51 bytes data, server => client 01:28:14.895438 '150 Binary data connection for 526 () (47 bytes).\r\n' 01:28:14.903826 Received DATA (on stdin) 01:28:14.903899 > 28 bytes data, server => client 01:28:14.903971 '226 File transfer complete\r\n' 01:28:16.044436 < 6 bytes data, client => server 01:28:16.044602 'EPSV\r\n' 01:28:16.097230 Received DATA (on stdin) 01:28:16.097386 > 39 bytes data, server => client 01:28:16.097481 '229 Entering Passive Mode (|||39185|)\r\n' 01:28:16.121774 < 10 bytes data, client => server 01:28:16.121904 'SIZE 526\r\n' 01:28:16.124332 Received DATA (on stdin) 01:28:16.124422 > 8 bytes data, server => client 01:28:16.124495 '213 47\r\n' 01:28:16.126722 < 10 bytes data, client => server 01:28:16.126801 'RETR 526\r\n' 01:28:16.133582 Received DATA (on stdin) 01:28:16.133675 > 51 bytes data, server => client 01:28:16.133770 '150 Binary data connection for 526 () (47 bytes).\r\n' 01:28:16.136992 Received DATA (on stdin) 01:28:16.137068 > 28 bytes data, server => client 01:28:16.140152 '226 File transfer complete\r\n' 01:28:17.226998 < 6 bytes data, client => server 01:28:17.227156 'EPSV\r\n' 01:28:17.275645 Received DATA (on stdin) 01:28:17.275791 > 39 bytes data, server => client 01:28:17.275912 '229 Entering Passive Mode (|||39101|)\r\n' 01:28:17.299233 < 10 bytes data, client => server 01:28:17.299361 'SIZE 526\r\n' 01:28:17.300665 Received DATA (on stdin) 01:28:17.300760 > 8 bytes data, server => client 01:28:17.300838 '213 47\r\n' 01:28:17.303026 < 10 bytes data, client => server 01:28:17.303115 'RETR 526\r\n' 01:28:17.305032 Received DATA (on stdin) 01:28:17.305108 > 51 bytes data, server => client 01:28:17.305209 '150 Binary data connection for 526 () (47 bytes).\r\n' 01:28:17.314525 Received DATA (on stdin) 01:28:17.314643 > 28 bytes data, server => client 01:28:17.314729 '226 File transfer complete\r\n' 01:28:17.887967 < 6 bytes data, client => server 01:28:17.888158 'QUIT\r\n' 01:28:17.893130 Received DATA (on stdin) 01:28:17.893242 > 18 bytes data, server => client 01:28:17.893322 '221 bye bye baby\r\n' 01:28:18.015652 ====> Client disconnect 01:28:18.016484 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:27:25.594436 Running IPv4 version 01:27:25.602644 Listening on port 36179 01:27:25.603099 Wrote pid 262752 to log/4/server/ftp_sockdata.pid 01:27:25.603862 Received PING (on stdin) 01:27:25.605001 Received PORT (on stdin) 01:27:25.609113 ====> Client connect 01:27:25.618133 Received DATA (on stdin) 01:27:25.618517 > 18 bytes data, server => client 01:27:25.618930 'WE ROOLZ: 201673\r\n' 01:27:25.619733 Received DISC (on stdin) 01:27:25.619863 ====> Client forcibly disconnected 01:27:25.620471 Received QUIT (on stdin) 01:27:25.620550 quits 01:27:25.621093 ============> sockfilt quits 01:28:11.594885 Running IPv4 version 01:28:11.605690 Listening on port 33887 01:28:11.606149 Wrote pid 263868 to log/4/server/ftp_sockdata.pid 01:28:11.606848 Received PING (on stdin) 01:28:11.607856 Received PORT (on stdin) 01:28:11.793241 ====> Client connect 01:28:12.020128 Received DATA (on stdin) 01:28:12.020526 > 47 bytes data, server => client 01:28:12.020908 'file contents should appear once for each file\n' 01:28:12.021188 Received DISC (on stdin) 01:28:12.021308 ====> Client forcibly disconnected 01:28:12.027239 Received QUIT (on stdin) 01:28:12.027326 quits 01:28:12.027851 ============> sockfilt quits 01:28:15.832361 Running IPv4 version 01:28:15.839045 Listening on port 32865 01:28:15.839487 Wrote pid 263922 to log/4/server/ftp_sockdata.pid 01:28:15.840229 Received PING (on stdin) 01:28:15.842067 Received PORT (on stdin) 01:28:15.862968 ====> Client connect 01:28:15.894940 Received DATA (on stdin) 01:28:15.895266 > 47 bytes data, server => client 01:28:15.895765 'file contents should appear once for each file\n' 01:28:15.896638 Received DISC (on stdin) 01:28:15.896756 ====> Client forcibly disconnected 01:28:15.897259 Received QUIT (on stdin) 01:28:15.897331 quits 01:28:15.897791 ============> sockfilt quits 01:28:16.084502 Running IPv4 version 01:28:16.091606 Listening on port 39185 01:28:16.092111 Wrote pid 263988 to log/4/server/ftp_sockdata.pid 01:28:16.092882 Received PING (on stdin) 01:28:16.093775 Received PORT (on stdin) 01:28:16.111505 ====> Client connect 01:28:16.128032 Received DATA (on stdin) 01:28:16.128401 > 47 bytes data, server => client 01:28:16.128782 'file contents should appear once for each file\n' 01:28:16.129043 Received DISC (on stdin) 01:28:16.129162 ====> Client forcibly disconnected 01:28:16.133531 Received QUIT (on stdin) 01:28:16.133611 quits 01:28:16.134150 ============> sockfilt quits 01:28:17.264544 Running IPv4 version 01:28:17.272222 Listening on port 39101 01:28:17.272739 Wrote pid 264045 to log/4/server/ftp_sockdata.pid 01:28:17.273545 Received PING (on stdin) 01:28:17.274606 Received PORT (on stdin) 01:28:17.293520 ====> Client connect 01:28:17.305324 Received DATA (on stdin) 01:28:17.305682 > 47 bytes data, server => client 01:28:17.306058 'file contents should appear once for each file\n' 01:28:17.306308 Received DISC (on stdin) 01:28:17.306437 ===CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind529 ./libtest/libtests lib525 ftp://127.0.0.1:45353/path/529 log/7/upload529 > log/7/stdout529 2> log/7/stderr529 => Client forcibly disconnected 01:28:17.310445 Received QUIT (on stdin) 01:28:17.310542 quits 01:28:17.311062 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 526 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD path EPSV TYPE I SIZE 526 RETR 526 EPSV SIZE 526 RETR 526 EPSV SIZE 526 RETR 526 EPSV SIZE 526 RETR 526 QUIT === End of file server.input === Start of file stderr526 URL: ftp://127.0.0.1:38207/path/526 Start at URL 0 * Trying 127.0.0.1:38207... * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 47268 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' > CWD path < 250 CWD command successful. > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||33887|) * Connecting to 127.0.0.1 (127.0.0.1) port 33887 * Trying 127.0.0.1:33887... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 33887) from 127.0.0.1 port 51816 > TYPE I < 200 I modify TYPE as you wanted > SIZE 526 < 213 47 > RETR 526 < 150 Binary data connection for 526 () (47 bytes). * Maxdownload = -1 * Getting file with size: 47 * abort upload * Remembering we are in dir "path/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:38207 left intact Advancing to URL 1 * Reusing existing ftp: connection with host 127.0.0.1 * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||32865|) * Connecting to 127.0.0.1 (127.0.0.1) port 32865 * Trying 127.0.0.1:32865... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 32865) from 127.0.0.1 port 54990 > SIZE 526 < 213 47 > RETR 526 < 150 Binary data connection for 526 () (47 bytes). * Maxdownload = -1 * Getting file with size: 47 * abort upload * Remembering we are in dir "path/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:38207 left intact Advancing to URL 2 * Reusing existing ftp: connection with host 127.0.0.1 * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||39185|) * Connecting to 127.0.0.1 (127.0.0.1) port 39185 * Trying 127.0.0.1:39185... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 39185) from 127.0.0.1 port 57884 > SIZE 526 < 213 47 > RETR 526 < 150 Binary data connection for 526 () (47 bytes). * Maxdownload = -1 * Getting file with size: 47 * abort upload * Remembering we are in dir "path/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:38207 left intact Advancing to URL 3 * Reusing existing ftp: connection with host 127.0.0.1 * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||39101|) * Connecting to 127.0.0.1 (127.0.0.1) port 39101 * Trying 127.0.0.1:39101... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 39101) from 127.0.0.1 port 46564 > SIZE 526 < 213 47 > RETR 526 < 150 Binary data connection for 526 () (47 bytes). * Maxdownload = -1 * Getting file with size: 47 * abort upload * Remembering we are in dir "path/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:38207 left intact Test ended with result 0 === End of file stderr526 === Start of file stdout526 file contents should appear once for each file file contents should appear once for each file file contents should appear once for each file file contents should appear once for each file === End of file stdout526 === Start of file valgrind526 ==262758== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind526 test 0529...[FTP PORT upload using multi interface (weird cleanup function sequence)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind529 ./libtest/libtests lib525 ftp://127.0.0.1:45353/path/529 log/7/upload529 > log/7/stdout529 2> log/7/stderr529 valgrind ERROR ==263191== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 529 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind529 ./libtest/libtests lib525 ftp://127.0.0.1:45353/path/529 log/7/upload529 > log/7/stdout529 2> log/7/stderr529 === End of file commands.log === Start of file ftp_server.log 01:27:38.883146 ====> Client connect 01:27:38.884707 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:27:38.893398 < "USER anonymous" 01:27:38.893758 > "331 We are happy you popped in![CR][LF]" 01:27:38.895066 < "PASS ftp@example.com" 01:27:38.896019 > "230 Welcome you silly person[CR][LF]" 01:27:38.896569 < "PWD" 01:27:38.899233 > "257 "/" is current directory[CR][LF]" 01:27:38.899998 < "EPSV" 01:27:38.900217 ====> Passive DATA channel requested by client 01:27:38.900376 DATA sockfilt for passive data channel starting... 01:27:38.953727 DATA sockfilt for passive data channel started (pid 263121) 01:27:38.955394 DATA sockfilt for passive data channel listens on port 34417 01:27:38.955791 > "229 Entering Passive Mode (|||34417|)[CR][LF]" 01:27:38.955974 Client has been notified that DATA conn will be accepted on port 34417 01:27:38.958693 Client connects to port 34417 01:27:38.958994 ====> Client established passive DATA connection on port 34417 01:27:38.960652 < "TYPE I" 01:27:38.960988 > "200 I modify TYPE as you wanted[CR][LF]" 01:27:38.962673 < "SIZE verifiedserver" 01:27:38.963759 > "213 18[CR][LF]" 01:27:38.964545 < "RETR verifiedserver" 01:27:38.967471 > "150 Binary junk (18 bytes).[CR][LF]" 01:27:38.968041 =====> Closing passive DATA connection... 01:27:38.968214 Server disconnects passive DATA connection 01:27:38.971904 Server disconnected passive DATA connection 01:27:38.972093 DATA sockfilt for passive data channel quits (pid 263121) 01:27:38.975620 DATA sockfilt for passive data channel quit (pid 263121) 01:27:38.975803 =====> Closed passive DATA connection 01:27:38.978967 > "226 File transfer complete[CR][LF]" 01:27:39.015597 < "QUIT" 01:27:39.016812 > "221 bye bye baby[CR][LF]" 01:27:39.017019 MAIN sockfilt said DISC 01:27:39.017192 ====> Client disconnected 01:27:39.017464 Awaiting input 01:28:23.919869 ====> Client connect 01:28:23.920595 FTPD: Getting commands from log/7/server.cmd 01:28:23.921032 FTPD: run test case number: 529 01:28:23.922194 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:28:25.158679 < "USER anonymous" 01:28:25.159152 > "331 We are happy you popped in![CR][LF]" 01:28:25.255005 < "PASS ftp@example.com" 01:28:25.255473 > "230 Welcome you silly person[CR][LF]" 01:28:25.338977 < "PWD" 01:28:25.339456 > "257 "/" is current directory[CR][LF]" 01:28:25.536739 < "CWD path" 01:28:25.537511 > "250 CWD command successful.[CR][LF]" 01:28:25.703242 < "EPRT |1|127.0.0.1|49421|" 01:28:25.703591 ====> Active DATA channel requested by client 01:28:25.704419 > "200 Thanks for dropping by. We contact you later[CR][LF]" 01:28:25.704624 DATA sockfilt for active data channel starting... 01:28:25.747421 DATA sockfilt for active data channel started (pid 264213) 01:28:25.747909 ====> Active DATA channel connected to client port 49421 01:28:26.026538 < "TYPE I" 01:28:26.027323 > "200 I modify TYPE as you wanted[CR][LF]" 01:28:26.058832 < "STOR 529" 01:28:26.059097 STOR test number 529 in log/7/upload.529 01:28:26.059628 > "125 Gimme gimme gimme![CR][LF]" 01:28:26.362230 > Appending 27 bytes to file 01:28:26.736376 =====> Closing active DATA connection... 01:28:26.736648 Server knows active DATA connection is already disconnected 01:28:26.736826 DATA sockfilt for active data channel quits (pid 264213) 01:28:26.740216 DATA sockfilt for active data channel quit (pid 264213) 01:28:26.740410 =====> Closed active DATA connection 01:28:26.740599 received 27 bytes upload 01:28:26.741296 > "226 File transfer complete[CR][LF]" 01:28:27.489233 < "QUIT" 01:28:27.489641 > "221 bye bye baby[CR][LF]" 01:28:27.644257 MAIN sockfilt said DISC 01:28:27.644918 ====> Client disconnected 01:28:27.645223 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:27:38.495222 ====> Client connect 01:27:38.496482 Received DATA (on stdin) 01:27:38.496575 > 160 bytes data, server => client 01:27:38.496719 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:27:38.496830 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:27:38.496928 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:27:38.504942 < 16 bytes data, client => server 01:27:38.505069 'USER anonymous\r\n' 01:27:38.506453 Received DATA (on stdin) 01:27:38.506534 > 33 bytes data, server => client 01:27:38.506649 '331 We are happy you popped in!\r\n' 01:27:38.506941 < 22 bytes data, client => server 01:27:38.507027 'PASS ftp@example.com\r\n' 01:27:38.507777 Received DATA (on stdin) 01:27:38.507853 > 30 bytes data, server => client 01:27:38.507969 '230 Welcome you silly person\r\n' 01:27:38.508224 < 5 bytes data, client => server 01:27:38.508295 'PWD\r\n' 01:27:38.509285 Received DATA (on stdin) 01:27:38.509358 > 30 bytes data, server => client 01:27:38.509471 '257 "/" is current directory\r\n' 01:27:38.511943 < 6 bytes data, client => server 01:27:38.512028 'EPSV\r\n' 01:27:38.568709 Received DATA (on stdin) 01:27:38.568885 > 39 bytes data, server => client 01:27:38.568995 '229 Entering Passive Mode (|||34417|)\r\n' 01:27:38.572459 < 8 bytes data, client => server 01:27:38.572558 'TYPE I\r\n' 01:27:38.573886 Received DATA (on stdin) 01:27:38.573968 > 33 bytes data, server => client 01:27:38.574064 '200 I modify TYPE as you wanted\r\n' 01:27:38.574474 < 21 bytes data, client => server 01:27:38.574562 'SIZE verifiedserver\r\n' 01:27:38.575448 Received DATA (on stdin) 01:27:38.575523 > 8 bytes data, server => client 01:27:38.575621 '213 18\r\n' 01:27:38.576466 < 21 bytes data, client => server 01:27:38.576564 'RETR verifiedserver\r\n' 01:27:38.577296 Received DATA (on stdin) 01:27:38.577371 > 29 bytes data, server => client 01:27:38.577484 '150 Binary junk (18 bytes).\r\n' 01:27:38.588505 Received DATA (on stdin) 01:27:38.588605 > 28 bytes data, server => client 01:27:38.591686 '226 File transfer complete\r\n' 01:27:38.627106 < 6 bytes data, client => server 01:27:38.627273 'QUIT\r\n' 01:27:38.628425 Received DATA (on stdin) 01:27:38.628498 > 18 bytes data, server => client 01:27:38.628590 '221 bye bye baby\r\n' 01:27:38.629153 ====> Client disconnect 01:27:38.629836 Received ACKD (on stdin) 01:28:23.531948 ====> Client connect 01:28:23.534797 Received DATA (on stdin) 01:28:23.534928 > 160 bytes data, server => client 01:28:23.535042 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:28:23.535164 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:28:23.535277 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:28:24.769822 < 16 bytes data, client => server 01:28:24.770008 'USER anonymous\r\n' 01:28:24.771449 Received DATA (on stdin) 01:28:24.771541 > 33 bytes data, server => client 01:28:24.771647 '331 We are happy you popped in!\r\n' 01:28:24.863624 < 22 bytes data, client => server 01:28:24.863803 'PASS ftp@example.com\r\n' 01:28:24.868078 Received DATA (on stdin) 01:28:24.868177 > 30 bytes data, server => client 01:28:24.868274 '230 Welcome you silly person\r\n' 01:28:24.952034 < 5 bytes data, client => server 01:28:24.952179 'PWD\r\n' 01:28:24.952272 Received DATA (on stdin) 01:28:24.952348 > 30 bytes data, server => client 01:28:24.952443 '257 "/" is current directory\r\n' 01:28:25.147917 < 10 bytes data, client => server 01:28:25.148108 'CWD path\r\n' 01:28:25.149465 Received DATA (on stdin) 01:28:25.149548 > 29 bytes data, server => client 01:28:25.149661 '250 CWD command successful.\r\n' 01:28:25.314399 < 26 bytes data, client => server 01:28:25.314599 'EPRT |1|127.0.0.1|49421|\r\n' 01:28:25.316543 Received DATA (on stdin) 01:28:25.316627 > 50 bytes data, server => client 01:28:25.318875 '200 Thanks for dropping by. We contact you later\r\n' 01:28:25.637766 < 8 bytes data, client => server 01:28:25.637925 'TYPE I\r\n' 01:28:25.639291 Received DATA (on stdin) 01:28:25.639368 > 33 bytes data, server => client 01:28:25.639480 '200 I modify TYPE as you wanted\r\n' 01:28:25.670403 < 10 bytes data, client => server 01:28:25.670524 'STOR 529\r\n' 01:28:25.671670 Received DATA (on stdin) 01:28:25.671737 > 24 bytes data, server => client 01:28:25.671835 '125 Gimme gimme gimme!\r\n' 01:28:26.353206 Received DATA (on stdin) 01:28:26.353340 > 28 bytes data, server => client 01:28:26.353446 '226 File transfer complete\r\n' 01:28:27.100522 < 6 bytes data, client => server 01:28:27.100661 'QUIT\r\n' 01:28:27.104619 Received DATA (on stdin) 01:28:27.104708 > 18 bytes data, server => client 01:28:27.104786 '221 bye bye baby\r\n' 01:28:27.256312 ====> Client disconnect 01:28:27.257106 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:27:38.554717 Running IPv4 version 01:27:38.564278 Listening on port 34417 01:27:38.564795 Wrote pid 263121 to log/7/server/ftp_sockdata.pid 01:27:38.565770 Received PING (on stdin) 01:27:38.567060 Received PORT (on stdin) 01:27:38.571004 ====> Client connect 01:27:38.583220 Received DATA (on stdin) 01:27:38.583563 > 18 bytes data, server => client 01:27:38.583976 'WE ROOLZ: 202639\r\n' 01:27:38.584248 Received DISC (on stdin) 01:27:38.584372 ====> Client forcibly disconnected 01:27:38.584747 Received QUIT (on stdin) 01:27:38.584826 quits 01:27:38.585387 ============> sockfilt quits 01:28:25.350359 ====> Client connect 01:28:25.358031 Running IPv4 version 01:28:25.358185 Connected to port 49421 01:28:25.358641 Wrote pid 264213 to log/7/server/ftp_sockdata.pid 01:28:25.359425 Received PING (on stdin) 01:28:25.973408 < 27 bytes data, client => server 01:28:25.973870 'Moooooooooooo\n upload this\n' 01:28:26.347325 ====> Client disconnect 01:28:26.347784 Received ACKD (on stdin) 01:28:26.348057 disconnected, no socket to read on 01:28:26.349364 Received QUIT (on stdin) 01:28:26.349458 quits 01:28:26.349991 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 529 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD path EPRT |1|127.0.0.1|49421| TYPE I STOR 529 QUIT === End of file server.input === Start of file stderr529 URL: ftp://127.0.0.1:45353/path/529 * Trying 127.0.0.1:45353... * Established connection to 127.0.0.1 (127.0.0.1 port 45353) from 127.0.0.1 port 47372 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' > CWD path < 250 CWD command successful. > EPRT |1|127.0.0.1|49421| < 200 Thanks for dropping by. We contact you later * Connect data stream actively * Ready to accept data connection from server * Connection accepted from server * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 58754) from 127.0.0.1 port 49421 > TYPE I < 200 I modify TYPE as you wanted > STOR 529 < 125 Gimme gimme gimme * upload completely sent off: 27 bytes * Remembering we are in dir "patCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind528 ./libtest/libtests lib526 http://127.0.0.1:39461/path/528 > log/8/stdout528 2> log/8/stderr528 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind527 ./libtest/libtests lib526 ftp://127.0.0.1:37331/path/527 > log/3/stdout527 2> log/3/stderr527 h/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:45353 left intact Test ended with result 0 === End of file stderr529 === Start of file upload.529 Moooooooooooo upload this === End of file upload.529 === Start of file upload529 Moooooooooooo upload this === End of file upload529 === Start of file valgrind529 ==263191== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind529 test 0528...[HTTP GET same file using different handles but same connection] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind528 ./libtest/libtests lib526 http://127.0.0.1:39461/path/528 > log/8/stdout528 2> log/8/stderr528 valgrind ERROR ==263106== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 528 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind528 ./libtest/libtests lib526 http://127.0.0.1:39461/path/528 > log/8/stdout528 2> log/8/stderr528 === End of file commands.log === Start of file http_server.log 01:27:37.797506 ====> Client connect 01:27:37.797666 accept_connection 3 returned 4 01:27:37.797742 accept_connection 3 returned 0 01:27:37.805053 Read 93 bytes 01:27:37.805175 Process 93 bytes request 01:27:37.805265 Got request: GET /verifiedserver HTTP/1.1 01:27:37.805330 Are-we-friendly question received 01:27:37.805451 Wrote request (93 bytes) input to log/8/server.input 01:27:37.805548 Identifying ourselves as friends 01:27:37.805705 Response sent (57 bytes) and written to log/8/server.response 01:27:37.805769 special request received, no persistency 01:27:37.805822 ====> Client disconnect 0 01:28:22.371669 ====> Client connect 01:28:22.371805 accept_connection 3 returned 4 01:28:22.371880 accept_connection 3 returned 0 01:28:23.455131 Read 62 bytes 01:28:23.455311 Process 62 bytes request 01:28:23.455414 Got request: GET /path/528 HTTP/1.1 01:28:23.455494 Serve test number 528 part 0 01:28:23.455692 - request found to be complete (528) 01:28:23.455972 Wrote request (62 bytes) input to log/8/server.input 01:28:23.456093 Send response test528 section 01:28:23.456468 Response sent (149 bytes) and written to log/8/server.response 01:28:23.456545 => persistent connection request ended, awaits new request 01:28:26.366451 Read 62 bytes 01:28:26.366620 Process 62 bytes request 01:28:26.366713 Got request: GET /path/528 HTTP/1.1 01:28:26.366782 Serve test number 528 part 0 01:28:26.366960 - request found to be complete (528) 01:28:26.367178 Wrote request (62 bytes) input to log/8/server.input 01:28:26.367268 Send response test528 section 01:28:26.367611 Response sent (149 bytes) and written to log/8/server.response 01:28:26.367678 => persistent connection request ended, awaits new request 01:28:27.493109 Read 62 bytes 01:28:27.493287 Process 62 bytes request 01:28:27.493383 Got request: GET /path/528 HTTP/1.1 01:28:27.493464 Serve test number 528 part 0 01:28:27.493650 - request found to be complete (528) 01:28:27.493845 Wrote request (62 bytes) input to log/8/server.input 01:28:27.493934 Send response test528 section 01:28:27.494278 Response sent (149 bytes) and written to log/8/server.response 01:28:27.494344 => persistent connection request ended, awaits new request 01:28:28.653106 Read 62 bytes 01:28:28.653270 Process 62 bytes request 01:28:28.653363 Got request: GET /path/528 HTTP/1.1 01:28:28.653434 Serve test number 528 part 0 01:28:28.653608 - request found to be complete (528) 01:28:28.653822 Wrote request (62 bytes) input to log/8/server.input 01:28:28.653922 Send response test528 section 01:28:28.654279 Response sent (149 bytes) and written to log/8/server.response 01:28:28.654345 => persistent connection request ended, awaits new request 01:28:29.306293 Connection closed by client 01:28:29.306509 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 38154 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 528 === End of file server.cmd === Start of file server.input GET /path/528 HTTP/1.1 Host: 127.0.0.1:39461 Accept: */* GET /path/528 HTTP/1.1 Host: 127.0.0.1:39461 Accept: */* GET /path/528 HTTP/1.1 Host: 127.0.0.1:39461 Accept: */* GET /path/528 HTTP/1.1 Host: 127.0.0.1:39461 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 47 file contents should appear once for each file HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 47 file contents should appear once for each file HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 47 file contents should appear once for each file HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 47 file contents should appear once for each file === End of file server.response === Start of file stderr528 URL: http://127.0.0.1:39461/path/528 Start at URL 0 * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 53954 * using HTTP/1.x > GET /path/528 HTTP/1.1 Host: 127.0.0.1:39461 Accept: */* < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Content-Length: 47 < * Connection #0 to host 127.0.0.1:39461 left intact Advancing to URL 1 * Reusing existing http: connection with host 127.0.0.1 > GET /path/528 HTTP/1.1 Host: 127.0.0.1:39461 Accept: */* < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Content-Length: 47 < * Connection #0 to host 127.0.0.1:39461 left intact Advancing to URL 2 * Reusing existing http: connection with host 127.0.0.1 > GET /path/528 HTTP/1.1 Host: 127.0.0.1:39461 Accept: */* * Request completely sent off < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Content-Length: 47 < * Connection #0 to host 127.0.0.1:39461 left intact Advancing to URL 3 * Reusing existing http: connection with host 127.0.0.1 > GET /path/528 HTTP/1.1 Host: 127.0.0.1:39461 Accept: */* < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Content-Length: 47 < * Connection #0 to host 127.0.0.1:39461 left intact Test ended with result 0 === End of file stderr528 === Start of file stdout528 file contents should appear once for each file file contents should appear once for each file file contents should appear once for each file file contents should appear once for each file === End of file stdout528 === Start of file valgrind528 ==263106== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind528 test 0527...[FTP RETR same file using different handles but same connection] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind527 ./libtest/libtests lib526 ftp://127.0.0.1:37331/path/527 > log/3/stdout527 2> log/3/stderr527 valgrind ERROR ==262943== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 527 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind527 ./libtest/libtests lib526 ftp://127.0.0.1:37331/path/527 > log/3/stdout527 2> log/3/stderr527 === End of file commands.log === Start of file ftp_server.log 01:27:37.036007 ====> Client connect 01:27:37.037441 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:27:37.044186 < "USER anonymous" 01:27:37.044744 > "331 We are happy you popped in![CR][LF]" 01:27:37.047847 < "PASS ftp@example.com" 01:27:37.048116 > "230 Welcome you silly person[CR][LF]" 01:27:37.049139 < "PWD" 01:27:37.049395 > "257 "/" is current directory[CR][LF]" 01:27:37.051471 < "EPSV" 01:27:37.051682 ====> Passive DATA channel requested by client 01:27:37.051831 DATA sockfilt for passive data channel starting... 01:27:37.089803 DATA sockfilt for passive data channel started (pid 262926) 01:27:37.091144 DATA sockfilt for passive data channel listens on port 33835 01:27:37.091713 > "229 Entering Passive Mode (|||33835|)[CR][LF]" 01:27:37.091877 Client has been notified that DATA conn will be accepted on port 33835 01:27:37.093760 Client connects to port 33835 01:27:37.093955 ====> Client established passive DATA connection on port 33835 01:27:37.095675 < "TYPE I" 01:27:37.095935 > "200 I modify TYPE as you wanted[CR][LF]" 01:27:37.097131 < "SIZE verifiedserver" 01:27:37.097440 > "213 18[CR][LF]" 01:27:37.098597 < "RETR verifiedserver" 01:27:37.098892 > "150 Binary junk (18 bytes).[CR][LF]" 01:27:37.099399 =====> Closing passive DATA connection... 01:27:37.099546 Server disconnects passive DATA connection 01:27:37.102839 Server disconnected passive DATA connection 01:27:37.102999 DATA sockfilt for passive data channel quits (pid 262926) 01:27:37.109086 DATA sockfilt for passive data channel quit (pid 262926) 01:27:37.109248 =====> Closed passive DATA connection 01:27:37.109486 > "226 File transfer complete[CR][LF]" 01:27:37.152061 < "QUIT" 01:27:37.152428 > "221 bye bye baby[CR][LF]" 01:27:37.153512 MAIN sockfilt said DISC 01:27:37.153684 ====> Client disconnected 01:27:37.153953 Awaiting input 01:28:21.928287 ====> Client connect 01:28:21.929103 FTPD: Getting commands from log/3/server.cmd 01:28:21.929508 FTPD: run test case number: 527 01:28:21.934216 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:28:23.153808 < "USER anonymous" 01:28:23.154564 > "331 We are happy you popped in![CR][LF]" 01:28:23.252916 < "PASS ftp@example.com" 01:28:23.255051 > "230 Welcome you silly person[CR][LF]" 01:28:23.348423 < "PWD" 01:28:23.349212 > "257 "/" is current directory[CR][LF]" 01:28:23.565002 < "CWD path" 01:28:23.565528 > "250 CWD command successful.[CR][LF]" 01:28:23.631836 < "EPSV" 01:28:23.632207 ====> Passive DATA channel requested by client 01:28:23.632383 DATA sockfilt for passive data channel starting... 01:28:23.689970 DATA sockfilt for passive data channel started (pid 264144) 01:28:23.691521 DATA sockfilt for passive data channel listens on port 40373 01:28:23.692444 > "229 Entering Passive Mode (|||40373|)[CR][LF]" 01:28:23.692664 Client has been notified that DATA conn will be accepted on port 40373 01:28:23.911236 Client connects to port 40373 01:28:23.911832 ====> Client established passive DATA connection on port 40373 01:28:24.071503 < "TYPE I" 01:28:24.074095 > "200 I modify TYPE as you wanted[CR][LF]" 01:28:24.116432 < "SIZE 527" 01:28:24.122910 > "213 47[CR][LF]" 01:28:24.193899 < "RETR 527" 01:28:24.195115 > "150 Binary data connection for 527 () (47 bytes).[CR][LF]" 01:28:24.195641 =====> Closing passive DATA connection... 01:28:24.195805 Server disconnects passive DATA connection 01:28:24.200793 Server disconnected passive DATA connection 01:28:24.201091 DATA sockfilt for passive data channel quits (pid 264144) 01:28:24.207803 DATA sockfilt for passive data channel quit (pid 264144) 01:28:24.208078 =====> Closed passive DATA connection 01:28:24.208417 > "226 File transfer complete[CR][LF]" 01:28:27.365376 < "EPSV" 01:28:27.365709 ====> Passive DATA channel requested by client 01:28:27.365858 DATA sockfilt for passive data channel starting... 01:28:27.410871 DATA sockfilt for passive data channel started (pid 264216) 01:28:27.416118 DATA sockfilt for passive data channel listens on port 42311 01:28:27.416616 > "229 Entering Passive Mode (|||42311|)[CR][LF]" 01:28:27.416796 Client has been notified that DATA conn will be accepted on port 42311 01:28:27.451898 Client connects to port 42311 01:28:27.452360 ====> Client established passive DATA connection on port 42311 01:28:27.478150 < "SIZE 527" 01:28:27.479034 > "213 47[CR][LF]" 01:28:27.484688 < "RETR 527" 01:28:27.485444 > "150 Binary data connection for 527 () (47 bytes).[CR][LF]" 01:28:27.485927 =====> Closing passive DATA connection... 01:28:27.486076 Server disconnects passive DATA connection 01:28:27.487369 Server disconnected passive DATA connection 01:28:27.487547 DATA sockfilt for passive data channel quits (pid 264216) 01:28:27.492941 DATA sockfilt for passive data channel quit (pid 264216) 01:28:27.493132 =====> Closed passive DATA connection 01:28:27.493688 > "226 File transfer complete[CR][LF]" 01:28:28.648655 < "EPSV" 01:28:28.649001 ====> Passive DATA channel requested by client 01:28:28.649149 DATA sockfilt for passive data channel starting... 01:28:28.691338 DATA sockfilt for passive data channel started (pid 264219) 01:28:28.692557 DATA sockfilt for passive data channel listens on port 46011 01:28:28.692926 > "229 Entering Passive Mode (|||46011|)[CR][LF]" 01:28:28.693100 Client has been notified that DATA conn will be accepted on port 46011 01:28:28.701303 Client connects to port 46011 01:28:28.701581 ====> Client established passive DATA connection on port 46011 01:28:28.708524 < "SIZE 527" 01:28:28.709036 > "213 47[CR][LF]" 01:28:28.712330 < "RETR 527" 01:28:28.713060 > "150 Binary data connection for 527 () (47 bytes).[CR][LF]" 01:28:28.713542 =====> Closing passive DATA connection... 01:28:28.713692 Server disconnects passive DATA connection 01:28:28.714959 Server disconnected passive DATA connection 01:28:28.715129 DATA sockfilt for passive data channel quits (pid 264219) 01:28:28.718495 DATA sockfilt for passive data channel quit (pid 264219) 01:28:28.718662 =====> Closed passive DATA connection 01:28:28.718917 > "226 File transfer complete[CR][LF]" 01:28:29.791876 < "EPSV" 01:28:29.792198 ====> Passive DATA channel requested by client 01:28:29.792344 DATA sockfilt for passive data channel starting... 01:28:29.832315 DATA sockfilt for passive data channel started (pid 264228) 01:28:29.833624 DATA sockfilt for passive data channel listens on port 38067 01:28:29.834280 > "229 Entering Passive Mode (|||38067|)[CR][LF]" 01:28:29.834464 Client has been notified that DATA conn will be accepted on port 38067 01:28:29.843123 Client connects to port 38067 01:28:29.843466 ====> Client established passive DATA connection on port 38067 01:28:29.850259 < "SIZE 527" 01:28:29.850810 > "213 47[CR][LF]" 01:28:29.855296 < "RETR 527" 01:28:29.856984 > "150 Binary data connection for 527 () (47 bytes).[CR][LF]" 01:28:29.857486 =====> Closing passive DATA connection... 01:28:29.857646 Server disconnects passive DATA connection 01:28:29.859067 Server disconnected passive DATA connection 01:28:29.859231 DATA sockfilt for passive data channel quits (pid 264228) 01:28:29.867253 DATA sockfilt for passive data channel quit (pid 264228) 01:28:29.867510 =====> Closed passive DATA connection 01:28:29.867787 > "226 File transfer complete[CR][LF]" 01:28:30.054187 < "QUIT" 01:28:30.054607 > "221 bye bye baby[CR][LF]" 01:28:30.194171 MAIN sockfilt said DISC 01:28:30.194694 ====> Client disconnected 01:28:30.195014 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:27:36.648138 ====> Client connect 01:27:36.649279 Received DATA (on stdin) 01:27:36.649354 > 160 bytes data, server => client 01:27:36.649487 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:27:36.649592 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:27:36.649683 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:27:36.655821 < 16 bytes data, client => server 01:27:36.655929 'USER anonymous\r\n' 01:27:36.656921 Received DATA (on stdin) 01:27:36.656989 > 33 bytes data, server => client 01:27:36.657092 '331 We are happy you popped in!\r\n' 01:27:36.657332 < 22 bytes data, client => server 01:27:36.657407 'PASS ftp@example.com\r\n' 01:27:36.660786 Received DATA (on stdin) 01:27:36.660861 > 30 bytes data, server => client 01:27:36.660942 '230 Welcome you silly person\r\n' 01:27:36.661157 < 5 bytes data, client => server 01:27:36.661225 'PWD\r\n' 01:27:36.662055 Received DATA (on stdin) 01:27:36.662121 > 30 bytes data, server => client 01:27:36.662203 '257 "/" is current directory\r\n' 01:27:36.663485 < 6 bytes data, client => server 01:27:36.663557 'EPSV\r\n' 01:27:36.703893 Received DATA (on stdin) 01:27:36.704031 > 39 bytes data, server => client 01:27:36.704582 '229 Entering Passive Mode (|||33835|)\r\n' 01:27:36.707577 < 8 bytes data, client => server 01:27:36.707652 'TYPE I\r\n' 01:27:36.708604 Received DATA (on stdin) 01:27:36.708668 > 33 bytes data, server => client 01:27:36.708744 '200 I modify TYPE as you wanted\r\n' 01:27:36.709067 < 21 bytes data, client => server 01:27:36.709137 'SIZE verifiedserver\r\n' 01:27:36.710108 Received DATA (on stdin) 01:27:36.710174 > 8 bytes data, server => client 01:27:36.710236 '213 18\r\n' 01:27:36.710629 < 21 bytes data, client => server 01:27:36.710700 'RETR verifiedserver\r\n' 01:27:36.712254 Received DATA (on stdin) 01:27:36.712317 > 29 bytes data, server => client 01:27:36.712392 '150 Binary junk (18 bytes).\r\n' 01:27:36.722151 Received DATA (on stdin) 01:27:36.722234 > 28 bytes data, server => client 01:27:36.722310 '226 File transfer complete\r\n' 01:27:36.763517 < 6 bytes data, client => server 01:27:36.763682 'QUIT\r\n' 01:27:36.765108 Received DATA (on stdin) 01:27:36.765175 > 18 bytes data, server => client 01:27:36.765244 '221 bye bye baby\r\n' 01:27:36.765906 ====> Client disconnect 01:27:36.769880 Received ACKD (on stdin) 01:28:21.540325 ====> Client connect 01:28:21.542966 Received DATA (on stdin) 01:28:21.543096 > 160 bytes data, server => client 01:28:21.546911 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:28:21.547045 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:28:21.547154 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:28:22.764857 < 16 bytes data, client => server 01:28:22.765058 'USER anonymous\r\n' 01:28:22.766557 Received DATA (on stdin) 01:28:22.766638 > 33 bytes data, server => client 01:28:22.766749 '331 We are happy you popped in!\r\n' 01:28:22.864101 < 22 bytes data, client => server 01:28:22.864287 'PASS ftp@example.com\r\n' 01:28:22.865690 Received DATA (on stdin) 01:28:22.865782 > 30 bytes data, server => client 01:28:22.867183 '230 Welcome you silly person\r\n' 01:28:22.959568 < 5 bytes data, client => server 01:28:22.959746 'PWD\r\n' 01:28:22.961214 Received DATA (on stdin) 01:28:22.961289 > 30 bytes data, server => client 01:28:22.961391 '257 "/" is current directory\r\n' 01:28:23.174730 < 10 bytes data, client => server 01:28:23.174923 'CWD path\r\n' 01:28:23.178247 Received DATA (on stdin) 01:28:23.178355 > 29 bytes data, server => client 01:28:23.178441 '250 CWD command successful.\r\n' 01:28:23.243149 < 6 bytes data, client => server 01:28:23.243303 'EPSV\r\n' 01:28:23.304248 Received DATA (on stdin) 01:28:23.304405 > 39 bytes data, server => client 01:28:23.304545 '229 Entering Passive Mode (|||40373|)\r\n' 01:28:23.682600 < 8 bytes data, client => server 01:28:23.682801 'TYPE I\r\n' 01:28:23.684239 Received DATA (on stdin) 01:28:23.684319 > 33 bytes data, server => client 01:28:23.686755 '200 I modify TYPE as you wanted\r\n' 01:28:23.727585 < 10 bytes data, client => server 01:28:23.727793 'SIZE 527\r\n' 01:28:23.735596 Received DATA (on stdin) 01:28:23.735698 > 8 bytes data, server => client 01:28:23.735769 '213 47\r\n' 01:28:23.805528 < 10 bytes data, client => server 01:28:23.805699 'RETR 527\r\n' 01:28:23.811202 Received DATA (on stdin) 01:28:23.811305 > 51 bytes data, server => client 01:28:23.811416 '150 Binary data connection for 527 () (47 bytes).\r\n' 01:28:23.821028 Received DATA (on stdin) 01:28:23.821144 > 28 bytes data, server => client 01:28:23.821231 '226 File transfer complete\r\n' 01:28:26.976625 < 6 bytes data, client => server 01:28:26.976795 'EPSV\r\n' 01:28:27.028901 Received DATA (on stdin) 01:28:27.029049 > 39 bytes data, server => client 01:28:27.029146 '229 Entering Passive Mode (|||42311|)\r\n' 01:28:27.089725 < 10 bytes data, client => server 01:28:27.089916 'SIZE 527\r\n' 01:28:27.091048 Received DATA (on stdin) 01:28:27.091129 > 8 bytes data, server => client 01:28:27.091219 '213 47\r\n' 01:28:27.096488 < 10 bytes data, client => server 01:28:27.096564 'RETR 527\r\n' 01:28:27.097466 Received DATA (on stdin) 01:28:27.097535 > 51 bytes data, server => client 01:28:27.097649 '150 Binary data connection for 527 () (47 bytes).\r\n' 01:28:27.105703 Received DATA (on stdin) 01:28:27.105798 > 28 bytes data, server => client 01:28:27.105900 '226 File transfer complete\r\n' 01:28:28.259802 < 6 bytes data, client => server 01:28:28.259993 'EPSV\r\n' 01:28:28.305688 Received DATA (on stdin) 01:28:28.305834 > 39 bytes data, server => client 01:28:28.305935 '229 Entering Passive Mode (|||46011|)\r\n' 01:28:28.320362 < 10 bytes data, client => server 01:28:28.320478 'SIZE 527\r\n' 01:28:28.321338 Received DATA (on stdin) 01:28:28.321413 > 8 bytes data, server => client 01:28:28.321488 '213 47\r\n' 01:28:28.324306 < 10 bytes data, client => server 01:28:28.324386 'RETR 527\r\n' 01:28:28.325091 Received DATA (on stdin) 01:28:28.325162 > 51 bytes data, server => client 01:28:28.325274 '150 Binary data connection for 527 () (47 bytes).\r\n' 01:28:28.331465 Received DATA (on stdin) 01:28:28.331555 > 28 bytes data, server => client 01:28:28.331637 '226 File transfer complete\r\n' 01:28:29.403131 < 6 bytes data, client => server 01:28:29.403296 'EPSV\r\n' 01:28:29.446260 Received DATA (on stdin) 01:28:29.446457 > 39 bytes data, server => client 01:28:29.447060 '229 Entering Passive Mode (|||38067|)\r\n' 01:28:29.461813 < 10 bytes data, client => server 01:28:29.461936 'SIZE 527\r\n' 01:28:29.464754 Received DATA (on stdin) 01:28:29.464841 > 8 bytes data, server => client 01:28:29.464914 '213 47\r\n' 01:28:29.467072 < 10 bytes data, client => server 01:28:29.467149 'RETR 527\r\n' 01:28:29.468063 Received DATA (on stdin) 01:28:29.468132 > 51 bytes data, server => client 01:28:29.470195 '150 Binary data connection for 527 () (47 bytes).\r\n' 01:28:29.480079 Received DATA (on stdin) 01:28:29.480177 > 28 bytes data, server => client 01:28:29.480261 '226 File transfer complete\r\n' 01:28:29.665630 < 6 bytes data, client => server 01:28:29.665813 'QUIT\r\n' 01:28:29.666911 Received DATA (on stdin) 01:28:29.666989 > 18 bytes data, server => client 01:28:29.667063 '221 bye bye baby\r\n' 01:28:29.804295 ====> Client disconnect 01:28:29.807036 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:27:37.693698 Running IPv4 version 01:27:37.700819 Listening on port 33835 01:27:37.701234 Wrote pid 262926 to log/3/server/ftp_sockdata.pid 01:27:37.701937 Received PING (on stdin) 01:27:37.702939 Received PORT (on stdin) 01:27:37.706088 ====> Client connect 01:27:37.714211 Received DATA (on stdin) 01:27:37.714483 > 18 bytes data, server => client 01:27:37.714823 'WE ROOLZ: 202504\r\n' 01:27:37.715040 Received DISC (on stdin) 01:27:37.715146 ====> Client forcibly disconnected 01:27:37.715634 Received QUIT (on stdin) 01:27:37.715703 quits 01:27:37.716147 ============> sockfilt quiCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind530 ./libtest/libtests lib530 http://127.0.0.1:38277/file530 > log/6/stdout530 2> log/6/stderr530 ts 01:28:23.289433 Running IPv4 version 01:28:23.300643 Listening on port 40373 01:28:23.301183 Wrote pid 264144 to log/3/server/ftp_sockdata.pid 01:28:23.301956 Received PING (on stdin) 01:28:23.303096 Received PORT (on stdin) 01:28:23.523242 ====> Client connect 01:28:23.809782 Received DATA (on stdin) 01:28:23.810206 > 47 bytes data, server => client 01:28:23.810598 'file contents should appear once for each file\n' 01:28:23.810904 Received DISC (on stdin) 01:28:23.811024 ====> Client forcibly disconnected 01:28:23.813639 Received QUIT (on stdin) 01:28:23.813726 quits 01:28:23.814269 ============> sockfilt quits 01:28:27.011770 Running IPv4 version 01:28:27.019070 Listening on port 42311 01:28:27.019548 Wrote pid 264216 to log/3/server/ftp_sockdata.pid 01:28:27.020287 Received PING (on stdin) 01:28:27.023702 Received PORT (on stdin) 01:28:27.063959 ====> Client connect 01:28:27.098611 Received DATA (on stdin) 01:28:27.098968 > 47 bytes data, server => client 01:28:27.099341 'file contents should appear once for each file\n' 01:28:27.099598 Received DISC (on stdin) 01:28:27.100118 ====> Client forcibly disconnected 01:28:27.100287 Received QUIT (on stdin) 01:28:27.100359 quits 01:28:27.102631 ============> sockfilt quits 01:28:28.293963 Running IPv4 version 01:28:28.301812 Listening on port 46011 01:28:28.302318 Wrote pid 264219 to log/3/server/ftp_sockdata.pid 01:28:28.303146 Received PING (on stdin) 01:28:28.304195 Received PORT (on stdin) 01:28:28.313499 ====> Client connect 01:28:28.326217 Received DATA (on stdin) 01:28:28.326564 > 47 bytes data, server => client 01:28:28.326939 'file contents should appear once for each file\n' 01:28:28.327184 Received DISC (on stdin) 01:28:28.327730 ====> Client forcibly disconnected 01:28:28.327890 Received QUIT (on stdin) 01:28:28.327962 quits 01:28:28.328458 ============> sockfilt quits 01:28:29.435811 Running IPv4 version 01:28:29.443051 Listening on port 38067 01:28:29.443600 Wrote pid 264228 to log/3/server/ftp_sockdata.pid 01:28:29.444333 Received PING (on stdin) 01:28:29.445329 Received PORT (on stdin) 01:28:29.455240 ====> Client connect 01:28:29.470322 Received DATA (on stdin) 01:28:29.470666 > 47 bytes data, server => client 01:28:29.471039 'file contents should appear once for each file\n' 01:28:29.471293 Received DISC (on stdin) 01:28:29.476441 ====> Client forcibly disconnected 01:28:29.476637 Received QUIT (on stdin) 01:28:29.476719 quits 01:28:29.477228 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 527 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD path EPSV TYPE I SIZE 527 RETR 527 EPSV SIZE 527 RETR 527 EPSV SIZE 527 RETR 527 EPSV SIZE 527 RETR 527 QUIT === End of file server.input === Start of file stderr527 URL: ftp://127.0.0.1:37331/path/527 Start at URL 0 * Trying 127.0.0.1:37331... * Established connection to 127.0.0.1 (127.0.0.1 port 37331) from 127.0.0.1 port 57094 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' > CWD path < 250 CWD command successful. > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||40373|) * Connecting to 127.0.0.1 (127.0.0.1) port 40373 * Trying 127.0.0.1:40373... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 40373) from 127.0.0.1 port 47248 > TYPE I < 200 I modify TYPE as you wanted > SIZE 527 < 213 47 > RETR 527 < 150 Binary data connection for 527 () (47 bytes). * Maxdownload = -1 * Getting file with size: 47 * abort upload * Remembering we are in dir "path/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37331 left intact Advancing to URL 1 * Reusing existing ftp: connection with host 127.0.0.1 * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||42311|) * Connecting to 127.0.0.1 (127.0.0.1) port 42311 * Trying 127.0.0.1:42311... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 42311) from 127.0.0.1 port 60254 > SIZE 527 < 213 47 > RETR 527 < 150 Binary data connection for 527 () (47 bytes). * Maxdownload = -1 * Getting file with size: 47 * abort upload * Remembering we are in dir "path/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37331 left intact Advancing to URL 2 * Reusing existing ftp: connection with host 127.0.0.1 * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||46011|) * Connecting to 127.0.0.1 (127.0.0.1) port 46011 * Trying 127.0.0.1:46011... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 46011) from 127.0.0.1 port 39878 > SIZE 527 < 213 47 > RETR 527 < 150 Binary data connection for 527 () (47 bytes). * Maxdownload = -1 * Getting file with size: 47 * abort upload * Remembering we are in dir "path/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37331 left intact Advancing to URL 3 * Reusing existing ftp: connection with host 127.0.0.1 * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||38067|) * Connecting to 127.0.0.1 (127.0.0.1) port 38067 * Trying 127.0.0.1:38067... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 38067) from 127.0.0.1 port 55376 > SIZE 527 < 213 47 > RETR 527 < 150 Binary data connection for 527 () (47 bytes). * Maxdownload = -1 * Getting file with size: 47 * abort upload * Remembering we are in dir "path/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37331 left intact Test ended with result 0 === End of file stderr527 === Start of file stdout527 file contents should appear once for each file file contents should appear once for each file file contents should appear once for each file file contents should appear once for each file === End of file stdout527 === Start of file valgrind527 ==262943== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind527 test 0530...[multi_socket interface transfer with callbacks returning error] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind530 ./libtest/libtests lib530 http://127.0.0.1:38277/file530 > log/6/stdout530 2> log/6/stderr530 valgrind ERROR ==263387== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 530 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind530 ./libtest/libtests lib530 http://127.0.0.1:38277/file530 > log/6/stdout530 2> log/6/stderr530 === End of file commands.log === Start of file http_server.log 01:27:40.897933 ====> Client connect 01:27:40.898105 accept_connection 3 returned 4 01:27:40.898187 accept_connection 3 returned 0 01:27:40.905285 Read 93 bytes 01:27:40.905457 Process 93 bytes request 01:27:40.905555 Got request: GET /verifiedserver HTTP/1.1 01:27:40.905625 Are-we-friendly question received 01:27:40.905768 Wrote request (93 bytes) input to log/6/server.input 01:27:40.905879 Identifying ourselves as friends 01:27:40.906067 Response sent (57 bytes) and written to log/6/server.response 01:27:40.906131 special request received, no persistency 01:27:40.906188 ====> Client disconnect 0 01:28:26.025680 ====> Client connect 01:28:26.025831 accept_connection 3 returned 4 01:28:26.025914 accept_connection 3 returned 0 01:28:27.277355 Read 61 bytes 01:28:27.277511 Process 61 bytes request 01:28:27.277605 Got request: GET /file530 HTTP/1.1 01:28:27.277676 No test number in path 01:28:27.277784 [log/6/server.cmd] cmdfile says testnum 530 01:28:27.278039 - request found to be complete (530) 01:28:27.278357 Wrote request (61 bytes) input to log/6/server.input 01:28:27.278463 Send response test530 section 01:28:27.279813 Response sent (6260 bytes) and written to log/6/server.response 01:28:27.279886 => persistent connection request ended, awaits new request 01:28:28.835998 Connection closed by client 01:28:28.836173 ====> Client disconnect 0 01:28:29.961425 ====> Client connect 01:28:29.961559 accept_connection 3 returned 4 01:28:29.961632 accept_connection 3 returned 0 01:28:30.091359 Connection closed by client 01:28:30.091549 ====> Client disconnect 0 01:28:30.165614 ====> Client connect 01:28:30.165743 accept_connection 3 returned 4 01:28:30.165818 accept_connection 3 returned 0 01:28:30.229207 Connection closed by client 01:28:30.229376 ====> Client disconnect 0 01:28:30.273328 ====> Client connect 01:28:30.273451 accept_connection 3 returned 4 01:28:30.273526 accept_connection 3 returned 0 01:28:30.335926 Read 61 bytes 01:28:30.336115 Process 61 bytes request 01:28:30.336204 Got request: GET /file530 HTTP/1.1 01:28:30.336268 No test number in path 01:28:30.336367 [log/6/server.cmd] cmdfile says testnum 530 01:28:30.336605 - request found to be complete (530) 01:28:30.336817 Wrote request (61 bytes) input to log/6/server.input 01:28:30.336896 Send response test530 section 01:28:30.343673 Response sent (6260 bytes) and written to log/6/server.response 01:28:30.343745 => persistent connection request ended, awaits new request 01:28:30.452058 Connection closed by client 01:28:30.452242 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 39868 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 530 === End of file server.cmd === Start of file server.input GET /file530 HTTP/1.1 Host: 127.0.0.1:38277 Accept: */* GET /file530 HTTP/1.1 Host: 127.0.0.1:38277 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6007 Connection: close Content-Type: text/html Funny-head: yesyes -foo- foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6007 Connection: close Content-Type: text/html Funny-head: yesyes -foo- foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar === End of file server.response === Start of file stderr530 URL: http://127.0.0.1:38277/file530 [T530-0-0] [0/0] start [T530-0-0] [0/1] -> CURLMOPT_TIMERFUNCTION * Trying 127.0.0.1:38277... [T530-0-0] [1/1] -> CURLMOPT_SOCKETFUNCTION [T530-0-0] [1/1] add socket fd 4 for write [T530-0-0] [1/2] -> CURLMOPT_TIMERFUNCTION * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 56148 * using HTTP/1.x > GET /file530 HTTP/1.1 Host: 127.0.0.1:38277 Accept: */* < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT < ETag: "21025-dc7-39462498" < Accept-Ranges: bytes < Content-Length: 6007 < Connection: close < Content-Type: text/html < Funny-head: yesyes < * we are done reading and this is set to close, stop send * abort upload * shutting down connection #0 [T530-0-0] [2/2] -> CURLMOPT_SOCKETFUNCTION [T530-0-0] [2/2] remove socket fd 4 [T530-0-0] [2/2] cleanup [T530-0-0] [2/2] done [T530-0-1] [0/0] start [T530-0-1] [0/1] -> CURLMOPT_TIMERFUNCTION [T530-0-1] [0/1] <- CURLMOPT_TIMERFUNCTION returns error /usr/src/debug/curl/curl/tests/libtest/lib530.c:323 curl_multi_add_handle() failed, with code 11 (Operation was aborted by an application callback) [T530-0-1] [0/1] cleanup [T530-0-1] [0/1] done [T530-0-2] [0/0] start [T530-0-2] [0/1] -> CURLMOPT_TIMERFUNCTION * Trying 127.0.0.1:38277... [T530-0-2] [1/1] -> CURLMOPT_SOCKETFUNCTION [T530-0-2] [1/1] add socket fd 4 for write [T530-0-2] [1/2] -> CURLMOPT_TIMERFUNCTION [T530-0-2] [1/2] <- CURLMOPT_TIMERFUNCTION returns error [T530-0-2] [1/2] Curl error on timeout (11) Operation was aborted by an application callback [T530-0-2] [1/2] cleanup * closing connection #0 [T530-0-2] [2/2] -> CURLMOPT_SOCKETFUNCTION [T530-0-2] [2/2] remove socket fd 4 [T530-0-2] [2/2] done [T530-1-0] [0/0] start [T530-1-0] [0/1] -> CURLMOPT_TIMERFUNCTION * Trying 127.0.0.1:38277... [T530-1-0] [1/1] -> CURLMOPT_SOCKETFUNCTION [T530-1-0] [1/1] <- CURLMOPT_SOCKETFUNCTION returns error [T530-1-0] [1/1] Curl error on timeout (11) Operation was aborted by an application callback [T530-1-0] [1/1] cleanup * closing connection #0 [T530-1-0] [2/1] -> CURLMOPT_SOCKETFUNCTION [T530-1-0] [2/1] remove socket fd 4 [T530-1-0] [2/1] done [T530-2-0] [0/0] start [T530-2-0] [0/1] -> CURLMOPT_TIMERFUNCTION * Trying 127.0.0.1:38277... [T530-2-0] [1/1] -> CURLMOPT_SOCKETFUNCTION [T530-2-0] [1/1] add socket fd 4 for write [T530-2-0] [1/2] -> CURLMOPT_TIMERFUNCTION * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 56166 * using HTTP/1.x > GET /file530 HTTP/1.1 Host: 127.0.0.1:38277 Accept: */* < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT < ETag: "21025-dc7-39462498" < Accept-Ranges: bytes < Content-Length: 6007 < Connection: close < Content-Type: text/html < Funny-head: yesyes < * we are done reading and this is set to close, stop send * abort upload * shutting down connection #0 [T530-2-0] [2/2] -> CURLMOPT_SOCKETFUNCTION [T530-2-0] [2/2] <- CURLMOPT_SOCKETFUNCTION returns error [T530-2-0] [2/2] cleanup [T530-2-0] [2/2] done [T530-2-0] [2/2] FAILED: 0 Test ended with result 0 === End of file stderr530 === Start of file stdout530 -foo- foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar -foo- foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind531 ./libtest/libtests lib525 ftp://127.0.0.1:39881/path/531 log/2/upload531 > log/2/stdout531 2> log/2/stderr531 arfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar === End of file stdout530 === Start of file valgrind530 ==263387== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind530 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 532 in state 4 Runner 2 (id 185908) running test 531 in state 4 Runner 3 (id 185910) running test 537 in state 4 Runner 4 (id 185912) running test 534 in state 4 Runner 5 (id 185914) running test 533 in state 4 Runner 6 (id 185916) running test 538 in state 4 Runner 7 (id 185918) running test 535 in state 4 Runner 8 (id 185920) running test 536 in state 4 test 0531...[FTP PORT upload using multi interface and get 425 response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind531 ./libtest/libtests lib525 ftp://127.0.0.1:39881/path/531 log/2/upload531 > log/2/stdout531 2> log/2/stderr531 valgrind ERROR ==263570== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 531 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind531 ./libtest/libtests lib525 ftp://127.0.0.1:39881/path/531 log/2/upload531 > log/2/stdout531 2> log/2/stderr531 === End of file commands.log === Start of file ftp_server.log 01:27:56.799726 ====> Client connect 01:27:56.804252 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:27:56.808966 < "USER anonymous" 01:27:56.809239 > "331 We are happy you popped in![CR][LF]" 01:27:56.810334 < "PASS ftp@example.com" 01:27:56.810574 > "230 Welcome you silly person[CR][LF]" 01:27:56.811648 < "PWD" 01:27:56.811916 > "257 "/" is current directory[CR][LF]" 01:27:56.814151 < "EPSV" 01:27:56.814351 ====> Passive DATA channel requested by client 01:27:56.814492 DATA sockfilt for passive data channel starting... 01:27:56.854860 DATA sockfilt for passive data channel started (pid 263561) 01:27:56.856169 DATA sockfilt for passive data channel listens on port 44063 01:27:56.859255 > "229 Entering Passive Mode (|||44063|)[CR][LF]" 01:27:56.859430 Client has been notified that DATA conn will be accepted on port 44063 01:27:56.859859 Client connects to port 44063 01:27:56.860051 ====> Client established passive DATA connection on port 44063 01:27:56.860629 < "TYPE I" 01:27:56.860895 > "200 I modify TYPE as you wanted[CR][LF]" 01:27:56.862126 < "SIZE verifiedserver" 01:27:56.863195 > "213 18[CR][LF]" 01:27:56.863671 < "RETR verifiedserver" 01:27:56.866025 > "150 Binary junk (18 bytes).[CR][LF]" 01:27:56.866527 =====> Closing passive DATA connection... 01:27:56.866683 Server disconnects passive DATA connection 01:27:56.868013 Server disconnected passive DATA connection 01:27:56.868175 DATA sockfilt for passive data channel quits (pid 263561) 01:27:56.874101 DATA sockfilt for passive data channel quit (pid 263561) 01:27:56.874266 =====> Closed passive DATA connection 01:27:56.874499 > "226 File transfer complete[CR][LF]" 01:27:56.918755 < "QUIT" 01:27:56.919191 > "221 bye bye baby[CR][LF]" 01:27:56.920496 MAIN sockfilt said DISC 01:27:56.920694 ====> Client disconnected 01:27:56.920992 Awaiting input 01:28:42.045563 ====> Client connect 01:28:42.046288 FTPD: Getting commands from log/2/server.cmd 01:28:42.047062 FTPD: set custom reply for STOR command 01:28:42.047325 FTPD: run test case number: 531 01:28:42.057537 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:28:43.211694 < "USER anonymous" 01:28:43.212402 > "331 We are happy you popped in![CR][LF]" 01:28:43.306252 < "PASS ftp@example.com" 01:28:43.306653 > "230 Welcome you silly person[CR][LF]" 01:28:43.391593 < "PWD" 01:28:43.392033 > "257 "/" is current directory[CR][LF]" 01:28:43.592755 < "CWD path" 01:28:43.593175 > "250 CWD command successful.[CR][LF]" 01:28:43.758310 < "EPRT |1|127.0.0.1|45597|" 01:28:43.758678 ====> Active DATA channel requested by client 01:28:43.758984 > "200 Thanks for dropping by. We contact you later[CR][LF]" 01:28:43.759178 DATA sockfilt for active data channel starting... 01:28:43.830290 DATA sockfilt for active data channel started (pid 264892) 01:28:43.830820 ====> Active DATA channel connected to client port 45597 01:28:44.112998 < "TYPE I" 01:28:44.113448 > "200 I modify TYPE as you wanted[CR][LF]" 01:28:44.154688 < "STOR 531" 01:28:44.155041 > "425 Permission Denied. File Exists.[CR][LF]" 01:28:45.300640 < "QUIT" 01:28:45.301073 > "221 bye bye baby[CR][LF]" 01:28:45.517515 MAIN sockfilt said DISC 01:28:45.518053 ====> Client disconnected 01:28:45.519531 DATA sockfilt for active data channel killed now 01:28:45.519739 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:27:57.411740 ====> Client connect 01:27:57.413015 Received DATA (on stdin) 01:27:57.413096 > 160 bytes data, server => client 01:27:57.416684 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:27:57.416818 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:27:57.416922 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:27:57.421858 < 16 bytes data, client => server 01:27:57.421942 'USER anonymous\r\n' 01:27:57.422009 Received DATA (on stdin) 01:27:57.422066 > 33 bytes data, server => client 01:27:57.422143 '331 We are happy you popped in!\r\n' 01:27:57.423189 < 22 bytes data, client => server 01:27:57.423271 'PASS ftp@example.com\r\n' 01:27:57.423336 Received DATA (on stdin) 01:27:57.423394 > 30 bytes data, server => client 01:27:57.423471 '230 Welcome you silly person\r\n' 01:27:57.424522 < 5 bytes data, client => server 01:27:57.424587 'PWD\r\n' 01:27:57.424650 Received DATA (on stdin) 01:27:57.424709 > 30 bytes data, server => client 01:27:57.424788 '257 "/" is current directory\r\n' 01:27:57.426131 < 6 bytes data, client => server 01:27:57.426196 'EPSV\r\n' 01:27:57.468857 Received DATA (on stdin) 01:27:57.468993 > 39 bytes data, server => client 01:27:57.469104 '229 Entering Passive Mode (|||44063|)\r\n' 01:27:57.471456 < 8 bytes data, client => server 01:27:57.471529 'TYPE I\r\n' 01:27:57.473518 Received DATA (on stdin) 01:27:57.473588 > 33 bytes data, server => client 01:27:57.473669 '200 I modify TYPE as you wanted\r\n' 01:27:57.474009 < 21 bytes data, client => server 01:27:57.474081 'SIZE verifiedserver\r\n' 01:27:57.474815 Received DATA (on stdin) 01:27:57.474879 > 8 bytes data, server => client 01:27:57.474960 '213 18\r\n' 01:27:57.475376 < 21 bytes data, client => server 01:27:57.475449 'RETR verifiedserver\r\n' 01:27:57.476347 Received DATA (on stdin) 01:27:57.476411 > 29 bytes data, server => client 01:27:57.476518 '150 Binary junk (18 bytes).\r\n' 01:27:57.487109 Received DATA (on stdin) 01:27:57.487185 > 28 bytes data, server => client 01:27:57.487259 '226 File transfer complete\r\n' 01:27:57.530496 < 6 bytes data, client => server 01:27:57.530653 'QUIT\r\n' 01:27:57.531848 Received DATA (on stdin) 01:27:57.531924 > 18 bytes data, server => client 01:27:57.532006 '221 bye bye baby\r\n' 01:27:57.532822 ====> Client disconnect 01:27:57.533595 Received ACKD (on stdin) 01:28:42.657570 ====> Client connect 01:28:42.666429 Received DATA (on stdin) 01:28:42.666524 > 160 bytes data, server => client 01:28:42.670147 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:28:42.670255 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:28:42.670342 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:28:43.822729 < 16 bytes data, client => server 01:28:43.822917 'USER anonymous\r\n' 01:28:43.824374 Received DATA (on stdin) 01:28:43.824450 > 33 bytes data, server => client 01:28:43.824557 '331 We are happy you popped in!\r\n' 01:28:43.917678 < 22 bytes data, client => server 01:28:43.917865 'PASS ftp@example.com\r\n' 01:28:43.918922 Received DATA (on stdin) 01:28:43.918992 > 30 bytes data, server => client 01:28:43.919078 '230 Welcome you silly person\r\n' 01:28:44.001444 < 5 bytes data, client => server 01:28:44.001598 'PWD\r\n' 01:28:44.004292 Received DATA (on stdin) 01:28:44.004370 > 30 bytes data, server => client 01:28:44.004458 '257 "/" is current directory\r\n' 01:28:44.204110 < 10 bytes data, client => server 01:28:44.204296 'CWD path\r\n' 01:28:44.205436 Received DATA (on stdin) 01:28:44.205512 > 29 bytes data, server => client 01:28:44.205595 '250 CWD command successful.\r\n' 01:28:44.367646 < 26 bytes data, client => server 01:28:44.367842 'EPRT |1|127.0.0.1|45597|\r\n' 01:28:44.373054 Received DATA (on stdin) 01:28:44.373144 > 50 bytes data, server => client 01:28:44.373238 '200 Thanks for dropping by. We contact you later\r\n' 01:28:44.724323 < 8 bytes data, client => server 01:28:44.724513 'TYPE I\r\n' 01:28:44.725697 Received DATA (on stdin) 01:28:44.725774 > 33 bytes data, server => client 01:28:44.725866 '200 I modify TYPE as you wanted\r\n' 01:28:44.764417 < 10 bytes data, client => server 01:28:44.764541 'STOR 531\r\n' 01:28:44.767308 Received DATA (on stdin) 01:28:44.767380 > 37 bytes data, server => client 01:28:44.767465 '425 Permission Denied. File Exists.\r\n' 01:28:45.912027 < 6 bytes data, client => server 01:28:45.912219 'QUIT\r\n' 01:28:45.913326 Received DATA (on stdin) 01:28:45.913396 > 18 bytes data, server => client 01:28:45.913472 '221 bye bye baby\r\n' 01:28:46.126396 ====> Client disconnect 01:28:46.130361 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:27:56.458280 Running IPv4 version 01:27:56.465748 Listening on port 44063 01:27:56.466184 Wrote pid 263561 to log/2/server/ftp_sockdata.pid 01:27:56.466950 Received PING (on stdin) 01:27:56.467949 Received PORT (on stdin) 01:27:56.472144 ====> Client connect 01:27:56.479285 Received DATA (on stdin) 01:27:56.479558 > 18 bytes data, server => client 01:27:56.479916 'WE ROOLZCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind532 ./libtest/libtests lib526 ftp://127.0.0.1:37481/path/532 > log/1/stdout532 2> log/1/stderr532 : 202189\r\n' 01:27:56.480153 Received DISC (on stdin) 01:27:56.480263 ====> Client forcibly disconnected 01:27:56.480794 Received QUIT (on stdin) 01:27:56.480862 quits 01:27:56.481282 ============> sockfilt quits 01:28:43.431177 ====> Client connect 01:28:43.441049 Running IPv4 version 01:28:43.441180 Connected to port 45597 01:28:43.441592 Wrote pid 264892 to log/2/server/ftp_sockdata.pid 01:28:43.442267 Received PING (on stdin) 01:28:43.979822 ====> Client disconnect === End of file ftp_sockdata.log === Start of file server.cmd REPLY STOR 425 Permission Denied. File Exists. Testnum 531 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD path EPRT |1|127.0.0.1|45597| TYPE I STOR 531 QUIT === End of file server.input === Start of file stderr531 URL: ftp://127.0.0.1:39881/path/531 * Trying 127.0.0.1:39881... * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 40358 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' > CWD path < 250 CWD command successful. > EPRT |1|127.0.0.1|45597| < 200 Thanks for dropping by. We contact you later * Connect data stream actively * Ready to accept data connection from server * Connection accepted from server * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 44830) from 127.0.0.1 port 45597 > TYPE I < 200 I modify TYPE as you wanted > STOR 531 < 425 Permission Denied. File Exists. * Failed FTP upload: 425 * Remembering we are in dir "path/" * Uploaded unaligned file size (0 out of 32 bytes) * Connection #0 to host 127.0.0.1:39881 left intact Test ended with result 0 === End of file stderr531 === Start of file upload531 Moooooooooooo don't upload this === End of file upload531 === Start of file valgrind531 ==263570== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind531 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 532 in state 4 Runner 2 (id 185908) running test 539 in state 4 Runner 3 (id 185910) running test 537 in state 4 Runner 4 (id 185912) running test 534 in state 4 Runner 5 (id 185914) running test 533 in state 4 Runner 6 (id 185916) running test 538 in state 4 Runner 7 (id 185918) running test 535 in state 4 Runner 8 (id 185920) running test 536 in state 4 test 0532...[FTP RETR same file using reset handles between each transfer] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind532 ./libtest/libtests lib526 ftp://127.0.0.1:37481/path/532 > log/1/stdout532 2> log/1/stderr532 valgrind ERROR ==263758== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 532 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind532 ./libtest/libtests lib526 ftp://127.0.0.1:37481/path/532 > log/1/stdout532 2> log/1/stderr532 === End of file commands.log === Start of file ftp_server.log 01:28:06.751918 ====> Client connect 01:28:06.752838 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:28:06.760693 < "USER anonymous" 01:28:06.761031 > "331 We are happy you popped in![CR][LF]" 01:28:06.761784 < "PASS ftp@example.com" 01:28:06.762025 > "230 Welcome you silly person[CR][LF]" 01:28:06.764266 < "PWD" 01:28:06.764560 > "257 "/" is current directory[CR][LF]" 01:28:06.766835 < "EPSV" 01:28:06.767054 ====> Passive DATA channel requested by client 01:28:06.767201 DATA sockfilt for passive data channel starting... 01:28:06.809666 DATA sockfilt for passive data channel started (pid 263752) 01:28:06.810972 DATA sockfilt for passive data channel listens on port 44165 01:28:06.811316 > "229 Entering Passive Mode (|||44165|)[CR][LF]" 01:28:06.811481 Client has been notified that DATA conn will be accepted on port 44165 01:28:06.814786 Client connects to port 44165 01:28:06.815019 ====> Client established passive DATA connection on port 44165 01:28:06.815635 < "TYPE I" 01:28:06.816199 > "200 I modify TYPE as you wanted[CR][LF]" 01:28:06.817223 < "SIZE verifiedserver" 01:28:06.817537 > "213 18[CR][LF]" 01:28:06.818982 < "RETR verifiedserver" 01:28:06.821424 > "150 Binary junk (18 bytes).[CR][LF]" 01:28:06.821942 =====> Closing passive DATA connection... 01:28:06.822097 Server disconnects passive DATA connection 01:28:06.827769 Server disconnected passive DATA connection 01:28:06.827963 DATA sockfilt for passive data channel quits (pid 263752) 01:28:06.831247 DATA sockfilt for passive data channel quit (pid 263752) 01:28:06.831427 =====> Closed passive DATA connection 01:28:06.832018 > "226 File transfer complete[CR][LF]" 01:28:06.869386 < "QUIT" 01:28:06.870583 > "221 bye bye baby[CR][LF]" 01:28:06.870812 MAIN sockfilt said DISC 01:28:06.870993 ====> Client disconnected 01:28:06.871270 Awaiting input 01:28:51.029571 ====> Client connect 01:28:51.030407 FTPD: Getting commands from log/1/server.cmd 01:28:51.030779 FTPD: run test case number: 532 01:28:51.034202 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:28:52.166171 < "USER anonymous" 01:28:52.166573 > "331 We are happy you popped in![CR][LF]" 01:28:52.260999 < "PASS ftp@example.com" 01:28:52.261699 > "230 Welcome you silly person[CR][LF]" 01:28:52.340298 < "PWD" 01:28:52.341018 > "257 "/" is current directory[CR][LF]" 01:28:52.544766 < "CWD path" 01:28:52.545441 > "250 CWD command successful.[CR][LF]" 01:28:52.603172 < "EPSV" 01:28:52.603464 ====> Passive DATA channel requested by client 01:28:52.603610 DATA sockfilt for passive data channel starting... 01:28:52.675557 DATA sockfilt for passive data channel started (pid 265060) 01:28:52.676723 DATA sockfilt for passive data channel listens on port 40267 01:28:52.677321 > "229 Entering Passive Mode (|||40267|)[CR][LF]" 01:28:52.677500 Client has been notified that DATA conn will be accepted on port 40267 01:28:52.844505 Client connects to port 40267 01:28:52.845041 ====> Client established passive DATA connection on port 40267 01:28:52.951915 < "TYPE I" 01:28:52.952323 > "200 I modify TYPE as you wanted[CR][LF]" 01:28:52.993867 < "SIZE 532" 01:28:52.997568 > "213 47[CR][LF]" 01:28:53.064501 < "RETR 532" 01:28:53.065897 > "150 Binary data connection for 532 () (47 bytes).[CR][LF]" 01:28:53.067401 =====> Closing passive DATA connection... 01:28:53.067564 Server disconnects passive DATA connection 01:28:53.071051 Server disconnected passive DATA connection 01:28:53.071231 DATA sockfilt for passive data channel quits (pid 265060) 01:28:53.074278 DATA sockfilt for passive data channel quit (pid 265060) 01:28:53.074441 =====> Closed passive DATA connection 01:28:53.074982 > "226 File transfer complete[CR][LF]" 01:28:56.086753 < "EPSV" 01:28:56.087076 ====> Passive DATA channel requested by client 01:28:56.087229 DATA sockfilt for passive data channel starting... 01:28:56.138924 DATA sockfilt for passive data channel started (pid 265066) 01:28:56.140189 DATA sockfilt for passive data channel listens on port 35811 01:28:56.140564 > "229 Entering Passive Mode (|||35811|)[CR][LF]" 01:28:56.140748 Client has been notified that DATA conn will be accepted on port 35811 01:28:56.170803 Client connects to port 35811 01:28:56.171301 ====> Client established passive DATA connection on port 35811 01:28:56.196808 < "SIZE 532" 01:28:56.197744 > "213 47[CR][LF]" 01:28:56.204147 < "RETR 532" 01:28:56.204721 > "150 Binary data connection for 532 () (47 bytes).[CR][LF]" 01:28:56.205240 =====> Closing passive DATA connection... 01:28:56.205401 Server disconnects passive DATA connection 01:28:56.209086 Server disconnected passive DATA connection 01:28:56.209282 DATA sockfilt for passive data channel quits (pid 265066) 01:28:56.220821 DATA sockfilt for passive data channel quit (pid 265066) 01:28:56.221169 =====> Closed passive DATA connection 01:28:56.221484 > "226 File transfer complete[CR][LF]" 01:28:57.393807 < "EPSV" 01:28:57.394189 ====> Passive DATA channel requested by client 01:28:57.394348 DATA sockfilt for passive data channel starting... 01:28:57.452714 DATA sockfilt for passive data channel started (pid 265075) 01:28:57.454140 DATA sockfilt for passive data channel listens on port 41179 01:28:57.454504 > "229 Entering Passive Mode (|||41179|)[CR][LF]" 01:28:57.454683 Client has been notified that DATA conn will be accepted on port 41179 01:28:57.464421 Client connects to port 41179 01:28:57.464817 ====> Client established passive DATA connection on port 41179 01:28:57.472474 < "SIZE 532" 01:28:57.476696 > "213 47[CR][LF]" 01:28:57.477646 < "RETR 532" 01:28:57.478125 > "150 Binary data connection for 532 () (47 bytes).[CR][LF]" 01:28:57.478654 =====> Closing passive DATA connection... 01:28:57.478824 Server disconnects passive DATA connection 01:28:57.480668 Server disconnected passive DATA connection 01:28:57.480891 DATA sockfilt for passive data channel quits (pid 265075) 01:28:57.487877 DATA sockfilt for passive data channel quit (pid 265075) 01:28:57.488118 =====> Closed passive DATA connection 01:28:57.494181 > "226 File transfer complete[CR][LF]" 01:28:58.563113 < "EPSV" 01:28:58.563423 ====> Passive DATA channel requested by client 01:28:58.563564 DATA sockfilt for passive data channel starting... 01:28:58.609590 DATA sockfilt for passive data channel started (pid 265087) 01:28:58.611048 DATA sockfilt for passive data channel listens on port 39535 01:28:58.611410 > "229 Entering Passive Mode (|||39535|)[CR][LF]" 01:28:58.611585 Client has been notified that DATA conn will be accepted on port 39535 01:28:58.626296 Client connects to port 39535 01:28:58.626742 ====> Client established passive DATA connection on port 39535 01:28:58.631680 < "SIZE 532" 01:28:58.634072 > "213 47[CR][LF]" 01:28:58.637394 < "RETR 532" 01:28:58.637916 > "150 Binary data connection for 532 () (47 bytes).[CR][LF]" 01:28:58.638431 =====> Closing passive DATA connection... 01:28:58.638592 Server disconnects passive DATA connection 01:28:58.641766 Server disconnected passive DATA connection 01:28:58.642008 DATA sockfilt for passive data channel quits (pid 265087) 01:28:58.645359 DATA sockfilt for passive data channel quit (pid 265087) 01:28:58.645597 =====> Closed passive DATA connection 01:28:58.646230 > "226 File transfer complete[CR][LF]" 01:28:59.038111 < "QUIT" 01:28:59.038561 > "221 bye bye baby[CR][LF]" 01:28:59.164299 MAIN sockfilt said DISC 01:28:59.164987 ====> Client disconnected 01:28:59.165301 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:28:07.363975 ====> Client connect 01:28:07.365464 Received DATA (on stdin) 01:28:07.365548 > 160 bytes data, server => client 01:28:07.365647 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:28:07.365741 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:28:07.365822 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:28:07.372244 < 16 bytes data, client => server 01:28:07.372335 'USER anonymous\r\n' 01:28:07.373394 Received DATA (on stdin) 01:28:07.373483 > 33 bytes data, server => client 01:28:07.373569 '331 We are happy you popped in!\r\n' 01:28:07.373852 < 22 bytes data, client => server 01:28:07.373931 'PASS ftp@example.com\r\n' 01:28:07.374398 Received DATA (on stdin) 01:28:07.374464 > 30 bytes data, server => client 01:28:07.374546 '230 Welcome you silly person\r\n' 01:28:07.374776 < 5 bytes data, client => server 01:28:07.374850 'PWD\r\n' 01:28:07.377156 Received DATA (on stdin) 01:28:07.377230 > 30 bytes data, server => client 01:28:07.377315 '257 "/" is current directory\r\n' 01:28:07.378751 < 6 bytes data, client => server 01:28:07.378823 'EPSV\r\n' 01:28:07.424116 Received DATA (on stdin) 01:28:07.424257 > 39 bytes data, server => client 01:28:07.424350 '229 Entering Passive Mode (|||44165|)\r\n' 01:28:07.426683 < 8 bytes data, client => server 01:28:07.426765 'TYPE I\r\n' 01:28:07.428286 Received DATA (on stdin) 01:28:07.428356 > 33 bytes data, server => client 01:28:07.428459 '200 I modify TYPE as you wanted\r\n' 01:28:07.429148 < 21 bytes data, client => server 01:28:07.429229 'SIZE verifiedserver\r\n' 01:28:07.430241 Received DATA (on stdin) 01:28:07.430312 > 8 bytes data, server => client 01:28:07.430378 '213 18\r\n' 01:28:07.430808 < 21 bytes data, client => server 01:28:07.430882 'RETR verifiedserver\r\n' 01:28:07.431645 Received DATA (on stdin) 01:28:07.431712 > 29 bytes data, server => client 01:28:07.431810 '150 Binary junk (18 bytes).\r\n' 01:28:07.444060 Received DATA (on stdin) 01:28:07.444168 > 28 bytes data, server => client 01:28:07.444284 '226 File transfer complete\r\n' 01:28:07.480817 < 6 bytes data, client => server 01:28:07.480962 'QUIT\r\n' 01:28:07.482120 Received DATA (on stdin) 01:28:07.482189 > 18 bytes data, server => client 01:28:07.482281 '221 bye bye baby\r\n' 01:28:07.482853 ====> Client disconnect 01:28:07.486471 Received ACKD (on stdin) 01:28:51.641513 ====> Client connect 01:28:51.643971 Received DATA (on stdin) 01:28:51.644049 > 160 bytes data, server => client 01:28:51.646791 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:28:51.646914 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:28:51.647018 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:28:52.777228 < 16 bytes data, client => server 01:28:52.777419 'USER anonymous\r\n' 01:28:52.783021 Received DATA (on stdin) 01:28:52.783093 > 33 bytes data, server => client 01:28:52.783175 '331 We are happy you popped in!\r\n' 01:28:52.872087 < 22 bytes data, client => server 01:28:52.872276 'PASS ftp@example.com\r\n' 01:28:52.873658 Received DATA (on stdin) 01:28:52.873731 > 30 bytes data, server => client 01:28:52.873831 '230 Welcome you silly person\r\n' 01:28:52.951556 < 5 bytes data, client => server 01:28:52.951712 'PWD\r\n' 01:28:52.952964 Received DATA (on stdin) 01:28:52.953047 > 30 bytes data, server => client 01:28:52.953151 '257 "/" is current directory\r\n' 01:28:53.155920 < 10 bytes data, client => server 01:28:53.156112 'CWD path\r\n' 01:28:53.157398 Received DATA (on stdin) 01:28:53.157473 > 29 bytes data, server => client 01:28:53.157574 '250 CWD command successful.\r\n' 01:28:53.214518 < 6 bytes data, client => server 01:28:53.214672 'EPSV\r\n' 01:28:53.289303 Received DATA (on stdin) 01:28:53.289444 > 39 bytes data, server => client 01:28:53.290024 '229 Entering Passive Mode (|||40267|)\r\n' 01:28:53.563111 < 8 bytes data, client => server 01:28:53.563270 'TYPE I\r\n' 01:28:53.569693 Received DATA (on stdin) 01:28:53.569787 > 33 bytes data, server => client 01:28:53.569871 '200 I modify TYPE as you wanted\r\n' 01:28:53.605326 < 10 bytes data, client => server 01:28:53.605455 'SIZE 532\r\n' 01:28:53.608144 Received DATA (on stdin) 01:28:53.608218 > 8 bytes data, server => client 01:28:53.609709 '213 47\r\n' 01:28:53.675734 < 10 bytes data, client => server 01:28:53.675890 'RETR 532\r\n' 01:28:53.677848 Received DATA (on stdin) 01:28:53.677927 > 51 bytes data, server => client 01:28:53.678039 '150 Binary data connection for 532 () (47 bytes).\r\n' 01:28:53.686942 Received DATA (on stdin) 01:28:53.687030 > 28 bytes data, server => client 01:28:53.687127 '226 File transfer complete\r\n' 01:28:56.697911 < 6 bytes data, client => server 01:28:56.698080 'EPSV\r\n' 01:28:56.752776 Received DATA (on stdin) 01:28:56.752931 > 39 bytes data, server => client 01:28:56.753037 '229 Entering Passive Mode (|||35811|)\r\n' 01:28:56.808234 < 10 bytes data, client => server 01:28:56.808420 'SIZE 532\r\n' 01:28:56.809674 Received DATA (on stdin) 01:28:56.809762 > 8 bytes data, server => client 01:28:56.809858 '213 47\r\n' 01:28:56.815658 < 10 bytes data, client => server 01:28:56.815771 'RETR 532\r\n' 01:28:56.819684 Received DATA (on stdin) 01:28:56.819774 > 51 bytes data, server => client 01:28:56.819880 '150 Binary data connection for 532 () (47 bytes).\r\n' 01:28:56.834004 Received DATA (on stdin) 01:28:56.834135 > 28 bytes data, server => client 01:28:56.834235 '226 File transfer complete\r\n' 01:28:57.996403 < 6 bytes data, client => server 01:28:58.006859 'EPSV\r\n' 01:28:58.067235 Received DATA (on stdin) 01:28:58.067382 > 39 bytes data, server => client 01:28:58.067478 '229 Entering Passive Mode (|||41179|)\r\n' 01:28:58.084122 < 10 bytes data, client => server 01:28:58.084257 'SIZE 532\r\n' 01:28:58.085342 Received DATA (on stdin) 01:28:58.085428 > 8 bytes data, server => client 01:28:58.085539 '213 47\r\n' 01:28:58.089271 < 10 bytes data, client => server 01:28:58.089370 'RETR 532\r\n' 01:28:58.091292 Received DATA (on stdin) 01:28:58.091375 > 51 bytes data, server => client 01:28:58.091489 '150 Binary data connection for 532 () (47 bytes).\r\n' 01:28:58.100647 Received DATA (on stdin) 01:28:58.100770 > 28 bytes data, server => client 01:28:58.106786 '226 File transfer complete\r\n' 01:28:59.174323 < 6 bytes data, client => server 01:28:59.174472 'EPSV\r\n' 01:28:59.223616 Received DATA (on stdin) 01:28:59.223779 > 39 bytes data, server => client 01:28:59.223882 '229 Entering Passive Mode (|||39535|)\r\n' 01:28:59.243020 < 10 bytes data, client => server 01:28:59.243167 'SIZE 532\r\n' 01:28:59.244519 Received DATA (on stdin) 01:28:59.244601 > 8 bytes data, server => client 01:28:59.246606 '213 47\r\n' 01:28:59.248992 < 10 bytes data, client => server 01:28:59.249082 'RETR 532\r\n' 01:28:59.252328 Received DATA (on stdin) 01:28:59.252424 > 51 bytes data, server => client 01:28:59.252524 '150 Binary data connection for 532 () (47 bytes).\r\n' 01:28:59.258115 Received DATA (on stdin) 01:28:59.258223 > 28 bytes data, server => client 01:28:59.258332 '226 File transfer complete\r\n' 01:28:59.649258 < 6 bytes data, client => server 01:28:59.649433 'QUIT\r\n' 01:28:59.656347 Received DATA (on stdin) 01:28:59.656457 > 18 bytes data, server => client 01:28:59.656541 '221 bye bye baby\r\n' 01:28:59.776230 ====> Client disconnect 01:28:59.777097 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:28:06.412878 Running IPv4 version 01:28:06.420505 Listening on port 44165 01:28:06.420947 Wrote pid 263752 to log/1/server/ftp_sockdata.pid 01:28:06.421734 Received PING (on stdin) 01:28:06.422714 Received PORT (on stdin) 01:28:06.427069 ====> Client connect 01:28:06.434680 Received DATA (on stdin) 01:28:06.434975 > 18 bytes data, server => client 01:28:06.435327 'WE ROOLZ: 202066\r\n' 01:28:06.439829 Received DISC (on stdin) 01:28:06.439960 ====> Client forcibly disconnected 01:28:06.440587 Received QUIT (on stdin) 01:28:06.440668 quits 01:28:06.441189 ============> sockfilt quits 01:28:52.272502 Running IPv4 version 01:28:52.286293 Listening on port 40267 01:28:52.286787 Wrote pid 265060 to log/1/server/ftp_sockdata.pid 01:28:52.287502 Received PING (on stdin) 01:28:52.288337 Received PORT (on stdin) 01:28:52.456466 ====> Client connect 01:28:52.678426 Received DATA (on stdin) 01:28:52.678773 > 47 bytes data, server => client 01:28:52.679148 'file contents should appear once for each file\n' 01:28:52.683020 Received DISC (on stdin) 01:28:52.683152 ====> Client forcibly disconnected 01:28:52.683686 Received QUIT (on stdin) 01:28:52.683760 quits 01:28:52.684246 ============> sockfilt quits 01:28:56.741443 Running IPv4 version 01:28:56.749262 Listening on port 35811 01:28:56.749836 Wrote pid 265066 to log/1/server/ftp_sockdata.pid 01:28:56.750641 Received PING (on stdin) 01:28:56.751739 Received PORT (on stdin) 01:28:56.780347 ====> Client connect 01:28:56.820011 Received DATA (on stdin) 01:28:56.820387 > 47 bytes data, server => client 01:28:56.820772 'file contents should appear once for each file\n' 01:28:56.821041 Received DISC (on stdin) 01:28:56.821165 ====> Client forcibly disconnected 01:28:56.826352 Received QUIT (on stdin) 01:28:56.826453 quits 01:28:56.826994 ============> sockfilt quits 01:28:57.055657 Running IPv4 version 01:28:57.063333 Listening on port 41179 01:28:57.063848 Wrote pid 265075 to log/1/server/ftp_sockdata.pid 01:28:57.064613 Received PING (on stdin) 01:28:57.065727 Received PORT (on stdin) 01:28:57.076439 ====> Client connect 01:28:57.091619 Received DATA (on stdin) 01:28:57.092078 > 47 bytes data, server => client 01:28:57.092503 'file contents should appear once for each file\n' 01:28:57.092799 Received DISC (on stdin) 01:28:57.093407 ====> Client forcibly disconnected 01:28:57.093570 Received QUIT (on stdin) 01:28:57.093649 quits 01:28:57.094215 ============> sockfilt quits 01:28:58.212705 Running IPv4 version 01:28:58.220254 Listening on port 39535 01:28:58.220743 Wrote pid 265087 to log/1/server/ftp_sockdata.pid 01:28:58.221485 Received PING (on stdin) 01:28:58.222612 Received PORT (on stdin) 01:28:58.238297 ====> Client connect 01:28:58.252648 Received DATA (on stdin) 01:28:58.253023 > 47 bytes data, server => client 01:28:58.253437 'file contents should appear once for each file\n' 01:28:58.253699 Received DISC (on stdin) 01:28:58.253821 ====> Client forcibly disconnected 01:28:58.254492 Received QUIT (on stdin) 01:28:58.254571 quits 01:28:58.255085 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 532 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD path EPSV TYPE I SIZE 532 RETR 532 EPSV SIZE 532 RETR 532 EPSV SIZE 532 RETR 532 EPSV SIZE 532 RETR 532 QUIT === End of file server.input === Start of file stderr532 URL: ftp://127.0.0.1:37481/path/532 Start at URL 0 * Trying 127.0.0.1:37481... * Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 127.0.0.1 port 51006 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' > CWD path < 250 CWD command successful. > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||40267|) * Connecting to 127.0.0.1 (127.0.0.1) port 40267 * Trying 127.0.0.1:40267... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 40267) from 127.0.0.1 port 49858 > TYPE I < 200 I modify TYPE as you wanted > SIZE 532 < 213 47 > RETR 532 < 150 Binary data connection for 532 () (47 bytes). * Maxdownload = -1 * Getting file with size: 47 * abort upload * Remembering we are in dir "path/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact Advancing to URL 1 * Reusing existing ftp: connection with host 127.0.0.1 * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||35811|) * Connecting to 127.0.0.1 (127.0.0.1) port 35811 * Trying 127.0.0.1:35811... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 35811) from 127.0.0.1 port 51396 > SIZE 532 < 213 47 > RETR 532 < 150 Binary data connection for 532 () (47 bytes). * Maxdownload = -1 * Getting file with size: 47 * abort upload * Remembering we are in dir "path/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact Advancing to URL 2 * Reusing existing ftp: connection with host 127.0.0.1 * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||41179|) CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind533 ./libtest/libtests lib533 ftp://127.0.0.1:33729/path/533 ftp://127.0.0.1:33729/path/533 > log/5/stdout533 2> log/5/stderr533 * Connecting to 127.0.0.1 (127.0.0.1) port 41179 * Trying 127.0.0.1:41179... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 41179) from 127.0.0.1 port 41850 > SIZE 532 < 213 47 > RETR 532 < 150 Binary data connection for 532 () (47 bytes). * Maxdownload = -1 * Getting file with size: 47 * abort upload * Remembering we are in dir "path/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact Advancing to URL 3 * Reusing existing ftp: connection with host 127.0.0.1 * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||39535|) * Connecting to 127.0.0.1 (127.0.0.1) port 39535 * Trying 127.0.0.1:39535... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 39535) from 127.0.0.1 port 54902 > SIZE 532 < 213 47 > RETR 532 < 150 Binary data connection for 532 () (47 bytes). * Maxdownload = -1 * Getting file with size: 47 * abort upload * Remembering we are in dir "path/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact Test ended with result 0 === End of file stderr532 === Start of file stdout532 file contents should appear once for each file file contents should appear once for each file file contents should appear once for each file file contents should appear once for each file === End of file stdout532 === Start of file valgrind532 ==263758== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind532 test 0533...[FTP RETR a non-existing file twice using the multi interface] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind533 ./libtest/libtests lib533 ftp://127.0.0.1:33729/path/533 ftp://127.0.0.1:33729/path/533 > log/5/stdout533 2> log/5/stderr533 valgrind ERROR ==263932== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 533 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind533 ./libtest/libtests lib533 ftp://127.0.0.1:33729/path/533 ftp://127.0.0.1:33729/path/533 > log/5/stdout533 2> log/5/stderr533 === End of file commands.log === Start of file ftp_server.log 01:28:15.347497 ====> Client connect 01:28:15.354250 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:28:15.356007 < "USER anonymous" 01:28:15.356545 > "331 We are happy you popped in![CR][LF]" 01:28:15.357371 < "PASS ftp@example.com" 01:28:15.358252 > "230 Welcome you silly person[CR][LF]" 01:28:15.358716 < "PWD" 01:28:15.358963 > "257 "/" is current directory[CR][LF]" 01:28:15.361520 < "EPSV" 01:28:15.361720 ====> Passive DATA channel requested by client 01:28:15.361856 DATA sockfilt for passive data channel starting... 01:28:15.408997 DATA sockfilt for passive data channel started (pid 263926) 01:28:15.410349 DATA sockfilt for passive data channel listens on port 35151 01:28:15.410690 > "229 Entering Passive Mode (|||35151|)[CR][LF]" 01:28:15.410870 Client has been notified that DATA conn will be accepted on port 35151 01:28:15.414459 Client connects to port 35151 01:28:15.414682 ====> Client established passive DATA connection on port 35151 01:28:15.415345 < "TYPE I" 01:28:15.415644 > "200 I modify TYPE as you wanted[CR][LF]" 01:28:15.421461 < "SIZE verifiedserver" 01:28:15.421781 > "213 18[CR][LF]" 01:28:15.423146 < "RETR verifiedserver" 01:28:15.423667 > "150 Binary junk (18 bytes).[CR][LF]" 01:28:15.425007 =====> Closing passive DATA connection... 01:28:15.425159 Server disconnects passive DATA connection 01:28:15.425600 Server disconnected passive DATA connection 01:28:15.425755 DATA sockfilt for passive data channel quits (pid 263926) 01:28:15.428624 DATA sockfilt for passive data channel quit (pid 263926) 01:28:15.428791 =====> Closed passive DATA connection 01:28:15.429269 > "226 File transfer complete[CR][LF]" 01:28:15.471114 < "QUIT" 01:28:15.471599 > "221 bye bye baby[CR][LF]" 01:28:15.472061 MAIN sockfilt said DISC 01:28:15.472338 ====> Client disconnected 01:28:15.472579 Awaiting input 01:28:59.810830 ====> Client connect 01:28:59.811594 FTPD: Getting commands from log/5/server.cmd 01:28:59.812388 FTPD: set custom reply for RETR command 01:28:59.812829 FTPD: set custom reply for SIZE command 01:28:59.813087 FTPD: run test case number: 533 01:28:59.817736 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:29:01.025153 < "USER anonymous" 01:29:01.025879 > "331 We are happy you popped in![CR][LF]" 01:29:01.123717 < "PASS ftp@example.com" 01:29:01.124126 > "230 Welcome you silly person[CR][LF]" 01:29:01.213595 < "PWD" 01:29:01.214368 > "257 "/" is current directory[CR][LF]" 01:29:01.407122 < "CWD path" 01:29:01.410826 > "250 CWD command successful.[CR][LF]" 01:29:01.469791 < "EPSV" 01:29:01.470107 ====> Passive DATA channel requested by client 01:29:01.470248 DATA sockfilt for passive data channel starting... 01:29:01.549814 DATA sockfilt for passive data channel started (pid 265096) 01:29:01.551251 DATA sockfilt for passive data channel listens on port 34319 01:29:01.551610 > "229 Entering Passive Mode (|||34319|)[CR][LF]" 01:29:01.551782 Client has been notified that DATA conn will be accepted on port 34319 01:29:01.730816 Client connects to port 34319 01:29:01.731364 ====> Client established passive DATA connection on port 34319 01:29:01.847656 < "TYPE I" 01:29:01.848084 > "200 I modify TYPE as you wanted[CR][LF]" 01:29:01.894945 < "SIZE 533" 01:29:01.895367 > "500 Can't check for file existence[CR][LF]" 01:29:01.948273 < "RETR 533" 01:29:01.948666 > "550 the file doesn't exist[CR][LF]" 01:29:04.394838 < "EPSV" 01:29:04.400959 DATA sockfilt for passive data channel killed 01:29:04.401257 ====> Passive DATA channel requested by client 01:29:04.401411 DATA sockfilt for passive data channel starting... 01:29:04.446144 DATA sockfilt for passive data channel started (pid 265185) 01:29:04.447400 DATA sockfilt for passive data channel listens on port 43835 01:29:04.448270 > "229 Entering Passive Mode (|||43835|)[CR][LF]" 01:29:04.448467 Client has been notified that DATA conn will be accepted on port 43835 01:29:04.484119 Client connects to port 43835 01:29:04.484563 ====> Client established passive DATA connection on port 43835 01:29:04.509337 < "SIZE 533" 01:29:04.511013 > "500 Can't check for file existence[CR][LF]" 01:29:04.515453 < "RETR 533" 01:29:04.515751 > "550 the file doesn't exist[CR][LF]" 01:29:04.908283 < "QUIT" 01:29:04.908707 > "221 bye bye baby[CR][LF]" 01:29:05.106612 MAIN sockfilt said DISC 01:29:05.107156 ====> Client disconnected 01:29:05.111123 DATA sockfilt for passive data channel killed now 01:29:05.111346 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:28:15.958974 ====> Client connect 01:28:15.960799 Received DATA (on stdin) 01:28:15.960902 > 160 bytes data, server => client 01:28:15.964172 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:28:15.964277 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:28:15.964357 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:28:15.967747 < 16 bytes data, client => server 01:28:15.967843 'USER anonymous\r\n' 01:28:15.968630 Received DATA (on stdin) 01:28:15.968698 > 33 bytes data, server => client 01:28:15.968795 '331 We are happy you popped in!\r\n' 01:28:15.969302 < 22 bytes data, client => server 01:28:15.969375 'PASS ftp@example.com\r\n' 01:28:15.969969 Received DATA (on stdin) 01:28:15.970035 > 30 bytes data, server => client 01:28:15.970193 '230 Welcome you silly person\r\n' 01:28:15.970473 < 5 bytes data, client => server 01:28:15.970533 'PWD\r\n' 01:28:15.971522 Received DATA (on stdin) 01:28:15.971584 > 30 bytes data, server => client 01:28:15.971657 '257 "/" is current directory\r\n' 01:28:15.973414 < 6 bytes data, client => server 01:28:15.973486 'EPSV\r\n' 01:28:16.023483 Received DATA (on stdin) 01:28:16.023630 > 39 bytes data, server => client 01:28:16.023731 '229 Entering Passive Mode (|||35151|)\r\n' 01:28:16.026477 < 8 bytes data, client => server 01:28:16.026558 'TYPE I\r\n' 01:28:16.028151 Received DATA (on stdin) 01:28:16.028210 > 33 bytes data, server => client 01:28:16.028288 '200 I modify TYPE as you wanted\r\n' 01:28:16.034349 < 21 bytes data, client => server 01:28:16.034429 'SIZE verifiedserver\r\n' 01:28:16.034489 Received DATA (on stdin) 01:28:16.034543 > 8 bytes data, server => client 01:28:16.034603 '213 18\r\n' 01:28:16.035088 < 21 bytes data, client => server 01:28:16.035154 'RETR verifiedserver\r\n' 01:28:16.035779 Received DATA (on stdin) 01:28:16.035839 > 29 bytes data, server => client 01:28:16.035933 '150 Binary junk (18 bytes).\r\n' 01:28:16.041376 Received DATA (on stdin) 01:28:16.041445 > 28 bytes data, server => client 01:28:16.041535 '226 File transfer complete\r\n' 01:28:16.082961 < 6 bytes data, client => server 01:28:16.083032 'QUIT\r\n' 01:28:16.083717 Received DATA (on stdin) 01:28:16.083780 > 18 bytes data, server => client 01:28:16.083863 '221 bye bye baby\r\n' 01:28:16.084360 ====> Client disconnect 01:28:16.084614 Received ACKD (on stdin) 01:29:00.420476 ====> Client connect 01:29:00.429685 Received DATA (on stdin) 01:29:00.429803 > 160 bytes data, server => client 01:29:00.430302 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:29:00.430419 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:29:00.430515 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:29:01.636164 < 16 bytes data, client => server 01:29:01.636357 'USER anonymous\r\n' 01:29:01.637791 Received DATA (on stdin) 01:29:01.637868 > 33 bytes data, server => client 01:29:01.637981 '331 We are happy you popped in!\r\n' 01:29:01.734852 < 22 bytes data, client => server 01:29:01.735032 'PASS ftp@example.com\r\n' 01:29:01.739679 Received DATA (on stdin) 01:29:01.739797 > 30 bytes data, server => client 01:29:01.739885 '230 Welcome you silly person\r\n' 01:29:01.824786 < 5 bytes data, client => server 01:29:01.824949 'PWD\r\n' 01:29:01.826253 Received DATA (on stdin) 01:29:01.826342 > 30 bytes data, server => client 01:29:01.826457 '257 "/" is current directory\r\n' 01:29:02.018314 < 10 bytes data, client => server 01:29:02.018492 'CWD path\r\n' 01:29:02.019746 Received DATA (on stdin) 01:29:02.019821 > 29 bytes data, server => client 01:29:02.023484 '250 CWD command successful.\r\n' 01:29:02.080968 < 6 bytes data, client => server 01:29:02.081146 'EPSV\r\n' 01:29:02.163811 Received DATA (on stdin) 01:29:02.163968 > 39 bytes data, server => client 01:29:02.164064 '229 Entering Passive Mode (|||34319|)\r\n' 01:29:02.458981 < 8 bytes data, client => server 01:29:02.459165 'TYPE I\r\n' 01:29:02.460286 Received DATA (on stdin) 01:29:02.460362 > 33 bytes data, server => client 01:29:02.460445 '200 I modify TYPE as you wanted\r\n' 01:29:02.504500 < 10 bytes data, client => server 01:29:02.504681 'SIZE 533\r\n' 01:29:02.507566 Received DATA (on stdin) 01:29:02.507648 > 36 bytes data, server => client 01:29:02.507732 '500 Can't check for file existence\r\n' 01:29:02.559709 < 10 bytes data, client => server 01:29:02.559855 'RETR 533\r\n' 01:29:02.560876 Received DATA (on stdin) 01:29:02.560944 > 28 bytes data, server => client 01:29:02.561020 '550 the file doesn't exist\r\n' 01:29:05.005943 < 6 bytes data, client => server 01:29:05.006111 'EPSV\r\n' 01:29:05.060007 Received DATA (on stdin) 01:29:05.060161 > 39 bytes data, server => client 01:29:05.060285 '229 Entering Passive Mode (|||43835|)\r\n' 01:29:05.120539 < 10 bytes data, client => server 01:29:05.120703 'SIZE 533\r\n' 01:29:05.121928 Received DATA (on stdin) 01:29:05.122005 > 36 bytes data, server => client 01:29:05.123049 '500 Can't check for file existence\r\n' 01:29:05.127074 < 10 bytes data, client => server 01:29:05.127157 'RETR 533\r\n' 01:29:05.128190 Received DATA (on stdin) 01:29:05.128262 > 28 bytes data, server => client 01:29:05.128346 '550 the file doesn't exist\r\n' 01:29:05.517396 < 6 bytes data, client => server 01:29:05.517576 'QUIT\r\n' 01:29:05.521250 Received DATA (on stdin) 01:29:05.521344 > 18 bytes data, server => client 01:29:05.521425 '221 bye bye baby\r\n' 01:29:05.718520 ====> Client disconnect 01:29:05.722997 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:28:15.012013 Running IPv4 version 01:28:15.019631 Listening on port 35151 01:28:15.020159 Wrote pid 263926 to log/5/server/ftp_sockdata.pid 01:28:15.021044 Received PING (on stdin) 01:28:15.022048 Received PORT (on stdin) 01:28:15.026673 ====> Client connect 01:28:15.036251 Received DATA (on stdin) 01:28:15.036531 > 18 bytes data, server => client 01:28:15.036882 'WE ROOLZ: 202313\r\n' 01:28:15.037701 Received DISC (on stdin) 01:28:15.037806 ====> Client forcibly disconnected 01:28:15.038287 Received QUIT (on stdin) 01:28:15.038354 quits 01:28:15.038807 ============> sockfilt quits 01:29:01.145455 Running IPv4 version 01:29:01.160316 Listening on port 34319 01:29:01.160868 Wrote pid 265096 to log/5/server/ftp_sockdata.pid 01:29:01.161676 Received PING (on stdin) 01:29:01.162838 Received PORT (on stdin) 01:29:01.341080 ====> Client connect 01:29:01.759767 ====> Client disconnect 01:29:04.049057 Running IPv4 version 01:29:04.056581 Listening on port 43835 01:29:04.057071 Wrote pid 265185 to log/5/server/ftp_sockdata.pid 01:29:04.057847 Received PING (on stdin) 01:29:04.058927 Received PORT (on stdin) 01:29:04.095295 ====> Client connect 01:29:04.146422 ====> Client disconnect === End of file ftp_sockdata.log === Start of file server.cmd REPLY RETR 550 the file doesn't exist REPLY SIZE 500 Can't check for file existence Testnum 533 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD path EPSV TYPE I SIZE 533 RETR 533 EPSV SIZE 533 RETR 533 QUIT === End of file server.input === Start of file stderr533 URL: ftp://127.0.0.1:33729/path/533 Start at URL 0 * Trying 127.0.0.1:33729... * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 47990 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' > CWD path < 250 CWD command successful. > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||34319|) * Connecting to 127.0.0.1 (127.0.0.1) port 34319 * Trying 127.0.0.1:34319... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 34319) from 127.0.0.1 port 48016 > TYPE I < 200 I modify TYPE as you wanted > SIZE 533 < 500 Can't check for file existence > RETR 533 < 550 the file doesn't exist * RETR response: 550 * Remembering we are in dir "path/" * Connection #0 to host 127.0.0.1:33729 left intact Advancing to URL 1 * Reusing existing ftp: connection with host 127.0.0.1 * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||43835|) * Connecting to 127.0.0.1 (127.0.0.1) port 43835 * Trying 127.0.0.1:43835... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 43835) from 127.0.0.1 port 46580 > SIZE 533 < 500 Can't check for file existence > RETR 533 < 550 the file doesn't exist * RETR response: 550 * Remembering we are in dir "path/" * Connection #0 to host 127.0.0.1:33729 left intact Test ended with result 0 === End of file stderr533 === Start of file valgrind533 ==263932== error calling PR_SET_PTRACER, vgdb might CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind534 ./libtest/libtests lib533 ftp://non-existing-host.haxx.se/path/534 ftp://127.0.0.1:38207/path/534 > log/4/stdout534 2> log/4/stderr534 block === End of file valgrind533 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 540 in state 4 Runner 2 (id 185908) running test 539 in state 4 Runner 3 (id 185910) running test 537 in state 4 Runner 4 (id 185912) running test 534 in state 4 Runner 5 (id 185914) running test 541 in state 4 Runner 6 (id 185916) running test 538 in state 4 Runner 7 (id 185918) running test 535 in state 4 Runner 8 (id 185920) running test 536 in state 4 test 0534...[FTP RETR twice using multi: non-existing host and non-existing file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind534 ./libtest/libtests lib533 ftp://non-existing-host.haxx.se/path/534 ftp://127.0.0.1:38207/path/534 > log/4/stdout534 2> log/4/stderr534 valgrind ERROR ==264097== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 534 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind534 ./libtest/libtests lib533 ftp://non-existing-host.haxx.se/path/534 ftp://127.0.0.1:38207/path/534 > log/4/stdout534 2> log/4/stderr534 === End of file commands.log === Start of file ftp_server.log 01:28:22.526335 ====> Client connect 01:28:22.528037 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:28:22.535514 < "USER anonymous" 01:28:22.538170 > "331 We are happy you popped in![CR][LF]" 01:28:22.538867 < "PASS ftp@example.com" 01:28:22.539756 > "230 Welcome you silly person[CR][LF]" 01:28:22.540286 < "PWD" 01:28:22.542907 > "257 "/" is current directory[CR][LF]" 01:28:22.543453 < "EPSV" 01:28:22.543669 ====> Passive DATA channel requested by client 01:28:22.543822 DATA sockfilt for passive data channel starting... 01:28:22.587460 DATA sockfilt for passive data channel started (pid 264091) 01:28:22.588853 DATA sockfilt for passive data channel listens on port 36805 01:28:22.589234 > "229 Entering Passive Mode (|||36805|)[CR][LF]" 01:28:22.589408 Client has been notified that DATA conn will be accepted on port 36805 01:28:22.593378 Client connects to port 36805 01:28:22.593647 ====> Client established passive DATA connection on port 36805 01:28:22.594342 < "TYPE I" 01:28:22.595513 > "200 I modify TYPE as you wanted[CR][LF]" 01:28:22.596103 < "SIZE verifiedserver" 01:28:22.596431 > "213 18[CR][LF]" 01:28:22.597812 < "RETR verifiedserver" 01:28:22.600315 > "150 Binary junk (18 bytes).[CR][LF]" 01:28:22.600869 =====> Closing passive DATA connection... 01:28:22.601047 Server disconnects passive DATA connection 01:28:22.602297 Server disconnected passive DATA connection 01:28:22.602464 DATA sockfilt for passive data channel quits (pid 264091) 01:28:22.606104 DATA sockfilt for passive data channel quit (pid 264091) 01:28:22.606287 =====> Closed passive DATA connection 01:28:22.606702 > "226 File transfer complete[CR][LF]" 01:28:22.651569 < "QUIT" 01:28:22.651978 > "221 bye bye baby[CR][LF]" 01:28:22.654939 MAIN sockfilt said DISC 01:28:22.655147 ====> Client disconnected 01:28:22.655440 Awaiting input 01:29:16.235663 ====> Client connect 01:29:16.236412 FTPD: Getting commands from log/4/server.cmd 01:29:16.237193 FTPD: set custom reply for RETR command 01:29:16.237623 FTPD: set custom reply for SIZE command 01:29:16.237874 FTPD: run test case number: 534 01:29:16.238860 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:29:17.211257 < "USER anonymous" 01:29:17.211744 > "331 We are happy you popped in![CR][LF]" 01:29:17.285399 < "PASS ftp@example.com" 01:29:17.290830 > "230 Welcome you silly person[CR][LF]" 01:29:17.357163 < "PWD" 01:29:17.357619 > "257 "/" is current directory[CR][LF]" 01:29:17.554930 < "CWD path" 01:29:17.555348 > "250 CWD command successful.[CR][LF]" 01:29:17.624704 < "EPSV" 01:29:17.625049 ====> Passive DATA channel requested by client 01:29:17.625199 DATA sockfilt for passive data channel starting... 01:29:17.703158 DATA sockfilt for passive data channel started (pid 265459) 01:29:17.704768 DATA sockfilt for passive data channel listens on port 45659 01:29:17.705131 > "229 Entering Passive Mode (|||45659|)[CR][LF]" 01:29:17.705301 Client has been notified that DATA conn will be accepted on port 45659 01:29:17.871182 Client connects to port 45659 01:29:17.871734 ====> Client established passive DATA connection on port 45659 01:29:17.988284 < "TYPE I" 01:29:17.988686 > "200 I modify TYPE as you wanted[CR][LF]" 01:29:18.038166 < "SIZE 534" 01:29:18.038857 > "500 Can't check for file existence[CR][LF]" 01:29:18.092391 < "RETR 534" 01:29:18.093102 > "550 the file doesn't exist[CR][LF]" 01:29:18.931303 < "QUIT" 01:29:18.932003 > "221 bye bye baby[CR][LF]" 01:29:19.087556 MAIN sockfilt said DISC 01:29:19.088232 ====> Client disconnected 01:29:19.094618 DATA sockfilt for passive data channel killed now 01:29:19.094891 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:28:22.138249 ====> Client connect 01:28:22.139666 Received DATA (on stdin) 01:28:22.139803 > 160 bytes data, server => client 01:28:22.139938 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:28:22.140037 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:28:22.140124 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:28:22.146844 < 16 bytes data, client => server 01:28:22.146966 'USER anonymous\r\n' 01:28:22.148223 Received DATA (on stdin) 01:28:22.148301 > 33 bytes data, server => client 01:28:22.149901 '331 We are happy you popped in!\r\n' 01:28:22.150236 < 22 bytes data, client => server 01:28:22.150315 'PASS ftp@example.com\r\n' 01:28:22.151458 Received DATA (on stdin) 01:28:22.151526 > 30 bytes data, server => client 01:28:22.151624 '230 Welcome you silly person\r\n' 01:28:22.151866 < 5 bytes data, client => server 01:28:22.151930 'PWD\r\n' 01:28:22.152886 Received DATA (on stdin) 01:28:22.152951 > 30 bytes data, server => client 01:28:22.153047 '257 "/" is current directory\r\n' 01:28:22.155073 < 6 bytes data, client => server 01:28:22.155144 'EPSV\r\n' 01:28:22.202017 Received DATA (on stdin) 01:28:22.202159 > 39 bytes data, server => client 01:28:22.202258 '229 Entering Passive Mode (|||36805|)\r\n' 01:28:22.205541 < 8 bytes data, client => server 01:28:22.205632 'TYPE I\r\n' 01:28:22.206964 Received DATA (on stdin) 01:28:22.207048 > 33 bytes data, server => client 01:28:22.207158 '200 I modify TYPE as you wanted\r\n' 01:28:22.207551 < 21 bytes data, client => server 01:28:22.207629 'SIZE verifiedserver\r\n' 01:28:22.208996 Received DATA (on stdin) 01:28:22.209065 > 8 bytes data, server => client 01:28:22.209132 '213 18\r\n' 01:28:22.209585 < 21 bytes data, client => server 01:28:22.209665 'RETR verifiedserver\r\n' 01:28:22.210452 Received DATA (on stdin) 01:28:22.210523 > 29 bytes data, server => client 01:28:22.210626 '150 Binary junk (18 bytes).\r\n' 01:28:22.218862 Received DATA (on stdin) 01:28:22.218951 > 28 bytes data, server => client 01:28:22.219272 '226 File transfer complete\r\n' 01:28:22.260574 < 6 bytes data, client => server 01:28:22.260733 'QUIT\r\n' 01:28:22.266441 Received DATA (on stdin) 01:28:22.266534 > 18 bytes data, server => client 01:28:22.266604 '221 bye bye baby\r\n' 01:28:22.267207 ====> Client disconnect 01:28:22.267507 Received ACKD (on stdin) 01:29:15.847572 ====> Client connect 01:29:15.850983 Received DATA (on stdin) 01:29:15.851086 > 160 bytes data, server => client 01:29:15.851212 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:29:15.851326 'CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind535 ./libtest/libtests lib533 http://127.0.0.1:34897/535 http://127.0.0.1:34897/5350001 > log/7/stdout535 2> log/7/stderr535 \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:29:15.851423 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:29:16.797732 < 16 bytes data, client => server 01:29:16.797943 'USER anonymous\r\n' 01:29:16.824210 Received DATA (on stdin) 01:29:16.824333 > 33 bytes data, server => client 01:29:16.824423 '331 We are happy you popped in!\r\n' 01:29:16.896788 < 22 bytes data, client => server 01:29:16.896986 'PASS ftp@example.com\r\n' 01:29:16.898019 Received DATA (on stdin) 01:29:16.898098 > 30 bytes data, server => client 01:29:16.903383 '230 Welcome you silly person\r\n' 01:29:16.968169 < 5 bytes data, client => server 01:29:16.968373 'PWD\r\n' 01:29:16.970049 Received DATA (on stdin) 01:29:16.970128 > 30 bytes data, server => client 01:29:16.970212 '257 "/" is current directory\r\n' 01:29:17.166432 < 10 bytes data, client => server 01:29:17.166607 'CWD path\r\n' 01:29:17.167890 Received DATA (on stdin) 01:29:17.167964 > 29 bytes data, server => client 01:29:17.168051 '250 CWD command successful.\r\n' 01:29:17.232338 < 6 bytes data, client => server 01:29:17.232527 'EPSV\r\n' 01:29:17.317760 Received DATA (on stdin) 01:29:17.317905 > 39 bytes data, server => client 01:29:17.317999 '229 Entering Passive Mode (|||45659|)\r\n' 01:29:17.598841 < 8 bytes data, client => server 01:29:17.599027 'TYPE I\r\n' 01:29:17.606298 Received DATA (on stdin) 01:29:17.606406 > 33 bytes data, server => client 01:29:17.606500 '200 I modify TYPE as you wanted\r\n' 01:29:17.649161 < 10 bytes data, client => server 01:29:17.649360 'SIZE 534\r\n' 01:29:17.650739 Received DATA (on stdin) 01:29:17.650815 > 36 bytes data, server => client 01:29:17.650922 '500 Can't check for file existence\r\n' 01:29:17.703446 < 10 bytes data, client => server 01:29:17.703635 'RETR 534\r\n' 01:29:17.704977 Received DATA (on stdin) 01:29:17.705049 > 28 bytes data, server => client 01:29:17.705163 '550 the file doesn't exist\r\n' 01:29:18.542384 < 6 bytes data, client => server 01:29:18.542569 'QUIT\r\n' 01:29:18.543883 Received DATA (on stdin) 01:29:18.543958 > 18 bytes data, server => client 01:29:18.544058 '221 bye bye baby\r\n' 01:29:18.699460 ====> Client disconnect 01:29:18.700296 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:28:22.189405 Running IPv4 version 01:28:22.198177 Listening on port 36805 01:28:22.198651 Wrote pid 264091 to log/4/server/ftp_sockdata.pid 01:28:22.199445 Received PING (on stdin) 01:28:22.200531 Received PORT (on stdin) 01:28:22.205341 ====> Client connect 01:28:22.213603 Received DATA (on stdin) 01:28:22.213919 > 18 bytes data, server => client 01:28:22.214292 'WE ROOLZ: 201673\r\n' 01:28:22.214543 Received DISC (on stdin) 01:28:22.215052 ====> Client forcibly disconnected 01:28:22.215220 Received QUIT (on stdin) 01:28:22.215293 quits 01:28:22.215793 ============> sockfilt quits 01:29:17.300200 Running IPv4 version 01:29:17.313682 Listening on port 45659 01:29:17.314221 Wrote pid 265459 to log/4/server/ftp_sockdata.pid 01:29:17.314987 Received PING (on stdin) 01:29:17.315908 Received PORT (on stdin) 01:29:17.483070 ====> Client connect 01:29:17.880997 ====> Client disconnect === End of file ftp_sockdata.log === Start of file server.cmd REPLY RETR 550 the file doesn't exist REPLY SIZE 500 Can't check for file existence Testnum 534 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD path EPSV TYPE I SIZE 534 RETR 534 QUIT === End of file server.input === Start of file stderr534 URL: ftp://non-existing-host.haxx.se/path/534 Start at URL 0 * Could not resolve host: non-existing-host.haxx.se * Store negative name resolve for non-existing-host.haxx.se:21 * shutting down connection #0 Advancing to URL 1 * Trying 127.0.0.1:38207... * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 35166 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' > CWD path < 250 CWD command successful. > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||45659|) * Connecting to 127.0.0.1 (127.0.0.1) port 45659 * Trying 127.0.0.1:45659... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 45659) from 127.0.0.1 port 33222 > TYPE I < 200 I modify TYPE as you wanted > SIZE 534 < 500 Can't check for file existence > RETR 534 < 550 the file doesn't exist * RETR response: 550 * Remembering we are in dir "path/" * Connection #1 to host 127.0.0.1:38207 left intact Test ended with result 0 === End of file stderr534 === Start of file valgrind534 ==264097== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind534 test 0535...[HTTP GET multi two files with FAILONERROR] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind535 ./libtest/libtests lib533 http://127.0.0.1:34897/535 http://127.0.0.1:34897/5350001 > log/7/stdout535 2> log/7/stderr535 valgrind ERROR ==264286== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 535 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind535 ./libtest/libtests lib533 http://127.0.0.1:34897/535 http://127.0.0.1:34897/5350001 > log/7/stdout535 2> log/7/stderr535 === End of file commands.log === Start of file http_server.log 01:28:31.523467 ====> Client connect 01:28:31.523633 accept_connection 3 returned 4 01:28:31.523709 accept_connection 3 returned 0 01:28:31.530590 Read 93 bytes 01:28:31.530688 Process 93 bytes request 01:28:31.530774 Got request: GET /verifiedserver HTTP/1.1 01:28:31.530835 Are-we-friendly question received 01:28:31.530946 Wrote request (93 bytes) input to log/7/server.input 01:28:31.531035 Identifying ourselves as friends 01:28:31.531186 Response sent (57 bytes) and written to log/7/server.response 01:28:31.531246 special request received, no persistency 01:28:31.531297 ====> Client disconnect 0 01:29:16.271129 ====> Client connect 01:29:16.271270 accept_connection 3 returned 4 01:29:16.271351 accept_connection 3 returned 0 01:29:17.382900 Read 57 bytes 01:29:17.383122 Process 57 bytes request 01:29:17.383214 Got request: GET /535 HTTP/1.1 01:29:17.383283 Serve test number 535 part 0 01:29:17.383466 - request found to be complete (535) 01:29:17.383726 Wrote request (57 bytes) input to log/7/server.input 01:29:17.383839 Send response test535 section 01:29:17.384166 Response sent (160 bytes) and written to log/7/server.response 01:29:17.384234 => persistent connection request ended, awaits new request 01:29:18.458700 Connection closed by client 01:29:18.458904 ====> Client disconnect 0 01:29:20.133120 ====> Client connect 01:29:20.133251 accept_connection 3 returned 4 01:29:20.133325 accept_connection 3 returned 0 01:29:20.183500 Read 61 bytes 01:29:20.183686 Process 61 bytes request 01:29:20.183778 Got request: GET /5350001 HTTP/1.1 01:29:20.183846 Serve test number 535 part 1 01:29:20.184022 - request found to be complete (535) 01:29:20.184209 Wrote request (61 bytes) input to log/7/server.input 01:29:20.184291 Send response test535 section 01:29:20.184588 Response sent (135 bytes) and written to log/7/server.response 01:29:20.184651 => persistent connection request ended, awaits new request 01:29:20.720945 Connection closed by client 01:29:20.721121 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 60986 * using HTTP/CMD (10496): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind538 ./libtest/libtests lib504 ftp://127.0.0.1:39413/538 > log/6/stdout538 2> log/6/stderr538 1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 535 === End of file server.cmd === Start of file server.input GET /535 HTTP/1.1 Host: 127.0.0.1:34897 Accept: */* GET /5350001 HTTP/1.1 Host: 127.0.0.1:34897 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 404 Badness Date: Tue, 09 Nov 2010 14:49:00 GMT ETag: "21025-dc7-39462498" Content-Length: 6 Content-Type: text/html Funny-head: yesyes hejsan HTTP/1.1 200 Fine Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 13 Connection: close Content-Type: text/html fine content === End of file server.response === Start of file stderr535 URL: http://127.0.0.1:34897/535 Start at URL 0 * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 39756 * using HTTP/1.x > GET /535 HTTP/1.1 Host: 127.0.0.1:34897 Accept: */* < HTTP/1.1 404 Badness < Date: Tue, 09 Nov 2010 14:49:00 GMT < ETag: "21025-dc7-39462498" < Content-Length: 6 < Content-Type: text/html < Funny-head: yesyes * The requested URL returned error: 404 < * closing connection #0 Advancing to URL 1 * Hostname 127.0.0.1 was found in DNS cache * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 39764 * using HTTP/1.x > GET /5350001 HTTP/1.1 Host: 127.0.0.1:34897 Accept: */* < HTTP/1.1 200 Fine < Date: Tue, 09 Nov 2010 14:49:00 GMT < Content-Length: 13 < Connection: close < Content-Type: text/html < * we are done reading and this is set to close, stop send * abort upload * shutting down connection #1 Test ended with result 0 === End of file stderr535 === Start of file stdout535 fine content === End of file stdout535 === Start of file valgrind535 ==264286== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind535 test 0538...[FTP multi-interface download, failed login: PASS not valid] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind538 ./libtest/libtests lib504 ftp://127.0.0.1:39413/538 > log/6/stdout538 2> log/6/stderr538 valgrind ERROR ==264604== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 538 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind538 ./libtest/libtests lib504 ftp://127.0.0.1:39413/538 > log/6/stdout538 2> log/6/stderr538 === End of file commands.log === Start of file ftp_server.log 01:28:34.877494 ====> Client connect 01:28:34.887583 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:28:34.888737 < "USER anonymous" 01:28:34.889040 > "331 We are happy you popped in![CR][LF]" 01:28:34.890799 < "PASS ftp@example.com" 01:28:34.891075 > "230 Welcome you silly person[CR][LF]" 01:28:34.892325 < "PWD" 01:28:34.892616 > "257 "/" is current directory[CR][LF]" 01:28:34.896438 < "EPSV" 01:28:34.896706 ====> Passive DATA channel requested by client 01:28:34.896864 DATA sockfilt for passive data channel starting... 01:28:34.937269 DATA sockfilt for passive data channel started (pid 264544) 01:28:34.938858 DATA sockfilt for passive data channel listens on port 33875 01:28:34.939251 > "229 Entering Passive Mode (|||33875|)[CR][LF]" 01:28:34.939436 Client has been notified that DATA conn will be accepted on port 33875 01:28:34.942630 Client connects to port 33875 01:28:34.942861 ====> Client established passive DATA connection on port 33875 01:28:34.943542 < "TYPE I" 01:28:34.944173 > "200 I modify TYPE as you wanted[CR][LF]" 01:28:34.945396 < "SIZE verifiedserver" 01:28:34.946792 > "213 18[CR][LF]" 01:28:34.947364 < "RETR verifiedserver" 01:28:34.947713 > "150 Binary junk (18 bytes).[CR][LF]" 01:28:34.949395 =====> Closing passive DATA connection... 01:28:34.949572 Server disconnects passive DATA connection 01:28:34.950124 Server disconnected passive DATA connection 01:28:34.950305 DATA sockfilt for passive data channel quits (pid 264544) 01:28:34.953805 DATA sockfilt for passive data channel quit (pid 264544) 01:28:34.953999 =====> Closed passive DATA connection 01:28:34.954290 > "226 File transfer complete[CR][LF]" 01:28:35.002628 < "QUIT" 01:28:35.003071 > "221 bye bye baby[CR][LF]" 01:28:35.005896 MAIN sockfilt said DISC 01:28:35.006142 ====> Client disconnected 01:28:35.006428 Awaiting input 01:29:19.709270 ====> Client connect 01:29:19.710042 FTPD: Getting commands from log/6/server.cmd 01:29:19.710824 FTPD: set custom reply for PASS command 01:29:19.711098 FTPD: run test case number: 538 01:29:19.712002 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:29:20.898395 < "USER anonymous" 01:29:20.898825 > "331 We are happy you popped in![CR][LF]" 01:29:20.986158 < "PASS ftp@example.com" 01:29:20.986572 > "314 bluah you f00l![CR][LF]" 01:29:21.525061 MAIN sockfilt said DISC 01:29:21.525571 ====> Client disconnected 01:29:21.525877 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:28:34.488936 ====> Client connect 01:28:34.490701 Received DATA (on stdin) 01:28:34.490779 > 160 bytes data, server => client 01:28:34.495302 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:28:34.495439 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:28:34.495548 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:28:34.501591 < 16 bytes data, client => server 01:28:34.501696 'USER anonymous\r\n' 01:28:34.501778 Received DATA (on stdin) 01:28:34.501850 > 33 bytes data, server => client 01:28:34.501947 '331 We are happy you popped in!\r\n' 01:28:34.503612 < 22 bytes data, client => server 01:28:34.503709 'PASS ftp@example.com\r\n' 01:28:34.503789 Received DATA (on stdin) 01:28:34.503861 > 30 bytes data, server => client 01:28:34.503957 '230 Welcome you silly person\r\n' 01:28:34.505234 < 5 bytes data, client => server 01:28:34.505315 'PWD\r\n' 01:28:34.505396 Received DATA (on stdin) 01:28:34.505467 > 30 bytes data, server => client 01:28:34.505559 '257 "/" is current directory\r\n' 01:28:34.508089 < 6 bytes data, client => server 01:28:34.508187 'EPSV\r\n' 01:28:34.551505 Received DATA (on stdin) 01:28:34.551676 > 39 bytes data, server => client 01:28:34.551784 '229 Entering Passive Mode (|||33875|)\r\n' 01:28:34.554551 < 8 bytes data, client => server 01:28:34.554640 'TYPE I\r\n' 01:28:34.556131 Received DATA (on stdin) 01:28:34.556209 > 33 bytes data, server => client 01:28:34.556327 '200 I modify TYPE as you wanted\r\n' 01:28:34.557086 < 21 bytes data, client => server 01:28:34.557177 'SIZE verifiedserver\r\n' 01:28:34.558067 Received DATA (on stdin) 01:28:34.558143 > 8 bytes data, server => client 01:28:34.558362 '213 18\r\n' 01:28:34.558912 < 21 bytes data, client => server 01:28:34.558998 'RETR verifiedserver\r\n' 01:28:34.560585 Received DATA (on stdin) 01:28:34.560667 > 29 bytes data, server => client 01:28:34.560749 '150 Binary junk (18 bytes).\r\n' 01:28:34.567346 Received DATA (on stdin) 01:28:34.567449 > 28 bytes data, server => client 01:28:34.567529 '226 File transfer complete\r\n' 01:28:34.613980 < 6 bytes data, client => server 01:28:34.614151 'QUIT\r\n' 01:28:34.616408 Received DATA (on stdin) 01:28:34.616496 > 18 bytes data, server => client 01:28:3CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind536 ./libtest/libtests lib536 http://127.0.0.1:39461 goingdirect.com:39461 goingdirect.com:39461:127.0.0.1 > log/8/stdout536 2> log/8/stderr536 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind537 ./libtest/libtests lib537 http://127.0.0.1:46853/537 > log/3/stdout537 2> log/3/stderr537 4.616576 '221 bye bye baby\r\n' 01:28:34.618103 ====> Client disconnect 01:28:34.618476 Received ACKD (on stdin) 01:29:19.321188 ====> Client connect 01:29:19.324135 Received DATA (on stdin) 01:29:19.324217 > 160 bytes data, server => client 01:29:19.324325 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:29:19.324425 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:29:19.324517 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:29:20.506343 < 16 bytes data, client => server 01:29:20.506540 'USER anonymous\r\n' 01:29:20.510996 Received DATA (on stdin) 01:29:20.511089 > 33 bytes data, server => client 01:29:20.511178 '331 We are happy you popped in!\r\n' 01:29:20.597467 < 22 bytes data, client => server 01:29:20.597653 'PASS ftp@example.com\r\n' 01:29:20.598739 Received DATA (on stdin) 01:29:20.598814 > 21 bytes data, server => client 01:29:20.598901 '314 bluah you f00l!\r\n' 01:29:21.136979 ====> Client disconnect 01:29:21.137788 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:28:34.538311 Running IPv4 version 01:28:34.547718 Listening on port 33875 01:28:34.548251 Wrote pid 264544 to log/6/server/ftp_sockdata.pid 01:28:34.549193 Received PING (on stdin) 01:28:34.550412 Received PORT (on stdin) 01:28:34.554789 ====> Client connect 01:28:34.560294 Received DATA (on stdin) 01:28:34.560650 > 18 bytes data, server => client 01:28:34.561101 'WE ROOLZ: 201819\r\n' 01:28:34.562091 Received DISC (on stdin) 01:28:34.562223 ====> Client forcibly disconnected 01:28:34.562820 Received QUIT (on stdin) 01:28:34.562905 quits 01:28:34.563477 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASS 314 bluah you f00l Testnum 538 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com === End of file server.input === Start of file stderr538 URL: ftp://127.0.0.1:39413/538 curl_multi_perform() * Trying 127.0.0.1:39413... * Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 48152 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 314 bluah you f00l * Access denied: 314 * closing connection #0 Expected: not running Test ended with result 41 === End of file stderr538 === Start of file valgrind538 ==264604== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind538 test 0536...[CURLINFO_USED_PROXY] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind536 ./libtest/libtests lib536 http://127.0.0.1:39461 goingdirect.com:39461 goingdirect.com:39461:127.0.0.1 > log/8/stdout536 2> log/8/stderr536 valgrind ERROR ==264492== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 536 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind536 ./libtest/libtests lib536 http://127.0.0.1:39461 goingdirect.com:39461 goingdirect.com:39461:127.0.0.1 > log/8/stdout536 2> log/8/stderr536 === End of file commands.log === Start of file http_server.log 01:28:33.471400 ====> Client connect 01:28:33.471574 accept_connection 3 returned 4 01:28:33.471650 accept_connection 3 returned 0 01:28:33.478945 Read 93 bytes 01:28:33.479074 Process 93 bytes request 01:28:33.479164 Got request: GET /verifiedserver HTTP/1.1 01:28:33.479228 Are-we-friendly question received 01:28:33.479347 Wrote request (93 bytes) input to log/8/server.input 01:28:33.479445 Identifying ourselves as friends 01:28:33.479605 Response sent (57 bytes) and written to log/8/server.response 01:28:33.479668 special request received, no persistency 01:28:33.479733 ====> Client disconnect 0 01:29:19.529214 ====> Client connect 01:29:19.529364 accept_connection 3 returned 4 01:29:19.529448 accept_connection 3 returned 0 01:29:20.579521 Read 104 bytes 01:29:20.579731 Process 104 bytes request 01:29:20.579828 Got request: GET http://usingproxy.com/ HTTP/1.1 01:29:20.579929 No test number in path 01:29:20.580040 [log/8/server.cmd] cmdfile says testnum 536 01:29:20.580235 - request found to be complete (536) 01:29:20.580504 Wrote request (104 bytes) input to log/8/server.input 01:29:20.580613 Send response test536 section 01:29:20.580841 connection close instruction "swsclose" found in response 01:29:20.581025 Response sent (212 bytes) and written to log/8/server.response 01:29:20.581093 instructed to close connection after server-reply 01:29:20.581157 ====> Client disconnect 0 01:29:22.808940 ====> Client connect 01:29:22.809070 accept_connection 3 returned 4 01:29:22.809149 accept_connection 3 returned 0 01:29:22.881448 Read 60 bytes 01:29:22.881638 Process 60 bytes request 01:29:22.881732 Got request: GET / HTTP/1.1 01:29:22.881801 No test number in path 01:29:22.881900 [log/8/server.cmd] cmdfile says testnum 536 01:29:22.882093 - request found to be complete (536) 01:29:22.882320 Wrote request (60 bytes) input to log/8/server.input 01:29:22.882410 Send response test536 section 01:29:22.882637 connection close instruction "swsclose" found in response 01:29:22.882830 Response sent (212 bytes) and written to log/8/server.response 01:29:22.882896 instructed to close connection after server-reply 01:29:22.882969 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 38194 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 536 === End of file server.cmd === Start of file server.input GET http://usingproxy.com/ HTTP/1.1 Host: usingproxy.com Accept: */* Proxy-Connection: Keep-Alive GET / HTTP/1.1 Host: goingdirect.com:39461 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 hello HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 hello === End of file server.response === Start of file stderr536 URL: http://127.0.0.1:39461 * Added goingdirect.com:39461:127.0.0.1 to DNS cache * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 37056 * using HTTP/1.x > GET http://usingproxy.com/ HTTP/1.1 Host: usingproxy.com Accept: */* Proxy-Connection: Keep-Alive < HTTP/1.1 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT < ETag: "21025-dc7-39462498" < Accept-Ranges: bytes < Content-Length: 6 < * Connection #0 to host 127.0.0.1:39461 left intact * Connection 0 seems to be dead * shutting down connection #0 * Hostname goingdirect.com was found in DNS cache * Trying 127.0.0.1:39461... * Established connection to goingdirect.com (127.0.0.1 port 39461) from 127.0.0.1 port 57002 * using HTTP/1.x > GET / HTTP/1.1 Host: goingdirect.com:39461 Accept: */* < HTTP/1.1 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-serCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind539 ./libtest/libtests lib539 ftp://127.0.0.1:39881/path/to/the/file/539 ftp://127.0.0.1:39881/path/to/the/file/5390001 > log/2/stdout539 2> log/2/stderr539 ver/fake < Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT < ETag: "21025-dc7-39462498" < Accept-Ranges: bytes < Content-Length: 6 < * Connection #1 to host goingdirect.com:39461 left intact Test ended with result 0 === End of file stderr536 === Start of file stdout536 hello This used the proxy hello This DID NOT use the proxy === End of file stdout536 === Start of file valgrind536 ==264492== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind536 prechecked ./libtest/libtests lib537 check test 0537...[HTTP GET with a HUGE number of file descriptors open] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind537 ./libtest/libtests lib537 http://127.0.0.1:46853/537 > log/3/stdout537 2> log/3/stderr537 valgrind ERROR ==264766== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 537 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind537 ./libtest/libtests lib537 http://127.0.0.1:46853/537 > log/3/stdout537 2> log/3/stderr537 === End of file commands.log === Start of file http_server.log 01:28:34.090135 ====> Client connect 01:28:34.090316 accept_connection 3 returned 4 01:28:34.090408 accept_connection 3 returned 0 01:28:34.099768 Read 93 bytes 01:28:34.099870 Process 93 bytes request 01:28:34.099994 Got request: GET /verifiedserver HTTP/1.1 01:28:34.100075 Are-we-friendly question received 01:28:34.100204 Wrote request (93 bytes) input to log/3/server.input 01:28:34.100307 Identifying ourselves as friends 01:28:34.100502 Response sent (57 bytes) and written to log/3/server.response 01:28:34.100574 special request received, no persistency 01:28:34.100641 ====> Client disconnect 0 01:29:20.339418 ====> Client connect 01:29:20.339568 accept_connection 3 returned 4 01:29:20.339674 accept_connection 3 returned 0 01:29:21.215228 Read 57 bytes 01:29:21.215418 Process 57 bytes request 01:29:21.215513 Got request: GET /537 HTTP/1.1 01:29:21.215586 Serve test number 537 part 0 01:29:21.215768 - request found to be complete (537) 01:29:21.216046 Wrote request (57 bytes) input to log/3/server.input 01:29:21.216153 Send response test537 section 01:29:21.219943 Response sent (267 bytes) and written to log/3/server.response 01:29:21.220017 => persistent connection request ended, awaits new request 01:29:22.719563 Connection closed by client 01:29:22.719790 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 59218 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file precheck-537 URL: check initial soft limit: 1024 initial hard limit: 524288 raising soft limit up to hard limit current soft limit: 524288 current hard limit: 524288 allocating memchunk 1048576 byte array initializing memchunk array allocating array for 524277 file descriptors initializing testfd array trying to open 524277 file descriptors 524277 file descriptors open Test ended with result 0 === End of file precheck-537 === Start of file server.cmd Testnum 537 === End of file server.cmd === Start of file server.input GET /537 HTTP/1.1 Host: 127.0.0.1:46853 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr537 URL: http://127.0.0.1:46853/537 initial soft limit: 1024 initial hard limit: 1024 allocating memchunk 1048576 byte array initializing memchunk array allocating array for 1013 file descriptors initializing testfd array trying to open 1013 file descriptors 1013 file descriptors open Test ended with result 0 === End of file stderr537 === Start of file stdout537 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file stdout537 === Start of file valgrind537 ==264766== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind537 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 540 in state 4 Runner 2 (id 185908) running test 539 in state 4 Runner 3 (id 185910) running test 546 in state 4 Runner 4 (id 185912) running test 542 in state 4 Runner 5 (id 185914) running test 541 in state 4 Runner 6 (id 185916) running test 544 in state 4 Runner 7 (id 185918) running test 543 in state 4 Runner 8 (id 185920) running test 545 in state 4 test 0539...[Two FTP fetches using different CURLOPT_FTP_FILEMETHOD] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind539 ./libtest/libtests lib539 ftp://127.0.0.1:39881/path/to/the/file/539 ftp://127.0.0.1:39881/path/to/the/file/5390001 > log/2/stdout539 2> log/2/stderr539 valgrind ERROR ==264953== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 539 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind539 ./libtest/libtests lib539 ftp://127.0.0.1:39881/path/to/the/file/539 ftp://127.0.0.1:39881/path/to/the/file/5390001 > log/2/stdout539 2> log/2/stderr539 === End of file commands.log === Start of file ftp_server.log 01:28:49.672247 ====> Client connect 01:28:49.673666 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:28:49.681890 < "USER anonymous" 01:28:49.683066 > "331 We are happy you popped in![CR][LF]" 01:28:49.683964 < "PASS ftp@example.com" 01:28:49.684841 > "230 Welcome you silly person[CR][LF]" 01:28:49.685311 < "PWD" 01:28:49.685694 > "257 "/" is current directory[CR][LF]" 01:28:49.687985 < "EPSV" 01:28:49.688188 ====> Passive DATA channel requested by client 01:28:49.688326 DATA sockfilt for passive data channel starting... 01:28:49.724816 DATA sockfilt for passive data channel started (pid 264944) 01:28:49.725926 DATA sockfilt for passive data channel listens on port 41227 01:28:49.726227 > "229 Entering Passive Mode (|||41227|)[CR][LF]" 01:28:49.726381 Client has been notified that DATA conn will be accepted on port 41227 01:28:49.729150 Client connects to port 41227 01:28:49.729352 ====> Client established passive DATA connection on port 41227 01:28:49.729912 < "TYPE I" 01:28:49.730170 > "200 I modify TYPE as you wanted[CR][LF]" 01:28:49.731348 < "SIZE verifiedserver" 01:28:49.731861 > "213 18[CR][LF]" 01:28:49.732883 < "RETR verifiedserver" 01:28:49.735095 > "150 Binary junk (18 bytes).[CR][LF]" 01:28:49.735595 =====> Closing passive DATA connection... 01:28:49.735744 Server disconnects passive DATA connection 01:28:49.736956 Server disconnected passive DATA connection 01:28:49.737110 DATA sockfilt for passive data channel quits (pid 264944) 01:28:49.743602 DATA sockfilt for passive data channel quit (pid 264944) 01:28:49.743766 =====> Closed passive DATA connection 01:28:49.744264 > "226 File transfer complete[CR][LF]" 01:28:49.781065 < "QUIT" 01:28:49.781353 > "221 bye bye baby[CR][LF]" 01:28:49.787494 MAIN sockfilt said DISC 01:28:49.787791 ====> Client disconnected 01:28:49.788032 Awaiting input 01:29:34.813052 ====> Client connect 01:29:34.813793 FTPD: Getting commands from log/2/server.cmd 01:29:34.814126 FTPD: run test case number: 539 01:29:34.815730 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:29:35.858450 < "USER anonymous" 01:29:35.859221 > "331 We are happy you popped in![CR][LF]" 01:29:35.949717 < "PASS ftp@example.com" 01:29:35.950408 > "230 Welcome you silly person[CR][LF]" 01:29:36.030035 < "PWD" 01:29:36.034143 > "257 "/" is current directory[CR][LF]" 01:29:36.215311 < "CWD path/to/the/file" 01:29:36.215742 > "250 CWD command successful.[CR][LF]" 01:29:36.276784 < "EPSV" 01:29:36.277081 ====> Passive DATA channel requested by client 01:29:36.277239 DATA sockfilt for passive data channel starting... 01:29:36.353823 DATA sockfilt for passive data channel started (pid 266187) 01:29:36.355018 DATA sockfilt for passive data channel listens on port 42871 01:29:36.355391 > "229 Entering Passive Mode (|||42871|)[CR][LF]" 01:29:36.355568 Client has been notified that DATA conn will be accepted on port 42871 01:29:36.534547 Client connects to port 42871 01:29:36.535113 ====> Client established passive DATA connection on port 42871 01:29:36.654867 < "TYPE I" 01:29:36.655288 > "200 I modify TYPE as you wanted[CR][LF]" 01:29:36.701430 < "SIZE 539" 01:29:36.703711 > "213 14[CR][LF]" 01:29:36.771230 < "RETR 539" 01:29:36.772434 > "150 Binary data connection for 539 () (14 bytes).[CR][LF]" 01:29:36.778260 =====> Closing passive DATA connection... 01:29:36.778446 Server disconnects passive DATA connection 01:29:36.778968 Server disconnected passive DATA connection 01:29:36.779141 DATA sockfilt for passive data channel quits (pid 266187) 01:29:36.782358 DATA sockfilt for passive data channel quit (pid 266187) 01:29:36.782535 =====> Closed passive DATA connection 01:29:36.782803 > "226 File transfer complete[CR][LF]" 01:29:38.751604 < "SYST" 01:29:38.752021 > "215 UNIX Type: L8[CR][LF]" 01:29:38.778708 < "CWD /" 01:29:38.779035 > "250 CWD command successful.[CR][LF]" 01:29:38.787579 < "EPSV" 01:29:38.787807 ====> Passive DATA channel requested by client 01:29:38.787956 DATA sockfilt for passive data channel starting... 01:29:38.829789 DATA sockfilt for passive data channel started (pid 266199) 01:29:38.830821 DATA sockfilt for passive data channel listens on port 36945 01:29:38.831147 > "229 Entering Passive Mode (|||36945|)[CR][LF]" 01:29:38.831317 Client has been notified that DATA conn will be accepted on port 36945 01:29:38.857244 Client connects to port 36945 01:29:38.857565 ====> Client established passive DATA connection on port 36945 01:29:38.884306 < "SIZE path/to/the/file/5390001" 01:29:38.890779 > "213 29[CR][LF]" 01:29:38.891800 < "RETR path/to/the/file/5390001" 01:29:38.892894 > "150 Binary data connection for 539 (1) (29 bytes).[CR][LF]" 01:29:38.893387 =====> Closing passive DATA connection... 01:29:38.893538 Server disconnects passive DATA connection 01:29:38.894234 Server disconnected passive DATA connection 01:29:38.894398 DATA sockfilt for passive data channel quits (pid 266199) 01:29:38.904384 DATA sockfilt for passive data channel quit (pid 266199) 01:29:38.904553 =====> Closed passive DATA connection 01:29:38.910780 > "226 File transfer complete[CR][LF]" 01:29:39.165445 < "QUIT" 01:29:39.165851 > "221 bye bye baby[CR][LF]" 01:29:39.287773 MAIN sockfilt said DISC 01:29:39.288216 ====> Client disconnected 01:29:39.288510 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:28:50.284173 ====> Client connect 01:28:50.285387 Received DATA (on stdin) 01:28:50.285457 > 160 bytes data, server => client 01:28:50.285574 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:28:50.285665 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:28:50.285745 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:28:50.293428 < 16 bytes data, client => server 01:28:50.293514 'USER anonymous\r\n' 01:28:50.294434 Received DATA (on stdin) 01:28:50.294496 > 33 bytes data, server => client 01:28:50.295578 '331 We are happy you popped in!\r\n' 01:28:50.295815 < 22 bytes data, client => server 01:28:50.295886 'PASS ftp@example.com\r\n' 01:28:50.296477 Received DATA (on stdin) 01:28:50.296541 > 30 bytes data, server => client 01:28:50.296701 '230 Welcome you silly person\r\n' 01:28:50.296908 < 5 bytes data, client => server 01:28:50.296967 'PWD\r\n' 01:28:50.297823 Received DATA (on stdin) 01:28:50.297887 > 30 bytes data, server => client 01:28:50.298179 '257 "/" is current directory\r\n' 01:28:50.299846 < 6 bytes data, client => server 01:28:50.299913 'EPSV\r\n' 01:28:50.338898 Received DATA (on stdin) 01:28:50.339025 > 39 bytes data, server => client 01:28:50.339109 '229 Entering Passive Mode (|||41227|)\r\n' 01:28:50.341131 < 8 bytes data, client => server 01:28:50.341202 'TYPE I\r\n' 01:28:50.342652 Received DATA (on stdin) 01:28:50.342714 > 33 bytes data, server => client 01:28:50.342788 '200 I modify TYPE as you wanted\r\n' 01:28:50.343194 < 21 bytes data, client => server 01:28:50.343267 'SIZE verifiedserver\r\n' 01:28:50.343909 Received DATA (on stdin) 01:28:50.343970 > 8 bytes data, server => client 01:28:50.344046 '213 18\r\n' 01:28:50.344745 < 21 bytes data, client => server 01:28:50.344814 'RETR verifiedserver\r\n' 01:28:50.345415 Received DATA (on stdin) 01:28:50.345478 > 29 bytes data, server => client 01:28:50.345653 '150 Binary junk (18 bytes).\r\n' 01:28:50.356265 Received DATA (on stdin) 01:28:50.356341 > 28 bytes data, server => client 01:28:50.356446 '226 File transfer complete\r\n' 01:28:50.392663 < 6 bytes data, client => server 01:28:50.392750 'QUIT\r\n' 01:28:50.393994 Received DATA (on stdin) 01:28:50.394061 > 18 bytes data, server => client 01:28:50.394128 '221 bye bye baby\r\n' 01:28:50.399694 ====> Client disconnect 01:28:50.399974 Received ACKD (on stdin) 01:29:35.424920 ====> Client connect 01:29:35.427296 Received DATA (on stdin) 01:29:35.427382 > 160 bytes data, server => client 01:29:35.427510 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:29:35.427609 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:29:35.427698 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:29:36.469485 < 16 bytes data, client => server 01:29:36.469699 'USER anonymous\r\n' 01:29:36.471025 Received DATA (on stdin) 01:29:36.471108 > 33 bytes data, server => client 01:29:36.471220 '331 We are happy you popped in!\r\n' 01:29:36.560888 < 22 bytes data, client => server 01:29:36.561039 'PASS ftp@example.com\r\n' 01:29:36.562237 Received DATA (on stdin) 01:29:36.562316 > 30 bytes data, server => client 01:29:36.562426 '230 Welcome you silly person\r\n' 01:29:36.641175 < 5 bytes data, client => server 01:29:36.641321 'PWD\r\n' 01:29:36.642586 Received DATA (on stdin) 01:29:36.642662 > 30 bytes data, server => client 01:29:36.646581 '257 "/" is current directory\r\n' 01:29:36.826249 < 22 bytes data, client => server 01:29:36.826442 'CWD path/to/the/file\r\n' 01:29:36.828427 Received DATA (on stdin) 01:29:36.828506 > 29 bytes data, server => client 01:29:36.828590 '250 CWD command successful.\r\n' 01:29:36.888065 < 6 bytes data, client => server 01:29:36.888188 'EPSV\r\n' 01:29:36.967508 Received DATA (on stdin) 01:29:36.967656 > 39 bytes data, server => client 01:29:36.967756 '229 Entering Passive Mode (|||42871|)\r\n' 01:29:37.266073 < 8 bytes data, client => server 01:29:37.266264 'TYPE I\r\n' 01:29:37.267414 Received DATA (on stdin) 01:29:37.267489 > 3CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind541 ./libtest/libtests lib541 ftp://127.0.0.1:33729/541 log/5/upload541 > log/5/stdout541 2> log/5/stderr541 3 bytes data, server => client 01:29:37.267578 '200 I modify TYPE as you wanted\r\n' 01:29:37.310078 < 10 bytes data, client => server 01:29:37.310236 'SIZE 539\r\n' 01:29:37.315853 Received DATA (on stdin) 01:29:37.315935 > 8 bytes data, server => client 01:29:37.316007 '213 14\r\n' 01:29:37.382553 < 10 bytes data, client => server 01:29:37.382726 'RETR 539\r\n' 01:29:37.384565 Received DATA (on stdin) 01:29:37.384641 > 51 bytes data, server => client 01:29:37.384736 '150 Binary data connection for 539 () (14 bytes).\r\n' 01:29:37.394940 Received DATA (on stdin) 01:29:37.395026 > 28 bytes data, server => client 01:29:37.395107 '226 File transfer complete\r\n' 01:29:39.360411 < 6 bytes data, client => server 01:29:39.360623 'SYST\r\n' 01:29:39.364150 Received DATA (on stdin) 01:29:39.364239 > 19 bytes data, server => client 01:29:39.364316 '215 UNIX Type: L8\r\n' 01:29:39.390321 < 7 bytes data, client => server 01:29:39.390410 'CWD /\r\n' 01:29:39.391155 Received DATA (on stdin) 01:29:39.391224 > 29 bytes data, server => client 01:29:39.391305 '250 CWD command successful.\r\n' 01:29:39.399308 < 6 bytes data, client => server 01:29:39.399383 'EPSV\r\n' 01:29:39.443769 Received DATA (on stdin) 01:29:39.443894 > 39 bytes data, server => client 01:29:39.443991 '229 Entering Passive Mode (|||36945|)\r\n' 01:29:39.495559 < 31 bytes data, client => server 01:29:39.495704 'SIZE path/to/the/file/5390001\r\n' 01:29:39.498352 Received DATA (on stdin) 01:29:39.498432 > 8 bytes data, server => client 01:29:39.498520 '213 29\r\n' 01:29:39.503427 < 31 bytes data, client => server 01:29:39.503517 'RETR path/to/the/file/5390001\r\n' 01:29:39.505881 Received DATA (on stdin) 01:29:39.505949 > 52 bytes data, server => client 01:29:39.506043 '150 Binary data connection for 539 (1) (29 bytes).\r\n' 01:29:39.516933 Received DATA (on stdin) 01:29:39.517008 > 28 bytes data, server => client 01:29:39.523177 '226 File transfer complete\r\n' 01:29:39.776516 < 6 bytes data, client => server 01:29:39.776688 'QUIT\r\n' 01:29:39.778232 Received DATA (on stdin) 01:29:39.778310 > 18 bytes data, server => client 01:29:39.778385 '221 bye bye baby\r\n' 01:29:39.899677 ====> Client disconnect 01:29:39.900872 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:28:49.329280 Running IPv4 version 01:28:49.335776 Listening on port 41227 01:28:49.336178 Wrote pid 264944 to log/2/server/ftp_sockdata.pid 01:28:49.336849 Received PING (on stdin) 01:28:49.337649 Received PORT (on stdin) 01:28:49.341347 ====> Client connect 01:28:49.348211 Received DATA (on stdin) 01:28:49.348457 > 18 bytes data, server => client 01:28:49.348771 'WE ROOLZ: 202189\r\n' 01:28:49.348986 Received DISC (on stdin) 01:28:49.349087 ====> Client forcibly disconnected 01:28:49.353058 Received QUIT (on stdin) 01:28:49.353139 quits 01:28:49.353579 ============> sockfilt quits 01:29:36.950762 Running IPv4 version 01:29:36.964405 Listening on port 42871 01:29:36.964904 Wrote pid 266187 to log/2/server/ftp_sockdata.pid 01:29:36.965657 Received PING (on stdin) 01:29:36.966501 Received PORT (on stdin) 01:29:37.146393 ====> Client connect 01:29:37.384885 Received DATA (on stdin) 01:29:37.385266 > 14 bytes data, server => client 01:29:37.389828 'file contents\n' 01:29:37.390807 Received DISC (on stdin) 01:29:37.390933 ====> Client forcibly disconnected 01:29:37.391490 Received QUIT (on stdin) 01:29:37.391567 quits 01:29:37.392092 ============> sockfilt quits 01:29:38.432797 Running IPv4 version 01:29:38.440253 Listening on port 36945 01:29:38.440731 Wrote pid 266199 to log/2/server/ftp_sockdata.pid 01:29:38.441488 Received PING (on stdin) 01:29:38.442375 Received PORT (on stdin) 01:29:38.469203 ====> Client connect 01:29:38.505297 Received DATA (on stdin) 01:29:38.505664 > 29 bytes data, server => client 01:29:38.506024 'contents for file number two\n' 01:29:38.506282 Received DISC (on stdin) 01:29:38.506405 ====> Client forcibly disconnected 01:29:38.509568 Received QUIT (on stdin) 01:29:38.509649 quits 01:29:38.510166 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 539 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD path/to/the/file EPSV TYPE I SIZE 539 RETR 539 SYST CWD / EPSV SIZE path/to/the/file/5390001 RETR path/to/the/file/5390001 QUIT === End of file server.input === Start of file stderr539 URL: ftp://127.0.0.1:39881/path/to/the/file/539 * Trying 127.0.0.1:39881... * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 43032 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' > CWD path/to/the/file < 250 CWD command successful. > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||42871|) * Connecting to 127.0.0.1 (127.0.0.1) port 42871 * Trying 127.0.0.1:42871... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 42871) from 127.0.0.1 port 57234 > TYPE I < 200 I modify TYPE as you wanted > SIZE 539 < 213 14 > RETR 539 < 150 Binary data connection for 539 () (14 bytes). * Maxdownload = -1 * Getting file with size: 14 * abort upload * Remembering we are in dir "path/to/the/file/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:39881 left intact * Reusing existing ftp: connection with host 127.0.0.1 > SYST < 215 UNIX Type: L8 > CWD / < 250 CWD command successful. > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||36945|) * Connecting to 127.0.0.1 (127.0.0.1) port 36945 * Trying 127.0.0.1:36945... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 36945) from 127.0.0.1 port 56292 > SIZE path/to/the/file/5390001 < 213 29 > RETR path/to/the/file/5390001 < 150 Binary data connection for 539 (1) (29 bytes). * Maxdownload = -1 * Getting file with size: 29 * abort upload * Remembering we are in dir "" < 226 File transfer complete * Connection #0 to host 127.0.0.1:39881 left intact Test ended with result 0 === End of file stderr539 === Start of file stdout539 file contents contents for file number two === End of file stdout539 === Start of file valgrind539 ==264953== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind539 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 540 in state 4 Runner 2 (id 185908) running test 547 in state 4 Runner 3 (id 185910) running test 546 in state 4 Runner 4 (id 185912) running test 542 in state 4 Runner 5 (id 185914) running test 541 in state 4 Runner 6 (id 185916) running test 544 in state 4 Runner 7 (id 185918) running test 543 in state 4 Runner 8 (id 185920) running test 545 in state 4 test 0541...[FTP upload and upload same file again without rewind] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind541 ./libtest/libtests lib541 ftp://127.0.0.1:33729/541 log/5/upload541 > log/5/stdout541 2> log/5/stderr541 valgrind ERROR ==265320== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 541 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind541 ./libtest/libtests lib541 ftp://127.0.0.1:33729/541 log/5/upload541 > log/5/stdout541 2> log/5/stderr541 === End of file commands.log === Start of file ftp_server.log 01:29:09.176836 ====> Client connect 01:29:09.178437 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:29:09.186081 < "USER anonymous" 01:29:09.186489 > "331 We are happy you popped in![CR][LF]" 01:29:09.188458 < "PASS ftp@example.com" 01:29:09.188724 > "230 Welcome you silly person[CR][LF]" 01:29:09.191040 < "PWD" 01:29:09.191296 > "257 "/" is current directory[CR][LF]" 01:29:09.193010 < "EPSV" 01:29:09.193200 ====> Passive DATA channel requested by client 01:29:09.193340 DATA sockfilt for passive data channel starting... 01:29:09.233878 DATA sockfilt for passive data channel started (pid 265314) 01:29:09.235269 DATA sockfilt for passive data channel listens on port 39613 01:29:09.238078 > "229 Entering Passive Mode (|||39613|)[CR][LF]" 01:29:09.238252 Client has been notified that DATA conn will be accepted on port 39613 01:29:09.238853 Client connects to port 39613 01:29:09.239058 ====> Client established passive DATA connection on port 39613 01:29:09.239631 < "TYPE I" 01:29:09.240602 > "200 I modify TYPE as you wanted[CR][LF]" 01:29:09.241099 < "SIZE verifiedserver" 01:29:09.242064 > "213 18[CR][LF]" 01:29:09.242541 < "RETR verifiedserver" 01:29:09.242813 > "150 Binary junk (18 bytes).[CR][LF]" 01:29:09.245720 =====> Closing passive DATA connection... 01:29:09.245874 Server disconnects passive DATA connection 01:29:09.246767 Server disconnected passive DATA connection 01:29:09.246918 DATA sockfilt for passive data channel quits (pid 265314) 01:29:09.251101 DATA sockfilt for passive data channel quit (pid 265314) 01:29:09.251295 =====> Closed passive DATA connection 01:29:09.251576 > "226 File transfer complete[CR][LF]" 01:29:09.291848 < "QUIT" 01:29:09.292243 > "221 bye bye baby[CR][LF]" 01:29:09.297533 MAIN sockfilt said DISC 01:29:09.297882 ====> Client disconnected 01:29:09.298168 Awaiting input 01:29:54.227279 ====> Client connect 01:29:54.228032 FTPD: Getting commands from log/5/server.cmd 01:29:54.228356 FTPD: run test case number: 541 01:29:54.230801 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:29:55.284158 < "USER anonymous" 01:29:55.287483 > "331 We are happy you popped in![CR][LF]" 01:29:55.380073 < "PASS ftp@example.com" 01:29:55.380550 > "230 Welcome you silly person[CR][LF]" 01:29:55.472366 < "PWD" 01:29:55.472797 > "257 "/" is current directory[CR][LF]" 01:29:55.665055 < "EPSV" 01:29:55.665380 ====> Passive DATA channel requested by client 01:29:55.665519 DATA sockfilt for passive data channel starting... 01:29:55.723133 DATA sockfilt for passive data channel started (pid 266394) 01:29:55.728061 DATA sockfilt for passive data channel listens on port 38703 01:29:55.728849 > "229 Entering Passive Mode (|||38703|)[CR][LF]" 01:29:55.729019 Client has been notified that DATA conn will be accepted on port 38703 01:29:55.924148 Client connects to port 38703 01:29:55.924693 ====> Client established passive DATA connection on port 38703 01:29:56.028912 < "TYPE I" 01:29:56.029305 > "200 I modify TYPE as you wanted[CR][LF]" 01:29:56.071062 < "STOR 541" 01:29:56.071341 STOR test number 541 in log/5/upload.541 01:29:56.074134 > "125 Gimme gimme gimme![CR][LF]" 01:29:56.385198 > Appending 49 bytes to file 01:29:56.874754 =====> Closing passive DATA connection... 01:29:56.875037 Server knows passive DATA connection is already disconnected 01:29:56.875211 DATA sockfilt for passive data channel quits (pid 266394) 01:29:56.884424 DATA sockfilt for passive data channel quit (pid 266394) 01:29:56.884636 =====> Closed passive DATA connection 01:29:56.884821 received 49 bytes upload 01:29:56.885134 > "226 File transfer complete[CR][LF]" 01:29:58.074271 < "EPSV" 01:29:58.074579 ====> Passive DATA channel requested by client 01:29:58.074721 DATA sockfilt for passive data channel starting... 01:29:58.117887 DATA sockfilt for passive data channel started (pid 266397) 01:29:58.119244 DATA sockfilt for passive data channel listens on port 40563 01:29:58.119591 > "229 Entering Passive Mode (|||40563|)[CR][LF]" 01:29:58.119762 Client has been notified that DATA conn will be accepted on port 40563 01:29:58.142387 Client connects to port 40563 01:29:58.142792 ====> Client established passive DATA connection on port 40563 01:29:58.167715 < "STOR 541" 01:29:58.167986 STOR test number 541 in log/5/upload.541 01:29:58.168244 > "125 Gimme gimme gimme![CR][LF]" 01:29:58.228200 =====> Closing passive DATA connection... 01:29:58.228484 Server knows passive DATA connection is already disconnected 01:29:58.228658 DATA sockfilt for passive data channel quits (pid 266397) 01:29:58.232208 DATA sockfilt for passive data channel quit (pid 266397) 01:29:58.232388 =====> Closed passive DATA connection 01:29:58.232568 received 0 bytes upload 01:29:58.232860 > "226 File transfer complete[CR][LF]" 01:29:58.454973 < "QUIT" 01:29:58.455395 > "221 bye bye baby[CR][LF]" 01:29:58.576987 MAIN sockfilt said DISC 01:29:58.580733 ====> Client disconnected 01:29:58.581065 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:29:09.788674 ====> Client connect 01:29:09.790057 Received DATA (on stdin) 01:29:09.790153 > 160 bytes data, server => client 01:29:09.790276 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:29:09.790366 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:29:09.790442 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:29:09.797263 < 16 bytes data, client => server 01:29:09.797407 'USER anonymous\r\n' 01:29:09.799673 Received DATA (on stdin) 01:29:09.799764 > 33 bytes data, server => client 01:29:09.799849 '331 We are happy you popped in!\r\n' 01:29:09.800301 < 22 bytes data, client => server 01:29:09.800382 'PASS ftp@example.com\r\n' 01:29:09.800934 Received DATA (on stdin) 01:29:09.800996 > 30 bytes data, server => client 01:29:09.801074 '230 Welcome you silly person\r\n' 01:29:09.801301 < 5 bytes data, client => server 01:29:09.801365 'PWD\r\n' 01:29:09.803513 Received DATA (on stdin) 01:29:09.803581 > 30 bytes data, server => client 01:29:09.803659 '257 "/" is current directory\r\n' 01:29:09.804947 < 6 bytes data, client => server 01:29:09.805006 'EPSV\r\n' 01:29:09.847786 Received DATA (on stdin) 01:29:09.847919 > 39 bytes data, server => client 01:29:09.848026 '229 Entering Passive Mode (|||39613|)\r\n' 01:29:09.850731 < 8 bytes data, client => server 01:29:09.850801 'TYPE I\r\n' 01:29:09.852097 Received DATA (on stdin) 01:29:09.852162 > 33 bytes data, server => client 01:29:09.852258 '200 I modify TYPE as you wanted\r\n' 01:29:09.852585 < 21 bytes data, client => server 01:29:09.852655 'SIZE verifiedserver\r\n' 01:29:09.853606 Received DATA (on stdin) 01:29:09.853671 > 8 bytes data, server => client 01:29:09.853752 '213 18\r\n' 01:29:09.854140 < 21 bytes data, client => server 01:29:09.854210 'RETR verifiedserver\r\n' 01:29:09.855716 Received DATA (on stdin) 01:29:09.855779 > 29 bytes data, server => client 01:29:09.855854 '150 Binary junk (18 bytes).\r\n' 01:29:09.864036 Received DATA (on stdin) 01:29:09.864132 > 28 bytes data, server => client 01:29:09.864215 '226 File transfer complete\r\n' 01:29:09.903072 < 6 bytes data, client => server 01:29:09.903204 'QUIT\r\n' 01:29:09.904851 Received DATA (on stdin) 01:29:09.904918 > 18 bytes data, server => client 01:29:09.904988 '221 bye bye baby\r\n' 01:29:09.909661 ====> Client disconnect 01:29:09.909996 Received ACKD (on stdin) 01:29:54.839116 ====> Client connect 01:29:54.842270 Received DATA (on stdin) 01:29:54.842375 > 160 bytes data, server => client 01:29:54.842512 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:29:54.842613 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:29:54.842701 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:29:55.895014 < 16 bytes data, client => server 01:29:55.895185 'USER anonymous\r\n' 01:29:55.896662 Received DATA (on stdin) 01:29:55.896747 > 33 bytes daCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind540 ./libtest/libtests lib540 http://test.remote.example.com/path/540 http://127.0.0.1:40641 silly:person custom.set.host.name > log/1/stdout540 2> log/1/stderr540 ta, server => client 01:29:55.899898 '331 We are happy you popped in!\r\n' 01:29:55.990950 < 22 bytes data, client => server 01:29:55.991138 'PASS ftp@example.com\r\n' 01:29:55.992934 Received DATA (on stdin) 01:29:55.993022 > 30 bytes data, server => client 01:29:55.993122 '230 Welcome you silly person\r\n' 01:29:56.083417 < 5 bytes data, client => server 01:29:56.083566 'PWD\r\n' 01:29:56.089535 Received DATA (on stdin) 01:29:56.089636 > 30 bytes data, server => client 01:29:56.089717 '257 "/" is current directory\r\n' 01:29:56.276038 < 6 bytes data, client => server 01:29:56.276231 'EPSV\r\n' 01:29:56.340532 Received DATA (on stdin) 01:29:56.340667 > 39 bytes data, server => client 01:29:56.340772 '229 Entering Passive Mode (|||38703|)\r\n' 01:29:56.639968 < 8 bytes data, client => server 01:29:56.640125 'TYPE I\r\n' 01:29:56.641647 Received DATA (on stdin) 01:29:56.641721 > 33 bytes data, server => client 01:29:56.641800 '200 I modify TYPE as you wanted\r\n' 01:29:56.682235 < 10 bytes data, client => server 01:29:56.682375 'STOR 541\r\n' 01:29:56.683681 Received DATA (on stdin) 01:29:56.683753 > 24 bytes data, server => client 01:29:56.686583 '125 Gimme gimme gimme!\r\n' 01:29:57.497187 Received DATA (on stdin) 01:29:57.497374 > 28 bytes data, server => client 01:29:57.497472 '226 File transfer complete\r\n' 01:29:58.685507 < 6 bytes data, client => server 01:29:58.685684 'EPSV\r\n' 01:29:58.731650 Received DATA (on stdin) 01:29:58.731802 > 39 bytes data, server => client 01:29:58.731894 '229 Entering Passive Mode (|||40563|)\r\n' 01:29:58.779107 < 10 bytes data, client => server 01:29:58.779239 'STOR 541\r\n' 01:29:58.780313 Received DATA (on stdin) 01:29:58.780382 > 24 bytes data, server => client 01:29:58.780457 '125 Gimme gimme gimme!\r\n' 01:29:58.844921 Received DATA (on stdin) 01:29:58.845058 > 28 bytes data, server => client 01:29:58.845142 '226 File transfer complete\r\n' 01:29:59.064712 < 6 bytes data, client => server 01:29:59.064865 'QUIT\r\n' 01:29:59.069526 Received DATA (on stdin) 01:29:59.069618 > 18 bytes data, server => client 01:29:59.069700 '221 bye bye baby\r\n' 01:29:59.188827 ====> Client disconnect 01:29:59.189610 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:29:09.837717 Running IPv4 version 01:29:09.844657 Listening on port 39613 01:29:09.845067 Wrote pid 265314 to log/5/server/ftp_sockdata.pid 01:29:09.845768 Received PING (on stdin) 01:29:09.846869 Received PORT (on stdin) 01:29:09.850951 ====> Client connect 01:29:09.855266 Received DATA (on stdin) 01:29:09.855526 > 18 bytes data, server => client 01:29:09.858509 'WE ROOLZ: 202313\r\n' 01:29:09.858732 Received DISC (on stdin) 01:29:09.858837 ====> Client forcibly disconnected 01:29:09.859321 Received QUIT (on stdin) 01:29:09.859389 quits 01:29:09.859843 ============> sockfilt quits 01:29:55.326666 Running IPv4 version 01:29:55.333647 Listening on port 38703 01:29:55.334126 Wrote pid 266394 to log/5/server/ftp_sockdata.pid 01:29:55.334903 Received PING (on stdin) 01:29:55.339526 Received PORT (on stdin) 01:29:55.533897 ====> Client connect 01:29:55.996792 < 49 bytes data, client => server 01:29:55.997319 'Contents\nof\na file\nto verify\nftp\nupload\n\n\nworks?\n' 01:29:56.483696 ====> Client disconnect 01:29:56.487590 Received ACKD (on stdin) 01:29:56.487884 Received QUIT (on stdin) 01:29:56.487972 quits 01:29:56.488479 ============> sockfilt quits 01:29:58.720971 Running IPv4 version 01:29:58.728388 Listening on port 40563 01:29:58.728871 Wrote pid 266397 to log/5/server/ftp_sockdata.pid 01:29:58.729664 Received PING (on stdin) 01:29:58.730700 Received PORT (on stdin) 01:29:58.754247 ====> Client connect 01:29:58.836492 ====> Client disconnect 01:29:58.841023 Received ACKD (on stdin) 01:29:58.841297 Received QUIT (on stdin) 01:29:58.841385 quits 01:29:58.841902 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 541 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I STOR 541 EPSV STOR 541 QUIT === End of file server.input === Start of file stderr541 URL: ftp://127.0.0.1:33729/541 * Trying 127.0.0.1:33729... * Established connection to 127.0.0.1 (127.0.0.1 port 33729) from 127.0.0.1 port 47046 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||38703|) * Connecting to 127.0.0.1 (127.0.0.1) port 38703 * Trying 127.0.0.1:38703... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 38703) from 127.0.0.1 port 39506 > TYPE I < 200 I modify TYPE as you wanted > STOR 541 < 125 Gimme gimme gimme * upload completely sent off: 49 bytes * Remembering we are in dir "" < 226 File transfer complete * Connection #0 to host 127.0.0.1:33729 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||40563|) * Connecting to 127.0.0.1 (127.0.0.1) port 40563 * Trying 127.0.0.1:40563... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 40563) from 127.0.0.1 port 43014 > STOR 541 < 125 Gimme gimme gimme * We are completely uploaded and fine * Remembering we are in dir "" < 226 File transfer complete * Connection #0 to host 127.0.0.1:33729 left intact Test ended with result 0 === End of file stderr541 === Start of file upload541 Contents of a file to verify ftp upload works? === End of file upload541 === Start of file valgrind541 ==265320== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind541 test 0540...[HTTP proxy auth Digest multi API reusing connection] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind540 ./libtest/libtests lib540 http://test.remote.example.com/path/540 http://127.0.0.1:40641 silly:person custom.set.host.name > log/1/stdout540 2> log/1/stderr540 valgrind ERROR ==265148== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 540 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind540 ./libtest/libtests lib540 http://test.remote.example.com/path/540 http://127.0.0.1:40641 silly:person custom.set.host.name > log/1/stdout540 2> log/1/stderr540 === End of file commands.log === Start of file http_server.log 01:29:03.868696 ====> Client connect 01:29:03.868853 accept_connection 3 returned 4 01:29:03.868929 accept_connection 3 returned 0 01:29:03.875186 Read 93 bytes 01:29:03.875272 Process 93 bytes request 01:29:03.875353 Got request: GET /verifiedserver HTTP/1.1 01:29:03.875412 Are-we-friendly question received 01:29:03.875521 Wrote request (93 bytes) input to log/1/server.input 01:29:03.875609 Identifying ourselves as friends 01:29:03.875756 Response sent (57 bytes) and written to log/1/server.response 01:29:03.875813 special request received, no persistency 01:29:03.875863 ====> Client disconnect 0 01:29:49.389689 ====> Client connect 01:29:49.389842 accept_connection 3 returned 4 01:29:49.389927 accept_connection 3 returned 0 01:29:50.713005 Read 127 bytes 01:29:50.713220 Process 127 bytes request 01:29:50.713327 Got request: GET http://test.remote.example.com/path/540 HTTP/1.1 01:29:50.713411 Serve test number 540 part 0 01:29:50.713575 enabled connection monitoring 01:29:50.713647 - request found to be complete (540) 01:29:50.713779 enabled connection moCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind543 ./libtest/libtests lib543 - > log/7/stdout543 2> log/7/stderr543 nitoring 01:29:50.713961 Wrote request (127 bytes) input to log/1/server.input 01:29:50.714079 Send response test540 section 01:29:50.714498 Response sent (175 bytes) and written to log/1/server.response 01:29:50.714565 => persistent connection request ended, awaits new request 01:29:59.012365 Read 271 bytes 01:29:59.012561 Process 271 bytes request 01:29:59.012652 Got request: GET http://test.remote.example.com/path/540 HTTP/1.1 01:29:59.012717 Serve test number 540 part 0 01:29:59.012945 enabled connection monitoring 01:29:59.013012 - request found to be complete (540) 01:29:59.013116 enabled connection monitoring 01:29:59.013187 Received Digest request, sending back data 1000 01:29:59.013274 Wrote request (271 bytes) input to log/1/server.input 01:29:59.013356 Send response test540 section 01:29:59.013691 Response sent (72 bytes) and written to log/1/server.response 01:29:59.013755 => persistent connection request ended, awaits new request 01:29:59.622214 Read 127 bytes 01:29:59.622389 Process 127 bytes request 01:29:59.622486 Got request: GET http://test.remote.example.com/path/540 HTTP/1.1 01:29:59.622557 Serve test number 540 part 0 01:29:59.622699 enabled connection monitoring 01:29:59.622760 - request found to be complete (540) 01:29:59.622879 enabled connection monitoring 01:29:59.623002 Wrote request (127 bytes) input to log/1/server.input 01:29:59.623090 Send response test540 section 01:29:59.623502 Response sent (175 bytes) and written to log/1/server.response 01:29:59.623571 => persistent connection request ended, awaits new request 01:29:59.726241 Read 271 bytes 01:29:59.726423 Process 271 bytes request 01:29:59.726523 Got request: GET http://test.remote.example.com/path/540 HTTP/1.1 01:29:59.726601 Serve test number 540 part 0 01:29:59.726772 enabled connection monitoring 01:29:59.726840 - request found to be complete (540) 01:29:59.726958 enabled connection monitoring 01:29:59.727036 Received Digest request, sending back data 1000 01:29:59.727130 Wrote request (271 bytes) input to log/1/server.input 01:29:59.727223 Send response test540 section 01:29:59.727597 Response sent (72 bytes) and written to log/1/server.response 01:29:59.727664 => persistent connection request ended, awaits new request 01:30:00.209665 Connection closed by client 01:30:00.209882 ====> Client disconnect 1 01:30:00.209981 Wrote request (13 bytes) input to log/1/server.input === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 45088 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd connection-monitor Testnum 540 === End of file server.cmd === Start of file server.input GET http://test.remote.example.com/path/540 HTTP/1.1 Host: custom.set.host.name Accept: */* Proxy-Connection: Keep-Alive GET http://test.remote.example.com/path/540 HTTP/1.1 Host: custom.set.host.name Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/540", response="ca507dcf189196b6a5374d3233042261" Accept: */* Proxy-Connection: Keep-Alive GET http://test.remote.example.com/path/540 HTTP/1.1 Host: custom.set.host.name Accept: */* Proxy-Connection: Keep-Alive GET http://test.remote.example.com/path/540 HTTP/1.1 Host: custom.set.host.name Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/540", response="ca507dcf189196b6a5374d3233042261" Accept: */* Proxy-Connection: Keep-Alive [DISCONNECT] === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345" Content-Length: 33 And you should ignore this data. HTTP/1.1 200 OK Content-Length: 21 Server: no Nice proxy auth sir HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345" Content-Length: 33 And you should ignore this data. HTTP/1.1 200 OK Content-Length: 21 Server: no Nice proxy auth sir === End of file server.response === Start of file stderr540 URL: http://test.remote.example.com/path/540 * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 50878 * using HTTP/1.x > GET http://test.remote.example.com/path/540 HTTP/1.1 Host: custom.set.host.name Accept: */* Proxy-Connection: Keep-Alive < HTTP/1.1 407 Authorization Required to proxy me my dear < Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345" < Content-Length: 33 * Ignoring the response-body * setting size while ignoring < * Connection #0 to host 127.0.0.1:40641 left intact * Issue another request to this URL: 'http://test.remote.example.com/path/540' * Reusing existing http: connection with proxy 127.0.0.1 * Proxy auth using Digest with user 'silly' > GET http://test.remote.example.com/path/540 HTTP/1.1 Host: custom.set.host.name Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/540", response="ca507dcf189196b6a5374d3233042261" Accept: */* Proxy-Connection: Keep-Alive < HTTP/1.1 200 OK < Content-Length: 21 < Server: no < * Connection #0 to host 127.0.0.1:40641 left intact R: 0 - No error lib540: now we do the request again * Reusing existing http: connection with proxy 127.0.0.1 > GET http://test.remote.example.com/path/540 HTTP/1.1 Host: custom.set.host.name Accept: */* Proxy-Connection: Keep-Alive < HTTP/1.1 407 Authorization Required to proxy me my dear < Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345" < Content-Length: 33 * Ignoring the response-body * setting size while ignoring < * Connection #0 to host 127.0.0.1:40641 left intact * Issue another request to this URL: 'http://test.remote.example.com/path/540' * Reusing existing http: connection with proxy 127.0.0.1 * Proxy auth using Digest with user 'silly' > GET http://test.remote.example.com/path/540 HTTP/1.1 Host: custom.set.host.name Proxy-Authorization: Digest username="silly", realm="weirdorealm", nonce="12345", uri="/path/540", response="ca507dcf189196b6a5374d3233042261" Accept: */* Proxy-Connection: Keep-Alive * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 21 < Server: no < * Connection #0 to host 127.0.0.1:40641 left intact R: 0 - No error Test ended with result 0 === End of file stderr540 === Start of file stdout540 HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345" Content-Length: 33 HTTP/1.1 200 OK Content-Length: 21 Server: no Nice proxy auth sir HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345" Content-Length: 33 HTTP/1.1 200 OK Content-Length: 21 Server: no Nice proxy auth sir === End of file stdout540 === Start of file valgrind540 ==265148== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind540 test 0543...[curl_easy_escape] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind543 ./libtest/libtests lib543 - > log/7/stdout543 2> log/7/stderr543 valgrind ERROR ==265596== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 543 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind543 ./libtest/libtests lib543 - > log/7/stdout543 2> lCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind542 ./libtest/libtests lib542 ftp://127.0.0.1:38207/542 > log/4/stdout542 2> log/4/stderr542 og/7/stderr543 === End of file commands.log === Start of file server.cmd Testnum 543 === End of file server.cmd === Start of file stderr543 URL: - Test ended with result 0 === End of file stderr543 === Start of file stdout543 %9C%26K%3DI%04%A1%01%E0%D8%7C%20%B7%EFS%29%FA%1DW%E1 IN: '' OUT: '' IN: ' 12' OUT: '%2012' === End of file stdout543 === Start of file valgrind543 ==265596== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind543 test 0542...[FTP a file with NOBODY yes and HEADER no] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind542 ./libtest/libtests lib542 ftp://127.0.0.1:38207/542 > log/4/stdout542 2> log/4/stderr542 valgrind ERROR ==265514== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 542 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind542 ./libtest/libtests lib542 ftp://127.0.0.1:38207/542 > log/4/stdout542 2> log/4/stderr542 === End of file commands.log === Start of file ftp_server.log 01:29:23.362995 ====> Client connect 01:29:23.363997 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:29:23.372519 < "USER anonymous" 01:29:23.373176 > "331 We are happy you popped in![CR][LF]" 01:29:23.374800 < "PASS ftp@example.com" 01:29:23.375330 > "230 Welcome you silly person[CR][LF]" 01:29:23.375979 < "PWD" 01:29:23.376391 > "257 "/" is current directory[CR][LF]" 01:29:23.378492 < "EPSV" 01:29:23.378696 ====> Passive DATA channel requested by client 01:29:23.378840 DATA sockfilt for passive data channel starting... 01:29:23.421366 DATA sockfilt for passive data channel started (pid 265505) 01:29:23.422853 DATA sockfilt for passive data channel listens on port 39887 01:29:23.423203 > "229 Entering Passive Mode (|||39887|)[CR][LF]" 01:29:23.423372 Client has been notified that DATA conn will be accepted on port 39887 01:29:23.429259 Client connects to port 39887 01:29:23.429694 ====> Client established passive DATA connection on port 39887 01:29:23.430679 < "TYPE I" 01:29:23.431276 > "200 I modify TYPE as you wanted[CR][LF]" 01:29:23.431982 < "SIZE verifiedserver" 01:29:23.432517 > "213 18[CR][LF]" 01:29:23.433332 < "RETR verifiedserver" 01:29:23.433896 > "150 Binary junk (18 bytes).[CR][LF]" 01:29:23.434418 =====> Closing passive DATA connection... 01:29:23.434594 Server disconnects passive DATA connection 01:29:23.435836 Server disconnected passive DATA connection 01:29:23.436003 DATA sockfilt for passive data channel quits (pid 265505) 01:29:23.439483 DATA sockfilt for passive data channel quit (pid 265505) 01:29:23.439677 =====> Closed passive DATA connection 01:29:23.440232 > "226 File transfer complete[CR][LF]" 01:29:23.482851 < "QUIT" 01:29:23.483216 > "221 bye bye baby[CR][LF]" 01:29:23.487417 MAIN sockfilt said DISC 01:29:23.487634 ====> Client disconnected 01:29:23.487907 Awaiting input 01:30:08.685642 ====> Client connect 01:30:08.686406 FTPD: Getting commands from log/4/server.cmd 01:30:08.686770 FTPD: run test case number: 542 01:30:08.687838 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:30:09.749366 < "USER anonymous" 01:30:09.749794 > "331 We are happy you popped in![CR][LF]" 01:30:09.839333 < "PASS ftp@example.com" 01:30:09.839749 > "230 Welcome you silly person[CR][LF]" 01:30:09.917916 < "PWD" 01:30:09.918356 > "257 "/" is current directory[CR][LF]" 01:30:10.112582 < "TYPE I" 01:30:10.112993 > "200 I modify TYPE as you wanted[CR][LF]" 01:30:10.171978 < "SIZE 542" 01:30:10.177750 > "213 51[CR][LF]" 01:30:10.341934 < "REST 0" 01:30:10.347525 > "350 Yeah yeah we set it there for you[CR][LF]" 01:30:10.347849 Set REST position to 0 01:30:11.202350 < "QUIT" 01:30:11.202762 > "221 bye bye baby[CR][LF]" 01:30:11.450628 MAIN sockfilt said DISC 01:30:11.451166 ====> Client disconnected 01:30:11.451455 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:29:22.974852 ====> Client connect 01:29:22.979630 Received DATA (on stdin) 01:29:22.979738 > 160 bytes data, server => client 01:29:22.979846 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:29:22.979946 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:29:22.980037 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:29:22.983873 < 16 bytes data, client => server 01:29:22.983976 'USER anonymous\r\n' 01:29:22.985060 Received DATA (on stdin) 01:29:22.985135 > 33 bytes data, server => client 01:29:22.985245 '331 We are happy you popped in!\r\n' 01:29:22.986496 < 22 bytes data, client => server 01:29:22.986583 'PASS ftp@example.com\r\n' 01:29:22.987237 Received DATA (on stdin) 01:29:22.987304 > 30 bytes data, server => client 01:29:22.987408 '230 Welcome you silly person\r\n' 01:29:22.987643 < 5 bytes data, client => server 01:29:22.987709 'PWD\r\n' 01:29:22.988423 Received DATA (on stdin) 01:29:22.988489 > 30 bytes data, server => client 01:29:22.988805 '257 "/" is current directory\r\n' 01:29:22.990223 < 6 bytes data, client => server 01:29:22.990295 'EPSV\r\n' 01:29:23.035842 Received DATA (on stdin) 01:29:23.035984 > 39 bytes data, server => client 01:29:23.036086 '229 Entering Passive Mode (|||39887|)\r\n' 01:29:23.042173 < 8 bytes data, client => server 01:29:23.042289 'TYPE I\r\n' 01:29:23.043152 Received DATA (on stdin) 01:29:23.043237 > 33 bytes data, server => client 01:29:23.043339 '200 I modify TYPE as you wanted\r\n' 01:29:23.043718 < 21 bytes data, client => server 01:29:23.043793 'SIZE verifiedserver\r\n' 01:29:23.044462 Received DATA (on stdin) 01:29:23.044527 > 8 bytes data, server => client 01:29:23.044610 '213 18\r\n' 01:29:23.045039 < 21 bytes data, client => server 01:29:23.045123 'RETR verifiedserver\r\n' 01:29:23.045805 Received DATA (on stdin) 01:29:23.045873 > 29 bytes data, server => client 01:29:23.045979 '150 Binary junk (18 bytes).\r\n' 01:29:23.052103 Received DATA (on stdin) 01:29:23.052196 > 28 bytes data, server => client 01:29:23.052300 '226 File transfer complete\r\n' 01:29:23.094049 < 6 bytes data, client => server 01:29:23.094205 'QUIT\r\n' 01:29:23.095647 Received DATA (on stdin) 01:29:23.095719 > 18 bytes data, server => client 01:29:23.095794 '221 bye bye baby\r\n' 01:29:23.096383 ====> Client disconnect 01:29:23.100295 Received ACKD (on stdin) 01:30:08.297435 ====> Client connect 01:30:08.300189 Received DATA (on stdin) 01:30:08.300305 > 160 bytes data, server => client 01:30:08.300416 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:30:08.300516 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:30:08.300606 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:30:09.360198 < 16 bytes data, client => server 01:30:09.360396 'USER anonymous\r\n' 01:30:09.362839 Received DATA (on stdin) 01:30:09.362928 > 33 bytes data, server => client 01:30:09.363018 '331 We are happy you popped in!\r\n' 01:30:09.450266 < 22 bytes data, client => server 01:30:09.450461 'PASS ftp@example.com\r\n' 01:30:09.452875 Received DATA (on stdin) 01:30:09.452964 > 30 bytes data, server => client 01:30:09.453055 '230 Welcome you silly person\r\n' 01:30:09.525595 < 5 bytes data, client => server 01:30:09.525751 'PWD\r\n' 01:30:09.530670 Received DATA (on stdin) 01:30:09.530755 > 30 bytes data, server => client 01:30:09.530846 '257 "/" is current directory\r\n' 01:30:09.723536 < 8 bytes data, client => server 01:30:09.723729 'TYPE I\r\n' 01:30:09.725323 Received DATA (on stdin) 01:30:09.725404 > 33 bytes data, server => client 01:30:09.725495 '200 I modify TYPE as you wantedCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind544 ./libtest/libtests lib544 http://127.0.0.1:38277/544 > log/6/stdout544 2> log/6/stderr544 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind545 ./libtest/libtests lib544 http://127.0.0.1:39461/545 > log/8/stdout545 2> log/8/stderr545 \r\n' 01:30:09.782978 < 10 bytes data, client => server 01:30:09.783140 'SIZE 542\r\n' 01:30:09.790163 Received DATA (on stdin) 01:30:09.790267 > 8 bytes data, server => client 01:30:09.790344 '213 51\r\n' 01:30:09.952879 < 8 bytes data, client => server 01:30:09.953053 'REST 0\r\n' 01:30:09.954427 Received DATA (on stdin) 01:30:09.954509 > 39 bytes data, server => client 01:30:09.960183 '350 Yeah yeah we set it there for you\r\n' 01:30:10.813305 < 6 bytes data, client => server 01:30:10.813501 'QUIT\r\n' 01:30:10.815084 Received DATA (on stdin) 01:30:10.815157 > 18 bytes data, server => client 01:30:10.815232 '221 bye bye baby\r\n' 01:30:11.062403 ====> Client disconnect 01:30:11.063744 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:29:23.024068 Running IPv4 version 01:29:23.031932 Listening on port 39887 01:29:23.032388 Wrote pid 265505 to log/4/server/ftp_sockdata.pid 01:29:23.033175 Received PING (on stdin) 01:29:23.034325 Received PORT (on stdin) 01:29:23.041207 ====> Client connect 01:29:23.046995 Received DATA (on stdin) 01:29:23.047306 > 18 bytes data, server => client 01:29:23.047687 'WE ROOLZ: 201673\r\n' 01:29:23.047930 Received DISC (on stdin) 01:29:23.048455 ====> Client forcibly disconnected 01:29:23.048634 Received QUIT (on stdin) 01:29:23.048707 quits 01:29:23.049224 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 542 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD TYPE I SIZE 542 REST 0 QUIT === End of file server.input === Start of file stderr542 URL: ftp://127.0.0.1:38207/542 * Trying 127.0.0.1:38207... * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 55230 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' * Request has same path as previous transfer > TYPE I < 200 I modify TYPE as you wanted > SIZE 542 < 213 51 > REST 0 < 350 Yeah yeah we set it there for you * Remembering we are in dir "" * Connection #0 to host 127.0.0.1:38207 left intact Test ended with result 0 === End of file stderr542 === Start of file stdout542 Content-Length: 51 Accept-ranges: bytes === End of file stdout542 === Start of file valgrind542 ==265514== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind542 test 0544...[HTTP POST text data using CURLOPT_COPYPOSTFIELDS] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind544 ./libtest/libtests lib544 http://127.0.0.1:38277/544 > log/6/stdout544 2> log/6/stderr544 valgrind ERROR ==265774== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 544 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind544 ./libtest/libtests lib544 http://127.0.0.1:38277/544 > log/6/stdout544 2> log/6/stderr544 === End of file commands.log === Start of file http_server.log 01:29:26.122607 ====> Client connect 01:29:26.122819 accept_connection 3 returned 4 01:29:26.122909 accept_connection 3 returned 0 01:29:26.123013 Read 93 bytes 01:29:26.123093 Process 93 bytes request 01:29:26.123199 Got request: GET /verifiedserver HTTP/1.1 01:29:26.123277 Are-we-friendly question received 01:29:26.123392 Wrote request (93 bytes) input to log/6/server.input 01:29:26.123482 Identifying ourselves as friends 01:29:26.123664 Response sent (57 bytes) and written to log/6/server.response 01:29:26.123728 special request received, no persistency 01:29:26.123787 ====> Client disconnect 0 01:30:11.577473 ====> Client connect 01:30:11.577620 accept_connection 3 returned 4 01:30:11.577698 accept_connection 3 returned 0 01:30:12.694828 Read 130 bytes 01:30:12.695024 Process 130 bytes request 01:30:12.695114 Got request: POST /544 HTTP/1.1 01:30:12.695184 Serve test number 544 part 0 01:30:12.695340 - request found to be complete (544) 01:30:12.695477 Found Content-Length: 4 in the request 01:30:12.695644 Wrote request (130 bytes) input to log/6/server.input 01:30:12.695746 Send response test544 section 01:30:12.695933 connection close instruction "swsclose" found in response 01:30:12.696102 Response sent (113 bytes) and written to log/6/server.response 01:30:12.696184 instructed to close connection after server-reply 01:30:12.696239 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 53174 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 544 === End of file server.cmd === Start of file server.input POST /544 HTTP/1.1 Host: 127.0.0.1:38277 Accept: */* Content-Length: 4 Content-Type: application/x-www-form-urlencoded This === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 3 OK === End of file server.response === Start of file stderr544 URL: http://127.0.0.1:38277/544 * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 36122 * using HTTP/1.x > POST /544 HTTP/1.1 Host: 127.0.0.1:38277 Accept: */* Content-Length: 4 Content-Type: application/x-www-form-urlencoded * upload completely sent off: 4 bytes < HTTP/1.1 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Content-Length: 3 < * Connection #0 to host 127.0.0.1:38277 left intact Test ended with result 0 === End of file stderr544 === Start of file stdout544 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 3 OK === End of file stdout544 === Start of file valgrind544 ==265774== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind544 test 0545...[HTTP POST binary with embedded zero and no trailing zero] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind545 ./libtest/libtests lib544 http://127.0.0.1:39461/545 > log/8/stdout545 2> log/8/stderr545 valgrind ERROR ==265953== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 545 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind545 ./libtest/libtests lib544 http://127.0.0.1:39461/545 > log/8/stdout545 2> log/8/stderr545 === End of file commands.log === Start of file http_server.log 01:29:27.657980 ====> Client connect 01:29:27.658146 accept_connection 3 returned 4 01:29:27.658218 accept_connection 3 returned 0 01:29:27.665595 Read 93 bytes 01:29:27.665695 Process 93 bytes request 01:29:27.665783 Got request: GET /verifiedserver HTTP/1.1 01:29:27.665850 Are-we-friendly question received 01:29:27.665968 Wrote request (93 bytes) input to log/8/server.input 01:29:27.666059 Identifying ourselves as friends 01:29:27.666220 Response senCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind546 ./libtest/libtests lib533 ftp://127.0.0.1:37331/path/546 ftp://127.0.0.1:37331/path/546 > log/3/stdout546 2> log/3/stderr546 t (57 bytes) and written to log/8/server.response 01:29:27.666299 special request received, no persistency 01:29:27.666356 ====> Client disconnect 0 01:30:13.403281 ====> Client connect 01:30:13.403431 accept_connection 3 returned 4 01:30:13.403527 accept_connection 3 returned 0 01:30:14.516494 Read 173 bytes 01:30:14.516685 Process 173 bytes request 01:30:14.516781 Got request: POST /545 HTTP/1.1 01:30:14.516852 Serve test number 545 part 0 01:30:14.517021 - request found to be complete (545) 01:30:14.517167 Found Content-Length: 46 in the request 01:30:14.517326 Wrote request (173 bytes) input to log/8/server.input 01:30:14.517434 Send response test545 section 01:30:14.517635 connection close instruction "swsclose" found in response 01:30:14.517784 Response sent (113 bytes) and written to log/8/server.response 01:30:14.517850 instructed to close connection after server-reply 01:30:14.517911 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 57014 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 545 === End of file server.cmd === Start of file server.input POST /545 HTTP/1.1 Host: 127.0.0.1:39461 Accept: */* Content-Length: 46 Content-Type: application/x-www-form-urlencoded This is test binary data with an embedded NUL === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 3 OK === End of file server.response === Start of file stderr545 URL: http://127.0.0.1:39461/545 * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 51816 * using HTTP/1.x > POST /545 HTTP/1.1 Host: 127.0.0.1:39461 Accept: */* Content-Length: 46 Content-Type: application/x-www-form-urlencoded * upload completely sent off: 46 bytes < HTTP/1.1 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Content-Length: 3 < * Connection #0 to host 127.0.0.1:39461 left intact Test ended with result 0 === End of file stderr545 === Start of file stdout545 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 3 OK === End of file stdout545 === Start of file valgrind545 ==265953== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind545 test 0546...[FTP RETR a non-existing file then a found one using the multi interface] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind546 ./libtest/libtests lib533 ftp://127.0.0.1:37331/path/546 ftp://127.0.0.1:37331/path/546 > log/3/stdout546 2> log/3/stderr546 valgrind ERROR ==265967== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 546 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind546 ./libtest/libtests lib533 ftp://127.0.0.1:37331/path/546 ftp://127.0.0.1:37331/path/546 > log/3/stdout546 2> log/3/stderr546 === End of file commands.log === Start of file ftp_server.log 01:29:28.114720 ====> Client connect 01:29:28.115729 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:29:28.128436 < "USER anonymous" 01:29:28.128881 > "331 We are happy you popped in![CR][LF]" 01:29:28.130207 < "PASS ftp@example.com" 01:29:28.131296 > "230 Welcome you silly person[CR][LF]" 01:29:28.131963 < "PWD" 01:29:28.132297 > "257 "/" is current directory[CR][LF]" 01:29:28.135183 < "EPSV" 01:29:28.135415 ====> Passive DATA channel requested by client 01:29:28.135558 DATA sockfilt for passive data channel starting... 01:29:28.178082 DATA sockfilt for passive data channel started (pid 265940) 01:29:28.179488 DATA sockfilt for passive data channel listens on port 36389 01:29:28.179844 > "229 Entering Passive Mode (|||36389|)[CR][LF]" 01:29:28.180016 Client has been notified that DATA conn will be accepted on port 36389 01:29:28.185661 Client connects to port 36389 01:29:28.185924 ====> Client established passive DATA connection on port 36389 01:29:28.187027 < "TYPE I" 01:29:28.187605 > "200 I modify TYPE as you wanted[CR][LF]" 01:29:28.188397 < "SIZE verifiedserver" 01:29:28.188969 > "213 18[CR][LF]" 01:29:28.189816 < "RETR verifiedserver" 01:29:28.190382 > "150 Binary junk (18 bytes).[CR][LF]" 01:29:28.190916 =====> Closing passive DATA connection... 01:29:28.191092 Server disconnects passive DATA connection 01:29:28.192340 Server disconnected passive DATA connection 01:29:28.192508 DATA sockfilt for passive data channel quits (pid 265940) 01:29:28.197458 DATA sockfilt for passive data channel quit (pid 265940) 01:29:28.197718 =====> Closed passive DATA connection 01:29:28.198028 > "226 File transfer complete[CR][LF]" 01:29:28.243014 < "QUIT" 01:29:28.243440 > "221 bye bye baby[CR][LF]" 01:29:28.247513 MAIN sockfilt said DISC 01:29:28.247871 ====> Client disconnected 01:29:28.248158 Awaiting input 01:30:12.998783 ====> Client connect 01:30:12.999556 FTPD: Getting commands from log/3/server.cmd 01:30:13.000367 FTPD: set custom reply for RETR command 01:30:13.000659 FTPD: blank custom reply for RETR command after 1 uses 01:30:13.001662 FTPD: set custom reply for SIZE command 01:30:13.001920 FTPD: blank custom reply for SIZE command after 1 uses 01:30:13.002180 FTPD: run test case number: 546 01:30:13.008197 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:30:14.174366 < "USER anonymous" 01:30:14.174779 > "331 We are happy you popped in![CR][LF]" 01:30:14.265060 < "PASS ftp@example.com" 01:30:14.265819 > "230 Welcome you silly person[CR][LF]" 01:30:14.348310 < "PWD" 01:30:14.354150 > "257 "/" is current directory[CR][LF]" 01:30:14.544810 < "CWD path" 01:30:14.545223 > "250 CWD command successful.[CR][LF]" 01:30:14.607187 < "EPSV" 01:30:14.607523 ====> Passive DATA channel requested by client 01:30:14.607676 DATA sockfilt for passive data channel starting... 01:30:14.689974 DATA sockfilt for passive data channel started (pid 266886) 01:30:14.691116 DATA sockfilt for passive data channel listens on port 44115 01:30:14.691459 > "229 Entering Passive Mode (|||44115|)[CR][LF]" 01:30:14.691632 Client has been notified that DATA conn will be accepted on port 44115 01:30:14.860818 Client connects to port 44115 01:30:14.861406 ====> Client established passive DATA connection on port 44115 01:30:14.969611 < "TYPE I" 01:30:14.970030 > "200 I modify TYPE as you wanted[CR][LF]" 01:30:15.014946 < "SIZE 546" 01:30:15.015937 > "500 Can't check for file existence[CR][LF]" 01:30:15.063777 < "RETR 546" 01:30:15.067497 > "550 the file doesn't exist[CR][LF]" 01:30:17.515582 < "EPSV" 01:30:17.517184 DATA sockfilt for passive data channel killed 01:30:17.517438 ====> Passive DATA channel requested by client 01:30:17.517606 DATA sockfilt for passive data channel starting... 01:30:17.560584 DATA sockfilt for passive data channel started (pid 267016) 01:30:17.561690 DATA sockfilt for passive data channel listens on port 41781 01:30:17.562066 > "229 Entering Passive Mode (|||41781|)[CR][LF]" 01:30:17.562249 Client has been notified that DATA conn will be accepted on port 41781 01:30:17.580996 Client connects to port 41781 01:30:17.581370 ====> Client established passive DATA connection on port 41781 01:30:17.605198 < "SIZE 546" 01:30:17.608311 > "213 51[CR][LF]" 01:30:17.647758 < "RETR 546" 01:30:17.649282 > "150 Binary data connection for 546 () (51 bytes).[CR][LF]" 01:30:17.649937 =====> Closing passive DATA connection... 01:30:17.650099 Server disconnects passive DATA connection 01:30:17.657422 Server disconnected passive DATA connection 01:30:17.657647 DATA sockfilt for passive data channel quits (pid 267016) 01:30:17.660871 DATA sockfilt for passive data channel quit (pid 267016) 01:30:17.661046 =====> Closed passive DATA connection 01:30:17.661326 > "226 File transfer complete[CR][LF]" 01:30:18.731870 < "QUIT" 01:30:18.734198 > "221 bye bye baby[CR][LF]" 01:30:18.917179 MAIN sockfilt said DISC 01:30:18.917762 ====> Client disconnected 01:30:18.918119 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:29:27.726503 ====> Client connect 01:29:27.727798 Received DATA (on stdin) 01:29:27.727913 > 160 bytes data, server => client 01:29:27.728046 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:29:27.728170 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:29:27.728281 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:29:27.737778 < 16 bytes data, client => server 01:29:27.737948 'USER anonymous\r\n' 01:29:27.741042 Received DATA (on stdin) 01:29:27.741144 > 33 bytes data, server => client 01:29:27.741253 '331 We are happy you popped in!\r\n' 01:29:27.741720 < 22 bytes data, client => server 01:29:27.741812 'PASS ftp@example.com\r\n' 01:29:27.742690 Received DATA (on stdin) 01:29:27.742773 > 30 bytes data, server => client 01:29:27.742898 '230 Welcome you silly person\r\n' 01:29:27.743217 < 5 bytes data, client => server 01:29:27.743343 'PWD\r\n' 01:29:27.744815 Received DATA (on stdin) 01:29:27.744894 > 30 bytes data, server => client 01:29:27.744993 '257 "/" is current directory\r\n' 01:29:27.746733 < 6 bytes data, client => server 01:29:27.746821 'EPSV\r\n' 01:29:27.792481 Received DATA (on stdin) 01:29:27.792623 > 39 bytes data, server => client 01:29:27.792718 '229 Entering Passive Mode (|||36389|)\r\n' 01:29:27.798573 < 8 bytes data, client => server 01:29:27.798667 'TYPE I\r\n' 01:29:27.799470 Received DATA (on stdin) 01:29:27.799538 > 33 bytes data, server => client 01:29:27.799654 '200 I modify TYPE as you wanted\r\n' 01:29:27.800075 < 21 bytes data, client => server 01:29:27.800155 'SIZE verifiedserver\r\n' 01:29:27.800887 Received DATA (on stdin) 01:29:27.800953 > 8 bytes data, server => client 01:29:27.801039 '213 18\r\n' 01:29:27.801541 < 21 bytes data, client => server 01:29:27.801615 'RETR verifiedserver\r\n' 01:29:27.802283 Received DATA (on stdin) 01:29:27.802349 > 29 bytes data, server => client 01:29:27.802454 '150 Binary junk (18 bytes).\r\n' 01:29:27.810172 Received DATA (on stdin) 01:29:27.810285 > 28 bytes data, server => client 01:29:27.810386 '226 File transfer complete\r\n' 01:29:27.854509 < 6 bytes data, client => server 01:29:27.854672 'QUIT\r\n' 01:29:27.855863 Received DATA (on stdin) 01:29:27.855934 > 18 bytes data, server => client 01:29:27.856008 '221 bye bye baby\r\n' 01:29:27.859599 ====> Client disconnect 01:29:27.859932 Received ACKD (on stdin) 01:30:12.610565 ====> Client connect 01:30:12.619502 Received DATA (on stdin) 01:30:12.619654 > 160 bytes data, server => client 01:30:12.619806 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:30:12.619915 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:30:12.620011 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:30:13.785163 < 16 bytes data, client => server 01:30:13.785364 'USER anonymous\r\n' 01:30:13.787091 Received DATA (on stdin) 01:30:13.787172 > 33 bytes data, server => client 01:30:13.787265 '331 We are happy you popped in!\r\n' 01:30:13.875985 < 22 bytes data, client => server 01:30:13.876163 'PASS ftp@example.com\r\n' 01:30:13.877528 Received DATA (on stdin) 01:30:13.877603 > 30 bytes data, server => client 01:30:13.877718 '230 Welcome you silly person\r\n' 01:30:13.959300 < 5 bytes data, client => server 01:30:13.959476 'PWD\r\n' 01:30:13.960773 Received DATA (on stdin) 01:30:13.960848 > 30 bytes data, server => client 01:30:13.966534 '257 "/" is current directory\r\n' 01:30:14.155676 < 10 bytes data, client => server 01:30:14.155884 'CWD path\r\n' 01:30:14.157604 Received DATA (on stdin) 01:30:14.157683 > 29 bytes data, server => client 01:30:14.157770 '250 CWD command successful.\r\n' 01:30:14.218146 < 6 bytes data, client => server 01:30:14.218326 'EPSV\r\n' 01:30:14.303957 Received DATA (on stdin) 01:30:14.304091 > 39 bytes data, server => client 01:30:14.304183 '229 Entering Passive Mode (|||44115|)\r\n' 01:30:14.582335 < 8 bytes data, client => server 01:30:14.582478 'TYPE I\r\n' 01:30:14.582561 Received DATA (on stdin) 01:30:14.582625 > 33 bytes data, server => client 01:30:14.582713 '200 I modify TYPE as you wanted\r\n' 01:30:14.624951 < 10 bytes data, client => server 01:30:14.625129 'SIZE 546\r\n' 01:30:14.630952 Received DATA (on stdin) 01:30:14.631086 > 36 bytes data, server => client 01:30:14.631181 '500 Can't check for file existence\r\n' 01:30:14.674812 < 10 bytes data, client => server 01:30:14.674955 'RETR 546\r\n' 01:30:14.676248 Received DATA (on stdin) 01:30:14.676337 > 28 bytes data, server => client 01:30:14.679886 '550 the file doesn't exist\r\n' 01:30:17.126496 < 6 bytes data, client => server 01:30:17.126668 'EPSV\r\n' 01:30:17.174080 Received DATA (on stdin) 01:30:17.174233 > 39 bytes data, server => client 01:30:17.174327 '229 Entering Passive Mode (|||41781|)\r\n' 01:30:17.216354 < 10 bytes data, client => server 01:30:17.216528 'SIZE 546\r\n' 01:30:17.219995 Received DATA (on stdin) 01:30:17.220104 > 8 bytes data, server => client 01:30:17.220206 '213 51\r\n' 01:30:17.258731 < 10 bytes data, client => server 01:30:17.258879 'RETR 546\r\n' 01:30:17.262364 Received DATA (on stdin) 01:30:17.262440 > 51 bytes data, server => client 01:30:17.262533 '150 Binary data connection for 546 () (51 bytes).\r\n' 01:30:17.273628 Received DATA (on stdin) 01:30:17.273718 > 28 bytes data, server => client 01:30:17.273799 '226 File transfer complete\r\n' 01:30:18.342686 < 6 bytes data, client => server 01:30:18.342900 'QUIT\r\n' 01:30:18.344340 Received DATA (on stdin) 01:30:18.344417 > 18 bytes data, server => client 01:30:18.346190 '221 bye bye baby\r\n' 01:30:18.528929 ====> Client disconnect 01:30:18.530420 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:29:28.780734 Running IPv4 version 01:29:28.788517 Listening on port 36389 01:29:28.789009 Wrote pid 265940 to log/3/server/ftp_sockdata.pid 01:29:28.789891 Received PING (on stdin) 01:29:28.791010 Received PORT (on stdin) 01:29:28.797687 ====> Client connect 01:29:28.803481 Received DATA (on stdin) 01:29:28.803793 > 18 bytes data, server => client 01:29:28.804171 'WE ROOLZ: 202504\r\n' 01:29:28.804422 Received DISC (on stdin) 01:29:28.804934 ====> Client forcibly disconnected 01:29:28.805102 Received QUIT (on stdin) 01:29:28.805174 quits 01:29:28.805700 ============> sockfilt quits 01:30:14.281178 Running IPv4 version 01:30:14.300467 Listening on port 44115 01:30:14.300971 Wrote pid 266886 to log/3/server/ftp_sockdata.pid 01:30:14.301695 Received PING (on stdin) 01:30:14.302556 Received PORT (on stdin) 01:30:14.469592 ====> Client connect 01:30:14.875464 ====> Client disconnect 01:30:17.163652 Running IPv4 version 01:30:17.171102 Listening on port 41781 01:30:17.171592 Wrote pid 267016 to log/3/server/ftp_sockdata.pid 01:30:17.172323 Received PING (on stdin) 01:30:17.173129 Received PORT (on stdin) 01:30:17.192895 ====> Client connect 01:30:17.262658 Received DATA (on stdin) 01:30:17.263040 > 5 bytes data, server => client 01:30:17.263388 'data\n' 01:30:17.263655 Received DATA (on stdin)CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind547 ./libtest/libtests lib547 http://test.remote.example.com/path/547 http://127.0.0.1:39863 testuser:testpass > log/2/stdout547 2> log/2/stderr547 01:30:17.263723 > 7 bytes data, server => client 01:30:17.263788 ' to\n' 01:30:17.263884 Received DATA (on stdin) 01:30:17.263949 > 10 bytes data, server => client 01:30:17.264019 ' see\n' 01:30:17.264112 Received DATA (on stdin) 01:30:17.264174 > 9 bytes data, server => client 01:30:17.264242 'that FTP\n' 01:30:17.264326 Received DATA (on stdin) 01:30:17.264391 > 6 bytes data, server => client 01:30:17.264458 'works\n' 01:30:17.264539 Received DATA (on stdin) 01:30:17.264602 > 14 bytes data, server => client 01:30:17.264676 ' so does it?\n' 01:30:17.264760 Received DISC (on stdin) 01:30:17.264879 ====> Client forcibly disconnected 01:30:17.269950 Received QUIT (on stdin) 01:30:17.270042 quits 01:30:17.270559 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY RETR 550 the file doesn't exist COUNT RETR 1 REPLY SIZE 500 Can't check for file existence COUNT SIZE 1 Testnum 546 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD path EPSV TYPE I SIZE 546 RETR 546 EPSV SIZE 546 RETR 546 QUIT === End of file server.input === Start of file stderr546 URL: ftp://127.0.0.1:37331/path/546 Start at URL 0 * Trying 127.0.0.1:37331... * Established connection to 127.0.0.1 (127.0.0.1 port 37331) from 127.0.0.1 port 43620 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' > CWD path < 250 CWD command successful. > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||44115|) * Connecting to 127.0.0.1 (127.0.0.1) port 44115 * Trying 127.0.0.1:44115... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 44115) from 127.0.0.1 port 44702 > TYPE I < 200 I modify TYPE as you wanted > SIZE 546 < 500 Can't check for file existence > RETR 546 < 550 the file doesn't exist * RETR response: 550 * Remembering we are in dir "path/" * Connection #0 to host 127.0.0.1:37331 left intact Advancing to URL 1 * Reusing existing ftp: connection with host 127.0.0.1 * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||41781|) * Connecting to 127.0.0.1 (127.0.0.1) port 41781 * Trying 127.0.0.1:41781... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 41781) from 127.0.0.1 port 45980 > SIZE 546 < 213 51 > RETR 546 < 150 Binary data connection for 546 () (51 bytes). * Maxdownload = -1 * Getting file with size: 51 * abort upload * Remembering we are in dir "path/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37331 left intact Test ended with result 0 === End of file stderr546 === Start of file stdout546 data to see that FTP works so does it? === End of file stdout546 === Start of file valgrind546 ==265967== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind546 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 549 in state 4 Runner 2 (id 185908) running test 547 in state 4 Runner 3 (id 185910) running test 554 in state 4 Runner 4 (id 185912) running test 551 in state 4 Runner 5 (id 185914) running test 548 in state 4 Runner 6 (id 185916) running test 552 in state 4 Runner 7 (id 185918) running test 550 in state 4 Runner 8 (id 185920) running test 553 in state 4 test 0547...[HTTP proxy auth NTLM with POST data from read callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind547 ./libtest/libtests lib547 http://test.remote.example.com/path/547 http://127.0.0.1:39863 testuser:testpass > log/2/stdout547 2> log/2/stderr547 valgrind ERROR ==266248== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 547 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind547 ./libtest/libtests lib547 http://test.remote.example.com/path/547 http://127.0.0.1:39863 testuser:testpass > log/2/stdout547 2> log/2/stderr547 === End of file commands.log === Start of file http_server.log 01:29:44.061737 ====> Client connect 01:29:44.061896 accept_connection 3 returned 4 01:29:44.061972 accept_connection 3 returned 0 01:29:44.069570 Read 93 bytes 01:29:44.069665 Process 93 bytes request 01:29:44.069753 Got request: GET /verifiedserver HTTP/1.1 01:29:44.069818 Are-we-friendly question received 01:29:44.069929 Wrote request (93 bytes) input to log/2/server.input 01:29:44.070020 Identifying ourselves as friends 01:29:44.070196 Response sent (57 bytes) and written to log/2/server.response 01:29:44.070259 special request received, no persistency 01:29:44.070315 ====> Client disconnect 0 01:30:30.547282 ====> Client connect 01:30:30.547426 accept_connection 3 returned 4 01:30:30.547505 accept_connection 3 returned 0 01:30:31.800368 Read 236 bytes 01:30:31.800543 Process 236 bytes request 01:30:31.800637 Got request: POST http://test.remote.example.com/path/547 HTTP/1.1 01:30:31.800706 Serve test number 547 part 0 01:30:31.800934 - request found to be complete (547) 01:30:31.801137 Found Content-Length: 36 in the request 01:30:31.801306 Wrote request (236 bytes) input to log/2/server.input 01:30:31.801417 Send response test547 section 01:30:31.801680 connection close instruction "swsclose" found in response 01:30:31.801950 Response sent (325 bytes) and written to log/2/server.response 01:30:31.802014 instructed to close connection after server-reply 01:30:31.802073 ====> Client disconnect 0 01:30:33.794263 ====> Client connect 01:30:33.794396 accept_connection 3 returned 4 01:30:33.794476 accept_connection 3 returned 0 01:30:34.005254 Read 271 bytes 01:30:34.005466 Process 271 bytes request 01:30:34.005563 Got request: POST http://test.remote.example.com/path/547 HTTP/1.1 01:30:34.005636 Serve test number 547 part 0 01:30:34.005878 - request found to be complete (547) 01:30:34.006098 Found Content-Length: 0 in the request 01:30:34.006182 Received NTLM type-1, sending back data 1001 01:30:34.006278 Wrote request (271 bytes) input to log/2/server.input 01:30:34.006370 Send response test547 section 01:30:34.006911 Response sent (356 bytes) and written to log/2/server.response 01:30:34.006978 => persistent connection request ended, awaits new request 01:30:35.405453 Read 440 bytes 01:30:35.405619 Process 440 bytes request 01:30:35.405710 Got request: POST http://test.remote.example.com/path/547 HTTP/1.1 01:30:35.405778 Serve test number 547 part 0 01:30:35.406004 - request found to be complete (547) 01:30:35.406207 Found Content-Length: 36 in the request 01:30:35.406281 Received NTLM type-3, sending back data 1002 01:30:35.406363 Expecting 36 POSTed bytes 01:30:35.406469 Wrote request (440 bytes) input to log/2/server.input 01:30:35.406553 Send response test547 section 01:30:35.406822 connection close instruction "swsclose" found in response 01:30:35.407034 Response sent (189 bytes) and written to log/2/server.response 01:30:35.407097 instructed to close connection after server-reply 01:30:35.407154 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 51530 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind549 ./libtest/libtests lib549 ftp://www.example.com/moo/549 http://127.0.0.1:40641 > log/1/stdout549 2> log/1/stderr549 === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 547 === End of file server.cmd === Start of file server.input POST http://test.remote.example.com/path/547 HTTP/1.1 Host: test.remote.example.com Accept: */* Proxy-Connection: Keep-Alive Content-Length: 36 Content-Type: application/x-www-form-urlencoded this is the blurb we want to upload POST http://test.remote.example.com/path/547 HTTP/1.1 Host: test.remote.example.com Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= Accept: */* Proxy-Connection: Keep-Alive Content-Length: 0 Content-Type: application/x-www-form-urlencoded POST http://test.remote.example.com/path/547 HTTP/1.1 Host: test.remote.example.com Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= Accept: */* Proxy-Connection: Keep-Alive Content-Length: 36 Content-Type: application/x-www-form-urlencoded this is the blurb we want to upload === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 407 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Proxy-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" Proxy-Authenticate: Basic realm="gimme all yer s3cr3ts" Proxy-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Connection: close This is not the real page HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 34 Hey you, authenticate or go away HTTP/1.1 200 Things are fine in proxy land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. === End of file server.response === Start of file stderr547 URL: http://test.remote.example.com/path/547 * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 45354 * using HTTP/1.x READ > POST http://test.remote.example.com/path/547 HTTP/1.1 Host: test.remote.example.com Accept: */* Proxy-Connection: Keep-Alive Content-Length: 36 Content-Type: application/x-www-form-urlencoded * upload completely sent off: 36 bytes < HTTP/1.1 407 Authorization Required swsclose < Server: Apache/1.3.27 (Darwin) PHP/4.1.2 < Proxy-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" < Proxy-Authenticate: Basic realm="gimme all yer s3cr3ts" < Proxy-Authenticate: NTLM < Content-Type: text/html; charset=iso-8859-1 < Connection: close * Need to rewind upload for next request < * shutting down connection #0 REWIND * Issue another request to this URL: 'http://test.remote.example.com/path/547' * Hostname 127.0.0.1 was found in DNS cache * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 47066 * using HTTP/1.x * Proxy auth using NTLM with user 'testuser' > POST http://test.remote.example.com/path/547 HTTP/1.1 Host: test.remote.example.com Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= Accept: */* Proxy-Connection: Keep-Alive Content-Length: 0 Content-Type: application/x-www-form-urlencoded < HTTP/1.1 407 Authorization Required to proxy me my dear < Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== < Content-Length: 34 * Ignoring the response-body * setting size while ignoring < * Connection #1 to host 127.0.0.1:39863 left intact * Issue another request to this URL: 'http://test.remote.example.com/path/547' * Reusing existing http: connection with proxy 127.0.0.1 * Proxy auth using NTLM with user 'testuser' READ > POST http://test.remote.example.com/path/547 HTTP/1.1 Host: test.remote.example.com Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= Accept: */* Proxy-Connection: Keep-Alive Content-Length: 36 Content-Type: application/x-www-form-urlencoded * upload completely sent off: 36 bytes < HTTP/1.1 200 Things are fine in proxy land swsclose < Server: Microsoft-IIS/5.0 < Content-Type: text/html; charset=iso-8859-1 < Content-Length: 42 < * Connection #1 to host 127.0.0.1:39863 left intact Test ended with result 0 === End of file stderr547 === Start of file stdout547 HTTP/1.1 407 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Proxy-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" Proxy-Authenticate: Basic realm="gimme all yer s3cr3ts" Proxy-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Connection: close HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 34 HTTP/1.1 200 Things are fine in proxy land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. === End of file stdout547 === Start of file valgrind547 ==266248== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind547 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 549 in state 4 Runner 2 (id 185908) running test 555 in state 4 Runner 3 (id 185910) running test 554 in state 4 Runner 4 (id 185912) running test 551 in state 4 Runner 5 (id 185914) running test 548 in state 4 Runner 6 (id 185916) running test 552 in state 4 Runner 7 (id 185918) running test 550 in state 4 Runner 8 (id 185920) running test 553 in state 4 test 0549...[FTP RETR over proxy with CURLOPT_PROXY_TRANSFER_MODE] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind549 ./libtest/libtests lib549 ftp://www.example.com/moo/549 http://127.0.0.1:40641 > log/1/stdout549 2> log/1/stderr549 valgrind ERROR ==266597== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 549 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind549 ./libtest/libtests lib549 ftp://www.example.com/moo/549 http://127.0.0.1:40641 > log/1/stdout549 2> log/1/stderr549 === End of file commands.log === Start of file http_server.log 01:30:04.750216 ====> Client connect 01:30:04.750393 accept_connection 3 returned 4 01:30:04.750480 accept_connection 3 returned 0 01:30:04.757263 Read 93 bytes 01:30:04.757371 Process 93 bytes request 01:30:04.757473 Got request: GET /verifiedserver HTTP/1.1 01:30:04.757549 Are-we-friendly question received 01:30:04.757679 Wrote request (93 bytes) input to log/1/server.input 01:30:04.757782 Identifying ourselves as friends 01:30:04.757973 Response sent (57 bytes) and written to log/1/server.response 01:30:04.758038 special request received, no persistency 01:30:04.758098 ====> Client disconnect 1 01:30:04.758178 Wrote request (13 bytes) input to log/1/server.input 01:30:50.103737 ====> Client connect 01:30:50.103888 accept_connection 3 returned 4 01:30:50.103970 accept_connection 3 returned 0 01:30:51.132251 Read 122 bCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind548 ./libtest/libtests lib547 http://test.remote.example.com/path/548 http://127.0.0.1:46263 testuser:testpass > log/5/stdout548 2> log/5/stderr548 ytes 01:30:51.132452 Process 122 bytes request 01:30:51.132548 Got request: GET ftp://www.example.com/moo/549;type=i HTTP/1.1 01:30:51.132621 Serve test number 549 part 0 01:30:51.132814 - request found to be complete (549) 01:30:51.133081 Wrote request (122 bytes) input to log/1/server.input 01:30:51.133190 Send response test549 section 01:30:51.133407 connection close instruction "swsclose" found in response 01:30:51.133582 Response sent (212 bytes) and written to log/1/server.response 01:30:51.133648 instructed to close connection after server-reply 01:30:51.133709 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 36182 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 549 === End of file server.cmd === Start of file server.input GET ftp://www.example.com/moo/549;type=i HTTP/1.1 Host: www.example.com:21 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 hello === End of file server.response === Start of file stderr549 URL: ftp://www.example.com/moo/549 * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 36832 * using HTTP/1.x > GET ftp://www.example.com/moo/549;type=i HTTP/1.1 Host: www.example.com:21 Accept: */* Proxy-Connection: Keep-Alive < HTTP/1.1 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT < ETag: "21025-dc7-39462498" < Accept-Ranges: bytes < Content-Length: 6 < * Connection #0 to host 127.0.0.1:40641 left intact Test ended with result 0 === End of file stderr549 === Start of file stdout549 hello === End of file stdout549 === Start of file valgrind549 ==266597== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind549 test 0548...[HTTP proxy auth NTLM with POST data from CURLOPT_POSTFIELDS] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind548 ./libtest/libtests lib547 http://test.remote.example.com/path/548 http://127.0.0.1:46263 testuser:testpass > log/5/stdout548 2> log/5/stderr548 valgrind ERROR ==266467== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 548 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind548 ./libtest/libtests lib547 http://test.remote.example.com/path/548 http://127.0.0.1:46263 testuser:testpass > log/5/stdout548 2> log/5/stderr548 === End of file commands.log === Start of file http_server.log 01:30:02.352012 ====> Client connect 01:30:02.352192 accept_connection 3 returned 4 01:30:02.352280 accept_connection 3 returned 0 01:30:02.359861 Read 93 bytes 01:30:02.360005 Process 93 bytes request 01:30:02.360106 Got request: GET /verifiedserver HTTP/1.1 01:30:02.360181 Are-we-friendly question received 01:30:02.360320 Wrote request (93 bytes) input to log/5/server.input 01:30:02.360430 Identifying ourselves as friends 01:30:02.360632 Response sent (57 bytes) and written to log/5/server.response 01:30:02.360704 special request received, no persistency 01:30:02.360769 ====> Client disconnect 0 01:30:48.361563 ====> Client connect 01:30:48.361708 accept_connection 3 returned 4 01:30:48.361783 accept_connection 3 returned 0 01:30:49.530587 Read 236 bytes 01:30:49.530802 Process 236 bytes request 01:30:49.530894 Got request: POST http://test.remote.example.com/path/548 HTTP/1.1 01:30:49.530967 Serve test number 548 part 0 01:30:49.531209 - request found to be complete (548) 01:30:49.531471 Found Content-Length: 36 in the request 01:30:49.531638 Wrote request (236 bytes) input to log/5/server.input 01:30:49.531750 Send response test548 section 01:30:49.532023 connection close instruction "swsclose" found in response 01:30:49.532299 Response sent (325 bytes) and written to log/5/server.response 01:30:49.532364 instructed to close connection after server-reply 01:30:49.532425 ====> Client disconnect 0 01:30:51.507982 ====> Client connect 01:30:51.508118 accept_connection 3 returned 4 01:30:51.508196 accept_connection 3 returned 0 01:30:51.719506 Read 271 bytes 01:30:51.719703 Process 271 bytes request 01:30:51.719794 Got request: POST http://test.remote.example.com/path/548 HTTP/1.1 01:30:51.719862 Serve test number 548 part 0 01:30:51.720098 - request found to be complete (548) 01:30:51.720307 Found Content-Length: 0 in the request 01:30:51.720388 Received NTLM type-1, sending back data 1001 01:30:51.720482 Wrote request (271 bytes) input to log/5/server.input 01:30:51.720561 Send response test548 section 01:30:51.721125 Response sent (356 bytes) and written to log/5/server.response 01:30:51.721192 => persistent connection request ended, awaits new request 01:30:53.120529 Read 440 bytes 01:30:53.120723 Process 440 bytes request 01:30:53.120820 Got request: POST http://test.remote.example.com/path/548 HTTP/1.1 01:30:53.120891 Serve test number 548 part 0 01:30:53.121136 - request found to be complete (548) 01:30:53.121341 Found Content-Length: 36 in the request 01:30:53.121416 Received NTLM type-3, sending back data 1002 01:30:53.121476 Expecting 36 POSTed bytes 01:30:53.121572 Wrote request (440 bytes) input to log/5/server.input 01:30:53.121659 Send response test548 section 01:30:53.121939 connection close instruction "swsclose" found in response 01:30:53.122168 Response sent (189 bytes) and written to log/5/server.response 01:30:53.122236 instructed to close connection after server-reply 01:30:53.122295 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 56912 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 548 === End of file server.cmd === Start of file server.input POST http://test.remote.example.com/path/548 HTTP/1.1 Host: test.remote.example.com Accept: */* Proxy-Connection: Keep-Alive Content-Length: 36 Content-Type: application/x-www-form-urlencoded this is the blurb we want to upload POST http://test.remote.example.com/path/548 HTTP/1.1 Host: test.remote.example.com Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= Accept: */* Proxy-Connection: Keep-Alive Content-Length: 0 Content-Type: application/x-www-form-urlencoded POST http://test.remote.example.com/path/548 HTTP/1.1 Host: test.remote.example.com Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= Accept: */* Proxy-Connection: Keep-Alive Content-Length: 36 Content-Type: application/x-www-form-urlencoded this is the blurb we want to upload === End of fCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind550 ./libtest/libtests lib549 ftp://www.example.com/moo/550 http://127.0.0.1:34897 ascii > log/7/stdout550 2> log/7/stderr550 ile server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 407 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Proxy-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" Proxy-Authenticate: Basic realm="gimme all yer s3cr3ts" Proxy-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Connection: close This is not the real page HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 34 Hey you, authenticate or go away HTTP/1.1 200 Things are fine in proxy land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. === End of file server.response === Start of file stderr548 URL: http://test.remote.example.com/path/548 * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 33454 * using HTTP/1.x > POST http://test.remote.example.com/path/548 HTTP/1.1 Host: test.remote.example.com Accept: */* Proxy-Connection: Keep-Alive Content-Length: 36 Content-Type: application/x-www-form-urlencoded * upload completely sent off: 36 bytes < HTTP/1.1 407 Authorization Required swsclose < Server: Apache/1.3.27 (Darwin) PHP/4.1.2 < Proxy-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" < Proxy-Authenticate: Basic realm="gimme all yer s3cr3ts" < Proxy-Authenticate: NTLM < Content-Type: text/html; charset=iso-8859-1 < Connection: close * Need to rewind upload for next request < * shutting down connection #0 * Issue another request to this URL: 'http://test.remote.example.com/path/548' * Hostname 127.0.0.1 was found in DNS cache * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 33462 * using HTTP/1.x * Proxy auth using NTLM with user 'testuser' > POST http://test.remote.example.com/path/548 HTTP/1.1 Host: test.remote.example.com Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= Accept: */* Proxy-Connection: Keep-Alive Content-Length: 0 Content-Type: application/x-www-form-urlencoded < HTTP/1.1 407 Authorization Required to proxy me my dear < Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== < Content-Length: 34 * Ignoring the response-body * setting size while ignoring < * Connection #1 to host 127.0.0.1:46263 left intact * Issue another request to this URL: 'http://test.remote.example.com/path/548' * Reusing existing http: connection with proxy 127.0.0.1 * Proxy auth using NTLM with user 'testuser' > POST http://test.remote.example.com/path/548 HTTP/1.1 Host: test.remote.example.com Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= Accept: */* Proxy-Connection: Keep-Alive Content-Length: 36 Content-Type: application/x-www-form-urlencoded * upload completely sent off: 36 bytes < HTTP/1.1 200 Things are fine in proxy land swsclose < Server: Microsoft-IIS/5.0 < Content-Type: text/html; charset=iso-8859-1 < Content-Length: 42 < * Connection #1 to host 127.0.0.1:46263 left intact Test ended with result 0 === End of file stderr548 === Start of file stdout548 HTTP/1.1 407 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Proxy-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" Proxy-Authenticate: Basic realm="gimme all yer s3cr3ts" Proxy-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Connection: close HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 34 HTTP/1.1 200 Things are fine in proxy land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. === End of file stdout548 === Start of file valgrind548 ==266467== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind548 test 0550...[FTP RETR over proxy with CURLOPT_PROXY_TRANSFER_MODE and ASCII transfer] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind550 ./libtest/libtests lib549 ftp://www.example.com/moo/550 http://127.0.0.1:34897 ascii > log/7/stdout550 2> log/7/stderr550 valgrind ERROR ==266764== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 550 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind550 ./libtest/libtests lib549 ftp://www.example.com/moo/550 http://127.0.0.1:34897 ascii > log/7/stdout550 2> log/7/stderr550 === End of file commands.log === Start of file http_server.log 01:30:10.688147 ====> Client connect 01:30:10.688312 accept_connection 3 returned 4 01:30:10.688389 accept_connection 3 returned 0 01:30:10.695642 Read 93 bytes 01:30:10.695761 Process 93 bytes request 01:30:10.695851 Got request: GET /verifiedserver HTTP/1.1 01:30:10.695915 Are-we-friendly question received 01:30:10.696041 Wrote request (93 bytes) input to log/7/server.input 01:30:10.696157 Identifying ourselves as friends 01:30:10.696326 Response sent (57 bytes) and written to log/7/server.response 01:30:10.696388 special request received, no persistency 01:30:10.696441 ====> Client disconnect 0 01:30:55.792601 ====> Client connect 01:30:55.792752 accept_connection 3 returned 4 01:30:55.792839 accept_connection 3 returned 0 01:30:56.892742 Read 122 bytes 01:30:56.892963 Process 122 bytes request 01:30:56.893071 Got request: GET ftp://www.example.com/moo/550;type=a HTTP/1.1 01:30:56.893153 Serve test number 550 part 0 01:30:56.893363 - request found to be complete (550) 01:30:56.893656 Wrote request (122 bytes) input to log/7/server.input 01:30:56.893780 Send response test550 section 01:30:56.894032 connection close instruction "swsclose" found in response 01:30:56.894322 Response sent (212 bytes) and written to log/7/server.response 01:30:56.894396 instructed to close connection after server-reply 01:30:56.894462 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 53588 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 550 === End of file server.cmd === Start of file server.input GET ftp://www.example.com/moo/550;type=a HTTP/1.1 Host: www.example.com:21 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 hello === End of file server.response === Start of fCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind553 ./libtest/libtests lib553 http://127.0.0.1:39461/path/553 > log/8/stdout553 2> log/8/stderr553 ile stderr550 URL: ftp://www.example.com/moo/550 * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 57014 * using HTTP/1.x > GET ftp://www.example.com/moo/550;type=a HTTP/1.1 Host: www.example.com:21 Accept: */* Proxy-Connection: Keep-Alive < HTTP/1.1 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT < ETag: "21025-dc7-39462498" < Accept-Ranges: bytes < Content-Length: 6 < * Connection #0 to host 127.0.0.1:34897 left intact Test ended with result 0 === End of file stderr550 === Start of file stdout550 hello === End of file stdout550 === Start of file valgrind550 ==266764== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind550 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 556 in state 4 Runner 2 (id 185908) running test 555 in state 4 Runner 3 (id 185910) running test 554 in state 4 Runner 4 (id 185912) running test 551 in state 4 Runner 5 (id 185914) running test 557 in state 4 Runner 6 (id 185916) running test 552 in state 4 Runner 7 (id 185918) running test 559 in state 4 Runner 8 (id 185920) running test 553 in state 4 test 0553...[HTTP post with huge request headers and post data from callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind553 ./libtest/libtests lib553 http://127.0.0.1:39461/path/553 > log/8/stdout553 2> log/8/stderr553 valgrind ERROR ==267241== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 553 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind553 ./libtest/libtests lib553 http://127.0.0.1:39461/path/553 > log/8/stdout553 2> log/8/stderr553 === End of file commands.log === Start of file http_server.log 01:30:20.507032 ====> Client connect 01:30:20.507199 accept_connection 3 returned 4 01:30:20.507272 accept_connection 3 returned 0 01:30:20.514266 Read 93 bytes 01:30:20.514358 Process 93 bytes request 01:30:20.514448 Got request: GET /verifiedserver HTTP/1.1 01:30:20.514512 Are-we-friendly question received 01:30:20.514619 Wrote request (93 bytes) input to log/8/server.input 01:30:20.514707 Identifying ourselves as friends 01:30:20.514862 Response sent (57 bytes) and written to log/8/server.response 01:30:20.514924 special request received, no persistency 01:30:20.514978 ====> Client disconnect 0 01:31:05.761086 ====> Client connect 01:31:05.761225 accept_connection 3 returned 4 01:31:05.761306 accept_connection 3 returned 0 01:31:07.670619 Read 32741 bytes 01:31:07.670862 Process 32741 bytes request 01:31:07.670985 Got request: POST /path/553 HTTP/1.1 01:31:07.671055 Serve test number 553 part 0 01:31:07.671740 request not complete yet 01:31:07.676023 Read 8506 bytes 01:31:07.676209 Process 41247 bytes request [CONTINUED] 01:31:07.676277 - request found to be complete (553) 01:31:07.676877 Found Content-Length: 40960 in the request 01:31:07.950282 Read 1024 bytes 01:31:07.950562 Process 42271 bytes request [CONTINUED] 01:31:07.950635 - request found to be complete (553) 01:31:08.072694 Read 1024 bytes 01:31:08.072978 Process 43295 bytes request [CONTINUED] 01:31:08.073053 - request found to be complete (553) 01:31:08.085897 Read 1024 bytes 01:31:08.086120 Process 44319 bytes request [CONTINUED] 01:31:08.086190 - request found to be complete (553) 01:31:08.093583 Read 2048 bytes 01:31:08.093769 Process 46367 bytes request [CONTINUED] 01:31:08.093839 - request found to be complete (553) 01:31:08.096785 Read 1024 bytes 01:31:08.096952 Process 47391 bytes request [CONTINUED] 01:31:08.097018 - request found to be complete (553) 01:31:08.101188 Read 1024 bytes 01:31:08.101361 Process 48415 bytes request [CONTINUED] 01:31:08.101426 - request found to be complete (553) 01:31:08.106733 Read 1024 bytes 01:31:08.106911 Process 49439 bytes request [CONTINUED] 01:31:08.106978 - request found to be complete (553) 01:31:08.109796 Read 1024 bytes 01:31:08.109976 Process 50463 bytes request [CONTINUED] 01:31:08.110046 - request found to be complete (553) 01:31:08.114286 Read 1024 bytes 01:31:08.114458 Process 51487 bytes request [CONTINUED] 01:31:08.114529 - request found to be complete (553) 01:31:08.119920 Read 1024 bytes 01:31:08.120100 Process 52511 bytes request [CONTINUED] 01:31:08.120164 - request found to be complete (553) 01:31:08.126022 Read 2048 bytes 01:31:08.126211 Process 54559 bytes request [CONTINUED] 01:31:08.126279 - request found to be complete (553) 01:31:08.129644 Read 1024 bytes 01:31:08.129821 Process 55583 bytes request [CONTINUED] 01:31:08.129889 - request found to be complete (553) 01:31:08.136015 Read 1024 bytes 01:31:08.136195 Process 56607 bytes request [CONTINUED] 01:31:08.136263 - request found to be complete (553) 01:31:08.142767 Read 3072 bytes 01:31:08.142952 Process 59679 bytes request [CONTINUED] 01:31:08.143018 - request found to be complete (553) 01:31:08.149350 Read 1024 bytes 01:31:08.149533 Process 60703 bytes request [CONTINUED] 01:31:08.149600 - request found to be complete (553) 01:31:08.156022 Read 2048 bytes 01:31:08.156203 Process 62751 bytes request [CONTINUED] 01:31:08.156273 - request found to be complete (553) 01:31:08.158745 Read 1024 bytes 01:31:08.158907 Process 63775 bytes request [CONTINUED] 01:31:08.158972 - request found to be complete (553) 01:31:08.163468 Read 1024 bytes 01:31:08.163651 Process 64799 bytes request [CONTINUED] 01:31:08.163725 - request found to be complete (553) 01:31:08.169537 Read 1024 bytes 01:31:08.169714 Process 65823 bytes request [CONTINUED] 01:31:08.169784 - request found to be complete (553) 01:31:08.176015 Read 2048 bytes 01:31:08.176192 Process 67871 bytes request [CONTINUED] 01:31:08.176262 - request found to be complete (553) 01:31:08.182684 Read 2048 bytes 01:31:08.182859 Process 69919 bytes request [CONTINUED] 01:31:08.182927 - request found to be complete (553) 01:31:08.186556 Read 1024 bytes 01:31:08.186725 Process 70943 bytes request [CONTINUED] 01:31:08.186787 - request found to be complete (553) 01:31:08.196023 Read 3072 bytes 01:31:08.196213 Process 74015 bytes request [CONTINUED] 01:31:08.196274 - request found to be complete (553) 01:31:08.200357 Read 1024 bytes 01:31:08.200521 Process 75039 bytes request [CONTINUED] 01:31:08.200586 - request found to be complete (553) 01:31:08.205406 Read 1024 bytes 01:31:08.205578 Process 76063 bytes request [CONTINUED] 01:31:08.205638 - request found to be complete (553) 01:31:08.212615 Read 2048 bytes 01:31:08.212805 Process 78111 bytes request [CONTINUED] 01:31:08.212872 - request found to be complete (553) 01:31:08.217480 Read 1024 bytes 01:31:08.217643 Process 79135 bytes request [CONTINUED] 01:31:08.217704 - request found to be complete (553) 01:31:08.226037 Read 1024 bytes 01:31:08.226244 Process 80159 bytes request [CONTINUED] 01:31:08.226310 - request found to be complete (553) 01:31:08.239281 Read 1024 bytes 01:31:08.239486 Process 81183 bytes request [CONTINUED] 01:31:08.239553 - request found to be complete (553) 01:31:08.249351 Wrote request (81183 bytes) input to log/8/server.input 01:31:08.249464 Send response test553 section 01:31:08.250222 Response sent (89 bytes) and written to log/8/server.response 01:31:08.250285 => persistent connection request ended, awaits new request 01:31:09.833424 Connection closed by client 01:31:09.833596 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 51824 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 553 === End of file server.cmd === Start of file server.input POST /path/553 HTTP/1.1 Host: 127.0.0.1:39461 Accept: */* Header0: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Header1: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Header2: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Header3: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Header4: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Header5: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Header6: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Header7: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Content-Length: 40960 Content-Type: application/x-www-form-urlencoded AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 Fine Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Length: 6 hello === End of file server.response === Start of file stderr553 URL: http://127.0.0.1:39461/path/553 * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 55466 * using HTTP/1.x > POST /path/553 HTTP/1.1 Host: 127.0.0.1:39461 Accept: */* Header0: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Header1: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Header2: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Header3: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Header4: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Header5: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Header6: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind551 ./libtest/libtests lib547 http://test.remote.example.com/path/551 http://127.0.0.1:42621 s1lly:pers0n > log/4/stdout551 2> log/4/stderr551 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Header7: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Content-Length: 40960 Content-Type: application/x-www-form-urlencoded * upload completely sent off: 40960 bytes < HTTP/1.1 200 Fine < Server: Apache/1.3.27 (Darwin) PHP/4.1.2 < Content-Length: 6 < * Connection #0 to host 127.0.0.1:39461 left intact Test ended with result 0 === End of file stderr553 === Start of file stdout553 HTTP/1.1 200 Fine Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Content-Length: 6 hello === End of file stdout553 === Start of file valgrind553 ==267241== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind553 test 0551...[HTTP proxy auth Digest with POST data from read callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind551 ./libtest/libtests lib547 http://test.remote.example.com/path/551 http://127.0.0.1:42621 s1lly:pers0n > log/4/stdout551 2> log/4/stderr551 valgrind ERROR ==266929== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 551 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind551 ./libtest/libtests lib547 http://test.remote.example.com/path/551 http://127.0.0.1:42621 s1lly:pers0n > log/4/stdout551 2> log/4/stderr551 === End of file commands.log === Start of file http_server.log 01:30:16.608900 ====> Client connect 01:30:16.609087 accept_connection 3 returned 4 01:30:16.609163 accept_connection 3 returned 0 01:30:16.615936 Read 93 bytes 01:30:16.616065 Process 93 bytes request 01:30:16.616183 Got request: GET /verifiedserver HTTP/1.1 01:30:16.616257 Are-we-friendly question received 01:30:16.616390 Wrote request (93 bytes) input to log/4/server.input 01:30:16.616494 Identifying ourselves as friends 01:30:16.616696 Response sent (57 bytes) and written to log/4/server.response 01:30:16.616765 special request received, no persistency 01:30:16.616829 ====> Client disconnect 0 01:31:02.112888 ====> Client connect 01:31:02.113028 accept_connection 3 returned 4 01:31:02.113109 accept_connection 3 returned 0 01:31:03.300947 Read 236 bytes 01:31:03.301135 Process 236 bytes request 01:31:03.301232 Got request: POST http://test.remote.example.com/path/551 HTTP/1.1 01:31:03.301303 Serve test number 551 part 0 01:31:03.301534 - request found to be complete (551) 01:31:03.301731 Found Content-Length: 36 in the request 01:31:03.301900 Wrote request (236 bytes) input to log/4/server.input 01:31:03.302006 Send response test551 section 01:31:03.302276 connection close instruction "swsclose" found in response 01:31:03.302639 Response sent (648 bytes) and written to log/4/server.response 01:31:03.302715 instructed to close connection after server-reply 01:31:03.302777 ====> Client disconnect 0 01:31:05.514235 ====> Client connect 01:31:05.514383 accept_connection 3 returned 4 01:31:05.514464 accept_connection 3 returned 0 01:31:12.139972 Read 785 bytes 01:31:12.140169 Process 785 bytes request 01:31:12.140270 Got request: POST http://test.remote.example.com/path/551 HTTP/1.1 01:31:12.140344 Serve test number 551 part 0 01:31:12.140623 - request found to be complete (551) 01:31:12.140835 Found Content-Length: 36 in the request 01:31:12.140913 Received Digest request, sending back data 1000 01:31:12.141021 Wrote request (785 bytes) input to log/4/server.input 01:31:12.141115 Send response test551 section 01:31:12.141382 connection close instruction "swsclose" found in response 01:31:12.141591 Response sent (189 bytes) and written to log/4/server.response 01:31:12.141657 instructed to close connection after server-reply 01:31:12.141717 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 50590 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 551 === End of file server.cmd === Start of file server.input POST http://test.remote.example.com/path/551 HTTP/1.1 Host: test.remote.example.com Accept: */* Proxy-Connection: Keep-Alive Content-Length: 36 Content-Type: application/x-www-form-urlencoded this is the blurb we want to upload POST http://test.remote.example.com/path/551 HTTP/1.1 Host: test.remote.example.com Proxy-Authorization: Digest username="s1lly", realm="something fun to read", nonce="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", uri="/path/551", response="3325240726fbdaf1e61f3a0dd40b930c" Accept: */* Proxy-Connection: Keep-Alive Content-Length: 36 Content-Type: application/x-www-form-urlencoded this is the blurb we want to upload === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 407 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Proxy-Authenticate: Digest realm="something fun to read", nonce="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" Content-Type: text/html; charset=iso-8859-1 Connection: close This is not the real page HTTP/1.1 200 Things are fine in proxy land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. === End of file server.response === Start of file stderr551 URL: http://test.remote.example.com/path/551 * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 55398 * using HTTP/1.x READ > POST http://test.remote.example.com/path/551 HTTP/1.1 Host: test.remote.example.com Accept: */* Proxy-Connection: Keep-Alive Content-Length: 36 Content-Type: application/x-www-form-urlencoded * upload completely sent off: 36 bytes < HTTP/1.1 407 Authorization Required swsclose < Server: Apache/1.3.27 (Darwin) PHP/4.1.2 < Proxy-Authenticate: Digest realm="something fun to read", nonce="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" < Content-Type: text/html; charset=iso-8859-1 < Connection: close * Need to rewind upload for next request < * shutting down connection #0 REWIND * Issue another request to this URL: 'http://test.remote.example.com/path/551' * Hostname 127.0.0.1 was found in DNS cache * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 58566 * using HTTP/1.x * Proxy auth using Digest with user 's1lly' READ > POST http://test.remote.example.com/path/551 HTTP/1.1 Host: test.remote.example.com Proxy-Authorization: Digest username="s1lly", realm="something fun to read", nonce="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", uri="/path/551", response="3325240726fbdaf1e61f3a0dd40b930c" Accept: */* Proxy-Connection: Keep-Alive Content-Length: 36 Content-Type: application/x-www-form-urlencoded * upload completely sent off: 36 bytes < HTTP/1.1 200 Things are fine in proxy land swsclose < Server: Microsoft-IIS/5.0 < Content-Type: text/html; charset=iso-CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind554 ./libtest/libtests lib554 http://127.0.0.1:46853/554 > log/3/stdout554 2> log/3/stderr554 8859-1 < Content-Length: 42 < * Connection #1 to host 127.0.0.1:42621 left intact Test ended with result 0 === End of file stderr551 === Start of file stdout551 HTTP/1.1 407 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Proxy-Authenticate: Digest realm="something fun to read", nonce="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" Content-Type: text/html; charset=iso-8859-1 Connection: close HTTP/1.1 200 Things are fine in proxy land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. === End of file stdout551 === Start of file valgrind551 ==266929== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind551 test 0554...[HTTP multi-part formpost using read callback for the file part] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind554 ./libtest/libtests lib554 http://127.0.0.1:46853/554 > log/3/stdout554 2> log/3/stderr554 valgrind ERROR ==267388== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 554 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind554 ./libtest/libtests lib554 http://127.0.0.1:46853/554 > log/3/stdout554 2> log/3/stderr554 === End of file commands.log === Start of file http_server.log 01:30:22.764081 ====> Client connect 01:30:22.764235 accept_connection 3 returned 4 01:30:22.764319 accept_connection 3 returned 0 01:30:22.772801 Read 93 bytes 01:30:22.772894 Process 93 bytes request 01:30:22.772987 Got request: GET /verifiedserver HTTP/1.1 01:30:22.773053 Are-we-friendly question received 01:30:22.773172 Wrote request (93 bytes) input to log/3/server.input 01:30:22.773269 Identifying ourselves as friends 01:30:22.773441 Response sent (57 bytes) and written to log/3/server.response 01:30:22.773503 special request received, no persistency 01:30:22.773557 ====> Client disconnect 0 01:31:08.095566 ====> Client connect 01:31:08.095696 accept_connection 3 returned 4 01:31:08.095780 accept_connection 3 returned 0 01:31:15.636645 Read 295 bytes 01:31:15.636812 Process 295 bytes request 01:31:15.636906 Got request: POST /554 HTTP/1.1 01:31:15.636978 Serve test number 554 part 0 01:31:15.637205 - request found to be complete (554) 01:31:15.637408 Found Content-Length: 780 in the request 01:31:15.920494 Read 1 bytes 01:31:15.920664 Process 296 bytes request [CONTINUED] 01:31:15.920731 - request found to be complete (554) 01:31:16.047214 Read 1 bytes 01:31:16.047388 Process 297 bytes request [CONTINUED] 01:31:16.047452 - request found to be complete (554) 01:31:16.058763 Read 1 bytes 01:31:16.058892 Process 298 bytes request [CONTINUED] 01:31:16.058952 - request found to be complete (554) 01:31:16.061589 Read 1 bytes 01:31:16.061667 Process 299 bytes request [CONTINUED] 01:31:16.061725 - request found to be complete (554) 01:31:16.065983 Read 1 bytes 01:31:16.066054 Process 300 bytes request [CONTINUED] 01:31:16.066111 - request found to be complete (554) 01:31:16.066409 Read 1 bytes 01:31:16.066473 Process 301 bytes request [CONTINUED] 01:31:16.066529 - request found to be complete (554) 01:31:16.068703 Read 1 bytes 01:31:16.068769 Process 302 bytes request [CONTINUED] 01:31:16.068825 - request found to be complete (554) 01:31:16.070924 Read 1 bytes 01:31:16.070991 Process 303 bytes request [CONTINUED] 01:31:16.071048 - request found to be complete (554) 01:31:16.073127 Read 1 bytes 01:31:16.073194 Process 304 bytes request [CONTINUED] 01:31:16.073250 - request found to be complete (554) 01:31:16.075305 Read 1 bytes 01:31:16.075370 Process 305 bytes request [CONTINUED] 01:31:16.075427 - request found to be complete (554) 01:31:16.079322 Read 1 bytes 01:31:16.079393 Process 306 bytes request [CONTINUED] 01:31:16.079452 - request found to be complete (554) 01:31:16.079677 Read 1 bytes 01:31:16.079740 Process 307 bytes request [CONTINUED] 01:31:16.079797 - request found to be complete (554) 01:31:16.081835 Read 1 bytes 01:31:16.081902 Process 308 bytes request [CONTINUED] 01:31:16.081959 - request found to be complete (554) 01:31:16.084002 Read 1 bytes 01:31:16.084070 Process 309 bytes request [CONTINUED] 01:31:16.084128 - request found to be complete (554) 01:31:16.086171 Read 1 bytes 01:31:16.086240 Process 310 bytes request [CONTINUED] 01:31:16.086297 - request found to be complete (554) 01:31:16.088342 Read 1 bytes 01:31:16.088408 Process 311 bytes request [CONTINUED] 01:31:16.088466 - request found to be complete (554) 01:31:16.090523 Read 1 bytes 01:31:16.090590 Process 312 bytes request [CONTINUED] 01:31:16.090646 - request found to be complete (554) 01:31:16.092740 Read 1 bytes 01:31:16.092814 Process 313 bytes request [CONTINUED] 01:31:16.092871 - request found to be complete (554) 01:31:16.094909 Read 1 bytes 01:31:16.094975 Process 314 bytes request [CONTINUED] 01:31:16.095032 - request found to be complete (554) 01:31:16.097069 Read 1 bytes 01:31:16.097136 Process 315 bytes request [CONTINUED] 01:31:16.097193 - request found to be complete (554) 01:31:16.099233 Read 1 bytes 01:31:16.099308 Process 316 bytes request [CONTINUED] 01:31:16.099374 - request found to be complete (554) 01:31:16.101419 Read 1 bytes 01:31:16.101484 Process 317 bytes request [CONTINUED] 01:31:16.101541 - request found to be complete (554) 01:31:16.103597 Read 1 bytes 01:31:16.103665 Process 318 bytes request [CONTINUED] 01:31:16.103723 - request found to be complete (554) 01:31:16.105957 Read 1 bytes 01:31:16.106034 Process 319 bytes request [CONTINUED] 01:31:16.106086 - request found to be complete (554) 01:31:16.108196 Read 1 bytes 01:31:16.108258 Process 320 bytes request [CONTINUED] 01:31:16.108310 - request found to be complete (554) 01:31:16.110346 Read 1 bytes 01:31:16.110411 Process 321 bytes request [CONTINUED] 01:31:16.110465 - request found to be complete (554) 01:31:16.112562 Read 1 bytes 01:31:16.112628 Process 322 bytes request [CONTINUED] 01:31:16.112693 - request found to be complete (554) 01:31:16.114771 Read 1 bytes 01:31:16.114833 Process 323 bytes request [CONTINUED] 01:31:16.114884 - request found to be complete (554) 01:31:16.116931 Read 1 bytes 01:31:16.116998 Process 324 bytes request [CONTINUED] 01:31:16.117051 - request found to be complete (554) 01:31:16.119096 Read 1 bytes 01:31:16.119157 Process 325 bytes request [CONTINUED] 01:31:16.119211 - request found to be complete (554) 01:31:16.121337 Read 1 bytes 01:31:16.121409 Process 326 bytes request [CONTINUED] 01:31:16.121462 - request found to be complete (554) 01:31:16.123617 Read 1 bytes 01:31:16.123683 Process 327 bytes request [CONTINUED] 01:31:16.123735 - request found to be complete (554) 01:31:16.125816 Read 1 bytes 01:31:16.125881 Process 328 bytes request [CONTINUED] 01:31:16.125934 - request found to be complete (554) 01:31:16.128009 Read 1 bytes 01:31:16.128071 Process 329 bytes request [CONTINUED] 01:31:16.128124 - request found to be complete (554) 01:31:16.130173 Read 1 bytes 01:31:16.130237 Process 330 bytes request [CONTINUED] 01:31:16.130290 - request found to be complete (554) 01:31:16.132441 Read 1 bytes 01:31:16.132506 Process 331 bytes request [CONTINUED] 01:31:16.132560 - request found to be complete (554) 01:31:16.134662 Read 1 bytes 01:31:16.134733 Process 332 bytes request [CONTINUED] 01:31:16.134787 - request found to be complete (554) 01:31:16.139331 Read 2 bytes 01:31:16.139421 Process 334 bytes request [CONTINUED] 01:31:16.139483 - request found to be complete (554) 01:31:16.141617 Read 1 bytes 01:31:16.141683 Process 335 bytes request [CONTINUED] 01:31:16.141735 - request found to be complete (554) 01:31:16.144141 Read 1 bytes 01:31:16.144214 Process 336 bytes request [CONTINUED] 01:31:16.144266 - request found to be complete (554) 01:31:16.146506 Read 1 bytes 01:31:16.146572 Process 337 bytes request [CONTINUED] 01:31:16.146624 - request found to be complete (554) 01:31:16.148681 Read 1 bytes 01:31:16.148743 Process 338 bytes request [CONTINUED] 01:31:16.148796 - request found to be complete (554) 01:31:16.163625 Read 108 bytes 01:31:16.163719 Process 446 bytes request [CONTINUED] 01:31:16.163776 - request found to be complete (554) 01:31:16.167840 Read 1 bytes 01:31:16.167919 Process 447 bytes request [CONTINUED] 01:31:16.167975 - request found to be complete (554) 01:31:16.172658 Read 2 bytes 01:31:16.172730 Process 449 bytes request [CONTINUED] 01:31:16.172787 - request found to be complete (554) 01:31:16.174238 Read 1 bytes 01:31:16.174301 Process 450 bytes request [CONTINUED] 01:31:16.174355 - request found to be complete (554) 01:31:16.176467 Read 1 bytes 01:31:16.176533 Process 451 bytes request [CONTINUED] 01:31:16.176586 - request found to be complete (554) 01:31:16.178764 Read 1 bytes 01:31:16.178826 Process 452 bytes request [CONTINUED] 01:31:16.178878 - request found to be complete (554) 01:31:16.180940 Read 1 bytes 01:31:16.181005 Process 453 bytes request [CONTINUED] 01:31:16.181059 - request found to be complete (554) 01:31:16.183112 Read 1 bytes 01:31:16.183178 Process 454 bytes request [CONTINUED] 01:31:16.183230 - request found to be complete (554) 01:31:16.185264 Read 1 bytes 01:31:16.185326 Process 455 bytes request [CONTINUED] 01:31:16.185379 - request found to be complete (554) 01:31:16.187420 Read 1 bytes 01:31:16.187485 Process 456 bytes request [CONTINUED] 01:31:16.187539 - request found to be complete (554) 01:31:16.192653 Read 2 bytes 01:31:16.192720 Process 458 bytes request [CONTINUED] 01:31:16.192775 - request found to be complete (554) 01:31:16.193574 Read 1 bytes 01:31:16.193635 Process 459 bytes request [CONTINUED] 01:31:16.193687 - request found to be complete (554) 01:31:16.195723 Read 1 bytes 01:31:16.195786 Process 460 bytes request [CONTINUED] 01:31:16.195838 - request found to be complete (554) 01:31:16.197881 Read 1 bytes 01:31:16.197946 Process 461 bytes request [CONTINUED] 01:31:16.197999 - request found to be complete (554) 01:31:16.200033 Read 1 bytes 01:31:16.200098 Process 462 bytes request [CONTINUED] 01:31:16.200151 - request found to be complete (554) 01:31:16.202182 Read 1 bytes 01:31:16.202244 Process 463 bytes request [CONTINUED] 01:31:16.202297 - request found to be complete (554) 01:31:16.204402 Read 1 bytes 01:31:16.204467 Process 464 bytes request [CONTINUED] 01:31:16.204520 - request found to be complete (554) 01:31:16.206551 Read 1 bytes 01:31:16.206617 Process 465 bytes request [CONTINUED] 01:31:16.206671 - request found to be complete (554) 01:31:16.208751 Read 1 bytes 01:31:16.208809 Process 466 bytes request [CONTINUED] 01:31:16.208858 - request found to be complete (554) 01:31:16.211041 Read 1 bytes 01:31:16.211104 Process 467 bytes request [CONTINUED] 01:31:16.211155 - request found to be complete (554) 01:31:16.213382 Read 1 bytes 01:31:16.213446 Process 468 bytes request [CONTINUED] 01:31:16.213499 - request found to be complete (554) 01:31:16.215611 Read 1 bytes 01:31:16.215669 Process 469 bytes request [CONTINUED] 01:31:16.215719 - request found to be complete (554) 01:31:16.217781 Read 1 bytes 01:31:16.217846 Process 470 bytes request [CONTINUED] 01:31:16.217899 - request found to be complete (554) 01:31:16.222659 Read 2 bytes 01:31:16.222737 Process 472 bytes request [CONTINUED] 01:31:16.222793 - request found to be complete (554) 01:31:16.224567 Read 1 bytes 01:31:16.224630 Process 473 bytes request [CONTINUED] 01:31:16.224685 - request found to be complete (554) 01:31:16.226756 Read 1 bytes 01:31:16.226823 Process 474 bytes request [CONTINUED] 01:31:16.226877 - request found to be complete (554) 01:31:16.228931 Read 1 bytes 01:31:16.228992 Process 475 bytes request [CONTINUED] 01:31:16.229044 - request found to be complete (554) 01:31:16.231092 Read 1 bytes 01:31:16.231158 Process 476 bytes request [CONTINUED] 01:31:16.231212 - request found to be complete (554) 01:31:16.233262 Read 1 bytes 01:31:16.233329 Process 477 bytes request [CONTINUED] 01:31:16.233384 - request found to be complete (554) 01:31:16.235429 Read 1 bytes 01:31:16.235491 Process 478 bytes request [CONTINUED] 01:31:16.235545 - request found to be complete (554) 01:31:16.237913 Read 1 bytes 01:31:16.237983 Process 479 bytes request [CONTINUED] 01:31:16.238037 - request found to be complete (554) 01:31:16.242657 Read 2 bytes 01:31:16.242732 Process 481 bytes request [CONTINUED] 01:31:16.242797 - request found to be complete (554) 01:31:16.244194 Read 1 bytes 01:31:16.244257 Process 482 bytes request [CONTINUED] 01:31:16.244312 - request found to be complete (554) 01:31:16.246632 Read 1 bytes 01:31:16.246707 Process 483 bytes request [CONTINUED] 01:31:16.246762 - request found to be complete (554) 01:31:16.248855 Read 1 bytes 01:31:16.248918 Process 484 bytes request [CONTINUED] 01:31:16.248972 - request found to be complete (554) 01:31:16.251054 Read 1 bytes 01:31:16.251119 Process 485 bytes request [CONTINUED] 01:31:16.251173 - request found to be complete (554) 01:31:16.253308 Read 1 bytes 01:31:16.253370 Process 486 bytes request [CONTINUED] 01:31:16.253421 - request found to be complete (554) 01:31:16.255934 Read 1 bytes 01:31:16.256008 Process 487 bytes request [CONTINUED] 01:31:16.256062 - request found to be complete (554) 01:31:16.258105 Read 1 bytes 01:31:16.258167 Process 488 bytes request [CONTINUED] 01:31:16.258219 - request found to be complete (554) 01:31:16.260321 Read 1 bytes 01:31:16.260391 Process 489 bytes request [CONTINUED] 01:31:16.260444 - request found to be complete (554) 01:31:16.262493 Read 1 bytes 01:31:16.262556 Process 490 bytes request [CONTINUED] 01:31:16.262609 - request found to be complete (554) 01:31:16.296244 Read 461 bytes 01:31:16.296375 Process 951 bytes request [CONTINUED] 01:31:16.296434 - request found to be complete (554) 01:31:16.296745 Wrote request (951 bytes) input to log/3/server.input 01:31:16.296850 Send response test554 section 01:31:16.297091 connection close instruction "swsclose" found in response 01:31:16.297270 Response sent (141 bytes) and written to log/3/server.response 01:31:16.297330 instructed to close connection after server-reply 01:31:16.297382 ====> Client disconnect 0 01:31:18.683985 ====> Client connect 01:31:18.684128 accept_connection 3 returned 4 01:31:18.684211 accept_connection 3 returned 0 01:31:18.816959 Read 309 bytes 01:31:18.817151 Process 309 bytes request 01:31:18.817245 Got request: POST /554 HTTP/1.1 01:31:18.817312 Serve test number 554 part 0 01:31:18.817537 - request found to be complete (554) 01:31:18.817733 Found Content-Length: 794 in the request 01:31:18.829156 Read 1 bytes 01:31:18.829270 Process 310 bytes request [CONTINUED] 01:31:18.829351 - request found to be complete (554) 01:31:18.835984 Read 1 bytes 01:31:18.836077 Process 311 bytes request [CONTINUED] 01:31:18.836143 - request found to be complete (554) 01:31:18.837835 Read 1 bytes 01:31:18.837906 Process 312 bytes request [CONTINUED] 01:31:18.837965 - request found to be complete (554) 01:31:18.840314 Read 1 bytes 01:31:18.840398 Process 313 bytes request [CONTINUED] 01:31:18.840461 - request found to be complete (554) 01:31:18.842770 Read 1 bytes 01:31:18.842848 Process 314 bytes request [CONTINUED] 01:31:18.842909 - request found to be complete (554) 01:31:18.845245 Read 1 bytes 01:31:18.845318 Process 315 bytes request [CONTINUED] 01:31:18.845380 - request found to be complete (554) 01:31:18.847665 Read 1 bytes 01:31:18.847747 Process 316 bytes request [CONTINUED] 01:31:18.847812 - request found to be complete (554) 01:31:18.850077 Read 1 bytes 01:31:18.850152 Process 317 bytes request [CONTINUED] 01:31:18.850209 - request found to be complete (554) 01:31:18.852483 Read 1 bytes 01:31:18.852557 Process 318 bytes request [CONTINUED] 01:31:18.852618 - request found to be complete (554) 01:31:18.854862 Read 1 bytes 01:31:18.854933 Process 319 bytes request [CONTINUED] 01:31:18.854995 - request found to be complete (554) 01:31:18.857493 Read 1 bytes 01:31:18.857573 Process 320 bytes request [CONTINUED] 01:31:18.857637 - request found to be complete (554) 01:31:18.862652 Read 2 bytes 01:31:18.862771 Process 322 bytes request [CONTINUED] 01:31:18.862836 - request found to be complete (554) 01:31:18.864545 Read 1 bytes 01:31:18.864617 Process 323 bytes request [CONTINUED] 01:31:18.864679 - request found to be complete (554) 01:31:18.866928 Read 1 bytes 01:31:18.867001 Process 324 bytes request [CONTINUED] 01:31:18.867064 - request found to be complete (554) 01:31:18.869538 Read 1 bytes 01:31:18.869624 Process 325 bytes request [CONTINUED] 01:31:18.869684 - request found to be complete (554) 01:31:18.872004 Read 1 bytes 01:31:18.872075 Process 326 bytes request [CONTINUED] 01:31:18.872134 - request found to be complete (554) 01:31:18.874374 Read 1 bytes 01:31:18.874449 Process 327 bytes request [CONTINUED] 01:31:18.874508 - request found to be complete (554) 01:31:18.876735 Read 1 bytes 01:31:18.876816 Process 328 bytes request [CONTINUED] 01:31:18.876883 - request found to be complete (554) 01:31:18.879102 Read 1 bytes 01:31:18.879170 Process 329 bytes request [CONTINUED] 01:31:18.879229 - request found to be complete (554) 01:31:18.881427 Read 1 bytes 01:31:18.881502 Process 330 bytes request [CONTINUED] 01:31:18.881564 - request found to be complete (554) 01:31:18.883782 Read 1 bytes 01:31:18.883857 Process 331 bytes request [CONTINUED] 01:31:18.883915 - request found to be complete (554) 01:31:18.886119 Read 1 bytes 01:31:18.886191 Process 332 bytes request [CONTINUED] 01:31:18.886251 - request found to be complete (554) 01:31:18.888444 Read 1 bytes 01:31:18.888520 Process 333 bytes request [CONTINUED] 01:31:18.888583 - request found to be complete (554) 01:31:18.890796 Read 1 bytes 01:31:18.890886 Process 334 bytes request [CONTINUED] 01:31:18.890949 - request found to be complete (554) 01:31:18.893129 Read 1 bytes 01:31:18.893205 Process 335 bytes request [CONTINUED] 01:31:18.893268 - request found to be complete (554) 01:31:18.895463 Read 1 bytes 01:31:18.895531 Process 336 bytes request [CONTINUED] 01:31:18.895590 - request found to be complete (554) 01:31:18.897894 Read 1 bytes 01:31:18.897966 Process 337 bytes request [CONTINUED] 01:31:18.898025 - request found to be complete (554) 01:31:18.900257 Read 1 bytes 01:31:18.900329 Process 338 bytes request [CONTINUED] 01:31:18.900390 - request found to be complete (554) 01:31:18.902632 Read 1 bytes 01:31:18.902710 Process 339 bytes request [CONTINUED] 01:31:18.902772 - request found to be complete (554) 01:31:18.904965 Read 1 bytes 01:31:18.905035 Process 340 bytes request [CONTINUED] 01:31:18.905096 - request found to be complete (554) 01:31:18.907308 Read 1 bytes 01:31:18.907391 Process 341 bytes request [CONTINUED] 01:31:18.907454 - request found to be complete (554) 01:31:18.909697 Read 1 bytes 01:31:18.909771 Process 342 bytes request [CONTINUED] 01:31:18.909830 - request found to be complete (554) 01:31:18.912032 Read 1 bytes 01:31:18.912102 Process 343 bytes request [CONTINUED] 01:31:18.912162 - request found to be complete (554) 01:31:18.914378 Read 1 bytes 01:31:18.914452 Process 344 bytes request [CONTINUED] 01:31:18.914513 - request found to be complete (554) 01:31:18.916731 Read 1 bytes 01:31:18.916807 Process 345 bytes request [CONTINUED] 01:31:18.916869 - request found to be complete (554) 01:31:18.919050 Read 1 bytes 01:31:18.919121 Process 346 bytes request [CONTINUED] 01:31:18.919185 - request found to be complete (554) 01:31:18.921378 Read 1 bytes 01:31:18.921450 Process 347 bytes request [CONTINUED] 01:31:18.921508 - request found to be complete (554) 01:31:18.923731 Read 1 bytes 01:31:18.923807 Process 348 bytes request [CONTINUED] 01:31:18.923866 - request found to be complete (554) 01:31:18.929318 Read 2 bytes 01:31:18.929402 Process 350 bytes request [CONTINUED] 01:31:18.929461 - request found to be complete (554) 01:31:18.930402 Read 1 bytes 01:31:18.930469 Process 351 bytes request [CONTINUED] 01:31:18.930532 - request found to be complete (554) 01:31:18.932749 Read 1 bytes 01:31:18.932822 Process 352 bytes request [CONTINUED] 01:31:18.932881 - request found to be complete (554) 01:31:18.935806 Read 108 bytes 01:31:18.935878 Process 460 bytes request [CONTINUED] 01:31:18.935935 - request found to be complete (554) 01:31:18.938240 Read 1 bytes 01:31:18.938308 Process 461 bytes request [CONTINUED] 01:31:18.938366 - request found to be complete (554) 01:31:18.940558 Read 1 bytes 01:31:18.940632 Process 462 bytes request [CONTINUED] 01:31:18.940691 - request found to be complete (554) 01:31:18.942925 Read 1 bytes 01:31:18.942996 Process 463 bytes request [CONTINUED] 01:31:18.943054 - request found to be complete (554) 01:31:18.945256 Read 1 bytes 01:31:18.945327 Process 464 bytes request [CONTINUED] 01:31:18.945390 - request found to be complete (554) 01:31:18.947583 Read 1 bytes 01:31:18.947658 Process 465 bytes request [CONTINUED] 01:31:18.947727 - request found to be complete (554) 01:31:18.952649 Read 2 bytes 01:31:18.952734 Process 467 bytes request [CONTINUED] 01:31:18.952797 - request found to be complete (554) 01:31:18.954339 Read 1 bytes 01:31:18.954405 Process 468 bytes request [CONTINUED] 01:31:18.954463 - request found to be complete (554) 01:31:18.956691 Read 1 bytes 01:31:18.956769 Process 469 bytes request [CONTINUED] 01:31:18.956831 - request found to be complete (554) 01:31:18.959043 Read 1 bytes 01:31:18.959114 Process 470 bytes request [CONTINUED] 01:31:18.959175 - request found to be complete (554) 01:31:18.961376 Read 1 bytes 01:31:18.961447 Process 471 bytes request [CONTINUED] 01:31:18.961505 - request found to be complete (554) 01:31:18.963720 Read 1 bytes 01:31:18.963795 Process 472 bytes request [CONTINUED] 01:31:18.963854 - request found to be complete (554) 01:31:18.966040 Read 1 bytes 01:31:18.966113 Process 473 bytes request [CONTINUED] 01:31:18.966190 - request found to be complete (554) 01:31:18.968400 Read 1 bytes 01:31:18.968468 Process 474 bytes request [CONTINUED] 01:31:18.968525 - request found to be complete (554) 01:31:18.970728 Read 1 bytes 01:31:18.970808 Process 475 bytes request [CONTINUED] 01:31:18.970871 - request found to be complete (554) 01:31:18.973064 Read 1 bytes 01:31:18.973135 Process 476 bytes request [CONTINUED] 01:31:18.973192 - request found to be complete (554) 01:31:18.975442 Read 1 bytes 01:31:18.975509 Process 477 bytes request [CONTINUED] 01:31:18.975565 - request found to be complete (554) 01:31:18.977771 Read 1 bytes 01:31:18.977845 Process 478 bytes request [CONTINUED] 01:31:18.977906 - request found to be complete (554) 01:31:18.982660 Read 2 bytes 01:31:18.982762 Process 480 bytes request [CONTINUED] 01:31:18.982824 - request found to be complete (554) 01:31:18.985078 Read 1 bytes 01:31:18.985149 Process 481 bytes request [CONTINUED] 01:31:18.985216 - request found to be complete (554) 01:31:18.987426 Read 1 bytes 01:31:18.987501 Process 482 bytes request [CONTINUED] 01:31:18.987559 - request found to be complete (554) 01:31:18.989775 Read 1 bytes 01:31:18.989847 Process 483 bytes request [CONTINUED] 01:31:18.989909 - request found to be complete (554) 01:31:18.992127 Read 1 bytes 01:31:18.992196 Process 484 bytes request [CONTINUED] 01:31:18.992258 - request found to be complete (554) 01:31:18.994481 Read 1 bytes 01:31:18.994555 Process 485 bytes request [CONTINUED] 01:31:18.994615 - request found to be complete (554) 01:31:18.999316 Read 2 bytes 01:31:18.999391 PrCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind557 ./libtest/libtests lib557 - > log/5/stdout557 2> log/5/stderr557 ocess 487 bytes request [CONTINUED] 01:31:18.999450 - request found to be complete (554) 01:31:19.001094 Read 1 bytes 01:31:19.001164 Process 488 bytes request [CONTINUED] 01:31:19.001222 - request found to be complete (554) 01:31:19.003655 Read 1 bytes 01:31:19.003731 Process 489 bytes request [CONTINUED] 01:31:19.003793 - request found to be complete (554) 01:31:19.006009 Read 1 bytes 01:31:19.006085 Process 490 bytes request [CONTINUED] 01:31:19.006152 - request found to be complete (554) 01:31:19.008427 Read 1 bytes 01:31:19.008496 Process 491 bytes request [CONTINUED] 01:31:19.008557 - request found to be complete (554) 01:31:19.010776 Read 1 bytes 01:31:19.010849 Process 492 bytes request [CONTINUED] 01:31:19.010908 - request found to be complete (554) 01:31:19.013116 Read 1 bytes 01:31:19.013188 Process 493 bytes request [CONTINUED] 01:31:19.013250 - request found to be complete (554) 01:31:19.015443 Read 1 bytes 01:31:19.015515 Process 494 bytes request [CONTINUED] 01:31:19.015575 - request found to be complete (554) 01:31:19.017774 Read 1 bytes 01:31:19.017856 Process 495 bytes request [CONTINUED] 01:31:19.017923 - request found to be complete (554) 01:31:19.020208 Read 1 bytes 01:31:19.020283 Process 496 bytes request [CONTINUED] 01:31:19.020344 - request found to be complete (554) 01:31:19.022616 Read 1 bytes 01:31:19.022707 Process 497 bytes request [CONTINUED] 01:31:19.022774 - request found to be complete (554) 01:31:19.027538 Read 1 bytes 01:31:19.027640 Process 498 bytes request [CONTINUED] 01:31:19.027700 - request found to be complete (554) 01:31:19.032655 Read 2 bytes 01:31:19.032745 Process 500 bytes request [CONTINUED] 01:31:19.032808 - request found to be complete (554) 01:31:19.034688 Read 1 bytes 01:31:19.034756 Process 501 bytes request [CONTINUED] 01:31:19.034814 - request found to be complete (554) 01:31:19.037146 Read 1 bytes 01:31:19.037229 Process 502 bytes request [CONTINUED] 01:31:19.037296 - request found to be complete (554) 01:31:19.039598 Read 1 bytes 01:31:19.039676 Process 503 bytes request [CONTINUED] 01:31:19.039737 - request found to be complete (554) 01:31:19.041968 Read 1 bytes 01:31:19.042044 Process 504 bytes request [CONTINUED] 01:31:19.042110 - request found to be complete (554) 01:31:19.046876 Read 461 bytes 01:31:19.046956 Process 965 bytes request [CONTINUED] 01:31:19.047017 - request found to be complete (554) 01:31:19.047280 Wrote request (965 bytes) input to log/3/server.input 01:31:19.047385 Send response test554 section 01:31:19.047630 connection close instruction "swsclose" found in response 01:31:19.047820 Response sent (141 bytes) and written to log/3/server.response 01:31:19.047883 instructed to close connection after server-reply 01:31:19.047939 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 54462 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 554 === End of file server.cmd === Start of file server.input POST /554 HTTP/1.1 Host: 127.0.0.1:46853 Accept: */* Content-Length: 780 Content-Type: multipart/form-data; boundary=------------------------f21ZI1XNBW2EKutg3iGLLA --------------------------f21ZI1XNBW2EKutg3iGLLA Content-Disposition: form-data; name="sendfile"; filename="postit2.c" this is what we post to the silly web server --------------------------f21ZI1XNBW2EKutg3iGLLA Content-Disposition: form-data; name="callbackdata" this is what we post to the silly web server --------------------------f21ZI1XNBW2EKutg3iGLLA Content-Disposition: form-data; name="filename" postit2.c --------------------------f21ZI1XNBW2EKutg3iGLLA Content-Disposition: form-data; name="submit" Content-Type: text/plain send --------------------------f21ZI1XNBW2EKutg3iGLLA Content-Disposition: form-data; name="somename"; filename="somefile.txt" Content-Type: text/plain blah blah --------------------------f21ZI1XNBW2EKutg3iGLLA-- POST /554 HTTP/1.1 Host: 127.0.0.1:46853 Accept: */* Content-Length: 794 Content-Type: multipart/form-data; boundary=------------------------FDobPZmb4g71hPGUSxwjgf --------------------------FDobPZmb4g71hPGUSxwjgf Content-Disposition: form-data; name="sendfile alternative"; filename="file name 2" this is what we post to the silly web server --------------------------FDobPZmb4g71hPGUSxwjgf Content-Disposition: form-data; name="callbackdata" this is what we post to the silly web server --------------------------FDobPZmb4g71hPGUSxwjgf Content-Disposition: form-data; name="filename" postit2.c --------------------------FDobPZmb4g71hPGUSxwjgf Content-Disposition: form-data; name="submit" Content-Type: text/plain send --------------------------FDobPZmb4g71hPGUSxwjgf Content-Disposition: form-data; name="somename"; filename="somefile.txt" Content-Type: text/plain blah blah --------------------------FDobPZmb4g71hPGUSxwjgf-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file server.response === Start of file stderr554 URL: http://127.0.0.1:46853/554 * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 57864 * using HTTP/1.x > POST /554 HTTP/1.1 Host: 127.0.0.1:46853 Accept: */* Content-Length: 780 Content-Type: multipart/form-data; boundary=------------------------f21ZI1XNBW2EKutg3iGLLA * upload completely sent off: 780 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * shutting down connection #0 * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 46970 * using HTTP/1.x > POST /554 HTTP/1.1 Host: 127.0.0.1:46853 Accept: */* Content-Length: 794 Content-Type: multipart/form-data; boundary=------------------------FDobPZmb4g71hPGUSxwjgf * upload completely sent off: 794 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * shutting down connection #0 Test ended with result 0 === End of file stderr554 === Start of file stdout554 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file stdout554 === Start of file valgrind554 ==267388== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind554 test 0557...[curl_mprintf() testing] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind557 ./libtest/libtests lib557 - > log/5/stdout557 2> log/5/stderr557 valgrind ERROR ==267814== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 557 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind557 ./libtest/libtests lib557 - > log/5/stdout557 2> log/5/stderr557 === End of file commands.log === Start of file server.cmd Testnum 5CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind555 ./libtest/libtests lib555 http://test.remote.example.com/path/555 http://127.0.0.1:39863 testuser:testpass > log/2/stdout555 2> log/2/stderr555 57 === End of file server.cmd === Start of file stderr557 URL: - Test ended with result 0 === End of file stderr557 === Start of file stdout557 All curl_mprintf() unsigned short tests OK All curl_mprintf() signed short tests OK All curl_mprintf() unsigned int tests OK All curl_mprintf() signed int tests OK All curl_mprintf() unsigned long tests OK All curl_mprintf() signed long tests OK All curl_mprintf() curl_off_t tests OK All curl_mprintf() strings tests OK All float strings tests OK All curl_mprintf() octal & hexadecimal tests OK === End of file stdout557 === Start of file valgrind557 ==267814== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind557 test 0555...[HTTP proxy auth NTLM with POST data from read callback multi-if] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind555 ./libtest/libtests lib555 http://test.remote.example.com/path/555 http://127.0.0.1:39863 testuser:testpass > log/2/stdout555 2> log/2/stderr555 valgrind ERROR ==267574== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 555 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind555 ./libtest/libtests lib555 http://test.remote.example.com/path/555 http://127.0.0.1:39863 testuser:testpass > log/2/stdout555 2> log/2/stderr555 === End of file commands.log === Start of file http_server.log 01:30:40.061609 ====> Client connect 01:30:40.061758 accept_connection 3 returned 4 01:30:40.061825 accept_connection 3 returned 0 01:30:40.067615 Read 93 bytes 01:30:40.067697 Process 93 bytes request 01:30:40.067776 Got request: GET /verifiedserver HTTP/1.1 01:30:40.067835 Are-we-friendly question received 01:30:40.067943 Wrote request (93 bytes) input to log/2/server.input 01:30:40.068024 Identifying ourselves as friends 01:30:40.068188 Response sent (57 bytes) and written to log/2/server.response 01:30:40.068244 special request received, no persistency 01:30:40.068301 ====> Client disconnect 0 01:31:25.931684 ====> Client connect 01:31:25.931821 accept_connection 3 returned 4 01:31:25.931914 accept_connection 3 returned 0 01:31:27.319940 Read 236 bytes 01:31:27.320129 Process 236 bytes request 01:31:27.320221 Got request: POST http://test.remote.example.com/path/555 HTTP/1.1 01:31:27.320291 Serve test number 555 part 0 01:31:27.320524 - request found to be complete (555) 01:31:27.320731 Found Content-Length: 36 in the request 01:31:27.320901 Wrote request (236 bytes) input to log/2/server.input 01:31:27.321007 Send response test555 section 01:31:27.321273 connection close instruction "swsclose" found in response 01:31:27.321465 Response sent (325 bytes) and written to log/2/server.response 01:31:27.321533 instructed to close connection after server-reply 01:31:27.321595 ====> Client disconnect 0 01:31:29.364410 ====> Client connect 01:31:29.364540 accept_connection 3 returned 4 01:31:29.364619 accept_connection 3 returned 0 01:31:29.587990 Read 271 bytes 01:31:29.588185 Process 271 bytes request 01:31:29.588284 Got request: POST http://test.remote.example.com/path/555 HTTP/1.1 01:31:29.588355 Serve test number 555 part 0 01:31:29.588597 - request found to be complete (555) 01:31:29.588830 Found Content-Length: 0 in the request 01:31:29.588909 Received NTLM type-1, sending back data 1001 01:31:29.589006 Wrote request (271 bytes) input to log/2/server.input 01:31:29.589094 Send response test555 section 01:31:29.589536 Response sent (356 bytes) and written to log/2/server.response 01:31:29.589607 => persistent connection request ended, awaits new request 01:31:31.033282 Read 440 bytes 01:31:31.033450 Process 440 bytes request 01:31:31.033545 Got request: POST http://test.remote.example.com/path/555 HTTP/1.1 01:31:31.033616 Serve test number 555 part 0 01:31:31.033869 - request found to be complete (555) 01:31:31.034085 Found Content-Length: 36 in the request 01:31:31.034165 Received NTLM type-3, sending back data 1002 01:31:31.034227 Expecting 36 POSTed bytes 01:31:31.034326 Wrote request (440 bytes) input to log/2/server.input 01:31:31.034418 Send response test555 section 01:31:31.034713 connection close instruction "swsclose" found in response 01:31:31.034936 Response sent (189 bytes) and written to log/2/server.response 01:31:31.035004 instructed to close connection after server-reply 01:31:31.035064 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 47068 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 555 === End of file server.cmd === Start of file server.input POST http://test.remote.example.com/path/555 HTTP/1.1 Host: test.remote.example.com Accept: */* Proxy-Connection: Keep-Alive Content-Length: 36 Content-Type: application/x-www-form-urlencoded this is the blurb we want to upload POST http://test.remote.example.com/path/555 HTTP/1.1 Host: test.remote.example.com Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= Accept: */* Proxy-Connection: Keep-Alive Content-Length: 0 Content-Type: application/x-www-form-urlencoded POST http://test.remote.example.com/path/555 HTTP/1.1 Host: test.remote.example.com Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= Accept: */* Proxy-Connection: Keep-Alive Content-Length: 36 Content-Type: application/x-www-form-urlencoded this is the blurb we want to upload === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 407 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Proxy-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" Proxy-Authenticate: Basic realm="gimme all yer s3cr3ts" Proxy-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Connection: close This is not the real page HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 34 Hey you, authenticate or go away HTTP/1.1 200 Things are fine in proxy land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. === End of file server.response === Start of file stderr555 URL: http://test.remote.example.com/path/555 * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 33028 * using HTTP/1.x READ > POST http://test.remote.example.com/path/555 HTTP/1.1 Host: test.remote.example.com Accept: */* Proxy-Connection: Keep-Alive Content-Length: 36 Content-Type: application/x-www-form-urlencoded * upload completely sent off: 36 bytes < HTTP/1.1 407 Authorization Required swsclose < Server: Apache/1.3.27 (Darwin) PHP/4.1.2 < Proxy-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" < Proxy-Authenticate: Basic realm="gimme all yer s3cr3ts" < Proxy-Authenticate: NTLM < Content-Type: text/html; charset=iso-8859-1 < Connection: close * Need to rewind upload for next request < * shutting down connection #0 REWIND * Issue anCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind556 ./libtest/libtests lib556 http://127.0.0.1:40641 > log/1/stdout556 2> log/1/stderr556 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind552 ./libtest/libtests lib552 http://test.remote.example.com/path/552 http://s1lly:pers0n@127.0.0.1:38277/ > log/6/stdout552 2> log/6/stderr552 other request to this URL: 'http://test.remote.example.com/path/555' * Hostname 127.0.0.1 was found in DNS cache * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 33042 * using HTTP/1.x * Proxy auth using NTLM with user 'testuser' > POST http://test.remote.example.com/path/555 HTTP/1.1 Host: test.remote.example.com Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= Accept: */* Proxy-Connection: Keep-Alive Content-Length: 0 Content-Type: application/x-www-form-urlencoded < HTTP/1.1 407 Authorization Required to proxy me my dear < Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== < Content-Length: 34 * Ignoring the response-body * setting size while ignoring < * Connection #1 to host 127.0.0.1:39863 left intact * Issue another request to this URL: 'http://test.remote.example.com/path/555' * Reusing existing http: connection with proxy 127.0.0.1 * Proxy auth using NTLM with user 'testuser' READ > POST http://test.remote.example.com/path/555 HTTP/1.1 Host: test.remote.example.com Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= Accept: */* Proxy-Connection: Keep-Alive Content-Length: 36 Content-Type: application/x-www-form-urlencoded * upload completely sent off: 36 bytes < HTTP/1.1 200 Things are fine in proxy land swsclose < Server: Microsoft-IIS/5.0 < Content-Type: text/html; charset=iso-8859-1 < Content-Length: 42 < * Connection #1 to host 127.0.0.1:39863 left intact Test ended with result 0 === End of file stderr555 === Start of file stdout555 HTTP/1.1 407 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Proxy-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" Proxy-Authenticate: Basic realm="gimme all yer s3cr3ts" Proxy-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Connection: close HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 34 HTTP/1.1 200 Things are fine in proxy land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. === End of file stdout555 === Start of file valgrind555 ==267574== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind555 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 556 in state 4 Runner 2 (id 185908) running test 565 in state 4 Runner 3 (id 185910) running test 563 in state 4 Runner 4 (id 185912) running test 562 in state 4 Runner 5 (id 185914) running test 564 in state 4 Runner 6 (id 185916) running test 552 in state 4 Runner 7 (id 185918) running test 559 in state 4 Runner 8 (id 185920) running test 561 in state 4 test 0556...[send and recv HTTP] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind556 ./libtest/libtests lib556 http://127.0.0.1:40641 > log/1/stdout556 2> log/1/stderr556 valgrind ERROR ==267766== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 556 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind556 ./libtest/libtests lib556 http://127.0.0.1:40641 > log/1/stdout556 2> log/1/stderr556 === End of file commands.log === Start of file http_server.log 01:30:57.238328 ====> Client connect 01:30:57.238478 accept_connection 3 returned 4 01:30:57.238549 accept_connection 3 returned 0 01:30:57.245135 Read 93 bytes 01:30:57.245212 Process 93 bytes request 01:30:57.245293 Got request: GET /verifiedserver HTTP/1.1 01:30:57.245353 Are-we-friendly question received 01:30:57.245455 Wrote request (93 bytes) input to log/1/server.input 01:30:57.245538 Identifying ourselves as friends 01:30:57.245704 Response sent (57 bytes) and written to log/1/server.response 01:30:57.245761 special request received, no persistency 01:30:57.245812 ====> Client disconnect 0 01:31:43.046240 ====> Client connect 01:31:43.046380 accept_connection 3 returned 4 01:31:43.046457 accept_connection 3 returned 0 01:31:44.217440 Read 34 bytes 01:31:44.217624 Process 34 bytes request 01:31:44.217717 Got request: GET /556 HTTP/1.1 01:31:44.217790 Serve test number 556 part 0 01:31:44.217973 - request found to be complete (556) 01:31:44.218217 Wrote request (34 bytes) input to log/1/server.input 01:31:44.218325 Send response test556 section 01:31:44.218519 connection close instruction "swsclose" found in response 01:31:44.218720 Response sent (144 bytes) and written to log/1/server.response 01:31:44.218786 instructed to close connection after server-reply 01:31:44.218845 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 53156 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 556 === End of file server.cmd === Start of file server.input GET /556 HTTP/1.1 Host: ninja === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK swsclose Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT Content-Length: 6 Connection: close -foo- === End of file server.response === Start of file stderr556 URL: http://127.0.0.1:40641 * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 55024 * Connection #0 to host 127.0.0.1:40641 left intact Test ended with result 0 === End of file stderr556 === Start of file stdout556 HTTP/1.1 200 OK swsclose Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT Content-Length: 6 Connection: close -foo- === End of file stdout556 === Start of file valgrind556 ==267766== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind556 test 0552...[HTTP proxy auth Digest with 70K POST data from read callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind552 ./libtest/libtests lib552 http://test.remote.example.com/path/552 http://s1lly:pers0n@127.0.0.1:38277/ > log/6/stdout552 2> log/6/stderr552 valgrind ERROR ==267094== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 552 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind552 ./libtest/libtests lib552 http://test.remote.example.com/path/552 http://s1lly:pers0n@127.0.0.1:38277/ > log/6/stdout552 2> log/6/stderr552 === End of file commands.log === Start of file http_server.log 01:30:18.784888 ====> Client connect 01:30:18.785058 accept_connection 3 returned 4 01:30:18.785146 accept_connection 3 returned 0 01:30:18.792275 Read 93 bytes 01:30:18.792370 Process 93 bytes request 01:30:18.792464 Got request: GET /verifiedserver HTTP/1.1 01:30:18.792534 Are-we-friendly question received 01:30:18.792652 Wrote request (93 bytes) input to log/6/server.input 01:30:18.792744 Identifying ourselves as friends 01:30:18.792920 Response sent (57 bytes) and written to log/6/server.response 01:30:18.792983 special request received, no persistency 01:30:18.793039 ====> Client disconnect 0 01:31:03.971612 ====> Client connect 01:31:03.971775 accept_connection 3 returned 4 01:31:03.971868 accept_connection 3 returned 0 01:31:05.315159 Read 65482 bytes 01:31:05.315370 Process 65482 bytes request 01:31:05.315471 Got request: POST http://test.remote.example.com/path/552 HTTP/1.1 01:31:05.315550 Serve test number 552 part 0 01:31:05.316985 - request found to be complete (552) 01:31:05.318156 Found Content-Length: 70000 in the request 01:31:05.318267 Read 54 bytes 01:31:05.318343 Process 65536 bytes request [CONTINUED] 01:31:05.318410 - request found to be complete (552) 01:31:18.855173 Read 4667 bytes 01:31:18.855348 Process 70203 bytes request [CONTINUED] 01:31:18.855420 - request found to be complete (552) 01:31:18.856772 Wrote request (70203 bytes) input to log/6/server.input 01:31:18.856864 Send response test552 section 01:31:18.857872 connection close instruction "swsclose" found in response 01:31:18.858245 Response sent (648 bytes) and written to log/6/server.response 01:31:18.858315 instructed to close connection after server-reply 01:31:18.858380 ====> Client disconnect 0 01:31:21.980113 ====> Client connect 01:31:21.980247 accept_connection 3 returned 4 01:31:21.980323 accept_connection 3 returned 0 01:31:28.819195 Read 65482 bytes 01:31:28.819398 Process 65482 bytes request 01:31:28.819507 Got request: POST http://test.remote.example.com/path/552 HTTP/1.1 01:31:28.819588 Serve test number 552 part 0 01:31:28.820676 - request found to be complete (552) 01:31:28.821627 Found Content-Length: 70000 in the request 01:31:28.821714 Received Digest request, sending back data 1000 01:31:28.821809 Read 54 bytes 01:31:28.821887 Process 65536 bytes request [CONTINUED] 01:31:28.821959 - request found to be complete (552) 01:31:42.018856 Read 5216 bytes 01:31:42.019052 Process 70752 bytes request [CONTINUED] 01:31:42.019117 - request found to be complete (552) 01:31:42.020352 Wrote request (70752 bytes) input to log/6/server.input 01:31:42.020436 Send response test552 section 01:31:42.021370 connection close instruction "swsclose" found in response 01:31:42.021596 Response sent (189 bytes) and written to log/6/server.response 01:31:42.021662 instructed to close connection after server-reply 01:31:42.021720 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 49240 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 552 === End of file server.cmd === Start of file server.input POST http://test.remote.example.com/path/552 HTTP/1.1 Host: test.remote.example.com Accept: */* Proxy-Connection: Keep-Alive Content-Length: 70000 Content-Type: application/x-www-form-urlencoded test datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest dataPOST http://test.remote.example.com/path/552 HTTP/1.1 Host: test.remote.example.com Proxy-Authorization: Digest username="s1lly", realm="something fun to read", nonce="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", uri="/path/552", response="be7aedc47d821b6d847c445ded782c43" Accept: */* Proxy-Connection: Keep-Alive Content-Length: 70000 Content-Type: application/x-www-form-urlencoded test datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest datatest data === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 407 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Proxy-Authenticate: Digest realm="something fun to read", nonce="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" Content-Type: text/html; charset=iso-8859-1 Connection: close This is not the real page HTTP/1.1 200 Things are fine in proxy land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. === End of file server.response === Start of file stderr552 URL: http://test.remote.example.com/path/552 == Info: Trying 127.0.0.1:38277... == Info: Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 51798 == Info: using HTTP/1.x => Send header, 203 bytes (0xcb) 0000: POST http://test.remote.example.com/path/552 HTTP/1.1 0037: Host: test.remote.example.com 0056: Accept: */* 0063: Proxy-Connection: Keep-Alive 0081: Content-Length: 70000 0098: Content-Type: application/x-www-form-urlencoded 00c9: => Send data, 65333 bytes (0xff35) 0000: test data.test data.test data.test data.test data.test data.test 0040: data.test data.test data.test data.test data.test data.test dat 0080: a.test data.test data.test data.test data.test data.test data.te 00c0: st data.test data.test data.test data.test data.test data.test d 0100: ata.test data.test data.test data.test data.test data.test data. 0140: test data.test data.test data.test data.test data.test data.test 0180: data.test data.test data.test data.test data.test data.test dat 01c0: a.test data.test data.test data.test data.test data.test data.te 0200: st data.test data.test data.test data.test data.test data.test d 0240: ata.test data.test data.test data.test data.test data.test data. 0280: test data.test data.test data.test data.test data.test data.test 02c0: data.test data.test data.test data.test data.test data.test dat 0300: a.test data.test data.test data.test data.test data.test data.te 0340: st data.test data.test data.test data.test data.test data.test d 0380: ata.test data.test data.test data.test data.test data.test data. 03c0: test data.test data.test data.test data.test data.test data.test 0400: data.test data.test data.test data.test data.test data.test dat 0440: a.test data.test data.test data.test data.test data.test data.te 0480: st data.test data.test data.test data.test data.test data.test d 04c0: ata.test data.test data.test data.test data.test data.test data. 0500: test data.test data.test data.test data.test data.test data.test 0540: data.test data.test data.test data.test data.test data.test dat 0580: a.test data.test data.test data.test data.test data.test data.te 05c0: st data.test data.test data.test data.test data.test data.test d 0600: ata.test data.test data.test data.test data.test data.test data. 0640: test data.test data.test data.test data.test data.test data.test 0680: data.test data.test data.test data.test data.test data.test dat 06c0: a.test data.test data.test data.test data.test data.test data.te 0700: st data.test data.test data.test data.test data.test data.test d 0740: ata.test data.test data.test data.test data.test data.test data. 0780: test data.test data.test data.test data.test data.test data.test 07c0: data.test data.test data.test data.test data.test data.test dat 0800: a.test data.test data.test data.test data.test data.test data.te 0840: st data.test data.test data.test data.test data.test data.test d 0880: ata.test data.test data.test data.test data.test data.test data. 08c0: test data.test data.test data.test data.test data.test data.test 0900: data.test data.test data.test data.test data.test data.test dat 0940: a.test data.test data.test data.test data.test data.test data.te 0980: st data.test data.test data.test data.test data.test data.test d 09c0: ata.test data.test data.test data.test data.test data.test data. 0a00: test data.test data.test data.test data.test data.test data.test 0a40: data.test data.test data.test data.test data.test data.test dat 0a80: a.test data.test data.test data.test data.test data.test data.te 0ac0: st data.test data.test data.test data.test data.test data.test d 0b00: ata.test data.test data.test data.test data.test data.test data. 0b40: test data.test data.test data.test data.test data.test data.test 0b80: data.test data.test data.test data.test data.test data.test dat 0bc0: a.test data.test data.test data.test data.test data.test data.te 0c00: st data.test data.test data.test data.test data.test data.test d 0c40: ata.test data.test data.test data.test data.test data.test data. 0c80: test data.test data.test data.test data.test data.test data.test 0cc0: data.test data.test data.test data.test data.test data.test dat 0d00: a.test data.test data.test data.test data.test data.test data.te 0d40: st data.test data.test data.test data.test data.test data.test d 0d80: ata.test data.test data.test data.test data.test data.test data. 0dc0: test data.test data.test data.test data.test data.test data.test 0e00: data.test data.test data.test data.test data.test data.test dat 0e40: a.test data.test data.test data.test data.test data.test data.te 0e80: st data.test data.test data.test data.test data.test data.test d 0ec0: ata.test data.test data.test data.test data.test data.test data. 0f00: test data.test data.test data.test data.test data.test data.test 0f40: data.test data.test data.test data.test data.test data.test dat 0f80: a.test data.test data.test data.test data.test data.test data.te 0fc0: st data.test data.test data.test data.test data.test data.test d 1000: ata.test data.test data.test data.test data.test data.test data. 1040: test data.test data.test data.test data.test data.test data.test 1080: data.test data.test data.test data.test data.test data.test dat 10c0: a.test data.test data.test data.test data.test data.test data.te 1100: st data.test data.test data.test data.test data.test data.test d 1140: ata.test data.test data.test data.test data.test data.test data. 1180: test data.test data.test data.test data.test data.test data.test 11c0: data.test data.test data.test data.test data.test data.test dat 1200: a.test data.test data.test data.test data.test data.test data.te 1240: st data.test data.test data.test data.test data.test data.test d 1280: ata.test data.test data.test data.test data.test data.test data. 12c0: test data.test data.test data.test data.test data.test data.test 1300: data.test data.test data.test data.test data.test data.test dat 1340: a.test data.test data.test data.test data.test data.test data.te 1380: st data.test data.test data.test data.test data.test data.test d 13c0: ata.test data.test data.test data.test data.test data.test data. 1400: test data.test data.test data.test data.test data.test data.test 1440: data.test data.test data.test data.test data.test data.test dat 1480: a.test data.test data.test data.test data.test data.test data.te 14c0: st data.test data.test data.test data.test data.test data.test d 1500: ata.test data.test data.test data.test data.test data.test data. 1540: test data.test data.test data.test data.test data.test data.test 1580: data.test data.test data.test data.test data.test data.test dat 15c0: a.test data.test data.test data.test data.test data.test data.te 1600: st data.test data.test data.test data.test data.test data.test d 1640: ata.test data.test data.test data.test data.test data.test data. 1680: test data.test data.test data.test data.test data.test data.test 16c0: data.test data.test data.test data.test data.test data.test dat 1700: a.test data.test data.test data.test data.test data.test data.te 1740: st data.test data.test data.test data.test data.test data.test d 1780: ata.test data.test data.test data.test data.test data.test data. 17c0: test data.test data.test data.test data.test data.test data.test 1800: data.test data.test data.test data.test data.test data.test dat 1840: a.test data.test data.test data.test data.test data.test data.te 1880: st data.test data.test data.test data.test data.test data.test d 18c0: ata.test data.test data.test data.test data.test data.test data. 1900: test data.test data.test data.test data.test data.test data.test 1940: data.test data.test data.test data.test data.test data.test dat 1980: a.test data.test data.test data.test data.test data.test data.te 19c0: st data.test data.test data.test data.test data.test data.test d 1a00: ata.test data.test data.test data.test data.test data.test data. 1a40: test data.test data.test data.test data.test data.test data.test 1a80: data.test data.test data.test data.test data.test data.test dat 1ac0: a.test data.test data.test data.test data.test data.test data.te 1b00: st data.test data.test data.test data.test data.test data.test d 1b40: ata.test data.test data.test data.test data.test data.test data. 1b80: test data.test data.test data.test data.test data.test data.test 1bc0: data.test data.test data.test data.test data.test data.test dat 1c00: a.test data.test data.test data.test data.test data.test data.te 1c40: st data.test data.test data.test data.test data.test data.test d 1c80: ata.test data.test data.test data.test data.test data.test data. 1cc0: test data.test data.test data.test data.test data.test data.test 1d00: data.test data.test data.test data.test data.test data.test dat 1d40: a.test data.test data.test data.test data.test data.test data.te 1d80: st data.test data.test data.test data.test data.test data.test d 1dc0: ata.test data.test data.test data.test data.test data.test data. 1e00: test data.test data.test data.test data.test data.test data.test 1e40: data.test data.test data.test data.test data.test data.test dat 1e80: a.test data.test data.test data.test data.test data.test data.te 1ec0: st data.test data.test data.test data.test data.test data.test d 1f00: ata.test data.test data.test data.test data.test data.test data. 1f40: test data.test data.test data.test data.test data.test data.test 1f80: data.test data.test data.test data.test data.test data.test dat 1fc0: a.test data.test data.test data.test data.test data.test data.te 2000: st data.test data.test data.test data.test data.test data.test d 2040: ata.test data.test data.test data.test data.test data.test data. 2080: test data.test data.test data.test data.test data.test data.test 20c0: data.test data.test data.test data.test data.test data.test dat 2100: a.test data.test data.test data.test data.test data.test data.te 2140: st data.test data.test data.test data.test data.test data.test d 2180: ata.test data.test data.test data.test data.test data.test data. 21c0: test data.test data.test data.test data.test data.test data.test 2200: data.test data.test data.test data.test data.test data.test dat 2240: a.test data.test data.test data.test data.test data.test data.te 2280: st data.test data.test data.test data.test data.test data.test d 22c0: ata.test data.test data.test data.test data.test data.test data. 2300: test data.test data.test data.test data.test data.test data.test 2340: data.test data.test data.test data.test data.test data.test dat 2380: a.test data.test data.test data.test data.test data.test data.te 23c0: st data.test data.test data.test data.test data.test data.test d 2400: ata.test data.test data.test data.test data.test data.test data. 2440: test data.test data.test data.test data.test data.test data.test 2480: data.test data.test data.test data.test data.test data.test dat 24c0: a.test data.test data.test data.test data.test data.test data.te 2500: st data.test data.test data.test data.test data.test data.test d 2540: ata.test data.test data.test data.test data.test data.test data. 2580: test data.test data.test data.test data.test data.test data.test 25c0: data.test data.test data.test data.test data.test data.test dat 2600: a.test data.test data.test data.test data.test data.test data.te 2640: st data.test data.test data.test data.test data.test data.test d 2680: ata.test data.test data.test data.test data.test data.test data. 26c0: test data.test data.test data.test data.test data.test data.test 2700: data.test data.test data.test data.test data.test data.test dat 2740: a.test data.test data.test data.test data.test data.test data.te 2780: st data.test data.test data.test data.test data.test data.test d 27c0: ata.test data.test data.test data.test data.test data.test data. 2800: test data.test data.test data.test data.test data.test data.test 2840: data.test data.test data.test data.test data.test data.test dat 2880: a.test data.test data.test data.test data.test data.test data.te 28c0: st data.test data.test data.test data.test data.test data.test d 2900: ata.test data.test data.test data.test data.test data.test data. 2940: test data.test data.test data.test data.test data.test data.test 2980: data.test data.test data.test data.test data.test data.test dat 29c0: a.test data.test data.test data.test data.test data.test data.te 2a00: st data.test data.test data.test data.test data.test data.test d 2a40: ata.test data.test data.test data.test data.test data.test data. 2a80: test data.test data.test data.test data.test data.test data.test 2ac0: data.test data.test data.test data.test data.test data.test dat 2b00: a.test data.test data.test data.test data.test data.test data.te 2b40: st data.test data.test data.test data.test data.test data.test d 2b80: ata.test data.test data.test data.test data.test data.test data. 2bc0: test data.test data.test data.test data.test data.test data.test 2c00: data.test data.test data.test data.test data.test data.test dat 2c40: a.test data.test data.test data.test data.test data.test data.te 2c80: st data.test data.test data.test data.test data.test data.test d 2cc0: ata.test data.test data.test data.test data.test data.test data. 2d00: test data.test data.test data.test data.test data.test data.test 2d40: data.test data.test data.test data.test data.test data.test dat 2d80: a.test data.test data.test data.test data.test data.test data.te 2dc0: st data.test data.test data.test data.test data.test data.test d 2e00: ata.test data.test data.test data.test data.test data.test data. 2e40: test data.test data.test data.test data.test data.test data.test 2e80: data.test data.test data.test data.test data.test data.test dat 2ec0: a.test data.test data.test data.test data.test data.test data.te 2f00: st data.test data.test data.test data.test data.test data.test d 2f40: ata.test data.test data.test data.test data.test data.test data. 2f80: test data.test data.test data.test data.test data.test data.test 2fc0: data.test data.test data.test data.test data.test data.test dat 3000: a.test data.test data.test data.test data.test data.test data.te 3040: st data.test data.test data.test data.test data.test data.test d 3080: ata.test data.test data.test data.test data.test data.test data. 30c0: test data.test data.test data.test data.test data.test data.test 3100: data.test data.test data.test data.test data.test data.test dat 3140: a.test data.test data.test data.test data.test data.test data.te 3180: st data.test data.test data.test data.test data.test data.test d 31c0: ata.test data.test data.test data.test data.test data.test data. 3200: test data.test data.test data.test data.test data.test data.test 3240: data.test data.test data.test data.test data.test data.test dat 3280: a.test data.test data.test data.test data.test data.test data.te 32c0: st data.test data.test data.test data.test data.test data.test d 3300: ata.test data.test data.test data.test data.test data.test data. 3340: test data.test data.test data.test data.test data.test data.test 3380: data.test data.test data.test data.test data.test data.test dat 33c0: a.test data.test data.test data.test data.test data.test data.te 3400: st data.test data.test data.test data.test data.test data.test d 3440: ata.test data.test data.test data.test data.test data.test data. 3480: test data.test data.test data.test data.test data.test data.test 34c0: data.test data.test data.test data.test data.test data.test dat 3500: a.test data.test data.test data.test data.test data.test data.te 3540: st data.test data.test data.test data.test data.test data.test d 3580: ata.test data.test data.test data.test data.test data.test data. 35c0: test data.test data.test data.test data.test data.test data.test 3600: data.test data.test data.test data.test data.test data.test dat 3640: a.test data.test data.test data.test data.test data.test data.te 3680: st data.test data.test data.test data.test data.test data.test d 36c0: ata.test data.test data.test data.test data.test data.test data. 3700: test data.test data.test data.test data.test data.test data.test 3740: data.test data.test data.test data.test data.test data.test dat 3780: a.test data.test data.test data.test data.test data.test data.te 37c0: st data.test data.test data.test data.test data.test data.test d 3800: ata.test data.test data.test data.test data.test data.test data. 3840: test data.test data.test data.test data.test data.test data.test 3880: data.test data.test data.test data.test data.test data.test dat 38c0: a.test data.test data.test data.test data.test data.test data.te 3900: st data.test data.test data.test data.test data.test data.test d 3940: ata.test data.test data.test data.test data.test data.test data. 3980: test data.test data.test data.test data.test data.test data.test 39c0: data.test data.test data.test data.test data.test data.test dat 3a00: a.test data.test data.test data.test data.test data.test data.te 3a40: st data.test data.test data.test data.test data.test data.test d 3a80: ata.test data.test data.test data.test data.test data.test data. 3ac0: test data.test data.test data.test data.test data.test data.test 3b00: data.test data.test data.test data.test data.test data.test dat 3b40: a.test data.test data.test data.test data.test data.test data.te 3b80: st data.test data.test data.test data.test data.test data.test d 3bc0: ata.test data.test data.test data.test data.test data.test data. 3c00: test data.test data.test data.test data.test data.test data.test 3c40: data.test data.test data.test data.test data.test data.test dat 3c80: a.test data.test data.test data.test data.test data.test data.te 3cc0: st data.test data.test data.test data.test data.test data.test d 3d00: ata.test data.test data.test data.test data.test data.test data. 3d40: test data.test data.test data.test data.test data.test data.test 3d80: data.test data.test data.test data.test data.test data.test dat 3dc0: a.test data.test data.test data.test data.test data.test data.te 3e00: st data.test data.test data.test data.test data.test data.test d 3e40: ata.test data.test data.test data.test data.test data.test data. 3e80: test data.test data.test data.test data.test data.test data.test 3ec0: data.test data.test data.test data.test data.test data.test dat 3f00: a.test data.test data.test data.test data.test data.test data.te 3f40: st data.test data.test data.test data.test data.test data.test d 3f80: ata.test data.test data.test data.test data.test data.test data. 3fc0: test data.test data.test data.test data.test data.test data.test 4000: data.test data.test data.test data.test data.test data.test dat 4040: a.test data.test data.test data.test data.test data.test data.te 4080: st data.test data.test data.test data.test data.test data.test d 40c0: ata.test data.test data.test data.test data.test data.test data. 4100: test data.test data.test data.test data.test data.test data.test 4140: data.test data.test data.test data.test data.test data.test dat 4180: a.test data.test data.test data.test data.test data.test data.te 41c0: st data.test data.test data.test data.test data.test data.test d 4200: ata.test data.test data.test data.test data.test data.test data. 4240: test data.test data.test data.test data.test data.test data.test 4280: data.test data.test data.test data.test data.test data.test dat 42c0: a.test data.test data.test data.test data.test data.test data.te 4300: st data.test data.test data.test data.test data.test data.test d 4340: ata.test data.test data.test data.test data.test data.test data. 4380: test data.test data.test data.test data.test data.test data.test 43c0: data.test data.test data.test data.test data.test data.test dat 4400: a.test data.test data.test data.test data.test data.test data.te 4440: st data.test data.test data.test data.test data.test data.test d 4480: ata.test data.test data.test data.test data.test data.test data. 44c0: test data.test data.test data.test data.test data.test data.test 4500: data.test data.test data.test data.test data.test data.test dat 4540: a.test data.test data.test data.test data.test data.test data.te 4580: st data.test data.test data.test data.test data.test data.test d 45c0: ata.test data.test data.test data.test data.test data.test data. 4600: test data.test data.test data.test data.test data.test data.test 4640: data.test data.test data.test data.test data.test data.test dat 4680: a.test data.test data.test data.test data.test data.test data.te 46c0: st data.test data.test data.test data.test data.test data.test d 4700: ata.test data.test data.test data.test data.test data.test data. 4740: test data.test data.test data.test data.test data.test data.test 4780: data.test data.test data.test data.test data.test data.test dat 47c0: a.test data.test data.test data.test data.test data.test data.te 4800: st data.test data.test data.test data.test data.test data.test d 4840: ata.test data.test data.test data.test data.test data.test data. 4880: test data.test data.test data.test data.test data.test data.test 48c0: data.test data.test data.test data.test data.test data.test dat 4900: a.test data.test data.test data.test data.test data.test data.te 4940: st data.test data.test data.test data.test data.test data.test d 4980: ata.test data.test data.test data.test data.test data.test data. 49c0: test data.test data.test data.test data.test data.test data.test 4a00: data.test data.test data.test data.test data.test data.test dat 4a40: a.test data.test data.test data.test data.test data.test data.te 4a80: st data.test data.test data.test data.test data.test data.test d 4ac0: ata.test data.test data.test data.test data.test data.test data. 4b00: test data.test data.test data.test data.test data.test data.test 4b40: data.test data.test data.test data.test data.test data.test dat 4b80: a.test data.test data.test data.test data.test data.test data.te 4bc0: st data.test data.test data.test data.test data.test data.test d 4c00: ata.test data.test data.test data.test data.test data.test data. 4c40: test data.test data.test data.test data.test data.test data.test 4c80: data.test data.test data.test data.test data.test data.test dat 4cc0: a.test data.test data.test data.test data.test data.test data.te 4d00: st data.test data.test data.test data.test data.test data.test d 4d40: ata.test data.test data.test data.test data.test data.test data. 4d80: test data.test data.test data.test data.test data.test data.test 4dc0: data.test data.test data.test data.test data.test data.test dat 4e00: a.test data.test data.test data.test data.test data.test data.te 4e40: st data.test data.test data.test data.test data.test data.test d 4e80: ata.test data.test data.test data.test data.test data.test data. 4ec0: test data.test data.test data.test data.test data.test data.test 4f00: data.test data.test data.test data.test data.test data.test dat 4f40: a.test data.test data.test data.test data.test data.test data.te 4f80: st data.test data.test data.test data.test data.test data.test d 4fc0: ata.test data.test data.test data.test data.test data.test data. 5000: test data.test data.test data.test data.test data.test data.test 5040: data.test data.test data.test data.test data.test data.test dat 5080: a.test data.test data.test data.test data.test data.test data.te 50c0: st data.test data.test data.test data.test data.test data.test d 5100: ata.test data.test data.test data.test data.test data.test data. 5140: test data.test data.test data.test data.test data.test data.test 5180: data.test data.test data.test data.test data.test data.test dat 51c0: a.test data.test data.test data.test data.test data.test data.te 5200: st data.test data.test data.test data.test data.test data.test d 5240: ata.test data.test data.test data.test data.test data.test data. 5280: test data.test data.test data.test data.test data.test data.test 52c0: data.test data.test data.test data.test data.test data.test dat 5300: a.test data.test data.test data.test data.test data.test data.te 5340: st data.test data.test data.test data.test data.test data.test d 5380: ata.test data.test data.test data.test data.test data.test data. 53c0: test data.test data.test data.test data.test data.test data.test 5400: data.test data.test data.test data.test data.test data.test dat 5440: a.test data.test data.test data.test data.test data.test data.te 5480: st data.test data.test data.test data.test data.test data.test d 54c0: ata.test data.test data.test data.test data.test data.test data. 5500: test data.test data.test data.test data.test data.test data.test 5540: data.test data.test data.test data.test data.test data.test dat 5580: a.test data.test data.test data.test data.test data.test data.te 55c0: st data.test data.test data.test data.test data.test data.test d 5600: ata.test data.test data.test data.test data.test data.test data. 5640: test data.test data.test data.test data.test data.test data.test 5680: data.test data.test data.test data.test data.test data.test dat 56c0: a.test data.test data.test data.test data.test data.test data.te 5700: st data.test data.test data.test data.test data.test data.test d 5740: ata.test data.test data.test data.test data.test data.test data. 5780: test data.test data.test data.test data.test data.test data.test 57c0: data.test data.test data.test data.test data.test data.test dat 5800: a.test data.test data.test data.test data.test data.test data.te 5840: st data.test data.test data.test data.test data.test data.test d 5880: ata.test data.test data.test data.test data.test data.test data. 58c0: test data.test data.test data.test data.test data.test data.test 5900: data.test data.test data.test data.test data.test data.test dat 5940: a.test data.test data.test data.test data.test data.test data.te 5980: st data.test data.test data.test data.test data.test data.test d 59c0: ata.test data.test data.test data.test data.test data.test data. 5a00: test data.test data.test data.test data.test data.test data.test 5a40: data.test data.test data.test data.test data.test data.test dat 5a80: a.test data.test data.test data.test data.test data.test data.te 5ac0: st data.test data.test data.test data.test data.test data.test d 5b00: ata.test data.test data.test data.test data.test data.test data. 5b40: test data.test data.test data.test data.test data.test data.test 5b80: data.test data.test data.test data.test data.test data.test dat 5bc0: a.test data.test data.test data.test data.test data.test data.te 5c00: st data.test data.test data.test data.test data.test data.test d 5c40: ata.test data.test data.test data.test data.test data.test data. 5c80: test data.test data.test data.test data.test data.test data.test 5cc0: data.test data.test data.test data.test data.test data.test dat 5d00: a.test data.test data.test data.test data.test data.test data.te 5d40: st data.test data.test data.test data.test data.test data.test d 5d80: ata.test data.test data.test data.test data.test data.test data. 5dc0: test data.test data.test data.test data.test data.test data.test 5e00: data.test data.test data.test data.test data.test data.test dat 5e40: a.test data.test data.test data.test data.test data.test data.te 5e80: st data.test data.test data.test data.test data.test data.test d 5ec0: ata.test data.test data.test data.test data.test data.test data. 5f00: test data.test data.test data.test data.test data.test data.test 5f40: data.test data.test data.test data.test data.test data.test dat 5f80: a.test data.test data.test data.test data.test data.test data.te 5fc0: st data.test data.test data.test data.test data.test data.test d 6000: ata.test data.test data.test data.test data.test data.test data. 6040: test data.test data.test data.test data.test data.test data.test 6080: data.test data.test data.test data.test data.test data.test dat 60c0: a.test data.test data.test data.test data.test data.test data.te 6100: st data.test data.test data.test data.test data.test data.test d 6140: ata.test data.test data.test data.test data.test data.test data. 6180: test data.test data.test data.test data.test data.test data.test 61c0: data.test data.test data.test data.test data.test data.test dat 6200: a.test data.test data.test data.test data.test data.test data.te 6240: st data.test data.test data.test data.test data.test data.test d 6280: ata.test data.test data.test data.test data.test data.test data. 62c0: test data.test data.test data.test data.test data.test data.test 6300: data.test data.test data.test data.test data.test data.test dat 6340: a.test data.test data.test data.test data.test data.test data.te 6380: st data.test data.test data.test data.test data.test data.test d 63c0: ata.test data.test data.test data.test data.test data.test data. 6400: test data.test data.test data.test data.test data.test data.test 6440: data.test data.test data.test data.test data.test data.test dat 6480: a.test data.test data.test data.test data.test data.test data.te 64c0: st data.test data.test data.test data.test data.test data.test d 6500: ata.test data.test data.test data.test data.test data.test data. 6540: test data.test data.test data.test data.test data.test data.test 6580: data.test data.test data.test data.test data.test data.test dat 65c0: a.test data.test data.test data.test data.test data.test data.te 6600: st data.test data.test data.test data.test data.test data.test d 6640: ata.test data.test data.test data.test data.test data.test data. 6680: test data.test data.test data.test data.test data.test data.test 66c0: data.test data.test data.test data.test data.test data.test dat 6700: a.test data.test data.test data.test data.test data.test data.te 6740: st data.test data.test data.test data.test data.test data.test d 6780: ata.test data.test data.test data.test data.test data.test data. 67c0: test data.test data.test data.test data.test data.test data.test 6800: data.test data.test data.test data.test data.test data.test dat 6840: a.test data.test data.test data.test data.test data.test data.te 6880: st data.test data.test data.test data.test data.test data.test d 68c0: ata.test data.test data.test data.test data.test data.test data. 6900: test data.test data.test data.test data.test data.test data.test 6940: data.test data.test data.test data.test data.test data.test dat 6980: a.test data.test data.test data.test data.test data.test data.te 69c0: st data.test data.test data.test data.test data.test data.test d 6a00: ata.test data.test data.test data.test data.test data.test data. 6a40: test data.test data.test data.test data.test data.test data.test 6a80: data.test data.test data.test data.test data.test data.test dat 6ac0: a.test data.test data.test data.test data.test data.test data.te 6b00: st data.test data.test data.test data.test data.test data.test d 6b40: ata.test data.test data.test data.test data.test data.test data. 6b80: test data.test data.test data.test data.test data.test data.test 6bc0: data.test data.test data.test data.test data.test data.test dat 6c00: a.test data.test data.test data.test data.test data.test data.te 6c40: st data.test data.test data.test data.test data.test data.test d 6c80: ata.test data.test data.test data.test data.test data.test data. 6cc0: test data.test data.test data.test data.test data.test data.test 6d00: data.test data.test data.test data.test data.test data.test dat 6d40: a.test data.test data.test data.test data.test data.test data.te 6d80: st data.test data.test data.test data.test data.test data.test d 6dc0: ata.test data.test data.test data.test data.test data.test data. 6e00: test data.test data.test data.test data.test data.test data.test 6e40: data.test data.test data.test data.test data.test data.test dat 6e80: a.test data.test data.test data.test data.test data.test data.te 6ec0: st data.test data.test data.test data.test data.test data.test d 6f00: ata.test data.test data.test data.test data.test data.test data. 6f40: test data.test data.test data.test data.test data.test data.test 6f80: data.test data.test data.test data.test data.test data.test dat 6fc0: a.test data.test data.test data.test data.test data.test data.te 7000: st data.test data.test data.test data.test data.test data.test d 7040: ata.test data.test data.test data.test data.test data.test data. 7080: test data.test data.test data.test data.test data.test data.test 70c0: data.test data.test data.test data.test data.test data.test dat 7100: a.test data.test data.test data.test data.test data.test data.te 7140: st data.test data.test data.test data.test data.test data.test d 7180: ata.test data.test data.test data.test data.test data.test data. 71c0: test data.test data.test data.test data.test data.test data.test 7200: data.test data.test data.test data.test data.test data.test dat 7240: a.test data.test data.test data.test data.test data.test data.te 7280: st data.test data.test data.test data.test data.test data.test d 72c0: ata.test data.test data.test data.test data.test data.test data. 7300: test data.test data.test data.test data.test data.test data.test 7340: data.test data.test data.test data.test data.test data.test dat 7380: a.test data.test data.test data.test data.test data.test data.te 73c0: st data.test data.test data.test data.test data.test data.test d 7400: ata.test data.test data.test data.test data.test data.test data. 7440: test data.test data.test data.test data.test data.test data.test 7480: data.test data.test data.test data.test data.test data.test dat 74c0: a.test data.test data.test data.test data.test data.test data.te 7500: st data.test data.test data.test data.test data.test data.test d 7540: ata.test data.test data.test data.test data.test data.test data. 7580: test data.test data.test data.test data.test data.test data.test 75c0: data.test data.test data.test data.test data.test data.test dat 7600: a.test data.test data.test data.test data.test data.test data.te 7640: st data.test data.test data.test data.test data.test data.test d 7680: ata.test data.test data.test data.test data.test data.test data. 76c0: test data.test data.test data.test data.test data.test data.test 7700: data.test data.test data.test data.test data.test data.test dat 7740: a.test data.test data.test data.test data.test data.test data.te 7780: st data.test data.test data.test data.test data.test data.test d 77c0: ata.test data.test data.test data.test data.test data.test data. 7800: test data.test data.test data.test data.test data.test data.test 7840: data.test data.test data.test data.test data.test data.test dat 7880: a.test data.test data.test data.test data.test data.test data.te 78c0: st data.test data.test data.test data.test data.test data.test d 7900: ata.test data.test data.test data.test data.test data.test data. 7940: test data.test data.test data.test data.test data.test data.test 7980: data.test data.test data.test data.test data.test data.test dat 79c0: a.test data.test data.test data.test data.test data.test data.te 7a00: st data.test data.test data.test data.test data.test data.test d 7a40: ata.test data.test data.test data.test data.test data.test data. 7a80: test data.test data.test data.test data.test data.test data.test 7ac0: data.test data.test data.test data.test data.test data.test dat 7b00: a.test data.test data.test data.test data.test data.test data.te 7b40: st data.test data.test data.test data.test data.test data.test d 7b80: ata.test data.test data.test data.test data.test data.test data. 7bc0: test data.test data.test data.test data.test data.test data.test 7c00: data.test data.test data.test data.test data.test data.test dat 7c40: a.test data.test data.test data.test data.test data.test data.te 7c80: st data.test data.test data.test data.test data.test data.test d 7cc0: ata.test data.test data.test data.test data.test data.test data. 7d00: test data.test data.test data.test data.test data.test data.test 7d40: data.test data.test data.test data.test data.test data.test dat 7d80: a.test data.test data.test data.test data.test data.test data.te 7dc0: st data.test data.test data.test data.test data.test data.test d 7e00: ata.test data.test data.test data.test data.test data.test data. 7e40: test data.test data.test data.test data.test data.test data.test 7e80: data.test data.test data.test data.test data.test data.test dat 7ec0: a.test data.test data.test data.test data.test data.test data.te 7f00: st data.test data.test data.test data.test data.test data.test d 7f40: ata.test data.test data.test data.test data.test data.test data. 7f80: test data.test data.test data.test data.test data.test data.test 7fc0: data.test data.test data.test data.test data.test data.test dat 8000: a.test data.test data.test data.test data.test data.test data.te 8040: st data.test data.test data.test data.test data.test data.test d 8080: ata.test data.test data.test data.test data.test data.test data. 80c0: test data.test data.test data.test data.test data.test data.test 8100: data.test data.test data.test data.test data.test data.test dat 8140: a.test data.test data.test data.test data.test data.test data.te 8180: st data.test data.test data.test data.test data.test data.test d 81c0: ata.test data.test data.test data.test data.test data.test data. 8200: test data.test data.test data.test data.test data.test data.test 8240: data.test data.test data.test data.test data.test data.test dat 8280: a.test data.test data.test data.test data.test data.test data.te 82c0: st data.test data.test data.test data.test data.test data.test d 8300: ata.test data.test data.test data.test data.test data.test data. 8340: test data.test data.test data.test data.test data.test data.test 8380: data.test data.test data.test data.test data.test data.test dat 83c0: a.test data.test data.test data.test data.test data.test data.te 8400: st data.test data.test data.test data.test data.test data.test d 8440: ata.test data.test data.test data.test data.test data.test data. 8480: test data.test data.test data.test data.test data.test data.test 84c0: data.test data.test data.test data.test data.test data.test dat 8500: a.test data.test data.test data.test data.test data.test data.te 8540: st data.test data.test data.test data.test data.test data.test d 8580: ata.test data.test data.test data.test data.test data.test data. 85c0: test data.test data.test data.test data.test data.test data.test 8600: data.test data.test data.test data.test data.test data.test dat 8640: a.test data.test data.test data.test data.test data.test data.te 8680: st data.test data.test data.test data.test data.test data.test d 86c0: ata.test data.test data.test data.test data.test data.test data. 8700: test data.test data.test data.test data.test data.test data.test 8740: data.test data.test data.test data.test data.test data.test dat 8780: a.test data.test data.test data.test data.test data.test data.te 87c0: st data.test data.test data.test data.test data.test data.test d 8800: ata.test data.test data.test data.test data.test data.test data. 8840: test data.test data.test data.test data.test data.test data.test 8880: data.test data.test data.test data.test data.test data.test dat 88c0: a.test data.test data.test data.test data.test data.test data.te 8900: st data.test data.test data.test data.test data.test data.test d 8940: ata.test data.test data.test data.test data.test data.test data. 8980: test data.test data.test data.test data.test data.test data.test 89c0: data.test data.test data.test data.test data.test data.test dat 8a00: a.test data.test data.test data.test data.test data.test data.te 8a40: st data.test data.test data.test data.test data.test data.test d 8a80: ata.test data.test data.test data.test data.test data.test data. 8ac0: test data.test data.test data.test data.test data.test data.test 8b00: data.test data.test data.test data.test data.test data.test dat 8b40: a.test data.test data.test data.test data.test data.test data.te 8b80: st data.test data.test data.test data.test data.test data.test d 8bc0: ata.test data.test data.test data.test data.test data.test data. 8c00: test data.test data.test data.test data.test data.test data.test 8c40: data.test data.test data.test data.test data.test data.test dat 8c80: a.test data.test data.test data.test data.test data.test data.te 8cc0: st data.test data.test data.test data.test data.test data.test d 8d00: ata.test data.test data.test data.test data.test data.test data. 8d40: test data.test data.test data.test data.test data.test data.test 8d80: data.test data.test data.test data.test data.test data.test dat 8dc0: a.test data.test data.test data.test data.test data.test data.te 8e00: st data.test data.test data.test data.test data.test data.test d 8e40: ata.test data.test data.test data.test data.test data.test data. 8e80: test data.test data.test data.test data.test data.test data.test 8ec0: data.test data.test data.test data.test data.test data.test dat 8f00: a.test data.test data.test data.test data.test data.test data.te 8f40: st data.test data.test data.test data.test data.test data.test d 8f80: ata.test data.test data.test data.test data.test data.test data. 8fc0: test data.test data.test data.test data.test data.test data.test 9000: data.test data.test data.test data.test data.test data.test dat 9040: a.test data.test data.test data.test data.test data.test data.te 9080: st data.test data.test data.test data.test data.test data.test d 90c0: ata.test data.test data.test data.test data.test data.test data. 9100: test data.test data.test data.test data.test data.test data.test 9140: data.test data.test data.test data.test data.test data.test dat 9180: a.test data.test data.test data.test data.test data.test data.te 91c0: st data.test data.test data.test data.test data.test data.test d 9200: ata.test data.test data.test data.test data.test data.test data. 9240: test data.test data.test data.test data.test data.test data.test 9280: data.test data.test data.test data.test data.test data.test dat 92c0: a.test data.test data.test data.test data.test data.test data.te 9300: st data.test data.test data.test data.test data.test data.test d 9340: ata.test data.test data.test data.test data.test data.test data. 9380: test data.test data.test data.test data.test data.test data.test 93c0: data.test data.test data.test data.test data.test data.test dat 9400: a.test data.test data.test data.test data.test data.test data.te 9440: st data.test data.test data.test data.test data.test data.test d 9480: ata.test data.test data.test data.test data.test data.test data. 94c0: test data.test data.test data.test data.test data.test data.test 9500: data.test data.test data.test data.test data.test data.test dat 9540: a.test data.test data.test data.test data.test data.test data.te 9580: st data.test data.test data.test data.test data.test data.test d 95c0: ata.test data.test data.test data.test data.test data.test data. 9600: test data.test data.test data.test data.test data.test data.test 9640: data.test data.test data.test data.test data.test data.test dat 9680: a.test data.test data.test data.test data.test data.test data.te 96c0: st data.test data.test data.test data.test data.test data.test d 9700: ata.test data.test data.test data.test data.test data.test data. 9740: test data.test data.test data.test data.test data.test data.test 9780: data.test data.test data.test data.test data.test data.test dat 97c0: a.test data.test data.test data.test data.test data.test data.te 9800: st data.test data.test data.test data.test data.test data.test d 9840: ata.test data.test data.test data.test data.test data.test data. 9880: test data.test data.test data.test data.test data.test data.test 98c0: data.test data.test data.test data.test data.test data.test dat 9900: a.test data.test data.test data.test data.test data.test data.te 9940: st data.test data.test data.test data.test data.test data.test d 9980: ata.test data.test data.test data.test data.test data.test data. 99c0: test data.test data.test data.test data.test data.test data.test 9a00: data.test data.test data.test data.test data.test data.test dat 9a40: a.test data.test data.test data.test data.test data.test data.te 9a80: st data.test data.test data.test data.test data.test data.test d 9ac0: ata.test data.test data.test data.test data.test data.test data. 9b00: test data.test data.test data.test data.test data.test data.test 9b40: data.test data.test data.test data.test data.test data.test dat 9b80: a.test data.test data.test data.test data.test data.test data.te 9bc0: st data.test data.test data.test data.test data.test data.test d 9c00: ata.test data.test data.test data.test data.test data.test data. 9c40: test data.test data.test data.test data.test data.test data.test 9c80: data.test data.test data.test data.test data.test data.test dat 9cc0: a.test data.test data.test data.test data.test data.test data.te 9d00: st data.test data.test data.test data.test data.test data.test d 9d40: ata.test data.test data.test data.test data.test data.test data. 9d80: test data.test data.test data.test data.test data.test data.test 9dc0: data.test data.test data.test data.test data.test data.test dat 9e00: a.test data.test data.test data.test data.test data.test data.te 9e40: st data.test data.test data.test data.test data.test data.test d 9e80: ata.test data.test data.test data.test data.test data.test data. 9ec0: test data.test data.test data.test data.test data.test data.test 9f00: data.test data.test data.test data.test data.test data.test dat 9f40: a.test data.test data.test data.test data.test data.test data.te 9f80: st data.test data.test data.test data.test data.test data.test d 9fc0: ata.test data.test data.test data.test data.test data.test data. a000: test data.test data.test data.test data.test data.test data.test a040: data.test data.test data.test data.test data.test data.test dat a080: a.test data.test data.test data.test data.test data.test data.te a0c0: st data.test data.test data.test data.test data.test data.test d a100: ata.test data.test data.test data.test data.test data.test data. a140: test data.test data.test data.test data.test data.test data.test a180: data.test data.test data.test data.test data.test data.test dat a1c0: a.test data.test data.test data.test data.test data.test data.te a200: st data.test data.test data.test data.test data.test data.test d a240: ata.test data.test data.test data.test data.test data.test data. a280: test data.test data.test data.test data.test data.test data.test a2c0: data.test data.test data.test data.test data.test data.test dat a300: a.test data.test data.test data.test data.test data.test data.te a340: st data.test data.test data.test data.test data.test data.test d a380: ata.test data.test data.test data.test data.test data.test data. a3c0: test data.test data.test data.test data.test data.test data.test a400: data.test data.test data.test data.test data.test data.test dat a440: a.test data.test data.test data.test data.test data.test data.te a480: st data.test data.test data.test data.test data.test data.test d a4c0: ata.test data.test data.test data.test data.test data.test data. a500: test data.test data.test data.test data.test data.test data.test a540: data.test data.test data.test data.test data.test data.test dat a580: a.test data.test data.test data.test data.test data.test data.te a5c0: st data.test data.test data.test data.test data.test data.test d a600: ata.test data.test data.test data.test data.test data.test data. a640: test data.test data.test data.test data.test data.test data.test a680: data.test data.test data.test data.test data.test data.test dat a6c0: a.test data.test data.test data.test data.test data.test data.te a700: st data.test data.test data.test data.test data.test data.test d a740: ata.test data.test data.test data.test data.test data.test data. a780: test data.test data.test data.test data.test data.test data.test a7c0: data.test data.test data.test data.test data.test data.test dat a800: a.test data.test data.test data.test data.test data.test data.te a840: st data.test data.test data.test data.test data.test data.test d a880: ata.test data.test data.test data.test data.test data.test data. a8c0: test data.test data.test data.test data.test data.test data.test a900: data.test data.test data.test data.test data.test data.test dat a940: a.test data.test data.test data.test data.test data.test data.te a980: st data.test data.test data.test data.test data.test data.test d a9c0: ata.test data.test data.test data.test data.test data.test data. aa00: test data.test data.test data.test data.test data.test data.test aa40: data.test data.test data.test data.test data.test data.test dat aa80: a.test data.test data.test data.test data.test data.test data.te aac0: st data.test data.test data.test data.test data.test data.test d ab00: ata.test data.test data.test data.test data.test data.test data. ab40: test data.test data.test data.test data.test data.test data.test ab80: data.test data.test data.test data.test data.test data.test dat abc0: a.test data.test data.test data.test data.test data.test data.te ac00: st data.test data.test data.test data.test data.test data.test d ac40: ata.test data.test data.test data.test data.test data.test data. ac80: test data.test data.test data.test data.test data.test data.test acc0: data.test data.test data.test data.test data.test data.test dat ad00: a.test data.test data.test data.test data.test data.test data.te ad40: st data.test data.test data.test data.test data.test data.test d ad80: ata.test data.test data.test data.test data.test data.test data. adc0: test data.test data.test data.test data.test data.test data.test ae00: data.test data.test data.test data.test data.test data.test dat ae40: a.test data.test data.test data.test data.test data.test data.te ae80: st data.test data.test data.test data.test data.test data.test d aec0: ata.test data.test data.test data.test data.test data.test data. af00: test data.test data.test data.test data.test data.test data.test af40: data.test data.test data.test data.test data.test data.test dat af80: a.test data.test data.test data.test data.test data.test data.te afc0: st data.test data.test data.test data.test data.test data.test d b000: ata.test data.test data.test data.test data.test data.test data. b040: test data.test data.test data.test data.test data.test data.test b080: data.test data.test data.test data.test data.test data.test dat b0c0: a.test data.test data.test data.test data.test data.test data.te b100: st data.test data.test data.test data.test data.test data.test d b140: ata.test data.test data.test data.test data.test data.test data. b180: test data.test data.test data.test data.test data.test data.test b1c0: data.test data.test data.test data.test data.test data.test dat b200: a.test data.test data.test data.test data.test data.test data.te b240: st data.test data.test data.test data.test data.test data.test d b280: ata.test data.test data.test data.test data.test data.test data. b2c0: test data.test data.test data.test data.test data.test data.test b300: data.test data.test data.test data.test data.test data.test dat b340: a.test data.test data.test data.test data.test data.test data.te b380: st data.test data.test data.test data.test data.test data.test d b3c0: ata.test data.test data.test data.test data.test data.test data. b400: test data.test data.test data.test data.test data.test data.test b440: data.test data.test data.test data.test data.test data.test dat b480: a.test data.test data.test data.test data.test data.test data.te b4c0: st data.test data.test data.test data.test data.test data.test d b500: ata.test data.test data.test data.test data.test data.test data. b540: test data.test data.test data.test data.test data.test data.test b580: data.test data.test data.test data.test data.test data.test dat b5c0: a.test data.test data.test data.test data.test data.test data.te b600: st data.test data.test data.test data.test data.test data.test d b640: ata.test data.test data.test data.test data.test data.test data. b680: test data.test data.test data.test data.test data.test data.test b6c0: data.test data.test data.test data.test data.test data.test dat b700: a.test data.test data.test data.test data.test data.test data.te b740: st data.test data.test data.test data.test data.test data.test d b780: ata.test data.test data.test data.test data.test data.test data. b7c0: test data.test data.test data.test data.test data.test data.test b800: data.test data.test data.test data.test data.test data.test dat b840: a.test data.test data.test data.test data.test data.test data.te b880: st data.test data.test data.test data.test data.test data.test d b8c0: ata.test data.test data.test data.test data.test data.test data. b900: test data.test data.test data.test data.test data.test data.test b940: data.test data.test data.test data.test data.test data.test dat b980: a.test data.test data.test data.test data.test data.test data.te b9c0: st data.test data.test data.test data.test data.test data.test d ba00: ata.test data.test data.test data.test data.test data.test data. ba40: test data.test data.test data.test data.test data.test data.test ba80: data.test data.test data.test data.test data.test data.test dat bac0: a.test data.test data.test data.test data.test data.test data.te bb00: st data.test data.test data.test data.test data.test data.test d bb40: ata.test data.test data.test data.test data.test data.test data. bb80: test data.test data.test data.test data.test data.test data.test bbc0: data.test data.test data.test data.test data.test data.test dat bc00: a.test data.test data.test data.test data.test data.test data.te bc40: st data.test data.test data.test data.test data.test data.test d bc80: ata.test data.test data.test data.test data.test data.test data. bcc0: test data.test data.test data.test data.test data.test data.test bd00: data.test data.test data.test data.test data.test data.test dat bd40: a.test data.test data.test data.test data.test data.test data.te bd80: st data.test data.test data.test data.test data.test data.test d bdc0: ata.test data.test data.test data.test data.test data.test data. be00: test data.test data.test data.test data.test data.test data.test be40: data.test data.test data.test data.test data.test data.test dat be80: a.test data.test data.test data.test data.test data.test data.te bec0: st data.test data.test data.test data.test data.test data.test d bf00: ata.test data.test data.test data.test data.test data.test data. bf40: test data.test data.test data.test data.test data.test data.test bf80: data.test data.test data.test data.test data.test data.test dat bfc0: a.test data.test data.test data.test data.test data.test data.te c000: st data.test data.test data.test data.test data.test data.test d c040: ata.test data.test data.test data.test data.test data.test data. c080: test data.test data.test data.test data.test data.test data.test c0c0: data.test data.test data.test data.test data.test data.test dat c100: a.test data.test data.test data.test data.test data.test data.te c140: st data.test data.test data.test data.test data.test data.test d c180: ata.test data.test data.test data.test data.test data.test data. c1c0: test data.test data.test data.test data.test data.test data.test c200: data.test data.test data.test data.test data.test data.test dat c240: a.test data.test data.test data.test data.test data.test data.te c280: st data.test data.test data.test data.test data.test data.test d c2c0: ata.test data.test data.test data.test data.test data.test data. c300: test data.test data.test data.test data.test data.test data.test c340: data.test data.test data.test data.test data.test data.test dat c380: a.test data.test data.test data.test data.test data.test data.te c3c0: st data.test data.test data.test data.test data.test data.test d c400: ata.test data.test data.test data.test data.test data.test data. c440: test data.test data.test data.test data.test data.test data.test c480: data.test data.test data.test data.test data.test data.test dat c4c0: a.test data.test data.test data.test data.test data.test data.te c500: st data.test data.test data.test data.test data.test data.test d c540: ata.test data.test data.test data.test data.test data.test data. c580: test data.test data.test data.test data.test data.test data.test c5c0: data.test data.test data.test data.test data.test data.test dat c600: a.test data.test data.test data.test data.test data.test data.te c640: st data.test data.test data.test data.test data.test data.test d c680: ata.test data.test data.test data.test data.test data.test data. c6c0: test data.test data.test data.test data.test data.test data.test c700: data.test data.test data.test data.test data.test data.test dat c740: a.test data.test data.test data.test data.test data.test data.te c780: st data.test data.test data.test data.test data.test data.test d c7c0: ata.test data.test data.test data.test data.test data.test data. c800: test data.test data.test data.test data.test data.test data.test c840: data.test data.test data.test data.test data.test data.test dat c880: a.test data.test data.test data.test data.test data.test data.te c8c0: st data.test data.test data.test data.test data.test data.test d c900: ata.test data.test data.test data.test data.test data.test data. c940: test data.test data.test data.test data.test data.test data.test c980: data.test data.test data.test data.test data.test data.test dat c9c0: a.test data.test data.test data.test data.test data.test data.te ca00: st data.test data.test data.test data.test data.test data.test d ca40: ata.test data.test data.test data.test data.test data.test data. ca80: test data.test data.test data.test data.test data.test data.test cac0: data.test data.test data.test data.test data.test data.test dat cb00: a.test data.test data.test data.test data.test data.test data.te cb40: st data.test data.test data.test data.test data.test data.test d cb80: ata.test data.test data.test data.test data.test data.test data. cbc0: test data.test data.test data.test data.test data.test data.test cc00: data.test data.test data.test data.test data.test data.test dat cc40: a.test data.test data.test data.test data.test data.test data.te cc80: st data.test data.test data.test data.test data.test data.test d ccc0: ata.test data.test data.test data.test data.test data.test data. cd00: test data.test data.test data.test data.test data.test data.test cd40: data.test data.test data.test data.test data.test data.test dat cd80: a.test data.test data.test data.test data.test data.test data.te cdc0: st data.test data.test data.test data.test data.test data.test d ce00: ata.test data.test data.test data.test data.test data.test data. ce40: test data.test data.test data.test data.test data.test data.test ce80: data.test data.test data.test data.test data.test data.test dat cec0: a.test data.test data.test data.test data.test data.test data.te cf00: st data.test data.test data.test data.test data.test data.test d cf40: ata.test data.test data.test data.test data.test data.test data. cf80: test data.test data.test data.test data.test data.test data.test cfc0: data.test data.test data.test data.test data.test data.test dat d000: a.test data.test data.test data.test data.test data.test data.te d040: st data.test data.test data.test data.test data.test data.test d d080: ata.test data.test data.test data.test data.test data.test data. d0c0: test data.test data.test data.test data.test data.test data.test d100: data.test data.test data.test data.test data.test data.test dat d140: a.test data.test data.test data.test data.test data.test data.te d180: st data.test data.test data.test data.test data.test data.test d d1c0: ata.test data.test data.test data.test data.test data.test data. d200: test data.test data.test data.test data.test data.test data.test d240: data.test data.test data.test data.test data.test data.test dat d280: a.test data.test data.test data.test data.test data.test data.te d2c0: st data.test data.test data.test data.test data.test data.test d d300: ata.test data.test data.test data.test data.test data.test data. d340: test data.test data.test data.test data.test data.test data.test d380: data.test data.test data.test data.test data.test data.test dat d3c0: a.test data.test data.test data.test data.test data.test data.te d400: st data.test data.test data.test data.test data.test data.test d d440: ata.test data.test data.test data.test data.test data.test data. d480: test data.test data.test data.test data.test data.test data.test d4c0: data.test data.test data.test data.test data.test data.test dat d500: a.test data.test data.test data.test data.test data.test data.te d540: st data.test data.test data.test data.test data.test data.test d d580: ata.test data.test data.test data.test data.test data.test data. d5c0: test data.test data.test data.test data.test data.test data.test d600: data.test data.test data.test data.test data.test data.test dat d640: a.test data.test data.test data.test data.test data.test data.te d680: st data.test data.test data.test data.test data.test data.test d d6c0: ata.test data.test data.test data.test data.test data.test data. d700: test data.test data.test data.test data.test data.test data.test d740: data.test data.test data.test data.test data.test data.test dat d780: a.test data.test data.test data.test data.test data.test data.te d7c0: st data.test data.test data.test data.test data.test data.test d d800: ata.test data.test data.test data.test data.test data.test data. d840: test data.test data.test data.test data.test data.test data.test d880: data.test data.test data.test data.test data.test data.test dat d8c0: a.test data.test data.test data.test data.test data.test data.te d900: st data.test data.test data.test data.test data.test data.test d d940: ata.test data.test data.test data.test data.test data.test data. d980: test data.test data.test data.test data.test data.test data.test d9c0: data.test data.test data.test data.test data.test data.test dat da00: a.test data.test data.test data.test data.test data.test data.te da40: st data.test data.test data.test data.test data.test data.test d da80: ata.test data.test data.test data.test data.test data.test data. dac0: test data.test data.test data.test data.test data.test data.test db00: data.test data.test data.test data.test data.test data.test dat db40: a.test data.test data.test data.test data.test data.test data.te db80: st data.test data.test data.test data.test data.test data.test d dbc0: ata.test data.test data.test data.test data.test data.test data. dc00: test data.test data.test data.test data.test data.test data.test dc40: data.test data.test data.test data.test data.test data.test dat dc80: a.test data.test data.test data.test data.test data.test data.te dcc0: st data.test data.test data.test data.test data.test data.test d dd00: ata.test data.test data.test data.test data.test data.test data. dd40: test data.test data.test data.test data.test data.test data.test dd80: data.test data.test data.test data.test data.test data.test dat ddc0: a.test data.test data.test data.test data.test data.test data.te de00: st data.test data.test data.test data.test data.test data.test d de40: ata.test data.test data.test data.test data.test data.test data. de80: test data.test data.test data.test data.test data.test data.test dec0: data.test data.test data.test data.test data.test data.test dat df00: a.test data.test data.test data.test data.test data.test data.te df40: st data.test data.test data.test data.test data.test data.test d df80: ata.test data.test data.test data.test data.test data.test data. dfc0: test data.test data.test data.test data.test data.test data.test e000: data.test data.test data.test data.test data.test data.test dat e040: a.test data.test data.test data.test data.test data.test data.te e080: st data.test data.test data.test data.test data.test data.test d e0c0: ata.test data.test data.test data.test data.test data.test data. e100: test data.test data.test data.test data.test data.test data.test e140: data.test data.test data.test data.test data.test data.test dat e180: a.test data.test data.test data.test data.test data.test data.te e1c0: st data.test data.test data.test data.test data.test data.test d e200: ata.test data.test data.test data.test data.test data.test data. e240: test data.test data.test data.test data.test data.test data.test e280: data.test data.test data.test data.test data.test data.test dat e2c0: a.test data.test data.test data.test data.test data.test data.te e300: st data.test data.test data.test data.test data.test data.test d e340: ata.test data.test data.test data.test data.test data.test data. e380: test data.test data.test data.test data.test data.test data.test e3c0: data.test data.test data.test data.test data.test data.test dat e400: a.test data.test data.test data.test data.test data.test data.te e440: st data.test data.test data.test data.test data.test data.test d e480: ata.test data.test data.test data.test data.test data.test data. e4c0: test data.test data.test data.test data.test data.test data.test e500: data.test data.test data.test data.test data.test data.test dat e540: a.test data.test data.test data.test data.test data.test data.te e580: st data.test data.test data.test data.test data.test data.test d e5c0: ata.test data.test data.test data.test data.test data.test data. e600: test data.test data.test data.test data.test data.test data.test e640: data.test data.test data.test data.test data.test data.test dat e680: a.test data.test data.test data.test data.test data.test data.te e6c0: st data.test data.test data.test data.test data.test data.test d e700: ata.test data.test data.test data.test data.test data.test data. e740: test data.test data.test data.test data.test data.test data.test e780: data.test data.test data.test data.test data.test data.test dat e7c0: a.test data.test data.test data.test data.test data.test data.te e800: st data.test data.test data.test data.test data.test data.test d e840: ata.test data.test data.test data.test data.test data.test data. e880: test data.test data.test data.test data.test data.test data.test e8c0: data.test data.test data.test data.test data.test data.test dat e900: a.test data.test data.test data.test data.test data.test data.te e940: st data.test data.test data.test data.test data.test data.test d e980: ata.test data.test data.test data.test data.test data.test data. e9c0: test data.test data.test data.test data.test data.test data.test ea00: data.test data.test data.test data.test data.test data.test dat ea40: a.test data.test data.test data.test data.test data.test data.te ea80: st data.test data.test data.test data.test data.test data.test d eac0: ata.test data.test data.test data.test data.test data.test data. eb00: test data.test data.test data.test data.test data.test data.test eb40: data.test data.test data.test data.test data.test data.test dat eb80: a.test data.test data.test data.test data.test data.test data.te ebc0: st data.test data.test data.test data.test data.test data.test d ec00: ata.test data.test data.test data.test data.test data.test data. ec40: test data.test data.test data.test data.test data.test data.test ec80: data.test data.test data.test data.test data.test data.test dat ecc0: a.test data.test data.test data.test data.test data.test data.te ed00: st data.test data.test data.test data.test data.test data.test d ed40: ata.test data.test data.test data.test data.test data.test data. ed80: test data.test data.test data.test data.test data.test data.test edc0: data.test data.test data.test data.test data.test data.test dat ee00: a.test data.test data.test data.test data.test data.test data.te ee40: st data.test data.test data.test data.test data.test data.test d ee80: ata.test data.test data.test data.test data.test data.test data. eec0: test data.test data.test data.test data.test data.test data.test ef00: data.test data.test data.test data.test data.test data.test dat ef40: a.test data.test data.test data.test data.test data.test data.te ef80: st data.test data.test data.test data.test data.test data.test d efc0: ata.test data.test data.test data.test data.test data.test data. f000: test data.test data.test data.test data.test data.test data.test f040: data.test data.test data.test data.test data.test data.test dat f080: a.test data.test data.test data.test data.test data.test data.te f0c0: st data.test data.test data.test data.test data.test data.test d f100: ata.test data.test data.test data.test data.test data.test data. f140: test data.test data.test data.test data.test data.test data.test f180: data.test data.test data.test data.test data.test data.test dat f1c0: a.test data.test data.test data.test data.test data.test data.te f200: st data.test data.test data.test data.test data.test data.test d f240: ata.test data.test data.test data.test data.test data.test data. f280: test data.test data.test data.test data.test data.test data.test f2c0: data.test data.test data.test data.test data.test data.test dat f300: a.test data.test data.test data.test data.test data.test data.te f340: st data.test data.test data.test data.test data.test data.test d f380: ata.test data.test data.test data.test data.test data.test data. f3c0: test data.test data.test data.test data.test data.test data.test f400: data.test data.test data.test data.test data.test data.test dat f440: a.test data.test data.test data.test data.test data.test data.te f480: st data.test data.test data.test data.test data.test data.test d f4c0: ata.test data.test data.test data.test data.test data.test data. f500: test data.test data.test data.test data.test data.test data.test f540: data.test data.test data.test data.test data.test data.test dat f580: a.test data.test data.test data.test data.test data.test data.te f5c0: st data.test data.test data.test data.test data.test data.test d f600: ata.test data.test data.test data.test data.test data.test data. f640: test data.test data.test data.test data.test data.test data.test f680: data.test data.test data.test data.test data.test data.test dat f6c0: a.test data.test data.test data.test data.test data.test data.te f700: st data.test data.test data.test data.test data.test data.test d f740: ata.test data.test data.test data.test data.test data.test data. f780: test data.test data.test data.test data.test data.test data.test f7c0: data.test data.test data.test data.test data.test data.test dat f800: a.test data.test data.test data.test data.test data.test data.te f840: st data.test data.test data.test data.test data.test data.test d f880: ata.test data.test data.test data.test data.test data.test data. f8c0: test data.test data.test data.test data.test data.test data.test f900: data.test data.test data.test data.test data.test data.test dat f940: a.test data.test data.test data.test data.test data.test data.te f980: st data.test data.test data.test data.test data.test data.test d f9c0: ata.test data.test data.test data.test data.test data.test data. fa00: test data.test data.test data.test data.test data.test data.test fa40: data.test data.test data.test data.test data.test data.test dat fa80: a.test data.test data.test data.test data.test data.test data.te fac0: st data.test data.test data.test data.test data.test data.test d fb00: ata.test data.test data.test data.test data.test data.test data. fb40: test data.test data.test data.test data.test data.test data.test fb80: data.test data.test data.test data.test data.test data.test dat fbc0: a.test data.test data.test data.test data.test data.test data.te fc00: st data.test data.test data.test data.test data.test data.test d fc40: ata.test data.test data.test data.test data.test data.test data. fc80: test data.test data.test data.test data.test data.test data.test fcc0: data.test data.test data.test data.test data.test data.test dat fd00: a.test data.test data.test data.test data.test data.test data.te fd40: st data.test data.test data.test data.test data.test data.test d fd80: ata.test data.test data.test data.test data.test data.test data. fdc0: test data.test data.test data.test data.test data.test data.test fe00: data.test data.test data.test data.test data.test data.test dat fe40: a.test data.test data.test data.test data.test data.test data.te fe80: st data.test data.test data.test data.test data.test data.test d fec0: ata.test data.test data.test data.test data.test data.test data. ff00: test data.test data.test data.test data.test data.tes => Send data, 4667 bytes (0x123b) 0000: t data.test data.test data.test data.test data.test data.test da 0040: ta.test data.test data.test data.test data.test data.test data.t 0080: est data.test data.test data.test data.test data.test data.test 00c0: data.test data.test data.test data.test data.test data.test data 0100: .test data.test data.test data.test data.test data.test data.tes 0140: t data.test data.test data.test data.test data.test data.test da 0180: ta.test data.test data.test data.test data.test data.test data.t 01c0: est data.test data.test data.test data.test data.test data.test 0200: data.test data.test data.test data.test data.test data.test data 0240: .test data.test data.test data.test data.test data.test data.tes 0280: t data.test data.test data.test data.test data.test data.test da 02c0: ta.test data.test data.test data.test data.test data.test data.t 0300: est data.test data.test data.test data.test data.test data.test 0340: data.test data.test data.test data.test data.test data.test data 0380: .test data.test data.test data.test data.test data.test data.tes 03c0: t data.test data.test data.test data.test data.test data.test da 0400: ta.test data.test data.test data.test data.test data.test data.t 0440: est data.test data.test data.test data.test data.test data.test 0480: data.test data.test data.test data.test data.test data.test data 04c0: .test data.test data.test data.test data.test data.test data.tes 0500: t data.test data.test data.test data.test data.test data.test da 0540: ta.test data.test data.test data.test data.test data.test data.t 0580: est data.test data.test data.test data.test data.test data.test 05c0: data.test data.test data.test data.test data.test data.test data 0600: .test data.test data.test data.test data.test data.test data.tes 0640: t data.test data.test data.test data.test data.test data.test da 0680: ta.test data.test data.test data.test data.test data.test data.t 06c0: est data.test data.test data.test data.test data.test data.test 0700: data.test data.test data.test data.test data.test data.test data 0740: .test data.test data.test data.test data.test data.test data.tes 0780: t data.test data.test data.test data.test data.test data.test da 07c0: ta.test data.test data.test data.test data.test data.test data.t 0800: est data.test data.test data.test data.test data.test data.test 0840: data.test data.test data.test data.test data.test data.test data 0880: .test data.test data.test data.test data.test data.test data.tes 08c0: t data.test data.test data.test data.test data.test data.test da 0900: ta.test data.test data.test data.test data.test data.test data.t 0940: est data.test data.test data.test data.test data.test data.test 0980: data.test data.test data.test data.test data.test data.test data 09c0: .test data.test data.test data.test data.test data.test data.tes 0a00: t data.test data.test data.test data.test data.test data.test da 0a40: ta.test data.test data.test data.test data.test data.test data.t 0a80: est data.test data.test data.test data.test data.test data.test 0ac0: data.test data.test data.test data.test data.test data.test data 0b00: .test data.test data.test data.test data.test data.test data.tes 0b40: t data.test data.test data.test data.test data.test data.test da 0b80: ta.test data.test data.test data.test data.test data.test data.t 0bc0: est data.test data.test data.test data.test data.test data.test 0c00: data.test data.test data.test data.test data.test data.test data 0c40: .test data.test data.test data.test data.test data.test data.tes 0c80: t data.test data.test data.test data.test data.test data.test da 0cc0: ta.test data.test data.test data.test data.test data.test data.t 0d00: est data.test data.test data.test data.test data.test data.test 0d40: data.test data.test data.test data.test data.test data.test data 0d80: .test data.test data.test data.test data.test data.test data.tes 0dc0: t data.test data.test data.test data.test data.test data.test da 0e00: ta.test data.test data.test data.test data.test data.test data.t 0e40: est data.test data.test data.test data.test data.test data.test 0e80: data.test data.test data.test data.test data.test data.test data 0ec0: .test data.test data.test data.test data.test data.test data.tes 0f00: t data.test data.test data.test data.test data.test data.test da 0f40: ta.test data.test data.test data.test data.test data.test data.t 0f80: est data.test data.test data.test data.test data.test data.test 0fc0: data.test data.test data.test data.test data.test data.test data 1000: .test data.test data.test data.test data.test data.test data.tes 1040: t data.test data.test data.test data.test data.test data.test da 1080: ta.test data.test data.test data.test data.test data.test data.t 10c0: est data.test data.test data.test data.test data.test data.test 1100: data.test data.test data.test data.test data.test data.test data 1140: .test data.test data.test data.test data.test data.test data.tes 1180: t data.test data.test data.test data.test data.test data.test da 11c0: ta.test data.test data.test data.test data.test data.test data.t 1200: est data.test data.test data.test data.test data.test data. == Info: upload completely sent off: 70000 bytes <= Recv header, 46 bytes (0x2e) 0000: HTTP/1.1 407 Authorization Required swsclose <= Recv header, 42 bytes (0x2a) 0000: Server: Apache/1.3.27 (Darwin) PHP/4.1.2 <= Recv header, 468 bytes (0x1d4) 0000: Proxy-Authenticate: Digest realm="something fun to read", nonce= 0040: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0080: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 00c0: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0100: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0140: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0180: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 01c0: AAAAAAAAAAAAAAAAA" <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 <= Recv header, 19 bytes (0x13) 0000: Connection: close == Info: Need to rewind upload for next request <= Recv header, 2 bytes (0x2) 0000: == Info: shutting down connection #0 == Info: Issue another request to this URL: 'http://test.remote.example.com/path/552' == Info: Hostname 127.0.0.1 was found in DNS cache == Info: Trying 127.0.0.1:38277... == Info: Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 48722 == Info: using HTTP/1.x == Info: Proxy auth using Digest with user 's1lly' => Send header, 752 bytes (0x2f0) 0000: POST http://test.remote.example.com/path/552 HTTP/1.1 0037: Host: test.remote.example.com 0056: Proxy-Authorization: Digest username="s1lly", realm="something f 0096: un to read", nonce="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 00d6: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0116: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0156: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0196: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 01d6: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0216: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", uri="/path/552", response 0256: ="be7aedc47d821b6d847c445ded782c43" 027b: Accept: */* 0288: Proxy-Connection: Keep-Alive 02a6: Content-Length: 70000 02bd: Content-Type: application/x-www-form-urlencoded 02ee: => Send data, 64784 bytes (0xfd10) 0000: test data.test data.test data.test data.test data.test data.test 0040: data.test data.test data.test data.test data.test data.test dat 0080: a.test data.test data.test data.test data.test data.test data.te 00c0: st data.test data.test data.test data.test data.test data.test d 0100: ata.test data.test data.test data.test data.test data.test data. 0140: test data.test data.test data.test data.test data.test data.test 0180: data.test data.test data.test data.test data.test data.test dat 01c0: a.test data.test data.test data.test data.test data.test data.te 0200: st data.test data.test data.test data.test data.test data.test d 0240: ata.test data.test data.test data.test data.test data.test data. 0280: test data.test data.test data.test data.test data.test data.test 02c0: data.test data.test data.test data.test data.test data.test dat 0300: a.test data.test data.test data.test data.test data.test data.te 0340: st data.test data.test data.test data.test data.test data.test d 0380: ata.test data.test data.test data.test data.test data.test data. 03c0: test data.test data.test data.test data.test data.test data.test 0400: data.test data.test data.test data.test data.test data.test dat 0440: a.test data.test data.test data.test data.test data.test data.te 0480: st data.test data.test data.test data.test data.test data.test d 04c0: ata.test data.test data.test data.test data.test data.test data. 0500: test data.test data.test data.test data.test data.test data.test 0540: data.test data.test data.test data.test data.test data.test dat 0580: a.test data.test data.test data.test data.test data.test data.te 05c0: st data.test data.test data.test data.test data.test data.test d 0600: ata.test data.test data.test data.test data.test data.test data. 0640: test data.test data.test data.test data.test data.test data.test 0680: data.test data.test data.test data.test data.test data.test dat 06c0: a.test data.test data.test data.test data.test data.test data.te 0700: st data.test data.test data.test data.test data.test data.test d 0740: ata.test data.test data.test data.test data.test data.test data. 0780: test data.test data.test data.test data.test data.test data.test 07c0: data.test data.test data.test data.test data.test data.test dat 0800: a.test data.test data.test data.test data.test data.test data.te 0840: st data.test data.test data.test data.test data.test data.test d 0880: ata.test data.test data.test data.test data.test data.test data. 08c0: test data.test data.test data.test data.test data.test data.test 0900: data.test data.test data.test data.test data.test data.test dat 0940: a.test data.test data.test data.test data.test data.test data.te 0980: st data.test data.test data.test data.test data.test data.test d 09c0: ata.test data.test data.test data.test data.test data.test data. 0a00: test data.test data.test data.test data.test data.test data.test 0a40: data.test data.test data.test data.test data.test data.test dat 0a80: a.test data.test data.test data.test data.test data.test data.te 0ac0: st data.test data.test data.test data.test data.test data.test d 0b00: ata.test data.test data.test data.test data.test data.test data. 0b40: test data.test data.test data.test data.test data.test data.test 0b80: data.test data.test data.test data.test data.test data.test dat === File too long: 864 lines omitted here e3c0: data.test data.test data.test data.test data.test data.test dat e400: a.test data.test data.test data.test data.test data.test data.te e440: st data.test data.test data.test data.test data.test data.test d e480: ata.test data.test data.test data.test data.test data.test data. e4c0: test data.test data.test data.test data.test data.test data.test e500: data.test data.test data.test data.test data.test data.test dat e540: a.test data.test data.test data.test data.test data.test data.te e580: st data.test data.test data.test data.test data.test data.test d e5c0: ata.test data.test data.test data.test data.test data.test data. e600: test data.test data.test data.test data.test data.test data.test e640: data.test data.test data.test data.test data.test data.test dat e680: a.test data.test data.test data.test data.test data.test data.te e6c0: st data.test data.test data.test data.test data.test data.test d e700: ata.test data.test data.test data.test data.test data.test data. e740: test data.test data.test data.test data.test data.test data.test e780: data.test data.test data.test data.test data.test data.test dat e7c0: a.test data.test data.test data.test data.test data.test data.te e800: st data.test data.test data.test data.test data.test data.test d e840: ata.test data.test data.test data.test data.test data.test data. e880: test data.test data.test data.test data.test data.test data.test e8c0: data.test data.test data.test data.test data.test data.test dat e900: a.test data.test data.test data.test data.test data.test data.te e940: st data.test data.test data.test data.test data.test data.test d e980: ata.test data.test data.test data.test data.test data.test data. e9c0: test data.test data.test data.test data.test data.test data.test ea00: data.test data.test data.test data.test data.test data.test dat ea40: a.test data.test data.test data.test data.test data.test data.te ea80: st data.test data.test data.test data.test data.test data.test d eac0: ata.test data.test data.test data.test data.test data.test data. eb00: test data.test data.test data.test data.test data.test data.test eb40: data.test data.test data.test data.test data.test data.test dat eb80: a.test data.test data.test data.test data.test data.test data.te ebc0: st data.test data.test data.test data.test data.test data.test d ec00: ata.test data.test data.test data.test data.test data.test data. ec40: test data.test data.test data.test data.test data.test data.test ec80: data.test data.test data.test data.test data.test data.test dat ecc0: a.test data.test data.test data.test data.test data.test data.te ed00: st data.test data.test data.test data.test data.test data.test d ed40: ata.test data.test data.test data.test data.test data.test data. ed80: test data.test data.test data.test data.test data.test data.test edc0: data.test data.test data.test data.test data.test data.test dat ee00: a.test data.test data.test data.test data.test data.test data.te ee40: st data.test data.test data.test data.test data.test data.test d ee80: ata.test data.test data.test data.test data.test data.test data. eec0: test data.test data.test data.test data.test data.test data.test ef00: data.test data.test data.test data.test data.test data.test dat ef40: a.test data.test data.test data.test data.test data.test data.te ef80: st data.test data.test data.test data.test data.test data.test d efc0: ata.test data.test data.test data.test data.test data.test data. f000: test data.test data.test data.test data.test data.test data.test f040: data.test data.test data.test data.test data.test data.test dat f080: a.test data.test data.test data.test data.test data.test data.te f0c0: st data.test data.test data.test data.test data.test data.test d f100: ata.test data.test data.test data.test data.test data.test data. f140: test data.test data.test data.test data.test data.test data.test f180: data.test data.test data.test data.test data.test data.test dat f1c0: a.test data.test data.test data.test data.test data.test data.te f200: st data.test data.test data.test data.test data.test data.test d f240: ata.test data.test data.test data.test data.test data.test data. f280: test data.test data.test data.test data.test data.test data.test f2c0: data.test data.test data.test data.test data.test data.test dat f300: a.test data.test data.test data.test data.test data.test data.te f340: st data.test data.test data.test data.test data.test data.test d f380: ata.test data.test data.test data.test data.test data.test data. f3c0: test data.test data.test data.test data.test data.test data.test f400: data.test data.test data.test data.test data.test data.test dat f440: a.test data.test data.test data.test data.test data.test data.te f480: st data.test data.test data.test data.test data.test data.test d f4c0: ata.test data.test data.test data.test data.test data.test data. f500: test data.test data.test data.test data.test data.test data.test f540: data.test data.test data.test data.test data.test data.test dat f580: a.test data.test data.test data.test data.test data.test data.te f5c0: st data.test data.test data.test data.test data.test data.test d f600: ata.test data.test data.test data.test data.test data.test data. f640: test data.test data.test data.test data.test data.test data.test f680: data.test data.test data.test data.test data.test data.test dat f6c0: a.test data.test data.test data.test data.test data.test data.te f700: st data.test data.test data.test data.test data.test data.test d f740: ata.test data.test data.test data.test data.test data.test data. f780: test data.test data.test data.test data.test data.test data.test f7c0: data.test data.test data.test data.test data.test data.test dat f800: a.test data.test data.test data.test data.test data.test data.te f840: st data.test data.test data.test data.test data.test data.test d f880: ata.test data.test data.test data.test data.test data.test data. f8c0: test data.test data.test data.test data.test data.test data.test f900: data.test data.test data.test data.test data.test data.test dat f940: a.test data.test data.test data.test data.test data.test data.te f980: st data.test data.test data.test data.test data.test data.test d f9c0: ata.test data.test data.test data.test data.test data.test data. fa00: test data.test data.test data.test data.test data.test data.test fa40: data.test data.test data.test data.test data.test data.test dat fa80: a.test data.test data.test data.test data.test data.test data.te fac0: st data.test data.test data.test data.test data.test data.test d fb00: ata.test data.test data.test data.test data.test data.test data. fb40: test data.test data.test data.test data.test data.test data.test fb80: data.test data.test data.test data.test data.test data.test dat fbc0: a.test data.test data.test data.test data.test data.test data.te fc00: st data.test data.test data.test data.test data.test datCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind559 ./libtest/libtests lib559 http://127.0.0.1:34897/559 > log/7/stdout559 2> log/7/stderr559 a.test d fc40: ata.test data.test data.test data.test data.test data.test data. fc80: test data.test data.test data.test data.test data.test data.test fcc0: data.test data.test data.test data.test data.test data.test dat fd00: a.test data.test => Send data, 5216 bytes (0x1460) 0000: data.test data.test data.test data.test data.test data.test dat 0040: a.test data.test data.test data.test data.test data.test data.te 0080: st data.test data.test data.test data.test data.test data.test d 00c0: ata.test data.test data.test data.test data.test data.test data. 0100: test data.test data.test data.test data.test data.test data.test 0140: data.test data.test data.test data.test data.test data.test dat 0180: a.test data.test data.test data.test data.test data.test data.te 01c0: st data.test data.test data.test data.test data.test data.test d 0200: ata.test data.test data.test data.test data.test data.test data. 0240: test data.test data.test data.test data.test data.test data.test 0280: data.test data.test data.test data.test data.test data.test dat 02c0: a.test data.test data.test data.test data.test data.test data.te 0300: st data.test data.test data.test data.test data.test data.test d 0340: ata.test data.test data.test data.test data.test data.test data. 0380: test data.test data.test data.test data.test data.test data.test 03c0: data.test data.test data.test data.test data.test data.test dat 0400: a.test data.test data.test data.test data.test data.test data.te 0440: st data.test data.test data.test data.test data.test data.test d 0480: ata.test data.test data.test data.test data.test data.test data. 04c0: test data.test data.test data.test data.test data.test data.test 0500: data.test data.test data.test data.test data.test data.test dat 0540: a.test data.test data.test data.test data.test data.test data.te 0580: st data.test data.test data.test data.test data.test data.test d 05c0: ata.test data.test data.test data.test data.test data.test data. 0600: test data.test data.test data.test data.test data.test data.test 0640: data.test data.test data.test data.test data.test data.test dat 0680: a.test data.test data.test data.test data.test data.test data.te 06c0: st data.test data.test data.test data.test data.test data.test d 0700: ata.test data.test data.test data.test data.test data.test data. 0740: test data.test data.test data.test data.test data.test data.test 0780: data.test data.test data.test data.test data.test data.test dat 07c0: a.test data.test data.test data.test data.test data.test data.te 0800: st data.test data.test data.test data.test data.test data.test d 0840: ata.test data.test data.test data.test data.test data.test data. 0880: test data.test data.test data.test data.test data.test data.test 08c0: data.test data.test data.test data.test data.test data.test dat 0900: a.test data.test data.test data.test data.test data.test data.te 0940: st data.test data.test data.test data.test data.test data.test d 0980: ata.test data.test data.test data.test data.test data.test data. 09c0: test data.test data.test data.test data.test data.test data.test 0a00: data.test data.test data.test data.test data.test data.test dat 0a40: a.test data.test data.test data.test data.test data.test data.te 0a80: st data.test data.test data.test data.test data.test data.test d 0ac0: ata.test data.test data.test data.test data.test data.test data. 0b00: test data.test data.test data.test data.test data.test data.test 0b40: data.test data.test data.test data.test data.test data.test dat 0b80: a.test data.test data.test data.test data.test data.test data.te 0bc0: st data.test data.test data.test data.test data.test data.test d 0c00: ata.test data.test data.test data.test data.test data.test data. 0c40: test data.test data.test data.test data.test data.test data.test 0c80: data.test data.test data.test data.test data.test data.test dat 0cc0: a.test data.test data.test data.test data.test data.test data.te 0d00: st data.test data.test data.test data.test data.test data.test d 0d40: ata.test data.test data.test data.test data.test data.test data. 0d80: test data.test data.test data.test data.test data.test data.test 0dc0: data.test data.test data.test data.test data.test data.test dat 0e00: a.test data.test data.test data.test data.test data.test data.te 0e40: st data.test data.test data.test data.test data.test data.test d 0e80: ata.test data.test data.test data.test data.test data.test data. 0ec0: test data.test data.test data.test data.test data.test data.test 0f00: data.test data.test data.test data.test data.test data.test dat 0f40: a.test data.test data.test data.test data.test data.test data.te 0f80: st data.test data.test data.test data.test data.test data.test d 0fc0: ata.test data.test data.test data.test data.test data.test data. 1000: test data.test data.test data.test data.test data.test data.test 1040: data.test data.test data.test data.test data.test data.test dat 1080: a.test data.test data.test data.test data.test data.test data.te 10c0: st data.test data.test data.test data.test data.test data.test d 1100: ata.test data.test data.test data.test data.test data.test data. 1140: test data.test data.test data.test data.test data.test data.test 1180: data.test data.test data.test data.test data.test data.test dat 11c0: a.test data.test data.test data.test data.test data.test data.te 1200: st data.test data.test data.test data.test data.test data.test d 1240: ata.test data.test data.test data.test data.test data.test data. 1280: test data.test data.test data.test data.test data.test data.test 12c0: data.test data.test data.test data.test data.test data.test dat 1300: a.test data.test data.test data.test data.test data.test data.te 1340: st data.test data.test data.test data.test data.test data.test d 1380: ata.test data.test data.test data.test data.test data.test data. 13c0: test data.test data.test data.test data.test data.test data.test 1400: data.test data.test data.test data.test data.test data.test dat 1440: a.test data.test data.test data. == Info: upload completely sent off: 70000 bytes <= Recv header, 53 bytes (0x35) 0000: HTTP/1.1 200 Things are fine in proxy land swsclose <= Recv header, 27 bytes (0x1b) 0000: Server: Microsoft-IIS/5.0 <= Recv header, 45 bytes (0x2d) 0000: Content-Type: text/html; charset=iso-8859-1 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 42 <= Recv header, 2 bytes (0x2) 0000: <= Recv data, 42 bytes (0x2a) 0000: Contents of that page you requested, sir.. == Info: Connection #1 to host 127.0.0.1:38277 left intact Test ended with result 0 === End of file stderr552 === Start of file stdout552 APPLICATION received a CURLIOCMD_RESTARTREAD request APPLICATION ** REWINDING! ** Contents of that page you requested, sir. === End of file stdout552 === Start of file valgrind552 ==267094== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind552 test 0559...[use tiny CURLOPT_BUFFERSIZE] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind559 ./libtest/libtests lib559 http://127.0.0.1:34897/559 > log/7/stdout559 2> log/7/stderr559 valgrind ERROR ==268023== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 559 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind559 ./libtest/libtests lib559 http://127.0.0.1:34897/559 > log/7/stdout559 2> log/7/stderr559 === End of file commands.log === Start of file http_server.log 01:31:03.281942 ====> Client connect 01:31:03.282102 accept_connection 3 returned 4 01:31:03.282178 accept_connection 3 returned 0 01:31:03.289523 Read 93 bytes 01:31:03.289646 Process 93 bytes request 01:31:03.289735 Got request: GET /verifiedserver HTTP/1.1 01:31:03.289804 Are-we-friendly question received 01:31:03.289931 Wrote request (93 bytes) input to log/7/server.input 01:31:03.290027 Identifying ourselves as friends 01:31:03.290195 Response sent (57 bytes) and written to log/7/server.response 01:31:03.290261 special request received, no persistency 01:31:03.290318 ====> Client disconnect 0 01:31:48.793223 ====> Client connect 01:31:48.793386 accept_connection 3 returned 4 01:31:48.793478 accept_connection 3 returned 0 01:31:49.745122 Read 57 bytes 01:31:49.745322 Process 57 bytes request 01:31:49.745417 Got request: GET /559 HTTP/1.1 01:31:49.745488 Serve test number 559 part 0 01:31:49.745728 - request found to be complete (559) 01:31:49.746011 Wrote request (57 bytes) input to log/7/server.input 01:31:49.746118 Send response test559 section 01:31:49.746738 Response sent (2809 bytes) and written to log/7/server.response 01:31:49.746807 => persistent connection request ended, awaits new request 01:31:51.299658 Connection closed by client 01:31:51.299853 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 47962 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 559 === End of file server.cmd === Start of file server.input GET /559 HTTP/1.1 Host: 127.0.0.1:34897 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 2049 Connection: close Content-Type: text/html Silly-header: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ === End of file server.response === Start of file stderr559 URL: http://127.0.0.1:34897/559 Test ended with result 0 === End of file stderr559 === Start of file stdout559 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 2049 Connection: close Content-Type: text/html Silly-header: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ === End of file stdout559 === Start of file valgrind559 ==268023== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind559 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 566 in state 4 Runner 2 (id 185908) running test 565 in state 4 Runner 3 (id 185910) running test 563 in state 4 Runner 4 (id 185912) running test 562 in state 4 Runner 5 (id 185914) running test 564 in state 4 Runner 6 (id 185916) running test 567 in state CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind561 ./libtest/libtests lib549 "ftp://www.example.com/moo/561;type=i" http://127.0.0.1:39461 ascii > log/8/stdout561 2> log/8/stderr561 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind562 ./libtest/libtests lib562 'ftp://127.0.0.1:23456/562;type=A' 38207 > log/4/stdout562 2> log/4/stderr562 4 Runner 7 (id 185918) running test 568 in state 4 Runner 8 (id 185920) running test 561 in state 4 test 0561...[FTP RETR with CURLOPT_PROXY_TRANSFER_MODE, ASCII transfer and type=i] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind561 ./libtest/libtests lib549 "ftp://www.example.com/moo/561;type=i" http://127.0.0.1:39461 ascii > log/8/stdout561 2> log/8/stderr561 valgrind ERROR ==268188== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 561 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind561 ./libtest/libtests lib549 "ftp://www.example.com/moo/561;type=i" http://127.0.0.1:39461 ascii > log/8/stdout561 2> log/8/stderr561 === End of file commands.log === Start of file http_server.log 01:31:14.264034 ====> Client connect 01:31:14.264207 accept_connection 3 returned 4 01:31:14.264285 accept_connection 3 returned 0 01:31:14.270759 Read 93 bytes 01:31:14.270855 Process 93 bytes request 01:31:14.270954 Got request: GET /verifiedserver HTTP/1.1 01:31:14.271025 Are-we-friendly question received 01:31:14.271133 Wrote request (93 bytes) input to log/8/server.input 01:31:14.271220 Identifying ourselves as friends 01:31:14.271395 Response sent (57 bytes) and written to log/8/server.response 01:31:14.271457 special request received, no persistency 01:31:14.271510 ====> Client disconnect 0 01:31:59.438692 ====> Client connect 01:31:59.438832 accept_connection 3 returned 4 01:31:59.438908 accept_connection 3 returned 0 01:32:00.466584 Read 122 bytes 01:32:00.466785 Process 122 bytes request 01:32:00.466875 Got request: GET ftp://www.example.com/moo/561;type=i HTTP/1.1 01:32:00.466944 Serve test number 561 part 0 01:32:00.467122 - request found to be complete (561) 01:32:00.467372 Wrote request (122 bytes) input to log/8/server.input 01:32:00.467481 Send response test561 section 01:32:00.467689 connection close instruction "swsclose" found in response 01:32:00.467912 Response sent (212 bytes) and written to log/8/server.response 01:32:00.467977 instructed to close connection after server-reply 01:32:00.468036 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 47332 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 561 === End of file server.cmd === Start of file server.input GET ftp://www.example.com/moo/561;type=i HTTP/1.1 Host: www.example.com:21 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 hello === End of file server.response === Start of file stderr561 URL: ftp://www.example.com/moo/561;type=i * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 52154 * using HTTP/1.x > GET ftp://www.example.com/moo/561;type=i HTTP/1.1 Host: www.example.com:21 Accept: */* Proxy-Connection: Keep-Alive < HTTP/1.1 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT < ETag: "21025-dc7-39462498" < Accept-Ranges: bytes < Content-Length: 6 < * Connection #0 to host 127.0.0.1:39461 left intact Test ended with result 0 === End of file stderr561 === Start of file stdout561 hello === End of file stdout561 === Start of file valgrind561 ==268188== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind561 test 0562...[FTP a type=A URL and CURLOPT_PORT set] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind562 ./libtest/libtests lib562 'ftp://127.0.0.1:23456/562;type=A' 38207 > log/4/stdout562 2> log/4/stderr562 valgrind ERROR ==268341== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 562 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind562 ./libtest/libtests lib562 'ftp://127.0.0.1:23456/562;type=A' 38207 > log/4/stdout562 2> log/4/stderr562 === End of file commands.log === Start of file ftp_server.log 01:31:16.775681 ====> Client connect 01:31:16.776669 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:31:16.786647 < "USER anonymous" 01:31:16.787120 > "331 We are happy you popped in![CR][LF]" 01:31:16.788628 < "PASS ftp@example.com" 01:31:16.789591 > "230 Welcome you silly person[CR][LF]" 01:31:16.790152 < "PWD" 01:31:16.792807 > "257 "/" is current directory[CR][LF]" 01:31:16.793397 < "EPSV" 01:31:16.793607 ====> Passive DATA channel requested by client 01:31:16.793753 DATA sockfilt for passive data channel starting... 01:31:16.835885 DATA sockfilt for passive data channel started (pid 268332) 01:31:16.837190 DATA sockfilt for passive data channel listens on port 33277 01:31:16.837527 > "229 Entering Passive Mode (|||33277|)[CR][LF]" 01:31:16.837701 Client has been notified that DATA conn will be accepted on port 33277 01:31:16.840684 Client connects to port 33277 01:31:16.840910 ====> Client established passive DATA connection on port 33277 01:31:16.841756 < "TYPE I" 01:31:16.842029 > "200 I modify TYPE as you wanted[CR][LF]" 01:31:16.843210 < "SIZE verifiedserver" 01:31:16.843753 > "213 18[CR][LF]" 01:31:16.844876 < "RETR verifiedserver" 01:31:16.847332 > "150 Binary junk (18 bytes).[CR][LF]" 01:31:16.847860 =====> Closing passive DATA connection... 01:31:16.848023 Server disconnects passive DATA connection 01:31:16.851076 Server disconnected passive DATA connection 01:31:16.851256 DATA sockfilt for passive data channel quits (pid 268332) 01:31:16.854376 DATA sockfilt for passive data channel quit (pid 268332) 01:31:16.854544 =====> Closed passive DATA connection 01:31:16.854787 > "226 File transfer complete[CR][LF]" 01:31:16.905801 < "QUIT" 01:31:16.906670 > "221 bye bye baby[CR][LF]" 01:31:16.907453 MAIN sockfilt said DISC 01:31:16.907770 ====> Client disconnected 01:31:16.908045 Awaiting input 01:32:02.214940 ====> Client connect 01:32:02.215674 FTPD: Getting commands from log/4/server.cmd 01:32:02.216010 FTPD: run test case number: 562 01:32:02.216965 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:32:03.265203 < "USER anonymous" 01:32:03.265914 > "331 We are happy you popped in![CR][LF]" 01:32:03.358297 < "PASS ftp@example.com" 01:32:03.358714 > "230 Welcome you silly person[CR][LF]" 01:32:03.444883 < "PWD" 01:32:03.445334 > "257 "/" is current directory[CR][LF]" 01:32:03.633703 < "EPSV" 01:32:03.634032 ====> Passive DATA channel requested by client 01:32:03.634195 DATA sockfilt for passive data channel starting... 01:32:03.710440 DATA sockfilt for passive data channel started (pid 269416) 01:32:03.714712 DATA sockfilt for passive data channel listens on port 44917 01:32:03.715144 > "229 Entering Passive Mode (|||44917|)[CR][LF]" 01:32:03.715329 Client has been notified that DATA conn will be accepted on port 44917 01:32:03.914135 Client connects to port 44917 01:32:03.914694 ====> Client established passive DATA connection on port 44917 01:32:04.024761 < "TYPE A" 01:32:04.025188 > "200 I modify TYPE as you wanted[CR][LF]" 01:32:04.071419 < "RETR 562" 01:32:04.072793 > "150 Binary data connection for 562 () (20 bytes).[CR][LF]" 01:32:04.073362 =====> Closing passive DATA connection... 01:32:04.073522 Server disconnects passive DATA connection 01:32:04.075420 Server disconnected passive DATA connection 01:32:04.075602 DATA sockfilt for passive data channel quits (pid 269416) 01:32:04.083719 DATA sockfilt for passive data channel quit (pid 269416) 01:32:04.083892 =====> Closed passive DATA connection 01:32:04.084162 > "226 File transfer complete[CR][LF]" 01:32:05.604886 < "QUIT" 01:32:05.605302 > "221 bye bye baby[CR][LF]" 01:32:05.727483 MAIN sockfilt said DISC 01:32:05.727978 ====> Client disconnected 01:32:05.728283 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:31:16.387252 ====> Client connect 01:31:16.388475 Received DATA (on stdin) 01:31:16.388553 > 160 bytes data, server => client 01:31:16.388654 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:31:16.388749 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:31:16.388834 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:31:16.397198 < 16 bytes data, client => server 01:31:16.397345 'USER anonymous\r\n' 01:31:16.399277 Received DATA (on stdin) 01:31:16.399378 > 33 bytes data, server => client 01:31:16.399471 '331 We are happy you popped in!\r\n' 01:31:16.399870 < 22 bytes data, client => server 01:31:16.399948 'PASS ftp@example.com\r\n' 01:31:16.400795 Received DATA (on stdin) 01:31:16.400865 > 30 bytes data, server => client 01:31:16.400969 '230 Welcome you silly person\r\n' 01:31:16.401248 < 5 bytes data, client => server 01:31:16.401313 'PWD\r\n' 01:31:16.402321 Received DATA (on stdin) 01:31:16.402388 > 30 bytes data, server => client 01:31:16.402490 '257 "/" is current directory\r\n' 01:31:16.404521 < 6 bytes data, client => server 01:31:16.404600 'EPSV\r\n' 01:31:16.449860 Received DATA (on stdin) 01:31:16.450001 > 39 bytes data, server => client 01:31:16.450096 '229 Entering Passive Mode (|||33277|)\r\n' 01:31:16.453124 < 8 bytes data, client => server 01:31:16.453201 'TYPE I\r\n' 01:31:16.454165 Received DATA (on stdin) 01:31:16.454232 > 33 bytes data, server => client 01:31:16.454315 '200 I modify TYPE as you wanted\r\n' 01:31:16.454669 < 21 bytes data, client => server 01:31:16.454745 'SIZE verifiedserver\r\n' 01:31:16.455410 Received DATA (on stdin) 01:31:16.455476 > 8 bytes data, server => client 01:31:16.455563 '213 18\r\n' 01:31:16.456328 < 21 bytes data, client => server 01:31:16.456411 'RETR verifiedserver\r\n' 01:31:16.457061 Received DATA (on stdin) 01:31:16.457127 > 29 bytes data, server => client 01:31:16.457294 '150 Binary junk (18 bytes).\r\n' 01:31:16.469482 Received DATA (on stdin) 01:31:16.469565 > 28 bytes data, server => client 01:31:16.469646 '226 File transfer complete\r\n' 01:31:16.516620 < 6 bytes data, client => server 01:31:16.516771 'QUIT\r\n' 01:31:16.518086 Received DATA (on stdin) 01:31:16.518161 > 18 bytes data, server => client 01:31:16.518438 '221 bye bye baby\r\n' 01:31:16.519276 ====> Client disconnect 01:31:16.519570 Received ACKD (on stdin) 01:32:01.826454 ====> Client connect 01:32:01.832538 Received DATA (on stdin) 01:32:01.832661 > 160 bytes data, server => client 01:32:01.832767 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:32:01.832866 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:32:01.832955 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:32:02.875782 < 16 bytes data, client => server 01:32:02.875972 'USER anonymous\r\n' 01:32:02.877378 Received DATA (on stdin) 01:32:02.877454 > 33 bytes data, server => client 01:32:02.877562 '331 We are happy you popped in!\r\n' 01:32:02.968511 < 22 bytes data, client => server 01:32:02.968682 'PASS ftp@example.com\r\n' 01:32:02.970470 Received DATA (on stdin) 01:32:02.970562 > 30 bytes data, server => client 01:32:02.970664 '230 Welcome you silly person\r\n' 01:32:03.053784 < 5 bytes data, client => server 01:32:03.053936 'PWD\r\n' 01:32:03.057092 Received DATA (on stdin) 01:32:03.057191 > 30 bytes data, server => client 01:32:03.057294 '257 "/" is current directory\r\n' 01:32:03.244610 < 6 bytes data, client => server 01:32:03.244805 'EPSV\r\n' 01:32:03.326886 Received DATA (on stdin) 01:32:03.327048 > 39 bytes data, server => client 01:32:03.327157 '229 Entering Passive Mode (|||44917|)\r\n' 01:32:03.635632 < 8 bytes data, client => server 01:32:03.635817 'TYPE A\r\n' 01:32:03.636928 Received DATA (on stdin) 01:32:03.637017 > 33 bytes data, server => client 01:32:03.637121 '200 I modify TYPE as you wanted\r\n' 01:32:03.680751 < 10 bytes data, client => server 01:32:03.680877 'RETR 562\r\n' 01:32:03.684557 Received DATA (on stdin) 01:32:03.684653 > 51 bytes data, server => client 01:32:03.684768 '150 Binary data connection for 562 () (20 bytes).\r\n' 01:32:03.699195 Received DATA (on stdin) 01:32:03.699311 > 28 bytes data, server => client 01:32:03.699389 '226 File transfer complete\r\n' 01:32:05.215251 < 6 bytes data, client => server 01:32:05.215443 'QUIT\r\n' 01:32:05.217042 Received DATA (on stdin) 01:32:05.217125 > 18 bytes data, server => client 01:32:05.217213 '221 bye bye baby\r\n' 01:32:05.337315 ====> Client disconnect 01:32:05.339788 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:31:16.438643 Running IPv4 version 01:31:16.446284 Listening on port 33277 01:31:16.446724 Wrote pid 268332 to log/4/server/ftp_sockdata.pid 01:31:16.447486 Received PING (on stdin) 01:31:16.448479 Received PORT (on stdin) 01:31:16.452497 ====> Client connect 01:31:16.460135 Received DATA (on stdin) 01:31:16.460422 > 18 bytes data, server => client 01:31:16.460773 'WE ROOLZ: 201673\r\n' 01:31:16.462688 Received DISC (on stdin) 01:31:16.462817 ====> Client forcibly disconnected 01:31:16.463403 Received QUIT (on stdin) 01:31:16.463479 quits 01:31:16.463969 ============> sockfilt quits 01:32:03.306128 Running IPv4 version 01:32:03.320587 Listening on port 44917 01:32:03.321098 Wrote pid 269416 to log/4/server/ftp_sockdata.pid 01:32:03.321885 Received PING (on stdin) 01:32:03.325861 Received PORT (on stdin) 01:32:03.523437 ====> Client connect 01:32:03.685879 Received DATA (on stdin) 01:32:03.686260 > 11 bytes data, server => client 01:32:03.686617 'silly data\n' 01:32:03.686878 Received DATA (on stdin) 01:32:03.686946 > 9 bytes data, server => client 01:32:03.687017 'over FTP\n' 01:32:03.687113 Received DISC (on stdin) 01:32:03.687230 ====> Client forcibly disconnected 01:32:03.692526 Received QUIT (on stdin) 01:32:03.692621 quits 01:32:03.693152 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 562 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE A RETR 562 QUIT === End of file server.input === Start of file stderr562 URL: ftp://127.0.0.1:23456/562;type=A * Trying 127.0.0.1:38207... * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 56698 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||44917|) * Connecting to 127.0.0.1 (127.0.0.1) port 44917 * Trying 127.0.0.1:44917... * CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind563 ./libtest/libtests lib562 "ftp://127.0.0.1:23456/563;type=A" 37331 > log/3/stdout563 2> log/3/stderr563 Established 2nd connection to 127.0.0.1 (127.0.0.1 port 44917) from 127.0.0.1 port 38260 > TYPE A < 200 I modify TYPE as you wanted > RETR 562 < 150 Binary data connection for 562 () (20 bytes). * Maxdownload = -1 * Getting file with size: -1 * abort upload * Remembering we are in dir "" < 226 File transfer complete * Connection #0 to host 127.0.0.1:38207 left intact Test ended with result 0 === End of file stderr562 === Start of file stdout562 silly data over FTP === End of file stdout562 === Start of file valgrind562 ==268341== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind562 setenv ftp_proxy = http://127.0.0.1:46853/ test 0563...[FTP type=A URL and CURLOPT_PORT set and proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind563 ./libtest/libtests lib562 "ftp://127.0.0.1:23456/563;type=A" 37331 > log/3/stdout563 2> log/3/stderr563 valgrind ERROR ==268546== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 563 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind563 ./libtest/libtests lib562 "ftp://127.0.0.1:23456/563;type=A" 37331 > log/3/stdout563 2> log/3/stderr563 === End of file commands.log === Start of file ftp_server.log 01:31:24.991166 ====> Client connect 01:31:24.992204 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:31:24.999749 < "USER anonymous" 01:31:25.001122 > "331 We are happy you popped in![CR][LF]" 01:31:25.002241 < "PASS ftp@example.com" 01:31:25.002522 > "230 Welcome you silly person[CR][LF]" 01:31:25.003650 < "PWD" 01:31:25.006132 > "257 "/" is current directory[CR][LF]" 01:31:25.006828 < "EPSV" 01:31:25.007023 ====> Passive DATA channel requested by client 01:31:25.007160 DATA sockfilt for passive data channel starting... 01:31:25.051073 DATA sockfilt for passive data channel started (pid 268534) 01:31:25.052489 DATA sockfilt for passive data channel listens on port 41357 01:31:25.053118 > "229 Entering Passive Mode (|||41357|)[CR][LF]" 01:31:25.053304 Client has been notified that DATA conn will be accepted on port 41357 01:31:25.056449 Client connects to port 41357 01:31:25.056689 ====> Client established passive DATA connection on port 41357 01:31:25.057350 < "TYPE I" 01:31:25.058441 > "200 I modify TYPE as you wanted[CR][LF]" 01:31:25.058993 < "SIZE verifiedserver" 01:31:25.060070 > "213 18[CR][LF]" 01:31:25.060629 < "RETR verifiedserver" 01:31:25.063231 > "150 Binary junk (18 bytes).[CR][LF]" 01:31:25.063765 =====> Closing passive DATA connection... 01:31:25.063925 Server disconnects passive DATA connection 01:31:25.065381 Server disconnected passive DATA connection 01:31:25.065552 DATA sockfilt for passive data channel quits (pid 268534) 01:31:25.073154 DATA sockfilt for passive data channel quit (pid 268534) 01:31:25.073379 =====> Closed passive DATA connection 01:31:25.073656 > "226 File transfer complete[CR][LF]" 01:31:25.112132 < "QUIT" 01:31:25.112498 > "221 bye bye baby[CR][LF]" 01:31:25.113816 MAIN sockfilt said DISC 01:31:25.114170 ====> Client disconnected 01:31:25.114456 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:31:24.602662 ====> Client connect 01:31:24.605993 Received DATA (on stdin) 01:31:24.606107 > 160 bytes data, server => client 01:31:24.606211 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:31:24.606307 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:31:24.606397 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:31:24.610817 < 16 bytes data, client => server 01:31:24.610908 'USER anonymous\r\n' 01:31:24.611941 Received DATA (on stdin) 01:31:24.612010 > 33 bytes data, server => client 01:31:24.613285 '331 We are happy you popped in!\r\n' 01:31:24.613571 < 22 bytes data, client => server 01:31:24.613646 'PASS ftp@example.com\r\n' 01:31:24.614688 Received DATA (on stdin) 01:31:24.614754 > 30 bytes data, server => client 01:31:24.614830 '230 Welcome you silly person\r\n' 01:31:24.615112 < 5 bytes data, client => server 01:31:24.615175 'PWD\r\n' 01:31:24.615785 Received DATA (on stdin) 01:31:24.615848 > 30 bytes data, server => client 01:31:24.615956 '257 "/" is current directory\r\n' 01:31:24.618272 < 6 bytes data, client => server 01:31:24.618341 'EPSV\r\n' 01:31:24.664720 Received DATA (on stdin) 01:31:24.664861 > 39 bytes data, server => client 01:31:24.665485 '229 Entering Passive Mode (|||41357|)\r\n' 01:31:24.668176 < 8 bytes data, client => server 01:31:24.668256 'TYPE I\r\n' 01:31:24.669505 Received DATA (on stdin) 01:31:24.669576 > 33 bytes data, server => client 01:31:24.669680 '200 I modify TYPE as you wanted\r\n' 01:31:24.670054 < 21 bytes data, client => server 01:31:24.670128 'SIZE verifiedserver\r\n' 01:31:24.671199 Received DATA (on stdin) 01:31:24.671268 > 8 bytes data, server => client 01:31:24.671358 '213 18\r\n' 01:31:24.671795 < 21 bytes data, client => server 01:31:24.671871 'RETR verifiedserver\r\n' 01:31:24.672911 Received DATA (on stdin) 01:31:24.672989 > 29 bytes data, server => client 01:31:24.673100 '150 Binary junk (18 bytes).\r\n' 01:31:24.685785 Received DATA (on stdin) 01:31:24.685887 > 28 bytes data, server => client 01:31:24.685976 '226 File transfer complete\r\n' 01:31:24.723171 < 6 bytes data, client => server 01:31:24.723289 'QUIT\r\n' 01:31:24.724641 Received DATA (on stdin) 01:31:24.724720 > 18 bytes data, server => client 01:31:24.724803 '221 bye bye baby\r\n' 01:31:24.725611 ====> Client disconnect 01:31:24.725931 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:31:25.653245 Running IPv4 version 01:31:25.661369 Listening on port 41357 01:31:25.661821 Wrote pid 268534 to log/3/server/ftp_sockdata.pid 01:31:25.662597 Received PING (on stdin) 01:31:25.663719 Received PORT (on stdin) 01:31:25.668001 ====> Client connect 01:31:25.676031 Received DATA (on stdin) 01:31:25.676360 > 18 bytes data, server => client 01:31:25.676727 'WE ROOLZ: 202504\r\n' 01:31:25.676974 Received DISC (on stdin) 01:31:25.677094 ====> Client forcibly disconnected 01:31:25.679294 Received QUIT (on stdin) 01:31:25.679379 quits 01:31:25.679889 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file http_server.log 01:31:23.651423 ====> Client connect 01:31:23.651576 accept_connection 3 returned 4 01:31:23.651648 accept_connection 3 returned 0 01:31:23.659313 Read 93 bytes 01:31:23.659424 Process 93 bytes request 01:31:23.659515 Got request: GET /verifiedserver HTTP/1.1 01:31:23.659582 Are-we-friendly question received 01:31:23.659709 Wrote request (93 bytes) input to log/3/server.input 01:31:23.659812 Identifying ourselves as friends 01:31:23.660026 Response sent (57 bytes) and written to log/3/server.response 01:31:23.660094 special request received, no persistency 01:31:23.660150 ====> Client disconnect 0 01:32:09.238426 ====> Client connect 01:32:09.238569 accept_connection 3 returned 4 01:32:09.238650 accept_connection 3 returned 0 01:32:10.322774 Read 115 bytes 01:32:10.322955 Process 115 bytes request 01:32:10.323051 Got request: GET ftp://127.0.0.1:37331/563;type=A HTTP/1.1 01:32:10.323123 Serve test number 563 part 0 01:32:10.323306 - request found to be complete (563) 01:32:10.323580 Wrote request (115 bytes) input to log/3/server.input 01:32:10.323698 Send response test563 section 01:32:10.323921 connection close instruction "swsclose" found in response 01:32:10.324114 Response sent (138 bytes) and written to log/3/server.response 01:32:10.324185 instructed to close connection after server-reply 01:32:10.324252 ====> Client disconnect 0 === End of file http_server.logCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind564 ./libtest/libtests lib564 ftp://127.0.0.1:33729/path/564 127.0.0.1:43635 > log/5/stdout564 2> log/5/stderr564 === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 52988 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 563 === End of file server.cmd === Start of file server.input GET ftp://127.0.0.1:37331/563;type=A HTTP/1.1 Host: 127.0.0.1:37331 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Accept-Ranges: bytes Content-Length: 6 hello === End of file server.response === Start of file stderr563 URL: ftp://127.0.0.1:23456/563;type=A * Uses proxy env variable ftp_proxy == 'http://127.0.0.1:46853/' * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 43646 * using HTTP/1.x > GET ftp://127.0.0.1:37331/563;type=A HTTP/1.1 Host: 127.0.0.1:37331 Accept: */* Proxy-Connection: Keep-Alive < HTTP/1.1 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Accept-Ranges: bytes < Content-Length: 6 < * Connection #0 to host 127.0.0.1:46853 left intact Test ended with result 0 === End of file stderr563 === Start of file stdout563 hello === End of file stdout563 === Start of file valgrind563 ==268546== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind563 startnew: ./server/servers socksd --port 0 --pidfile log/5/server/socks_server.pid --portfile log/5/server/socks_server.port --reqfile log/5/socksd-request.log --logfile log/5/socks_server.log --backend 127.0.0.1 --config log/5/server.cmd RUN: SOCKS server is now running PID 268699 * pid socks => 268699 268699 test 0564...[FTP RETR a file over a SOCKS proxy using the multi interface] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind564 ./libtest/libtests lib564 ftp://127.0.0.1:33729/path/564 127.0.0.1:43635 > log/5/stdout564 2> log/5/stderr564 valgrind ERROR ==268709== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 564 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind564 ./libtest/libtests lib564 ftp://127.0.0.1:33729/path/564 127.0.0.1:43635 > log/5/stdout564 2> log/5/stderr564 === End of file commands.log === Start of file ftp_server.log 01:31:30.694589 ====> Client connect 01:31:30.695560 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:31:30.702816 < "USER anonymous" 01:31:30.703145 > "331 We are happy you popped in![CR][LF]" 01:31:30.707747 < "PASS ftp@example.com" 01:31:30.708015 > "230 Welcome you silly person[CR][LF]" 01:31:30.708679 < "PWD" 01:31:30.708944 > "257 "/" is current directory[CR][LF]" 01:31:30.710689 < "EPSV" 01:31:30.710903 ====> Passive DATA channel requested by client 01:31:30.711047 DATA sockfilt for passive data channel starting... 01:31:30.749658 DATA sockfilt for passive data channel started (pid 268696) 01:31:30.750773 DATA sockfilt for passive data channel listens on port 39683 01:31:30.751132 > "229 Entering Passive Mode (|||39683|)[CR][LF]" 01:31:30.751303 Client has been notified that DATA conn will be accepted on port 39683 01:31:30.753776 Client connects to port 39683 01:31:30.753995 ====> Client established passive DATA connection on port 39683 01:31:30.754628 < "TYPE I" 01:31:30.754901 > "200 I modify TYPE as you wanted[CR][LF]" 01:31:30.755685 < "SIZE verifiedserver" 01:31:30.755991 > "213 18[CR][LF]" 01:31:30.757057 < "RETR verifiedserver" 01:31:30.757622 > "150 Binary junk (18 bytes).[CR][LF]" 01:31:30.760348 =====> Closing passive DATA connection... 01:31:30.760505 Server disconnects passive DATA connection 01:31:30.761442 Server disconnected passive DATA connection 01:31:30.761606 DATA sockfilt for passive data channel quits (pid 268696) 01:31:30.768016 DATA sockfilt for passive data channel quit (pid 268696) 01:31:30.768215 =====> Closed passive DATA connection 01:31:30.768465 > "226 File transfer complete[CR][LF]" 01:31:30.808890 < "QUIT" 01:31:30.810048 > "221 bye bye baby[CR][LF]" 01:31:30.810254 MAIN sockfilt said DISC 01:31:30.810436 ====> Client disconnected 01:31:30.814051 Awaiting input 01:32:17.382837 ====> Client connect 01:32:17.383560 FTPD: Getting commands from log/5/server.cmd 01:32:17.383885 FTPD: run test case number: 564 01:32:17.385480 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:32:18.362428 < "USER anonymous" 01:32:18.367469 > "331 We are happy you popped in![CR][LF]" 01:32:18.490503 < "PASS ftp@example.com" 01:32:18.490929 > "230 Welcome you silly person[CR][LF]" 01:32:18.608403 < "PWD" 01:32:18.608872 > "257 "/" is current directory[CR][LF]" 01:32:18.817429 < "CWD path" 01:32:18.817859 > "250 CWD command successful.[CR][LF]" 01:32:18.901757 < "EPSV" 01:32:18.902112 ====> Passive DATA channel requested by client 01:32:18.902258 DATA sockfilt for passive data channel starting... 01:32:18.990359 DATA sockfilt for passive data channel started (pid 269792) 01:32:18.991606 DATA sockfilt for passive data channel listens on port 33233 01:32:18.991963 > "229 Entering Passive Mode (|||33233|)[CR][LF]" 01:32:18.992134 Client has been notified that DATA conn will be accepted on port 33233 01:32:19.313802 Client connects to port 33233 01:32:19.314396 ====> Client established passive DATA connection on port 33233 01:32:19.408335 < "TYPE I" 01:32:19.408754 > "200 I modify TYPE as you wanted[CR][LF]" 01:32:19.487238 < "SIZE 564" 01:32:19.489861 > "213 51[CR][LF]" 01:32:19.574916 < "RETR 564" 01:32:19.576439 > "150 Binary data connection for 564 () (51 bytes).[CR][LF]" 01:32:19.577184 =====> Closing passive DATA connection... 01:32:19.580706 Server disconnects passive DATA connection 01:32:19.581426 Server disconnected passive DATA connection 01:32:19.581615 DATA sockfilt for passive data channel quits (pid 269792) 01:32:19.589035 DATA sockfilt for passive data channel quit (pid 269792) 01:32:19.589235 =====> Closed passive DATA connection 01:32:19.589527 > "226 File transfer complete[CR][LF]" 01:32:21.445795 < "QUIT" 01:32:21.446225 > "221 bye bye baby[CR][LF]" 01:32:21.580814 MAIN sockfilt said DISC 01:32:21.581333 ====> Client disconnected 01:32:21.581666 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:31:31.306135 ====> Client connect 01:31:31.307686 Received DATA (on stdin) 01:31:31.307765 > 160 bytes data, server => client 01:31:31.307878 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:31:31.307983 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:31:31.308073 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:31:31.314005 < 16 bytes data, client => server 01:31:31.314104 'USER anonymous\r\n' 01:31:31.314998 Received DATA (on stdin) 01:31:31.315064 > 33 bytes data, server => client 01:31:31.315145 '331 We are happy you popped in!\r\n' 01:31:31.315392 < 22 bytes data, client => server 01:31:31.315465 'PASS ftp@example.com\r\n' 01:31:31.319877 Received DATA (on stdin) 01:31:31.319945 > 30 bytes data, server => client 01:31:31.320022 '230 Welcome you silly person\r\n' 01:31:31.320241 < 5 bytes data, client => server 01:31:31.320303 'PWD\r\n' 01:31:31.320803 Received DATA (on stdin) 01:31:31.320865 > 30 bytes data, server => client 01:31:31.320942 '257 "/" is current directory\r\n' 01:31:31.322249 < 6 bytes data, client => server 01:31:31.322314 'EPSV\r\n' 01:31:31.362956 Received DATA (on stdin) 01:31:31.363104 > 39 bytes data, server => client 01:31:31.363194 '229 Entering Passive Mode (|||39683|)\r\n' 01:31:31.365712 < 8 bytes data, client => server 01:31:31.365783 'TYPE I\r\n' 01:31:31.366757 Received DATA (on stdin) 01:31:31.366823 > 33 bytes data, server => client 01:31:31.366902 '200 I modify TYPE as you wanted\r\n' 01:31:31.367238 < 21 bytes data, client => server 01:31:31.367310 'SIZE verifiedserver\r\n' 01:31:31.367855 Received DATA (on stdin) 01:31:31.367918 > 8 bytes data, server => client 01:31:31.367981 '213 18\r\n' 01:31:31.368379 < 21 bytes data, client => server 01:31:31.368452 'RETR verifiedserver\r\n' 01:31:31.369219 Received DATA (on stdin) 01:31:31.369299 > 29 bytes data, server => client 01:31:31.369396 '150 Binary junk (18 bytes).\r\n' 01:31:31.380542 Received DATA (on stdin) 01:31:31.380624 > 28 bytes data, server => client 01:31:31.380704 '226 File transfer complete\r\n' 01:31:31.419804 < 6 bytes data, client => server 01:31:31.419930 'QUIT\r\n' 01:31:31.421110 Received DATA (on stdin) 01:31:31.421179 > 18 bytes data, server => client 01:31:31.421272 '221 bye bye baby\r\n' 01:31:31.421815 ====> Client disconnect 01:31:31.426130 Received ACKD (on stdin) 01:32:17.993688 ====> Client connect 01:32:17.996664 Received DATA (on stdin) 01:32:17.996750 > 160 bytes data, server => client 01:32:17.996876 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:32:17.996975 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:32:17.997062 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:32:18.972965 < 16 bytes data, client => server 01:32:18.973153 'USER anonymous\r\n' 01:32:18.974574 Received DATA (on stdin) 01:32:18.974654 > 33 bytes data, server => client 01:32:18.979546 '331 We are happy you popped in!\r\n' 01:32:19.101120 < 22 bytes data, client => server 01:32:19.101291 'PASS ftp@example.com\r\n' 01:32:19.102919 Received DATA (on stdin) 01:32:19.102999 > 30 bytes data, server => client 01:32:19.103088 '230 Welcome you silly person\r\n' 01:32:19.218771 < 5 bytes data, client => server 01:32:19.218947 'PWD\r\n' 01:32:19.220866 Received DATA (on stdin) 01:32:19.220958 > 30 bytes data, server => client 01:32:19.221042 '257 "/" is current directory\r\n' 01:32:19.427981 < 10 bytes data, client => server 01:32:19.428181 'CWD path\r\n' 01:32:19.431832 Received DATA (on stdin) 01:32:19.431917 > 29 bytes data, server => client 01:32:19.432003 '250 CWD command successful.\r\n' 01:32:19.512312 < 6 bytes data, client => server 01:32:19.512509 'EPSV\r\n' 01:32:19.603676 Received DATA (on stdin) 01:32:19.603819 > 39 bytes data, server => client 01:32:19.603914 '229 Entering Passive Mode (|||33233|)\r\n' 01:32:20.015923 < 8 bytes data, client => server 01:32:20.016084 'TYPE I\r\n' 01:32:20.022491 Received DATA (on stdin) 01:32:20.022587 > 33 bytes data, server => client 01:32:20.022682 '200 I modify TYPE as you wanted\r\n' 01:32:20.098033 < 10 bytes data, client => server 01:32:20.098269 'SIZE 564\r\n' 01:32:20.101585 Received DATA (on stdin) 01:32:20.101677 > 8 bytes data, server => client 01:32:20.101757 '213 51\r\n' 01:32:20.184160 < 10 bytes data, client => server 01:32:20.184346 'RETR 564\r\n' 01:32:20.188155 Received DATA (on stdin) 01:32:20.188246 > 51 bytes data, server => client 01:32:20.188357 '150 Binary data connection for 564 () (51 bytes).\r\n' 01:32:20.201238 Received DATA (on stdin) 01:32:20.201353 > 28 bytes data, server => client 01:32:20.201451 '226 File transfer complete\r\n' 01:32:22.056648 < 6 bytes data, client => server 01:32:22.056856 'QUIT\r\n' 01:32:22.057917 Received DATA (on stdin) 01:32:22.057998 > 18 bytes data, server => client 01:32:22.058086 '221 bye bye baby\r\n' 01:32:22.189542 ====> Client disconnect 01:32:22.193110 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:31:30.352769 Running IPv4 version 01:31:30.360050 Listening on port 39683 01:31:30.360489 Wrote pid 268696 to log/5/server/ftp_sockdata.pid 01:31:30.361219 Received PING (on stdin) 01:31:30.362031 Received PORT (on stdin) 01:31:30.365557 ====> Client connect 01:31:30.369739 Received DATA (on stdin) 01:31:30.370010 > 18 bytes data, server => client 01:31:30.372811 'WE ROOLZ: 202313\r\n' 01:31:30.373044 Received DISC (on stdin) 01:31:30.373156 ====> Client forcibly disconnected 01:31:30.373701 Received QUIT (on stdin) 01:31:30.373771 quits 01:31:30.374243 ============> sockfilt quits 01:32:18.580271 Running IPv4 version 01:32:18.600283 Listening on port 33233 01:32:18.600801 Wrote pid 269792 to log/5/server/ftp_sockdata.pid 01:32:18.601573 Received PING (on stdin) 01:32:18.602672 Received PORT (on stdin) 01:32:18.925292 ====> Client connect 01:32:19.188539 Received DATA (on stdin) 01:32:19.188964 > 5 bytes data, server => client 01:32:19.189374 'data\n' 01:32:19.189711 Received DATA (on stdin) 01:32:19.189788 > 7 bytes data, server => client 01:32:19.189863 ' to\n' 01:32:19.190001 Received DATA (on stdin) 01:32:19.190073 > 10 bytes data, server => client 01:32:19.190151 ' see\n' 01:32:19.190286 Received DATA (on stdin) 01:32:19.190357 > 9 bytes data, server => client 01:32:19.190433 'that FTP\n' 01:32:19.192491 Received DATA (on stdin) 01:32:19.192576 > 6 bytes data, server => client 01:32:19.192664 'works\n' 01:32:19.192787 Received DATA (on stdin) 01:32:19.192866 > 14 bytes data, server => client 01:32:19.192955 ' so does it?\n' 01:32:19.193055 Received DISC (on stdin) 01:32:19.193201 ====> Client forcibly disconnected 01:32:19.193833 Received QUIT (on stdin) 01:32:19.193924 quits 01:32:19.194543 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 564 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD path EPSV TYPE I SIZE 564 RETR 564 QUIT === End of file server.input === Start of file socks_server.log 01:31:30.566328 Running IPv4 version 01:31:30.573567 Listening on port 43635 01:31:30.573989 Wrote pid 268699 to log/5/server/socks_server.pid 01:31:30.574239 Wrote port 43635 to log/5/server/socks_server.port 01:32:16.286027 ====> Client connect, Read config from log/5/server.cmd 01:32:16.286299 Reset to defaults 01:32:16.286487 parse config file 01:32:16.992537 READ 9 bytes 01:32:16.993087 '040183c17f00000100' 01:32:16.993884 Connected fine to 127.0.0.1:33729 01:32:16.994070 Sent 8 bytes 01:32:16.994157 '005a83c17f000001' 01:32:16.994233 ====> Tunnel transfer 01:32:18.840970 ====> Client connect, Read config from log/5/server.cmd 01:32:18.841155 Reset to defaults 01:32:18.841216 parse config file 01:32:18.924785 READ 9 bytes 01:32:18.924980 '040181d17f00000100' 01:32:18.925144 Connected fine to 127.0.0.1:33233 01:32:18.925234 Sent 8 bytes 01:32:18.925319 '005a81d17f000001' 01:32:18.925383 ====> Tunnel transfer 01:32:19.193456 SOCKS transfer completed. Bytes: < 51 > 0 01:32:21.189189 SOCKS transfer completed. Bytes: < 459 > 93 === End of file socks_server.log === Start of file stderr564 URL: ftp://127.0.0.1:33729/path/564 Start at URL 0 01:32:16.989427 == Info: Trying 127.0.0.1:43635... 01:32:18.157613 == Info: Opened SOCKS connection from 127.0.0.1 port 37946 to 127.0.0.1 port 33729 (via 127.0.0.1 port 43635) 01:32:18.305735 == Info: Established connection to 127.0.0.1 (127.0.0.1 port 43635) from 127.0.0.1 port 37946 01:32:18.508485 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:32:18.818760 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:32:18.853441 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:32:18.870008 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:32:18.882789 <=CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind565 ./libtest/libtests lib510 http://127.0.0.1:39863/565 > log/2/stdout565 2> log/2/stderr565 Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:32:18.982050 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:32:19.074398 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:32:19.101670 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:32:19.191703 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:32:19.218792 => Send header, 5 bytes (0x5) 0000: PWD 01:32:19.246656 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:32:19.290255 == Info: Entry path is '/' 01:32:19.428013 => Send header, 10 bytes (0xa) 0000: CWD path 01:32:19.449651 <= Recv header, 29 bytes (0x1d) 0000: 250 CWD command successful. 01:32:19.512359 => Send header, 6 bytes (0x6) 0000: EPSV 01:32:19.532863 == Info: Connect data stream passively 01:32:19.608936 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||33233|) 01:32:19.718684 == Info: Hostname 127.0.0.1 was found in DNS cache 01:32:19.756799 == Info: Connecting to 127.0.0.1 (127.0.0.1) port 43635 01:32:19.830751 == Info: Trying 127.0.0.1:43635... 01:32:19.938486 == Info: Opened 2nd SOCKS connection from 127.0.0.1 port 37950 to 127.0.0.1 port 33233 (via 127.0.0.1 port 43635) 01:32:19.968992 == Info: Established 2nd connection to 127.0.0.1 (127.0.0.1 port 43635) from 127.0.0.1 port 37950 01:32:20.010122 => Send header, 8 bytes (0x8) 0000: TYPE I 01:32:20.057522 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:32:20.098057 => Send header, 10 bytes (0xa) 0000: SIZE 564 01:32:20.131876 <= Recv header, 8 bytes (0x8) 0000: 213 51 01:32:20.184174 => Send header, 10 bytes (0xa) 0000: RETR 564 01:32:20.205134 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 564 () (51 bytes). 01:32:20.256619 == Info: Maxdownload = -1 01:32:20.272265 == Info: Getting file with size: 51 01:32:20.418597 <= Recv data, 51 bytes (0x33) 0000: data. to. see.that FTP.works. so does it?. 01:32:20.729784 == Info: abort upload 01:32:20.757716 <= Recv data, 0 bytes (0x0) 01:32:20.925086 == Info: Remembering we are in dir "path/" 01:32:21.133117 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:32:21.404099 == Info: Connection #0 to host 127.0.0.1:33729 left intact Test ended with result 0 === End of file stderr564 === Start of file stdout564 data to see that FTP works so does it? === End of file stdout564 === Start of file valgrind564 ==268709== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind564 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 566 in state 4 Runner 2 (id 185908) running test 565 in state 4 Runner 3 (id 185910) running test 571 in state 4 Runner 4 (id 185912) running test 570 in state 4 Runner 5 (id 185914) running test 572 in state 4 Runner 6 (id 185916) running test 567 in state 4 Runner 7 (id 185918) running test 568 in state 4 Runner 8 (id 185920) running test 569 in state 4 test 0565...[send HTTP POST using read callback, chunked transfer-encoding and Digest] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind565 ./libtest/libtests lib510 http://127.0.0.1:39863/565 > log/2/stdout565 2> log/2/stderr565 valgrind ERROR ==268865== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 565 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind565 ./libtest/libtests lib510 http://127.0.0.1:39863/565 > log/2/stdout565 2> log/2/stderr565 === End of file commands.log === Start of file http_server.log 01:31:35.724578 ====> Client connect 01:31:35.724726 accept_connection 3 returned 4 01:31:35.724795 accept_connection 3 returned 0 01:31:35.732016 Read 93 bytes 01:31:35.732100 Process 93 bytes request 01:31:35.732184 Got request: GET /verifiedserver HTTP/1.1 01:31:35.732243 Are-we-friendly question received 01:31:35.732347 Wrote request (93 bytes) input to log/2/server.input 01:31:35.732430 Identifying ourselves as friends 01:31:35.732603 Response sent (57 bytes) and written to log/2/server.response 01:31:35.732664 special request received, no persistency 01:31:35.732719 ====> Client disconnect 0 01:32:21.015445 ====> Client connect 01:32:21.015587 accept_connection 3 returned 4 01:32:21.015665 accept_connection 3 returned 0 01:32:22.277387 Read 140 bytes 01:32:22.277585 Process 140 bytes request 01:32:22.277683 Got request: POST /565 HTTP/1.1 01:32:22.277755 Serve test number 565 part 0 01:32:22.277977 - request found to be complete (565) 01:32:22.278307 Wrote request (140 bytes) input to log/2/server.input 01:32:22.278414 Send response test565 section 01:32:22.278673 enable "swsbounce" in the next request 01:32:22.278943 Response sent (315 bytes) and written to log/2/server.response 01:32:22.279011 => persistent connection request ended, awaits new request 01:32:30.769345 Read 291 bytes 01:32:30.769561 Process 291 bytes request 01:32:30.769660 Got request: POST /565 HTTP/1.1 01:32:30.769732 Serve test number 565 part 0 01:32:30.769964 - request found to be complete (565) 01:32:31.990745 Read 8 bytes 01:32:31.990977 Process 299 bytes request [CONTINUED] 01:32:31.991049 - request found to be complete (565) 01:32:32.037919 Read 8 bytes 01:32:32.038126 Process 307 bytes request [CONTINUED] 01:32:32.038196 - request found to be complete (565) 01:32:32.046791 Read 10 bytes 01:32:32.046928 Process 317 bytes request [CONTINUED] 01:32:32.047002 - request found to be complete (565) 01:32:32.049742 Read 35 bytes 01:32:32.049826 Process 352 bytes request [CONTINUED] 01:32:32.049888 - request found to be complete (565) 01:32:32.058985 Read 5 bytes 01:32:32.062475 Process 357 bytes request [CONTINUED] 01:32:32.062559 - request found to be complete (565) 01:32:32.062809 Wrote request (357 bytes) input to log/2/server.input 01:32:32.062898 BOUNCE part number to 1 01:32:32.062971 Send response test565 section 01:32:32.063369 Response sent (115 bytes) and written to log/2/server.response 01:32:32.063438 => persistent connection request ended, awaits new request 01:32:32.728643 Connection closed by client 01:32:32.728848 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 33630 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 565 === End of file server.cmd === Start of file server.input POST /565 HTTP/1.1 Host: 127.0.0.1:39863 Accept: */* Transfer-Encoding: chunked Content-Type: application/x-www-form-urlencoded 0 POST /565 HTTP/1.1 Host: 127.0.0.1:39863 Authorization: Digest username="foo", realm="testrealm", nonce="1053604144", uri="/565", response="877424f750af047634dbd94f9933217b" Accept: */* Transfer-Encoding: chunked Content-Type: application/x-www-form-urlencoded Expect: 100-continue 3 one 3 two 5 three 1d and a final longer crap: four 0 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 100 Continue Server: Microsoft-IIS/5.0 Date: Sun, 03 Apr 2005 14:57:45 GMT X-Powered-By: ASP.NET HTTP/1.1 401 authentication please swsbounce Server: Microsoft-IIS/6.0 WWW-Authenticate: Digest realm="testrealm", nonce="1053604144" Content-Type: text/html; charset=iso-8859-1 Content-Length: 0 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind567 ./libtest/libtests lib567 rtsp://127.0.0.1:33491/567 > log/6/stdout567 2> log/6/stderr567 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind566 ./libtest/libtests lib566 http://127.0.0.1:40641/566 log/1/ip566 > log/1/stdout566 2> log/1/stderr566 HTTP/1.1 200 A OK Server: Microsoft-IIS/6.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 3 ok === End of file server.response === Start of file stderr565 URL: http://127.0.0.1:39863/565 * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 38940 * using HTTP/1.x * Server auth using Digest with user 'foo' > POST /565 HTTP/1.1 Host: 127.0.0.1:39863 Accept: */* Transfer-Encoding: chunked Content-Type: application/x-www-form-urlencoded * upload completely sent off: 5 bytes < HTTP/1.1 100 Continue < Server: Microsoft-IIS/5.0 < Date: Sun, 03 Apr 2005 14:57:45 GMT < X-Powered-By: ASP.NET < < HTTP/1.1 401 authentication please swsbounce < Server: Microsoft-IIS/6.0 < WWW-Authenticate: Digest realm="testrealm", nonce="1053604144" < Content-Type: text/html; charset=iso-8859-1 < Content-Length: 0 * Ignoring the response-body * setting size while ignoring < * Connection #0 to host 127.0.0.1:39863 left intact * Issue another request to this URL: 'http://127.0.0.1:39863/565' * Reusing existing http: connection with host 127.0.0.1 * Server auth using Digest with user 'foo' > POST /565 HTTP/1.1 Host: 127.0.0.1:39863 Authorization: Digest username="foo", realm="testrealm", nonce="1053604144", uri="/565", response="877424f750af047634dbd94f9933217b" Accept: */* Transfer-Encoding: chunked Content-Type: application/x-www-form-urlencoded Expect: 100-continue * Done waiting for 100-continue * upload completely sent off: 66 bytes < HTTP/1.1 200 A OK < Server: Microsoft-IIS/6.0 < Content-Type: text/html; charset=iso-8859-1 < Content-Length: 3 < * Connection #0 to host 127.0.0.1:39863 left intact Test ended with result 0 === End of file stderr565 === Start of file stdout565 HTTP/1.1 100 Continue Server: Microsoft-IIS/5.0 Date: Sun, 03 Apr 2005 14:57:45 GMT X-Powered-By: ASP.NET HTTP/1.1 401 authentication please swsbounce Server: Microsoft-IIS/6.0 WWW-Authenticate: Digest realm="testrealm", nonce="1053604144" Content-Type: text/html; charset=iso-8859-1 Content-Length: 0 HTTP/1.1 200 A OK Server: Microsoft-IIS/6.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 3 ok === End of file stdout565 === Start of file valgrind565 ==268865== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind565 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/rtspserver.pl --pidfile "log/6/server/rtsp_server.pid" --portfile "log/6/server/rtsp_server.port" --logfile "log/6/rtsp_server.log" --logdir "log/6" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: RTSP server PID 269026 port 33491 * pid rtsp => 269026 269026 test 0567...[simple RTSP OPTIONS command] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind567 ./libtest/libtests lib567 rtsp://127.0.0.1:33491/567 > log/6/stdout567 2> log/6/stderr567 valgrind ERROR ==269106== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 567 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind567 ./libtest/libtests lib567 rtsp://127.0.0.1:33491/567 > log/6/stdout567 2> log/6/stderr567 === End of file commands.log === Start of file rtsp_server.log 01:31:48.496394 Running IPv4 version on port 33491 01:31:48.503513 Wrote pid 269026 to log/6/server/rtsp_server.pid 01:31:48.503803 Wrote port 33491 to log/6/server/rtsp_server.port 01:32:33.359213 ====> Client connect 01:32:34.284512 Read 95 bytes 01:32:34.285319 rtspd_ProcessRequest() called with testno -7 and line [OPTIONS rtsp://127.0.0.1:33491/567 RTSP/1.0 CSeq: 1 User-Agent: test567 Test-Number: 567 ] 01:32:34.287634 Got request: OPTIONS rtsp://127.0.0.1:33491/567 RTSP/1.0 01:32:34.287929 Requested test number 567 part 0 01:32:34.293905 rtspd_ProcessRequest found a complete request 01:32:34.295069 Wrote request (95 bytes) input to log/6/server.input 01:32:34.295433 Send response number 567 part 0 01:32:34.300214 connection close instruction "swsclose" found in response 01:32:34.300579 Sent off 134 bytes 01:32:34.300797 Response sent (134 bytes) and written to log/6/server.response 01:32:34.300956 instructed to close connection after server-reply 01:32:34.301045 ====> Client disconnect === End of file rtsp_server.log === Start of file server.cmd Testnum 567 === End of file server.cmd === Start of file server.input OPTIONS rtsp://127.0.0.1:33491/567 RTSP/1.0 CSeq: 1 User-Agent: test567 Test-Number: 567 === End of file server.input === Start of file server.response RTSP/1.0 200 OK Server: RTSPD/libcurl-test CSeq: 1 Public: DESCRIBE, OPTIONS, SETUP, TEARDOWN, PLAY, PAUSE Curl-Private: swsclose === End of file server.response === Start of file stderr567 URL: rtsp://127.0.0.1:33491/567 * Trying 127.0.0.1:33491... * Established connection to 127.0.0.1 (127.0.0.1 port 33491) from 127.0.0.1 port 34170 > OPTIONS rtsp://127.0.0.1:33491/567 RTSP/1.0 CSeq: 1 User-Agent: test567 Test-Number: 567 < RTSP/1.0 200 OK < Server: RTSPD/libcurl-test < CSeq: 1 < Public: DESCRIBE, OPTIONS, SETUP, TEARDOWN, PLAY, PAUSE < Curl-Private: swsclose * abort upload * Connection #0 to host 127.0.0.1:33491 left intact Test ended with result 0 === End of file stderr567 === Start of file stdout567 RTSP/1.0 200 OK Server: RTSPD/libcurl-test CSeq: 1 Public: DESCRIBE, OPTIONS, SETUP, TEARDOWN, PLAY, PAUSE Curl-Private: swsclose === End of file stdout567 === Start of file valgrind567 ==269106== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind567 test 0566...[HTTP GET with CURLINFO_CONTENT_LENGTH_DOWNLOAD and 0 bytes transfer] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind566 ./libtest/libtests lib566 http://127.0.0.1:40641/566 log/1/ip566 > log/1/stdout566 2> log/1/stderr566 valgrind ERROR ==269044== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 566 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind566 ./libtest/libtests lib566 http://127.0.0.1:40641/566 log/1/ip566 > log/1/stdout566 2> log/1/stderr566 === End of file commands.log === Start of file http_server.log 01:31:48.978460 ====> Client connect 01:31:48.978627 accept_connection 3 returned 4 01:31:48.978709 accept_connection 3 returned 0 01:31:48.985230 Read 93 bytes 01:31:48.985321 Process 93 bytes request 01:31:48.985414 Got request: GET /verifiedserver HTTP/1.1 01:31:48.985481 Are-we-friendly question received 01:31:48.985592 Wrote request (93 bytes) input to log/1/server.input 01:31:48.985683 Identifying ourselves as friends 01:31:48.985864 Response sent (57 bytes) and written to log/1/server.response 01:31:48.985943 special request received, no persistency 01:31:48.986014 ====> Client disconnect 0 01:32:34.151011 ====> Client connect 01:32:34.151157 accept_connection 3 returned 4 01:32:34.151243 accept_connection 3 returned 0 01:32:34.999598 Read 57 bytes 01:32:34.999797 Process 57 bytes request 01:32:34.999895 Got request: GET /566 HTTP/1.1 01:32:34.999967 Serve test number 566 part 0 01:32:35.000144 - request found to be complete (566) 01:32:35.000399 Wrote request (57 bytes) input to log/1/server.input 01:32:35.000532 Send response test566 section 01:32:35.000952 Response sent (261 bytes) and written to log/1/server.response 01:32:35.001022 => persistent connection request ended, awaits new request 01:32:36.489948 Connection closed by client 01:32:36.490127 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind568 ./libtest/libtests lib568 rtsp://127.0.0.1:42229/568 log/7/file568.txt > log/7/stdout568 2> log/7/stderr568 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 55034 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file ip566 CL 0 === End of file ip566 === Start of file server.cmd Testnum 566 === End of file server.cmd === Start of file server.input GET /566 HTTP/1.1 Host: 127.0.0.1:40641 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 0 Connection: close Content-Type: text/html Funny-head: yesyes === End of file server.response === Start of file stderr566 URL: http://127.0.0.1:40641/566 Test ended with result 0 === End of file stderr566 === Start of file stdout566 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 0 Connection: close Content-Type: text/html Funny-head: yesyes === End of file stdout566 === Start of file valgrind566 ==269044== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind566 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/rtspserver.pl --pidfile "log/7/server/rtsp_server.pid" --portfile "log/7/server/rtsp_server.port" --logfile "log/7/rtsp_server.log" --logdir "log/7" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: RTSP server PID 269274 port 42229 * pid rtsp => 269274 269274 test 0568...[RTSP Announce (PUT and POST style) test] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind568 ./libtest/libtests lib568 rtsp://127.0.0.1:42229/568 log/7/file568.txt > log/7/stdout568 2> log/7/stderr568 valgrind ERROR ==269286== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 568 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind568 ./libtest/libtests lib568 rtsp://127.0.0.1:42229/568 log/7/file568.txt > log/7/stdout568 2> log/7/stderr568 === End of file commands.log === Start of file file568.txt v=0 o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4 s=SDP Seminar i=A Seminar on the session description protocol u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps e=mjh@isi.edu (Mark Handley) c=IN IP4 224.2.17.12/127 t=2873397496 2873404696 a=recvonly m=audio 3456 RTP/AVP 0 m=video 2232 RTP/AVP 31 === End of file file568.txt === Start of file rtsp_server.log 01:31:56.858810 Running IPv4 version on port 42229 01:31:56.868363 Wrote pid 269274 to log/7/server/rtsp_server.pid 01:31:56.868659 Wrote port 42229 to log/7/server/rtsp_server.port 01:32:42.132801 ====> Client connect 01:32:43.181801 Read 419 bytes 01:32:43.182596 rtspd_ProcessRequest() called with testno -7 and line [ANNOUNCE rtsp://127.0.0.1:42229/5680001 RTSP/1.0 CSeq: 1 Content-Length: 306 Content-Type: application/sdp v=0 o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4 s=SDP Seminar i=A Seminar on the session description protocol u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps e=mjh@isi.edu (Mark Handley) c=IN IP4 224.2.17.12/127 t=2873397496 2873404696 a=recvonly m=audio 3456 RTP/AVP 0 m=video 2232 RTP/AVP 31 ] 01:32:43.184805 Got request: ANNOUNCE rtsp://127.0.0.1:42229/5680001 RTSP/1.0 01:32:43.185080 Requested test number 568 part 1 01:32:43.190880 rtspd_ProcessRequest found a complete request 01:32:43.191302 Found Content-Length: 306 in the request 01:32:43.192274 Wrote request (419 bytes) input to log/7/server.input 01:32:43.195322 Send response number 568 part 1 01:32:43.197012 Sent off 55 bytes 01:32:43.197222 Response sent (55 bytes) and written to log/7/server.response 01:32:43.197374 => persistent connection request ended, awaits new request 01:32:45.345765 Read 86 bytes 01:32:45.345971 rtspd_ProcessRequest() called with testno -7 and line [DESCRIBE rtsp://127.0.0.1:42229/5680002 RTSP/1.0 CSeq: 2 Accept: application/sdp ] 01:32:45.346083 Got request: DESCRIBE rtsp://127.0.0.1:42229/5680002 RTSP/1.0 01:32:45.346157 Requested test number 568 part 2 01:32:45.346373 rtspd_ProcessRequest found a complete request 01:32:45.346521 Wrote request (86 bytes) input to log/7/server.input 01:32:45.346612 Send response number 568 part 2 01:32:45.346951 Sent off 183 bytes 01:32:45.347036 Response sent (183 bytes) and written to log/7/server.response 01:32:45.347099 => persistent connection request ended, awaits new request 01:32:45.835545 Read 146 bytes 01:32:45.835790 rtspd_ProcessRequest() called with testno -7 and line [ANNOUNCE rtsp://127.0.0.1:42229/5680003 RTSP/1.0 CSeq: 3 Content-Type: posty goodness Content-Length: 35 postyfield=postystuff&project=curl ] 01:32:45.835895 Got request: ANNOUNCE rtsp://127.0.0.1:42229/5680003 RTSP/1.0 01:32:45.835961 Requested test number 568 part 3 01:32:45.836155 rtspd_ProcessRequest found a complete request 01:32:45.836218 Found Content-Length: 35 in the request 01:32:45.836313 Wrote request (146 bytes) input to log/7/server.input 01:32:45.836386 Send response number 568 part 3 01:32:45.836662 Sent off 63 bytes 01:32:45.836740 Response sent (63 bytes) and written to log/7/server.response 01:32:45.836799 => persistent connection request ended, awaits new request 01:32:45.915763 Read 60 bytes 01:32:45.915927 rtspd_ProcessRequest() called with testno -7 and line [OPTIONS rtsp://127.0.0.1:42229/5680004 RTSP/1.0 CSeq: 4 ] 01:32:45.916029 Got request: OPTIONS rtsp://127.0.0.1:42229/5680004 RTSP/1.0 01:32:45.916095 Requested test number 568 part 4 01:32:45.916290 rtspd_ProcessRequest found a complete request 01:32:45.916386 Wrote request (60 bytes) input to log/7/server.input 01:32:45.916459 Send response number 568 part 4 01:32:45.916723 connection close instruction "swsclose" found in response 01:32:45.916842 Sent off 118 bytes 01:32:45.916916 Response sent (118 bytes) and written to log/7/server.response 01:32:45.916993 instructed to close connection after server-reply 01:32:45.917075 ====> Client disconnect === End of file rtsp_server.log === Start of file server.cmd Testnum 568 === End of file server.cmd === Start of file server.input ANNOUNCE rtsp://127.0.0.1:42229/5680001 RTSP/1.0 CSeq: 1 Content-Length: 306 Content-Type: application/sdp v=0 o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4 s=SDP Seminar i=A Seminar on the session description protocol u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps e=mjh@isi.edu (Mark Handley) c=IN IP4 224.2.17.12/127 t=2873397496 2873404696 a=recvonly m=audio 3456 RTP/AVP 0 m=video 2232 RTP/AVP 31 DESCRIBE rtsp://127.0.0.1:42229/5680002 RTSP/1.0 CSeq: 2 Accept: application/sdp ANNOUNCE rtsp://127.0.0.1:42229/5680003 RTSP/1.0 CSeq: 3 Content-Type: posty goodness Content-Length: 35 postyfield=postystuff&project=curl OPTIONS rtsp://127.0.0.1:42229/5680004 RTSP/1.0 CSeq: 4 === End of file server.input === Start of file server.response RTSP/1.0 200 OK Server: RTSPD/libcurl-test Cseq: 1 RTSP/1.0 200 OK Server: RTSPD/libcurl-test Cseq: 2 Content-Length: 70 Content-Type: application/sdp v=0 s=rtspd SDP i=A fake SDP reply u=http://www.curl.example.com/fakesdp.ps RTSP/1.0 200 Okie Dokie Server: RTSPD/libcurl-test Cseq: 3 RTSP/1.0 200 OK Server: RTSPD/libcurl-test CSeq: 4 Curl-private: swsclose Informational: Empty Options Response === End of file server.response === Start of file stderr568 URL: rtsp://127CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind569 ./libtest/libtests lib569 rtsp://127.0.0.1:42033/569 log/8/idfile569.txt > log/8/stdout569 2> log/8/stderr569 .0.0.1:42229/568 * Trying 127.0.0.1:42229... * Established connection to 127.0.0.1 (127.0.0.1 port 42229) from 127.0.0.1 port 58228 > ANNOUNCE rtsp://127.0.0.1:42229/5680001 RTSP/1.0 CSeq: 1 Content-Length: 306 Content-Type: application/sdp * upload completely sent off: 306 bytes < RTSP/1.0 200 OK < Server: RTSPD/libcurl-test < Cseq: 1 < * Connection #0 to host 127.0.0.1:42229 left intact * Reusing existing rtsp: connection with host 127.0.0.1 > DESCRIBE rtsp://127.0.0.1:42229/5680002 RTSP/1.0 CSeq: 2 Accept: application/sdp < RTSP/1.0 200 OK < Server: RTSPD/libcurl-test < Cseq: 2 < Content-Length: 70 < Content-Type: application/sdp < * Connection #0 to host 127.0.0.1:42229 left intact * Reusing existing rtsp: connection with host 127.0.0.1 > ANNOUNCE rtsp://127.0.0.1:42229/5680003 RTSP/1.0 CSeq: 3 Content-Type: posty goodness Content-Length: 35 * upload completely sent off: 35 bytes < RTSP/1.0 200 Okie Dokie < Server: RTSPD/libcurl-test < Cseq: 3 < * Connection #0 to host 127.0.0.1:42229 left intact * Reusing existing rtsp: connection with host 127.0.0.1 > OPTIONS rtsp://127.0.0.1:42229/5680004 RTSP/1.0 CSeq: 4 * Request completely sent off < RTSP/1.0 200 OK < Server: RTSPD/libcurl-test < CSeq: 4 < Curl-private: swsclose < Informational: Empty Options Response < * Connection #0 to host 127.0.0.1:42229 left intact Test ended with result 0 === End of file stderr568 === Start of file stdout568 RTSP/1.0 200 OK Server: RTSPD/libcurl-test Cseq: 1 RTSP/1.0 200 OK Server: RTSPD/libcurl-test Cseq: 2 Content-Length: 70 Content-Type: application/sdp v=0 s=rtspd SDP i=A fake SDP reply u=http://www.curl.example.com/fakesRTSP/1.0 200 Okie Dokie Server: RTSPD/libcurl-test Cseq: 3 RTSP/1.0 200 OK Server: RTSPD/libcurl-test CSeq: 4 Curl-private: swsclose Informational: Empty Options Response === End of file stdout568 === Start of file valgrind568 ==269286== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind568 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/rtspserver.pl --pidfile "log/8/server/rtsp_server.pid" --portfile "log/8/server/rtsp_server.port" --logfile "log/8/rtsp_server.log" --logdir "log/8" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: RTSP server PID 269425 port 42033 * pid rtsp => 269425 269425 test 0569...[RTSP Session ID parsing] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind569 ./libtest/libtests lib569 rtsp://127.0.0.1:42033/569 log/8/idfile569.txt > log/8/stdout569 2> log/8/stderr569 valgrind ERROR ==269440== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 569 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind569 ./libtest/libtests lib569 rtsp://127.0.0.1:42033/569 log/8/idfile569.txt > log/8/stdout569 2> log/8/stderr569 === End of file commands.log === Start of file idfile569.txt Got Session ID: [00.+1-am-aSe55ion_id\$yes-i-am\$] Got Session ID: [\$extraspaces] Got Session ID: [A] === End of file idfile569.txt === Start of file rtsp_server.log 01:32:06.521099 Running IPv4 version on port 42033 01:32:06.528321 Wrote pid 269425 to log/8/server/rtsp_server.pid 01:32:06.528605 Wrote port 42033 to log/8/server/rtsp_server.port 01:32:52.162758 ====> Client connect 01:32:54.078407 Read 101 bytes 01:32:54.079288 rtspd_ProcessRequest() called with testno -7 and line [SETUP rtsp://127.0.0.1:42033/5690001 RTSP/1.0 CSeq: 1 Transport: Fake/NotReal/JustATest;foo=baz ] 01:32:54.104393 Got request: SETUP rtsp://127.0.0.1:42033/5690001 RTSP/1.0 01:32:54.104692 Requested test number 569 part 1 01:32:54.110485 rtspd_ProcessRequest found a complete request 01:32:54.111478 Wrote request (101 bytes) input to log/8/server.input 01:32:54.111833 Send response number 569 part 1 01:32:54.116720 Sent off 105 bytes 01:32:54.116903 Response sent (105 bytes) and written to log/8/server.response 01:32:54.117048 => persistent connection request ended, awaits new request 01:32:55.235740 Read 104 bytes 01:32:55.235904 rtspd_ProcessRequest() called with testno -7 and line [TEARDOWN rtsp://127.0.0.1:42033/5690002 RTSP/1.0 CSeq: 2 Session: 00.+1-am-aSe55ion_id\$yes-i-am\$ ] 01:32:55.236006 Got request: TEARDOWN rtsp://127.0.0.1:42033/5690002 RTSP/1.0 01:32:55.236075 Requested test number 569 part 2 01:32:55.236273 rtspd_ProcessRequest found a complete request 01:32:55.236461 Wrote request (104 bytes) input to log/8/server.input 01:32:55.236547 Send response number 569 part 2 01:32:55.236824 Sent off 52 bytes 01:32:55.236905 Response sent (52 bytes) and written to log/8/server.response 01:32:55.236966 => persistent connection request ended, awaits new request 01:32:55.325444 Read 101 bytes 01:32:55.325603 rtspd_ProcessRequest() called with testno -7 and line [SETUP rtsp://127.0.0.1:42033/5690003 RTSP/1.0 CSeq: 3 Transport: Fake/NotReal/JustATest;foo=baz ] 01:32:55.325697 Got request: SETUP rtsp://127.0.0.1:42033/5690003 RTSP/1.0 01:32:55.325775 Requested test number 569 part 3 01:32:55.325966 rtspd_ProcessRequest found a complete request 01:32:55.326062 Wrote request (101 bytes) input to log/8/server.input 01:32:55.326135 Send response number 569 part 3 01:32:55.326408 Sent off 114 bytes 01:32:55.326484 Response sent (114 bytes) and written to log/8/server.response 01:32:55.326542 => persistent connection request ended, awaits new request 01:32:55.359067 Read 85 bytes 01:32:55.359235 rtspd_ProcessRequest() called with testno -7 and line [TEARDOWN rtsp://127.0.0.1:42033/5690004 RTSP/1.0 CSeq: 4 Session: \$extraspaces ] 01:32:55.359326 Got request: TEARDOWN rtsp://127.0.0.1:42033/5690004 RTSP/1.0 01:32:55.359388 Requested test number 569 part 4 01:32:55.359564 rtspd_ProcessRequest found a complete request 01:32:55.359656 Wrote request (85 bytes) input to log/8/server.input 01:32:55.359726 Send response number 569 part 4 01:32:55.360001 Sent off 52 bytes 01:32:55.360073 Response sent (52 bytes) and written to log/8/server.response 01:32:55.360127 => persistent connection request ended, awaits new request 01:32:55.510589 Read 101 bytes 01:32:55.510761 rtspd_ProcessRequest() called with testno -7 and line [SETUP rtsp://127.0.0.1:42033/5690005 RTSP/1.0 CSeq: 5 Transport: Fake/NotReal/JustATest;foo=baz ] 01:32:55.510862 Got request: SETUP rtsp://127.0.0.1:42033/5690005 RTSP/1.0 01:32:55.510932 Requested test number 569 part 5 01:32:55.511139 rtspd_ProcessRequest found a complete request 01:32:55.511242 Wrote request (101 bytes) input to log/8/server.input 01:32:55.511323 Send response number 569 part 5 01:32:55.511635 Sent off 95 bytes 01:32:55.511718 Response sent (95 bytes) and written to log/8/server.response 01:32:55.511781 => persistent connection request ended, awaits new request 01:32:55.542400 Read 73 bytes 01:32:55.542575 rtspd_ProcessRequest() called with testno -7 and line [TEARDOWN rtsp://127.0.0.1:42033/5690006 RTSP/1.0 CSeq: 6 Session: A ] 01:32:55.542676 Got request: TEARDOWN rtsp://127.0.0.1:42033/5690006 RTSP/1.0 01:32:55.542746 Requested test number 569 part 6 01:32:55.542954 rtspd_ProcessRequest found a complete request 01:32:55.543058 Wrote request (73 bytes) input to log/8/server.input 01:32:55.543160 Send response number 569 part 6 01:32:55.543486 connection close instruction "swsclose" found in response 01:32:55.543605 Sent off 75 bytes 01:32:55.543683 Response sent (75 bytes) and written to log/8/server.response 01:32:55.543762 instructed to close connection after server-reply 01:32:55.543847 ====> Client disconnect === End of file rtsp_server.log === Start of file server.cmd Testnum 569 === End of file server.cmd === Start of file server.input SETUP rtsp://127.0.0.1:42033/5690001 RTSP/1.0 CSeq: 1 Transport: Fake/NotReal/JustATest;foo=baz TEARDOWN rtsp://127.0.0.1:42033/5690002CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind570 ./libtest/libtests lib570 rtsp://127.0.0.1:45289/570 > log/4/stdout570 2> log/4/stderr570 RTSP/1.0 CSeq: 2 Session: 00.+1-am-aSe55ion_id\$yes-i-am\$ SETUP rtsp://127.0.0.1:42033/5690003 RTSP/1.0 CSeq: 3 Transport: Fake/NotReal/JustATest;foo=baz TEARDOWN rtsp://127.0.0.1:42033/5690004 RTSP/1.0 CSeq: 4 Session: \$extraspaces SETUP rtsp://127.0.0.1:42033/5690005 RTSP/1.0 CSeq: 5 Transport: Fake/NotReal/JustATest;foo=baz TEARDOWN rtsp://127.0.0.1:42033/5690006 RTSP/1.0 CSeq: 6 Session: A === End of file server.input === Start of file server.response RTSP/1.0 200 OK Server: RTSPD/libcurl-test CSeq: 1 Session: 00.+1-am-aSe55ion_id\$yes-i-am\$;timeout=60 RTSP/1.0 200 OK Server: RTSPD/libcurl-test CSeq: 2 RTSP/1.0 200 OK Session: \$extraspaces ignore-this-part-------;foo=bar CSeq: 3 Server: RTSPD/libcurl-test RTSP/1.0 200 OK CSeq: 4 Server: RTSPD/libcurl-test RTSP/1.0 200 OK Session: A Server: RTSPD/libcurl-test CSeq: 5 Informational: Single Character RTSP/1.0 200 OK Server: RTSPD/libcurl-test Curl-Private: swsclose CSeq: 6 === End of file server.response === Start of file stderr569 URL: rtsp://127.0.0.1:42033/569 * Trying 127.0.0.1:42033... * Established connection to 127.0.0.1 (127.0.0.1 port 42033) from 127.0.0.1 port 40966 * Refusing to issue an RTSP SETUP without a Transport: header. * Connection #0 to host 127.0.0.1:42033 left intact * Reusing existing rtsp: connection with host 127.0.0.1 > SETUP rtsp://127.0.0.1:42033/5690001 RTSP/1.0 CSeq: 1 Transport: Fake/NotReal/JustATest;foo=baz < RTSP/1.0 200 OK < Server: RTSPD/libcurl-test < CSeq: 1 < Session: 00.+1-am-aSe55ion_id\$yes-i-am\$;timeout=60 < * Connection #0 to host 127.0.0.1:42033 left intact * Reusing existing rtsp: connection with host 127.0.0.1 > TEARDOWN rtsp://127.0.0.1:42033/5690002 RTSP/1.0 CSeq: 2 Session: 00.+1-am-aSe55ion_id\$yes-i-am\$ < RTSP/1.0 200 OK < Server: RTSPD/libcurl-test < CSeq: 2 < * Connection #0 to host 127.0.0.1:42033 left intact * Reusing existing rtsp: connection with host 127.0.0.1 > SETUP rtsp://127.0.0.1:42033/5690003 RTSP/1.0 CSeq: 3 Transport: Fake/NotReal/JustATest;foo=baz < RTSP/1.0 200 OK < Session: \$extraspaces ignore-this-part-------;foo=bar < CSeq: 3 < Server: RTSPD/libcurl-test < * Connection #0 to host 127.0.0.1:42033 left intact * Reusing existing rtsp: connection with host 127.0.0.1 > TEARDOWN rtsp://127.0.0.1:42033/5690004 RTSP/1.0 CSeq: 4 Session: \$extraspaces * Request completely sent off < RTSP/1.0 200 OK < CSeq: 4 < Server: RTSPD/libcurl-test < * Connection #0 to host 127.0.0.1:42033 left intact * Reusing existing rtsp: connection with host 127.0.0.1 > SETUP rtsp://127.0.0.1:42033/5690005 RTSP/1.0 CSeq: 5 Transport: Fake/NotReal/JustATest;foo=baz < RTSP/1.0 200 OK < Session: A < Server: RTSPD/libcurl-test < CSeq: 5 < Informational: Single Character < * Connection #0 to host 127.0.0.1:42033 left intact * Reusing existing rtsp: connection with host 127.0.0.1 > TEARDOWN rtsp://127.0.0.1:42033/5690006 RTSP/1.0 CSeq: 6 Session: A * Request completely sent off < RTSP/1.0 200 OK < Server: RTSPD/libcurl-test < Curl-Private: swsclose < CSeq: 6 < * Connection #0 to host 127.0.0.1:42033 left intact Test ended with result 0 === End of file stderr569 === Start of file stdout569 RTSP/1.0 200 OK Server: RTSPD/libcurl-test CSeq: 1 Session: 00.+1-am-aSe55ion_id\$yes-i-am\$;timeout=60 RTSP/1.0 200 OK Server: RTSPD/libcurl-test CSeq: 2 RTSP/1.0 200 OK Session: \$extraspaces ignore-this-part-------;foo=bar CSeq: 3 Server: RTSPD/libcurl-test RTSP/1.0 200 OK CSeq: 4 Server: RTSPD/libcurl-test RTSP/1.0 200 OK Session: A Server: RTSPD/libcurl-test CSeq: 5 Informational: Single Character RTSP/1.0 200 OK Server: RTSPD/libcurl-test Curl-Private: swsclose CSeq: 6 === End of file stdout569 === Start of file valgrind569 ==269440== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind569 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/rtspserver.pl --pidfile "log/4/server/rtsp_server.pid" --portfile "log/4/server/rtsp_server.port" --logfile "log/4/rtsp_server.log" --logdir "log/4" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: RTSP server PID 269544 port 45289 * pid rtsp => 269544 269544 test 0570...[RTSP CSeq and Session Mismatch checks] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind570 ./libtest/libtests lib570 rtsp://127.0.0.1:45289/570 > log/4/stdout570 2> log/4/stderr570 valgrind ERROR ==269559== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 570 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind570 ./libtest/libtests lib570 rtsp://127.0.0.1:45289/570 > log/4/stdout570 2> log/4/stderr570 === End of file commands.log === Start of file rtsp_server.log 01:32:10.782699 Running IPv4 version on port 45289 01:32:10.790006 Wrote pid 269544 to log/4/server/rtsp_server.pid 01:32:10.790292 Wrote port 45289 to log/4/server/rtsp_server.port 01:32:55.346127 ====> Client connect 01:32:56.160926 Read 60 bytes 01:32:56.161755 rtspd_ProcessRequest() called with testno -7 and line [OPTIONS rtsp://127.0.0.1:45289/5700001 RTSP/1.0 CSeq: 1 ] 01:32:56.163949 Got request: OPTIONS rtsp://127.0.0.1:45289/5700001 RTSP/1.0 01:32:56.164219 Requested test number 570 part 1 01:32:56.173352 rtspd_ProcessRequest found a complete request 01:32:56.174219 Wrote request (60 bytes) input to log/4/server.input 01:32:56.174571 Send response number 570 part 1 01:32:56.179521 Sent off 142 bytes 01:32:56.179773 Response sent (142 bytes) and written to log/4/server.response 01:32:56.179927 => persistent connection request ended, awaits new request 01:32:58.130817 Read 114 bytes 01:32:58.131017 rtspd_ProcessRequest() called with testno -7 and line [SETUP rtsp://127.0.0.1:45289/5700002 RTSP/1.0 CSeq: 999 Transport: RAW/RAW/UDP;unicast;client_port=3056-3057 ] 01:32:58.131114 Got request: SETUP rtsp://127.0.0.1:45289/5700002 RTSP/1.0 01:32:58.131179 Requested test number 570 part 2 01:32:58.131346 rtspd_ProcessRequest found a complete request 01:32:58.131604 Wrote request (114 bytes) input to log/4/server.input 01:32:58.131683 Send response number 570 part 2 01:32:58.131929 Sent off 72 bytes 01:32:58.132002 Response sent (72 bytes) and written to log/4/server.response 01:32:58.132059 => persistent connection request ended, awaits new request 01:32:58.329062 Read 75 bytes 01:32:58.329254 rtspd_ProcessRequest() called with testno -7 and line [PLAY rtsp://127.0.0.1:45289/5700003 RTSP/1.0 CSeq: 1000 Session: asdf ] 01:32:58.329379 Got request: PLAY rtsp://127.0.0.1:45289/5700003 RTSP/1.0 01:32:58.329445 Requested test number 570 part 3 01:32:58.329612 rtspd_ProcessRequest found a complete request 01:32:58.329720 Wrote request (75 bytes) input to log/4/server.input 01:32:58.329791 Send response number 570 part 3 01:32:58.330016 connection close instruction "swsclose" found in response 01:32:58.330140 Sent off 138 bytes 01:32:58.330213 Response sent (138 bytes) and written to log/4/server.response 01:32:58.330290 instructed to close connection after server-reply 01:32:58.330371 ====> Client disconnect === End of file rtsp_server.log === Start of file server.cmd Testnum 570 === End of file server.cmd === Start of file server.input OPTIONS rtsp://127.0.0.1:45289/5700001 RTSP/1.0 CSeq: 1 SETUP rtsp://127.0.0.1:45289/5700002 RTSP/1.0 CSeq: 999 Transport: RAW/RAW/UDP;unicast;client_port=3056-3057 PLAY rtsp://127.0.0.1:45289/5700003 RTSP/1.0 CSeq: 1000 Session: asdf === End of file server.input === Start of file server.response RTSP/1.0 200 OK Server: RTSPD/libcurl-test CSeq: 2 Public: DESCRIBE, OPTIONS, SETUP, TEARDOWN, PLAY, PAUSE Informational: CSeq Mismatch RTSP/1.0 200 OK Server: RTSPD/libcurl-test Session: asdf CSeq: 999 RTSP/1.0 200 OK Server: RTSPD/libcurl-test SessionCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind571 ./libtest/libtests lib571 rtsp://127.0.0.1:33383/571 log/3/protofile571.txt > log/3/stdout571 2> log/3/stderr571 : asdfWRONG Informational: Session ID mismatch Curl-Private: swsclose CSeq: 1000 === End of file server.response === Start of file stderr570 URL: rtsp://127.0.0.1:45289/570 * Trying 127.0.0.1:45289... * Established connection to 127.0.0.1 (127.0.0.1 port 45289) from 127.0.0.1 port 43746 > OPTIONS rtsp://127.0.0.1:45289/5700001 RTSP/1.0 CSeq: 1 < RTSP/1.0 200 OK < Server: RTSPD/libcurl-test < CSeq: 2 < Public: DESCRIBE, OPTIONS, SETUP, TEARDOWN, PLAY, PAUSE < Informational: CSeq Mismatch < * The CSeq of this request 1 did not match the response 2 * Connection #0 to host 127.0.0.1:45289 left intact * Reusing existing rtsp: connection with host 127.0.0.1 > SETUP rtsp://127.0.0.1:45289/5700002 RTSP/1.0 CSeq: 999 Transport: RAW/RAW/UDP;unicast;client_port=3056-3057 < RTSP/1.0 200 OK < Server: RTSPD/libcurl-test < Session: asdf < CSeq: 999 < * Connection #0 to host 127.0.0.1:45289 left intact * Reusing existing rtsp: connection with host 127.0.0.1 > PLAY rtsp://127.0.0.1:45289/5700003 RTSP/1.0 CSeq: 1000 Session: asdf < RTSP/1.0 200 OK < Server: RTSPD/libcurl-test * Got RTSP Session ID Line [asdfWRONG ], but wanted ID [asdf] * closing connection #0 Test ended with result 0 === End of file stderr570 === Start of file stdout570 RTSP/1.0 200 OK Server: RTSPD/libcurl-test CSeq: 2 Public: DESCRIBE, OPTIONS, SETUP, TEARDOWN, PLAY, PAUSE Informational: CSeq Mismatch RTSP/1.0 200 OK Server: RTSPD/libcurl-test Session: asdf CSeq: 999 RTSP/1.0 200 OK Server: RTSPD/libcurl-test === End of file stdout570 === Start of file valgrind570 ==269559== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind570 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/rtspserver.pl --pidfile "log/3/server/rtsp_server.pid" --portfile "log/3/server/rtsp_server.port" --logfile "log/3/rtsp_server.log" --logdir "log/3" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: RTSP server PID 269678 port 33383 * pid rtsp => 269678 269678 test 0571...[RTSP RTP Interleaving Test] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind571 ./libtest/libtests lib571 rtsp://127.0.0.1:33383/571 log/3/protofile571.txt > log/3/stdout571 2> log/3/stderr571 valgrind ERROR ==269690== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 571 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind571 ./libtest/libtests lib571 rtsp://127.0.0.1:33383/571 log/3/protofile571.txt > log/3/stdout571 2> log/3/stderr571 === End of file commands.log === Start of file protofile571.txt $99 === End of file protofile571.txt === Start of file rtsp_server.log 01:32:16.456376 Running IPv4 version on port 33383 01:32:16.463647 Wrote pid 269678 to log/3/server/rtsp_server.pid 01:32:16.463926 Wrote port 33383 to log/3/server/rtsp_server.port 01:33:02.239425 ====> Client connect 01:33:03.296999 Read 98 bytes 01:33:03.297830 rtspd_ProcessRequest() called with testno -7 and line [SETUP rtsp://127.0.0.1:33383/5710001 RTSP/1.0 CSeq: 1 Transport: RTP/AVP/TCP;interleaved=0-1 ] 01:33:03.300107 Got request: SETUP rtsp://127.0.0.1:33383/5710001 RTSP/1.0 01:33:03.300392 Requested test number 571 part 1 01:33:03.310236 Found a reply-servercmd section 01:33:03.311155 Done parsing server commands 01:33:03.311363 rtspd_ProcessRequest found a complete request 01:33:03.315719 Wrote request (98 bytes) input to log/3/server.input 01:33:03.316064 Send response number 571 part 1 01:33:03.317512 Sent off 118 bytes 01:33:03.317707 Response sent (118 bytes) and written to log/3/server.response 01:33:03.317891 => persistent connection request ended, awaits new request 01:33:05.355713 Read 72 bytes 01:33:05.355900 rtspd_ProcessRequest() called with testno -7 and line [PLAY rtsp://127.0.0.1:33383/5710002 RTSP/1.0 CSeq: 2 Session: asdf ] 01:33:05.356003 Got request: PLAY rtsp://127.0.0.1:33383/5710002 RTSP/1.0 01:33:05.356072 Requested test number 571 part 2 01:33:05.356369 Found a reply-servercmd section 01:33:05.356486 RTP: part 2 channel 1 size 10 size_err 0 01:33:05.356684 rtp_buffersize is 14, rtp_size is 10. 01:33:05.356774 RTP: part 2 channel 0 size 500 size_err 0 01:33:05.357070 rtp_buffersize is 518, rtp_size is 500. 01:33:05.357358 RTP: part 2 channel 0 size 196 size_err 0 01:33:05.357454 rtp_buffersize is 718, rtp_size is 196. 01:33:05.357531 RTP: part 2 channel 0 size 124 size_err 0 01:33:05.357623 rtp_buffersize is 846, rtp_size is 124. 01:33:05.357699 RTP: part 2 channel 0 size 824 size_err 0 01:33:05.357824 rtp_buffersize is 1674, rtp_size is 824. 01:33:05.357909 RTP: part 2 channel 0 size 18 size_err -6 01:33:05.357978 rtp_buffersize is 1696, rtp_size is 18. 01:33:05.358155 Done parsing server commands 01:33:05.358217 rtspd_ProcessRequest found a complete request 01:33:05.358383 Wrote request (72 bytes) input to log/3/server.input 01:33:05.358468 Send response number 571 part 2 01:33:05.358776 Sent off 70 bytes 01:33:05.358856 About to write 1696 RTP bytes 01:33:05.362478 Response sent (70 bytes) and written to log/3/server.response 01:33:05.362552 => persistent connection request ended, awaits new request 01:33:05.678616 Read 101 bytes 01:33:05.678804 rtspd_ProcessRequest() called with testno -7 and line [DESCRIBE rtsp://127.0.0.1:33383/5710003 RTSP/1.0 CSeq: 3 Session: asdf Accept: application/sdp ] 01:33:05.678905 Got request: DESCRIBE rtsp://127.0.0.1:33383/5710003 RTSP/1.0 01:33:05.678976 Requested test number 571 part 3 01:33:05.679214 Found a reply-servercmd section 01:33:05.679347 RTP: part 3 channel 1 size 10 size_err 0 01:33:05.679413 rtp_buffersize is 14, rtp_size is 10. 01:33:05.679487 RTP: part 3 channel 0 size 50 size_err 0 01:33:05.679557 rtp_buffersize is 68, rtp_size is 50. 01:33:05.679724 Done parsing server commands 01:33:05.679787 rtspd_ProcessRequest found a complete request 01:33:05.679902 Wrote request (101 bytes) input to log/3/server.input 01:33:05.679983 Send response number 571 part 3 01:33:05.680290 Sent off 103 bytes 01:33:05.680357 About to write 68 RTP bytes 01:33:05.680460 Response sent (103 bytes) and written to log/3/server.response 01:33:05.680522 => persistent connection request ended, awaits new request 01:33:05.929044 Read 72 bytes 01:33:05.929217 rtspd_ProcessRequest() called with testno -7 and line [PLAY rtsp://127.0.0.1:33383/5710004 RTSP/1.0 CSeq: 4 Session: asdf ] 01:33:05.929314 Got request: PLAY rtsp://127.0.0.1:33383/5710004 RTSP/1.0 01:33:05.929384 Requested test number 571 part 4 01:33:05.929601 Found a reply-servercmd section 01:33:05.929751 RTP: part 4 channel 0 size 798 size_err 0 01:33:05.929833 rtp_buffersize is 802, rtp_size is 798. 01:33:05.929909 RTP: part 4 channel 0 size 42 size_err 0 01:33:05.929976 rtp_buffersize is 848, rtp_size is 42. 01:33:05.930070 RTP: part 4 channel 1 size 30 size_err 0 01:33:05.930135 rtp_buffersize is 882, rtp_size is 30. 01:33:05.930204 RTP: part 4 channel 0 size 2048 size_err 0 01:33:05.930293 rtp_buffersize is 2934, rtp_size is 2048. 01:33:05.930366 RTP: part 4 channel 0 size 85 size_err 0 01:33:05.930430 rtp_buffersize is 3023, rtp_size is 85. 01:33:05.930497 RTP: part 4 channel 1 size 24 size_err 0 01:33:05.930560 rtp_buffersize is 3051, rtp_size is 24. 01:33:05.930629 RTP: part 4 channel 0 size 17 size_err -4 01:33:05.930690 rtp_buffersize is 3072, rtp_size is 17. 01:33:05.930758 RTP: part 4 channel 0 size 33 size_err 0 01:33:05.930819 rtp_buffersize is 3109, rtp_size is 33. 01:33:05.930887 RTP: part 4 channel 0 size 127 size_err 0 01:33:05.930948 rtp_buffersize is 3240, rtp_size is 127. 01:33:05.931016 RTP: part 4 channel 1 size 24 size_err 11 01:33:05.931075 rtp_buffersize is 3268, rtp_size is 24. 01:33:05.931144 RTP: part 4 channel 0 size 37 size_err 0 01:33:05.931205 rtp_buffersize is 3309, rtp_size is 3CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind572 ./libtest/libtests lib572 rtsp://127.0.0.1:35317/572 log/5/file572.txt > log/5/stdout572 2> log/5/stderr572 7. 01:33:05.931274 RTP: part 4 channel 0 size 63 size_err 0 01:33:05.931336 rtp_buffersize is 3376, rtp_size is 63. 01:33:05.931394 Done parsing server commands 01:33:05.931448 rtspd_ProcessRequest found a complete request 01:33:05.931543 Wrote request (72 bytes) input to log/3/server.input 01:33:05.931622 Send response number 571 part 4 01:33:05.931924 Sent off 70 bytes 01:33:05.931987 About to write 3376 RTP bytes 01:33:05.932209 Response sent (70 bytes) and written to log/3/server.response 01:33:05.932269 => persistent connection request ended, awaits new request 01:33:06.335745 Connection closed by client 01:33:06.336055 ====> Client disconnect === End of file rtsp_server.log === Start of file server.cmd rtp: part 2 channel 1 size 10 rtp: part 2 channel 0 size 500 rtp: part 2 channel 0 size 196 rtp: part 2 channel 0 size 124 rtp: part 2 channel 0 size 824 rtp: part 2 channel 0 size 18 size_err -6 rtp: part 3 channel 1 size 10 rtp: part 3 channel 0 size 50 rtp: part 4 channel 0 size 798 rtp: part 4 channel 0 size 42 rtp: part 4 channel 1 size 30 rtp: part 4 channel 0 size 2048 rtp: part 4 channel 0 size 85 rtp: part 4 channel 1 size 24 rtp: part 4 channel 0 size 17 size_err -4 rtp: part 4 channel 0 size 33 rtp: part 4 channel 0 size 127 rtp: part 4 channel 1 size 24 size_err 11 rtp: part 4 channel 0 size 37 rtp: part 4 channel 0 size 63 Testnum 571 === End of file server.cmd === Start of file server.input SETUP rtsp://127.0.0.1:33383/5710001 RTSP/1.0 CSeq: 1 Transport: RTP/AVP/TCP;interleaved=0-1 PLAY rtsp://127.0.0.1:33383/5710002 RTSP/1.0 CSeq: 2 Session: asdf DESCRIBE rtsp://127.0.0.1:33383/5710003 RTSP/1.0 CSeq: 3 Session: asdf Accept: application/sdp PLAY rtsp://127.0.0.1:33383/5710004 RTSP/1.0 CSeq: 4 Session: asdf === End of file server.input === Start of file server.response RTSP/1.0 200 OK Server: RTSPD/libcurl-test Session: asdf CSeq: 1 Transport: RTP/AVP/TCP;unicast;interleaved=0-1 RTSP/1.0 200 OK Server: RTSPD/libcurl-test CSeq: 2 Session: asdf RTSP/1.0 200 OK Server: RTSPD/libcurl-test Cseq: 3 Content-Length: 4 Content-Type: fake/evil $99 RTSP/1.0 200 OK Server: RTSPD/libcurl-test Session: asdf CSeq: 4 === End of file server.response === Start of file stderr571 URL: rtsp://127.0.0.1:33383/571 * Trying 127.0.0.1:33383... * Established connection to 127.0.0.1 (127.0.0.1 port 33383) from 127.0.0.1 port 34622 > SETUP rtsp://127.0.0.1:33383/5710001 RTSP/1.0 CSeq: 1 Transport: RTP/AVP/TCP;interleaved=0-1 < RTSP/1.0 200 OK < Server: RTSPD/libcurl-test < Session: asdf < CSeq: 1 < Transport: RTP/AVP/TCP;unicast;interleaved=0-1 < * Connection #0 to host 127.0.0.1:33383 left intact * Reusing existing rtsp: connection with host 127.0.0.1 > PLAY rtsp://127.0.0.1:33383/5710002 RTSP/1.0 CSeq: 2 Session: asdf < RTSP/1.0 200 OK < Server: RTSPD/libcurl-test < CSeq: 2 < Session: asdf < packet count is 1 packet count is 2 packet count is 3 packet count is 4 packet count is 5 packet count is 6 * Connection #0 to host 127.0.0.1:33383 left intact * Reusing existing rtsp: connection with host 127.0.0.1 > DESCRIBE rtsp://127.0.0.1:33383/5710003 RTSP/1.0 CSeq: 3 Session: asdf Accept: application/sdp < RTSP/1.0 200 OK < Server: RTSPD/libcurl-test < Cseq: 3 < Content-Length: 4 < Content-Type: fake/evil < packet count is 7 packet count is 8 * Connection #0 to host 127.0.0.1:33383 left intact * Reusing existing rtsp: connection with host 127.0.0.1 > PLAY rtsp://127.0.0.1:33383/5710004 RTSP/1.0 CSeq: 4 Session: asdf < RTSP/1.0 200 OK < Server: RTSPD/libcurl-test < Session: asdf < CSeq: 4 < packet count is 9 packet count is 10 packet count is 11 packet count is 12 packet count is 13 packet count is 14 packet count is 15 packet count is 16 packet count is 17 packet count is 18 packet count is 19 * Connection #0 to host 127.0.0.1:33383 left intact PLAY COMPLETE Test ended with result 0 === End of file stderr571 === Start of file stdout571 RTP: message size 10, channel 1 RTP: message size 500, channel 0 RTP: message size 196, channel 0 RTP: message size 124, channel 0 RTP: message size 824, channel 0 RTP: message size 12, channel 0 RTP: message size 10, channel 1 RTP: message size 50, channel 0 RTP: message size 798, channel 0 RTP: message size 42, channel 0 RTP: message size 30, channel 1 RTP: message size 2048, channel 0 RTP: message size 85, channel 0 RTP: message size 24, channel 1 RTP: message size 13, channel 0 RTP: message size 33, channel 0 RTP: message size 127, channel 0 RTP: message size 35, channel 1 RTP PAYLOAD END CORRUPTED (11), [$] RTP: message size 63, channel 0 === End of file stdout571 === Start of file valgrind571 ==269690== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind571 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/rtspserver.pl --pidfile "log/5/server/rtsp_server.pid" --portfile "log/5/server/rtsp_server.port" --logfile "log/5/rtsp_server.log" --logdir "log/5" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: RTSP server PID 269818 port 35317 * pid rtsp => 269818 269818 test 0572...[RTSP GET_PARAMETER (Put/Heartbeat/Post)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind572 ./libtest/libtests lib572 rtsp://127.0.0.1:35317/572 log/5/file572.txt > log/5/stdout572 2> log/5/stderr572 valgrind ERROR ==269830== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 572 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind572 ./libtest/libtests lib572 rtsp://127.0.0.1:35317/572 log/5/file572.txt > log/5/stdout572 2> log/5/stderr572 === End of file commands.log === Start of file file572.txt scale speed === End of file file572.txt === Start of file rtsp_server.log 01:32:25.308695 Running IPv4 version on port 35317 01:32:25.315948 Wrote pid 269818 to log/5/server/rtsp_server.pid 01:32:25.316234 Wrote port 35317 to log/5/server/rtsp_server.port 01:33:11.149374 ====> Client connect 01:33:12.019376 Read 96 bytes 01:33:12.020197 rtspd_ProcessRequest() called with testno -7 and line [SETUP rtsp://127.0.0.1:35317/5720001 RTSP/1.0 CSeq: 1 Transport: Planes/Trains/Automobiles ] 01:33:12.025831 Got request: SETUP rtsp://127.0.0.1:35317/5720001 RTSP/1.0 01:33:12.026174 Requested test number 572 part 1 01:33:12.028894 rtspd_ProcessRequest found a complete request 01:33:12.033300 Wrote request (96 bytes) input to log/5/server.input 01:33:12.033670 Send response number 572 part 1 01:33:12.035292 Sent off 80 bytes 01:33:12.035505 Response sent (80 bytes) and written to log/5/server.response 01:33:12.035663 => persistent connection request ended, awaits new request 01:33:14.248190 Read 154 bytes 01:33:14.248401 rtspd_ProcessRequest() called with testno -7 and line [GET_PARAMETER rtsp://127.0.0.1:35317/5720002 RTSP/1.0 CSeq: 2 Session: getparams-test Content-Length: 12 Content-Type: text/parameters scale speed ] 01:33:14.248604 Got request: GET_PARAMETER rtsp://127.0.0.1:35317/5720002 RTSP/1.0 01:33:14.248676 Requested test number 572 part 2 01:33:14.248906 rtspd_ProcessRequest found a complete request 01:33:14.249193 Found Content-Length: 12 in the request 01:33:14.249433 Wrote request (154 bytes) input to log/5/server.input 01:33:14.249528 Send response number 572 part 2 01:33:14.249873 Sent off 163 bytes 01:33:14.249963 Response sent (163 bytes) and written to log/5/server.response 01:33:14.250035 => persistent connection request ended, awaits new request 01:33:14.652353 Read 91 bytes 01:33:14.652533 rtspd_ProcessRequest() called with testno -7 and line [GET_PARAMETER rtsp://127.0.0.1:35317/5720003 RTSP/1.0 CSeq: 3 Session: getparams-test ] 01:33:14.652661 Got request: GET_PARAMETER rtsp://127.0.0.1:35317/5720003 RTSP/1.0 01:33:14.652731 Requested teCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind573 ./libtest/libtests lib573 http://127.0.0.1:39863/573 > log/2/stdout573 2> log/2/stderr573 st number 572 part 3 01:33:14.652935 rtspd_ProcessRequest found a complete request 01:33:14.653045 Wrote request (91 bytes) input to log/5/server.input 01:33:14.653120 Send response number 572 part 3 01:33:14.653441 Sent off 80 bytes 01:33:14.653530 Response sent (80 bytes) and written to log/5/server.response 01:33:14.653601 => persistent connection request ended, awaits new request 01:33:14.792357 Read 166 bytes 01:33:14.792548 rtspd_ProcessRequest() called with testno -7 and line [GET_PARAMETER rtsp://127.0.0.1:35317/5720004 RTSP/1.0 CSeq: 4 Session: getparams-test Content-Length: 24 Content-Type: text/parameters packets_received jitter ] 01:33:14.792650 Got request: GET_PARAMETER rtsp://127.0.0.1:35317/5720004 RTSP/1.0 01:33:14.792725 Requested test number 572 part 4 01:33:14.792958 rtspd_ProcessRequest found a complete request 01:33:14.793036 Found Content-Length: 24 in the request 01:33:14.793148 Wrote request (166 bytes) input to log/5/server.input 01:33:14.793234 Send response number 572 part 4 01:33:14.793597 Sent off 147 bytes 01:33:14.793687 Response sent (147 bytes) and written to log/5/server.response 01:33:14.793757 => persistent connection request ended, awaits new request 01:33:14.858283 Read 85 bytes 01:33:14.858463 rtspd_ProcessRequest() called with testno -7 and line [OPTIONS rtsp://127.0.0.1:35317/5720005 RTSP/1.0 CSeq: 5 Session: getparams-test ] 01:33:14.858565 Got request: OPTIONS rtsp://127.0.0.1:35317/5720005 RTSP/1.0 01:33:14.858639 Requested test number 572 part 5 01:33:14.858842 rtspd_ProcessRequest found a complete request 01:33:14.858944 Wrote request (85 bytes) input to log/5/server.input 01:33:14.859033 Send response number 572 part 5 01:33:14.859345 connection close instruction "swsclose" found in response 01:33:14.859472 Sent off 143 bytes 01:33:14.859551 Response sent (143 bytes) and written to log/5/server.response 01:33:14.859634 instructed to close connection after server-reply 01:33:14.859721 ====> Client disconnect === End of file rtsp_server.log === Start of file server.cmd Testnum 572 === End of file server.cmd === Start of file server.input SETUP rtsp://127.0.0.1:35317/5720001 RTSP/1.0 CSeq: 1 Transport: Planes/Trains/Automobiles GET_PARAMETER rtsp://127.0.0.1:35317/5720002 RTSP/1.0 CSeq: 2 Session: getparams-test Content-Length: 12 Content-Type: text/parameters scale speed GET_PARAMETER rtsp://127.0.0.1:35317/5720003 RTSP/1.0 CSeq: 3 Session: getparams-test GET_PARAMETER rtsp://127.0.0.1:35317/5720004 RTSP/1.0 CSeq: 4 Session: getparams-test Content-Length: 24 Content-Type: text/parameters packets_received jitter OPTIONS rtsp://127.0.0.1:35317/5720005 RTSP/1.0 CSeq: 5 Session: getparams-test === End of file server.input === Start of file server.response RTSP/1.0 200 OK Server: RTSPD/libcurl-test Session: getparams-test CSeq: 1 RTSP/1.0 200 OK Server: RTSPD/libcurl-test Session: getparams-test Content-Type: text/parameters Content-Length: 32 Cseq: 2 scale=enormous speed=ludicrous RTSP/1.0 204 OK Server: RTSPD/libcurl-test Session: getparams-test Cseq: 3 RTSP/1.0 200 Okie Dokie Server: RTSPD/libcurl-test Session: getparams-test Cseq: 4 Content-Length: 37 packets_received: 1000 jitter: 0.314 RTSP/1.0 200 OK Server: RTSPD/libcurl-test Session: getparams-test CSeq: 5 Curl-private: swsclose Informational: Empty Options Response === End of file server.response === Start of file stderr572 URL: rtsp://127.0.0.1:35317/572 * Trying 127.0.0.1:35317... * Established connection to 127.0.0.1 (127.0.0.1 port 35317) from 127.0.0.1 port 45834 > SETUP rtsp://127.0.0.1:35317/5720001 RTSP/1.0 CSeq: 1 Transport: Planes/Trains/Automobiles < RTSP/1.0 200 OK < Server: RTSPD/libcurl-test < Session: getparams-test < CSeq: 1 < * Connection #0 to host 127.0.0.1:35317 left intact * Reusing existing rtsp: connection with host 127.0.0.1 > GET_PARAMETER rtsp://127.0.0.1:35317/5720002 RTSP/1.0 CSeq: 2 Session: getparams-test Content-Length: 12 Content-Type: text/parameters * upload completely sent off: 12 bytes < RTSP/1.0 200 OK < Server: RTSPD/libcurl-test < Session: getparams-test < Content-Type: text/parameters < Content-Length: 32 < Cseq: 2 < * Connection #0 to host 127.0.0.1:35317 left intact * Reusing existing rtsp: connection with host 127.0.0.1 > GET_PARAMETER rtsp://127.0.0.1:35317/5720003 RTSP/1.0 CSeq: 3 Session: getparams-test < RTSP/1.0 204 OK < Server: RTSPD/libcurl-test < Session: getparams-test < Cseq: 3 < * Connection #0 to host 127.0.0.1:35317 left intact * Reusing existing rtsp: connection with host 127.0.0.1 > GET_PARAMETER rtsp://127.0.0.1:35317/5720004 RTSP/1.0 CSeq: 4 Session: getparams-test Content-Length: 24 Content-Type: text/parameters * upload completely sent off: 24 bytes < RTSP/1.0 200 Okie Dokie < Server: RTSPD/libcurl-test < Session: getparams-test < Cseq: 4 < Content-Length: 37 < * Connection #0 to host 127.0.0.1:35317 left intact * Reusing existing rtsp: connection with host 127.0.0.1 > OPTIONS rtsp://127.0.0.1:35317/5720005 RTSP/1.0 CSeq: 5 Session: getparams-test < RTSP/1.0 200 OK < Server: RTSPD/libcurl-test < Session: getparams-test < CSeq: 5 < Curl-private: swsclose < Informational: Empty Options Response < * Connection #0 to host 127.0.0.1:35317 left intact Test ended with result 0 === End of file stderr572 === Start of file stdout572 RTSP/1.0 200 OK Server: RTSPD/libcurl-test Session: getparams-test CSeq: 1 RTSP/1.0 200 OK Server: RTSPD/libcurl-test Session: getparams-test Content-Type: text/parameters Content-Length: 32 Cseq: 2 scale=enormous speed=ludicrous RTSP/1.0 204 OK Server: RTSPD/libcurl-test Session: getparams-test Cseq: 3 RTSP/1.0 200 Okie Dokie Server: RTSPD/libcurl-test Session: getparams-test Cseq: 4 Content-Length: 37 packets_received: 1000 jitter: 0.314RTSP/1.0 200 OK Server: RTSPD/libcurl-test Session: getparams-test CSeq: 5 Curl-private: swsclose Informational: Empty Options Response === End of file stdout572 === Start of file valgrind572 ==269830== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind572 test 0573...[verify connect time with multi interface] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind573 ./libtest/libtests lib573 http://127.0.0.1:39863/573 > log/2/stdout573 2> log/2/stderr573 valgrind ERROR ==270006== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 573 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind573 ./libtest/libtests lib573 http://127.0.0.1:39863/573 > log/2/stdout573 2> log/2/stderr573 === End of file commands.log === Start of file http_server.log 01:32:37.492579 ====> Client connect 01:32:37.492734 accept_connection 3 returned 4 01:32:37.492809 accept_connection 3 returned 0 01:32:37.498824 Read 93 bytes 01:32:37.498938 Process 93 bytes request 01:32:37.499027 Got request: GET /verifiedserver HTTP/1.1 01:32:37.499100 Are-we-friendly question received 01:32:37.499231 Wrote request (93 bytes) input to log/2/server.input 01:32:37.499326 Identifying ourselves as friends 01:32:37.499501 Response sent (57 bytes) and written to log/2/server.response 01:32:37.499564 special request received, no persistency 01:32:37.499617 ====> Client disconnect 0 01:33:22.359198 ====> Client connect 01:33:22.359362 accept_connection 3 returned 4 01:33:22.359456 accept_connection 3 returned 0 01:33:23.460950 Read 57 bytes 01:33:23.461171 Process 57 bytes request 01:33:23.461268 Got request: GET /573 HTTP/1.1 01:33:23.461338 Serve test number 573 part 0 01:33:23.461516 - request found to be complete (573) 01:33:23.461762 Wrote request (57 bytes) input to log/2/server.input 01:33:23.461882 Send response test573 section 01:33:23.462340 Response sent (267 bytes) and written to log/2/serCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind574 ./libtest/libtests lib574 ftp://127.0.0.1:39413/fully_simulated/UNIX/*.txt > log/6/stdout574 2> log/6/stderr574 ver.response 01:33:23.462415 => persistent connection request ended, awaits new request 01:33:25.395032 Connection closed by client 01:33:25.395244 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 57200 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 573 === End of file server.cmd === Start of file server.input GET /573 HTTP/1.1 Host: 127.0.0.1:39863 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr573 URL: http://127.0.0.1:39863/573 01:33:21.086011 == Info: Trying 127.0.0.1:39863... 01:33:22.018787 == Info: Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 51258 01:33:22.151154 == Info: using HTTP/1.x 01:33:22.498913 => Send header, 57 bytes (0x39) 0000: GET /573 HTTP/1.1 0013: Host: 127.0.0.1:39863 002a: Accept: */* 0037: 01:33:22.874107 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:33:23.144534 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:33:23.237625 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:33:23.271437 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:33:23.289484 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:33:23.304439 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:33:23.342869 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:33:23.406609 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:33:23.449330 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:33:23.462212 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:33:23.549711 <= Recv header, 2 bytes (0x2) 0000: 01:33:23.612957 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:33:23.705940 == Info: we are done reading and this is set to close, stop send 01:33:23.745313 == Info: abort upload 01:33:24.188184 == Info: shutting down connection #0 Test ended with result 0 === End of file stderr573 === Start of file stdout573 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file stdout573 === Start of file valgrind573 ==270006== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind573 test 0574...[FTP wildcard download - changed fnmatch, 2x perform (Unix LIST response)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind574 ./libtest/libtests lib574 ftp://127.0.0.1:39413/fully_simulated/UNIX/*.txt > log/6/stdout574 2> log/6/stderr574 valgrind ERROR ==270202== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 574 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind574 ./libtest/libtests lib574 ftp://127.0.0.1:39413/fully_simulated/UNIX/*.txt > log/6/stdout574 2> log/6/stderr574 === End of file commands.log === Start of file ftp_server.log 01:32:40.863641 ====> Client connect 01:32:40.864702 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:32:40.872923 < "USER anonymous" 01:32:40.873909 > "331 We are happy you popped in![CR][LF]" 01:32:40.874467 < "PASS ftp@example.com" 01:32:40.874715 > "230 Welcome you silly person[CR][LF]" 01:32:40.875791 < "PWD" 01:32:40.878082 > "257 "/" is current directory[CR][LF]" 01:32:40.878770 < "EPSV" 01:32:40.878967 ====> Passive DATA channel requested by client 01:32:40.879108 DATA sockfilt for passive data channel starting... 01:32:40.920559 DATA sockfilt for passive data channel started (pid 270192) 01:32:40.925019 DATA sockfilt for passive data channel listens on port 41507 01:32:40.925413 > "229 Entering Passive Mode (|||41507|)[CR][LF]" 01:32:40.925590 Client has been notified that DATA conn will be accepted on port 41507 01:32:40.928701 Client connects to port 41507 01:32:40.928934 ====> Client established passive DATA connection on port 41507 01:32:40.929764 < "TYPE I" 01:32:40.930195 > "200 I modify TYPE as you wanted[CR][LF]" 01:32:40.931283 < "SIZE verifiedserver" 01:32:40.932436 > "213 18[CR][LF]" 01:32:40.932938 < "RETR verifiedserver" 01:32:40.933236 > "150 Binary junk (18 bytes).[CR][LF]" 01:32:40.933768 =====> Closing passive DATA connection... 01:32:40.933925 Server disconnects passive DATA connection 01:32:40.940734 Server disconnected passive DATA connection 01:32:40.940928 DATA sockfilt for passive data channel quits (pid 270192) 01:32:40.944162 DATA sockfilt for passive data channel quit (pid 270192) 01:32:40.944330 =====> Closed passive DATA connection 01:32:40.944585 > "226 File transfer complete[CR][LF]" 01:32:40.985666 < "QUIT" 01:32:40.986042 > "221 bye bye baby[CR][LF]" 01:32:40.987201 MAIN sockfilt said DISC 01:32:40.987395 ====> Client disconnected 01:32:40.987669 Awaiting input 01:33:25.901268 ====> Client connect 01:33:25.901986 FTPD: Getting commands from log/6/server.cmd 01:33:25.902317 FTPD: run test case number: 574 01:33:25.903630 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:33:26.930719 < "USER anonymous" 01:33:26.934130 > "331 We are happy you popped in![CR][LF]" 01:33:27.013498 < "PASS ftp@example.com" 01:33:27.014255 > "230 Welcome you silly person[CR][LF]" 01:33:27.094877 < "PWD" 01:33:27.100817 > "257 "/" is current directory[CR][LF]" 01:33:27.305154 < "CWD fully_simulated" 01:33:27.305590 > "250 CWD command successful.[CR][LF]" 01:33:27.305856 enabled FTP list parser mode 01:33:27.353386 < "CWD UNIX" 01:33:27.357461 > "250 CWD command successful.[CR][LF]" 01:33:27.357777 enabled FTP list parser mode 01:33:27.421993 < "EPSV" 01:33:27.422341 ====> Passive DATA channel requested by client 01:33:27.422505 DATA sockfilt for passive data channel starting... 01:33:27.485824 DATA sockfilt for passive data channel started (pid 271244) 01:33:27.487220 DATA sockfilt for passive data channel listens on port 39983 01:33:27.494150 > "229 Entering Passive Mode (|||39983|)[CR][LF]" 01:33:27.494401 Client has been notified that DATA conn will be accepted on port 39983 01:33:27.631865 Client connects to port 39983 01:33:27.632401 ====> Client established passive DATA connection on port 39983 01:33:27.742880 < "TYPE A" 01:33:27.743306 > "200 I modify TYPE as you wanted[CR][LF]" 01:33:27.785262 < "LIST" 01:33:27.785640 > "150 here comes a directory[CR][LF]" 01:33:27.785822 pass LIST data on data connection 01:33:27.792693 =====> Closing passive DATA connection... 01:33:27.792883 Server disconnects passive DATA connection 01:33:27.800973 Server disconnected passive DATA connection 01:33:27.801193 DATA sockfilt for passive data channel quits (pid 271244) 01:33:27.804381 DATA sockfilt for passive data channel quit (pid 271244) 01:33:27.804561 =====> Closed passive DATA connection 01:33:27.805144 > "226 ASCII transfer complete[CR][LF]" 01:33:29.988979 < "EPSV" 01:33:29.989320 ====> Passive DATA channel requested by client 01:33:29.989469 DATA sockfilt for passive data channel starting... 01:33:30.039171 DATA sockfilt for passive data channel started (pid 271302) 01:33:30.040415 DATA sockfilt for passive data channel listens on port 40605 01:33:30.040796 > "229 Entering Passive Mode (|||40605|)[CR][LF]" 01:33:30.040990 Client has been notified that DATA conn will be accepted on port 40605 01:33:30.067429 Client connects to port 40605 01:33:30.067955 ====> Client established passive DATA connection on port 40605 01:33:30.091656 < "TYPE I" 01:33:30.092408 > "200 I modify TYPE as you wanted[CR][LF]" 01:33:30.122078 < "RETR chmod1" 01:33:30.124568 > "150 Binary data connection for chmod1 (38 bytes).[CR][LF]" 01:33:30.124850 > "" 01:33:30.125323 =====> Closing passive DATA connection... 01:33:30.125479 Server disconnects passive DATA connection 01:33:30.130744 Server disconnected passive DATA connection 01:33:30.130970 DATA sockfilt for passive data channel quits (pid 271302) 01:33:30.134261 DATA sockfilt for passive data channel quit (pid 271302) 01:33:30.134432 =====> Closed passive DATA connection 01:33:30.134716 > "226 File transfer complete[CR][LF]" 01:33:30.354688 < "EPSV" 01:33:30.355051 ====> Passive DATA channel requested by client 01:33:30.355201 DATA sockfilt for passive data channel starting... 01:33:30.397529 DATA sockfilt for passive data channel started (pid 271333) 01:33:30.398989 DATA sockfilt for passive data channel listens on port 37557 01:33:30.399410 > "229 Entering Passive Mode (|||37557|)[CR][LF]" 01:33:30.399591 Client has been notified that DATA conn will be accepted on port 37557 01:33:30.408743 Client connects to port 37557 01:33:30.409125 ====> Client established passive DATA connection on port 37557 01:33:30.428720 < "RETR chmod2" 01:33:30.451920 > "150 Binary data connection for chmod2 (38 bytes).[CR][LF]" 01:33:30.452182 > "" 01:33:30.452641 =====> Closing passive DATA connection... 01:33:30.452796 Server disconnects passive DATA connection 01:33:30.457411 Server disconnected passive DATA connection 01:33:30.457623 DATA sockfilt for passive data channel quits (pid 271333) 01:33:30.460975 DATA sockfilt for passive data channel quit (pid 271333) 01:33:30.461168 =====> Closed passive DATA connection 01:33:30.461451 > "226 File transfer complete[CR][LF]" 01:33:30.531679 < "EPSV" 01:33:30.532110 ====> Passive DATA channel requested by client 01:33:30.532295 DATA sockfilt for passive data channel starting... 01:33:30.586879 DATA sockfilt for passive data channel started (pid 271354) 01:33:30.588285 DATA sockfilt for passive data channel listens on port 35149 01:33:30.589056 > "229 Entering Passive Mode (|||35149|)[CR][LF]" 01:33:30.589259 Client has been notified that DATA conn will be accepted on port 35149 01:33:30.601078 Client connects to port 35149 01:33:30.601450 ====> Client established passive DATA connection on port 35149 01:33:30.610679 < "RETR chmod3" 01:33:30.613910 > "150 Binary data connection for chmod3 (38 bytes).[CR][LF]" 01:33:30.614128 > "" 01:33:30.614589 =====> Closing passive DATA connection... 01:33:30.614742 Server disconnects passive DATA connection 01:33:30.617440 Server disconnected passive DATA connection 01:33:30.617630 DATA sockfilt for passive data channel quits (pid 271354) 01:33:30.624401 DATA sockfilt for passive data channel quit (pid 271354) 01:33:30.624594 =====> Closed passive DATA connection 01:33:30.624870 > "226 File transfer complete[CR][LF]" 01:33:30.678925 < "EPSV" 01:33:30.679262 ====> Passive DATA channel requested by client 01:33:30.679409 DATA sockfilt for passive data channel starting... 01:33:30.724114 DATA sockfilt for passive data channel started (pid 271371) 01:33:30.725486 DATA sockfilt for passive data channel listens on port 42387 01:33:30.730819 > "229 Entering Passive Mode (|||42387|)[CR][LF]" 01:33:30.731042 Client has been notified that DATA conn will be accepted on port 42387 01:33:30.732349 Client connects to port 42387 01:33:30.732553 ====> Client established passive DATA connection on port 42387 01:33:30.737151 < "RETR empty_file.dat" 01:33:30.738328 > "150 Binary data connection for empty_file.dat (0 bytes).[CR][LF]" 01:33:30.738495 > "" 01:33:30.738928 =====> Closing passive DATA connection... 01:33:30.739079 Server disconnects passive DATA connection 01:33:30.740284 Server disconnected passive DATA connection 01:33:30.740457 DATA sockfilt for passive data channel quits (pid 271371) 01:33:30.747495 DATA sockfilt for passive data channel quit (pid 271371) 01:33:30.747710 =====> Closed passive DATA connection 01:33:30.748163 > "226 File transfer complete[CR][LF]" 01:33:30.804690 < "EPSV" 01:33:30.805012 ====> Passive DATA channel requested by client 01:33:30.805159 DATA sockfilt for passive data channel starting... 01:33:30.845537 DATA sockfilt for passive data channel started (pid 271387) 01:33:30.846834 DATA sockfilt for passive data channel listens on port 44925 01:33:30.847174 > "229 Entering Passive Mode (|||44925|)[CR][LF]" 01:33:30.847338 Client has been notified that DATA conn will be accepted on port 44925 01:33:30.853449 Client connects to port 44925 01:33:30.853710 ====> Client established passive DATA connection on port 44925 01:33:30.863216 < "RETR file.txt" 01:33:30.863966 > "150 Binary data connection for file.txt (35 bytes).[CR][LF]" 01:33:30.864140 > "" 01:33:30.864582 =====> Closing passive DATA connection... 01:33:30.864728 Server disconnects passive DATA connection 01:33:30.865908 Server disconnected passive DATA connection 01:33:30.866067 DATA sockfilt for passive data channel quits (pid 271387) 01:33:30.870877 DATA sockfilt for passive data channel quit (pid 271387) 01:33:30.871206 =====> Closed passive DATA connection 01:33:30.871517 > "226 File transfer complete[CR][LF]" 01:33:30.945159 < "EPSV" 01:33:30.945473 ====> Passive DATA channel requested by client 01:33:30.945617 DATA sockfilt for passive data channel starting... 01:33:30.985461 DATA sockfilt for passive data channel started (pid 271398) 01:33:30.986825 DATA sockfilt for passive data channel listens on port 41871 01:33:30.987694 > "229 Entering Passive Mode (|||41871|)[CR][LF]" 01:33:30.987897 Client has been notified that DATA conn will be accepted on port 41871 01:33:30.995759 Client connects to port 41871 01:33:30.996121 ====> Client established passive DATA connection on port 41871 01:33:30.999802 < "RETR someothertext.txt" 01:33:31.000738 > "150 Binary data connection for someothertext.txt (47 bytes).[CR][LF]" 01:33:31.000936 > "" 01:33:31.001432 =====> Closing passive DATA connection... 01:33:31.001588 Server disconnects passive DATA connection 01:33:31.003736 Server disconnected passive DATA connection 01:33:31.003943 DATA sockfilt for passive data channel quits (pid 271398) 01:33:31.007615 DATA sockfilt for passive data channel quit (pid 271398) 01:33:31.007890 =====> Closed passive DATA connection 01:33:31.011002 > "226 File transfer complete[CR][LF]" 01:33:31.356691 < "EPSV" 01:33:31.357012 ====> Passive DATA channel requested by client 01:33:31.357154 DATA sockfilt for passive data channel starting... 01:33:31.403693 DATA sockfilt for passive data channel started (pid 271416) 01:33:31.404984 DATA sockfilt for passive data channel listens on port 38955 01:33:31.405577 > "229 Entering Passive Mode (|||38955|)[CR][LF]" 01:33:31.405751 Client has been notified that DATA conn will be accepted on port 38955 01:33:31.434135 Client connects to port 38955 01:33:31.434753 ====> Client established passive DATA connection on port 38955 01:33:31.435884 < "TYPE A" 01:33:31.436485 > "200 I modify TYPE as you wanted[CR][LF]" 01:33:31.441043 < "LIST" 01:33:31.442929 > "150 here comes a directory[CR][LF]" 01:33:31.443131 pass LIST data on data connection 01:33:31.445009 =====> Closing passive DATA connection... 01:33:31.445166 Server disconnects passive DATA connection 01:33:31.456198 Server disconnected passive DATA connection 01:33:31.456557 DATA sockfilt for passive data channel quits (pid 271416) 01:33:31.461171 DATA sockfilt for passive data channel quit (pid 271416) 01:33:31.461361 =====> Closed passive DATA connection 01:33:31.461687 > "226 ASCII transfer complete[CR][LF]" 01:33:31.603977 < "EPSV" 01:33:31.604541 ====> Passive DATA channel requested by client 01:33:31.604691 DATA sockfilt for passive data channel starting... 01:33:31.647380 DATA sockfilt for passive data channel started (pid 271427) 01:33:31.648739 DATA sockfilt for passive data channel listens on port 41579 01:33:31.649338 > "229 Entering Passive Mode (|||41579|)[CR][LF]" 01:33:31.649514 Client has been notified that DATA conn will be accepted on port 41579 01:33:31.657441 Client connects to port 41579 01:33:31.657890 ====> Client established passive DATA connection on port 41579 01:33:31.663568 < "TYPE I" 01:33:31.664115 > "200 I modify TYPE as you wanted[CR][LF]" 01:33:31.667446 < "RETR chmod1" 01:33:31.669145 > "150 Binary data connection for chmod1 (38 bytes).[CR][LF]" 01:33:31.669321 > "" 01:33:31.669768 =====> Closing passive DATA connection... 01:33:31.669914 Server disconnects passive DATA connection 01:33:31.671754 Server disconnected passive DATA connection 01:33:31.671935 DATA sockfilt for passive data channel quits (pid 271427) 01:33:31.675110 DATA sockfilt for passive data channel quit (pid 271427) 01:33:31.675292 =====> Closed passive DATA connection 01:33:31.675862 > "226 File transfer complete[CR][LF]" 01:33:31.744242 < "EPSV" 01:33:31.744563 ====> Passive DATA channel requested by client 01:33:31.744710 DATA sockfilt for passive data channel starting... 01:33:31.785527 DATA sockfilt for passive data channel started (pid 271430) 01:33:31.786936 DATA sockfilt for passive data channel listens on port 39463 01:33:31.787286 > "229 Entering Passive Mode (|||39463|)[CR][LF]" 01:33:31.787478 Client has been notified that DATA conn will be accepted on port 39463 01:33:31.797783 Client connects to port 39463 01:33:31.798213 ====> Client established passive DATA connection on port 39463 01:33:31.802744 < "RETR chmod2" 01:33:31.804589 > "150 Binary data connection for chmod2 (38 bytes).[CR][LF]" 01:33:31.804789 > "" 01:33:31.805268 =====> Closing passive DATA connection... 01:33:31.805431 Server disconnects passive DATA connection 01:33:31.810030 Server disconnected passive DATA connection 01:33:31.810286 DATA sockfilt for passive data channel quits (pid 271430) 01:33:31.813534 DATA sockfilt for passive data channel quit (pid 271430) 01:33:31.813753 =====> Closed passive DATA connection 01:33:31.814377 > "226 File transfer complete[CR][LF]" 01:33:31.862944 < "EPSV" 01:33:31.863258 ====> Passive DATA channel requested by client 01:33:31.863406 DATA sockfilt for passive data channel starting... 01:33:31.906397 DATA sockfilt for passive data channel started (pid 271433) 01:33:31.907615 DATA sockfilt for passive data channel listens on port 35333 01:33:31.910820 > "229 Entering Passive Mode (|||35333|)[CR][LF]" 01:33:31.911045 Client has been notified that DATA conn will be accepted on port 35333 01:33:31.914585 Client connects to port 35333 01:33:31.914853 ====> Client established passive DATA connection on port 35333 01:33:31.919492 < "RETR chmod3" 01:33:31.922119 > "150 Binary data connection for chmod3 (38 bytes).[CR][LF]" 01:33:31.922311 > "" 01:33:31.922767 =====> Closing passive DATA connection... 01:33:31.922926 Server disconnects passive DATA connection 01:33:31.924288 Server disconnected passive DATA connection 01:33:31.924461 DATA sockfilt for passive data channel quits (pid 271433) 01:33:31.927665 DATA sockfilt for passive data channel quit (pid 271433) 01:33:31.927848 =====> Closed passive DATA connection 01:33:31.931783 > "226 File transfer complete[CR][LF]" 01:33:31.993513 < "EPSV" 01:33:31.993826 ====> Passive DATA channel requested by client 01:33:31.993974 DATA sockfilt for passive data channel starting... 01:33:32.042196 DATA sockfilt for passive data channel started (pid 271439) 01:33:32.043429 DATA sockfilt for passive data channel listens on port 42907 01:33:32.044179 > "229 Entering Passive Mode (|||42907|)[CR][LF]" 01:33:32.044366 Client has been notified that DATA conn will be accepted on port 42907 01:33:32.053814 Client connects to port 42907 01:33:32.054267 ====> Client established passive DATA connection on port 42907 01:33:32.055268 < "RETR empty_file.dat" 01:33:32.055966 > "150 Binary data connection for empty_file.dat (0 bytes).[CR][LF]" 01:33:32.056133 > "" 01:33:32.056582 =====> Closing passive DATA connection... 01:33:32.056737 Server disconnects passive DATA connection 01:33:32.060867 Server disconnected passive DATA connection 01:33:32.061142 DATA sockfilt for passive data channel quits (pid 271439) 01:33:32.064438 DATA sockfilt for passive data channel quit (pid 271439) 01:33:32.064607 =====> Closed passive DATA connection 01:33:32.064892 > "226 File transfer complete[CR][LF]" 01:33:32.116046 < "EPSV" 01:33:32.116364 ====> Passive DATA channel requested by client 01:33:32.116508 DATA sockfilt for passive data channel starting... 01:33:32.167811 DATA sockfilt for passive data channel started (pid 271442) 01:33:32.169036 DATA sockfilt for passive data channel listens on port 42973 01:33:32.170825 > "229 Entering Passive Mode (|||42973|)[CR][LF]" 01:33:32.171036 Client has been notified that DATA conn will be accepted on port 42973 01:33:32.176716 Client connects to port 42973 01:33:32.177133 ====> Client established passive DATA connection on port 42973 01:33:32.184959 < "RETR file.txt" 01:33:32.190240 > "150 Binary data connection for file.txt (35 bytes).[CR][LF]" 01:33:32.190487 > "" 01:33:32.190961 =====> Closing passive DATA connection... 01:33:32.191121 Server disconnects passive DATA connection 01:33:32.196181 Server disconnected passive DATA connection 01:33:32.196396 DATA sockfilt for passive data channel quits (pid 271442) 01:33:32.199852 DATA sockfilt for passive data channel quit (pid 271442) 01:33:32.200024 =====> Closed passive DATA connection 01:33:32.200297 > "226 File transfer complete[CR][LF]" 01:33:32.257937 < "EPSV" 01:33:32.258249 ====> Passive DATA channel requested by client 01:33:32.258391 DATA sockfilt for passive data channel starting... 01:33:32.303728 DATA sockfilt for passive data channel started (pid 271448) 01:33:32.305171 DATA sockfilt for passive data channel listens on port 45913 01:33:32.305538 > "229 Entering Passive Mode (|||45913|)[CR][LF]" 01:33:32.305711 Client has been notified that DATA conn will be accepted on port 45913 01:33:32.314355 Client connects to port 45913 01:33:32.314790 ====> Client established passive DATA connection on port 45913 01:33:32.320374 < "RETR someothertext.txt" 01:33:32.322549 > "150 Binary data connection for someothertext.txt (47 bytes).[CR][LF]" 01:33:32.322732 > "" 01:33:32.323210 =====> Closing passive DATA connection... 01:33:32.323369 Server disconnects passive DATA connection 01:33:32.327823 Server disconnected passive DATA connection 01:33:32.328019 DATA sockfilt for passive data channel quits (pid 271448) 01:33:32.333432 DATA sockfilt for passive data channel quit (pid 271448) 01:33:32.333720 =====> Closed passive DATA connection 01:33:32.334052 > "226 File transfer complete[CR][LF]" 01:33:32.577965 < "QUIT" 01:33:32.578381 > "221 bye bye baby[CR][LF]" 01:33:32.679239 MAIN sockfilt said DISC 01:33:32.679848 ====> Client disconnected 01:33:32.680132 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:32:40.475005 ====> Client connect 01:32:40.476297 Received DATA (on stdin) 01:32:40.476385 > 160 bytes data, server => client 01:32:40.476487 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:32:40.476579 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:32:40.476660 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:32:40.482961 < 16 bytes data, client => server 01:32:40.483067 'USER anonymous\r\n' 01:32:40.484928 Received DATA (on stdin) 01:32:40.484999 > 33 bytes data, server => client 01:32:40.485102 '331 We are happy you popped in!\r\n' 01:32:40.485366 < 22 bytes data, client => server 01:32:40.485437 'PASS ftp@example.com\r\n' 01:32:40.486623 Received DATA (on stdin) 01:32:40.486693 > 30 bytes data, server => client 01:32:40.486772 '230 Welcome you silly person\r\n' 01:32:40.486998 < 5 bytes data, client => server 01:32:40.487064 'PWD\r\n' 01:32:40.487749 Received DATA (on stdin) 01:32:40.487814 > 30 bytes data, server => client 01:32:40.487912 '257 "/" is current directory\r\n' 01:32:40.490021 < 6 bytes data, client => server 01:32:40.490094 'EPSV\r\n' 01:32:40.537551 Received DATA (on stdin) 01:32:40.537695 > 39 bytes data, server => client 01:32:40.537789 '229 Entering Passive Mode (|||41507|)\r\n' 01:32:40.540894 < 8 bytes data, client => server 01:32:40.540971 'TYPE I\r\n' 01:32:40.541723 Received DATA (on stdin) 01:32:40.541790 > 33 bytes data, server => client 01:32:40.542138 '200 I modify TYPE as you wanted\r\n' 01:32:40.542516 < 21 bytes data, client => server 01:32:40.542596 'SIZE verifiedserver\r\n' 01:32:40.543294 Received DATA (on stdin) 01:32:40.543359 > 8 bytes data, server => client 01:32:40.543545 '213 18\r\n' 01:32:40.543979 < 21 bytes data, client => server 01:32:40.544052 'RETR verifiedserver\r\n' 01:32:40.547061 Received DATA (on stdin) 01:32:40.547135 > 29 bytes data, server => client 01:32:40.547216 '150 Binary junk (18 bytes).\r\n' 01:32:40.556505 Received DATA (on stdin) 01:32:40.556588 > 28 bytes data, server => client 01:32:40.556668 '226 File transfer complete\r\n' 01:32:40.596388 < 6 bytes data, client => server 01:32:40.596535 'QUIT\r\n' 01:32:40.597970 Received DATA (on stdin) 01:32:40.598040 > 18 bytes data, server => client 01:32:40.598115 '221 bye bye baby\r\n' 01:32:40.598831 ====> Client disconnect 01:32:40.599557 Received ACKD (on stdin) 01:33:25.512543 ====> Client connect 01:33:25.518990 Received DATA (on stdin) 01:33:25.519120 > 160 bytes data, server => client 01:33:25.519246 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:33:25.519362 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:33:25.519460 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:33:26.540987 < 16 bytes data, client => server 01:33:26.541198 'USER anonymous\r\n' 01:33:26.542719 Received DATA (on stdin) 01:33:26.542805 > 33 bytes data, server => client 01:33:26.546030 '331 We are happy you popped in!\r\n' 01:33:26.624160 < 22 bytes data, client => server 01:33:26.624342 'PASS ftp@example.com\r\n' 01:33:26.625486 Received DATA (on stdin) 01:33:26.625566 > 30 bytes data, server => client 01:33:26.625683 '230 Welcome you silly person\r\n' 01:33:26.704468 < 5 bytes data, client => server 01:33:26.704645 'PWD\r\n' 01:33:26.706875 Received DATA (on stdin) 01:33:26.706966 > 30 bytes data, server => client 01:33:26.712767 '257 "/" is current directory\r\n' 01:33:26.915792 < 21 bytes data, client => server 01:33:26.916010 'CWD fully_simulated\r\n' 01:33:26.917676 Received DATA (on stdin) 01:33:26.917765 > 29 bytes data, server => client 01:33:26.917869 '250 CWD command successful.\r\n' 01:33:26.964132 < 10 bytes data, client => server 01:33:26.964310 'CWD UNIX\r\n' 01:33:26.965372 Received DATA (on stdin) 01:33:26.965459 > 29 bytes data, server => client 01:33:26.969623 '250 CWD command successful.\r\n' 01:33:27.032669 < 6 bytes data, client => server 01:33:27.032846 'EPSV\r\n' 01:33:27.099138 Received DATA (on stdin) 01:33:27.099274 > 39 bytes data, server => client 01:33:27.099389 '229 Entering Passive Mode (|||39983|)\r\n' 01:33:27.353351 < 8 bytes data, client => server 01:33:27.353533 'TYPE A\r\n' 01:33:27.355132 Received DATA (on stdin) 01:33:27.355205 > 33 bytes data, server => client 01:33:27.355289 '200 I modify TYPE as you wanted\r\n' 01:33:27.395960 < 6 bytes data, client => server 01:33:27.396086 'LIST\r\n' 01:33:27.398980 Received DATA (on stdin) 01:33:27.399056 > 28 bytes data, server => client 01:33:27.399135 '150 here comes a directory\r\n' 01:33:27.416391 Received DATA (on stdin) 01:33:27.416492 > 29 bytes data, server => client 01:33:27.416588 '226 ASCII transfer complete\r\n' 01:33:29.599468 < 6 bytes data, client => server 01:33:29.599642 'EPSV\r\n' 01:33:29.652326 Received DATA (on stdin) 01:33:29.652474 > 39 bytes data, server => client 01:33:29.652569 '229 Entering Passive Mode (|||40605|)\r\n' 01:33:29.702356 < 8 bytes data, client => server 01:33:29.702539 'TYPE I\r\n' 01:33:29.703632 Received DATA (on stdin) 01:33:29.703710 > 33 bytes data, server => client 01:33:29.703818 '200 I modify TYPE as you wanted\r\n' 01:33:29.732647 < 13 bytes data, client => server 01:33:29.732816 'RETR chmod1\r\n' 01:33:29.734424 Received DATA (on stdin) 01:33:29.734502 > 51 bytes data, server => client 01:33:29.735685 '150 Binary data connection for chmod1 (38 bytes).\r\n' 01:33:29.735822 Received DATA (on stdin) 01:33:29.735885 > 0 bytes data, server => client 01:33:29.735998 got 0 reading from stdin 01:33:29.746534 Received DATA (on stdin) 01:33:29.746644 > 28 bytes data, server => client 01:33:29.746726 '226 File transfer complete\r\n' 01:33:29.965067 < 6 bytes data, client => server 01:33:29.965258 'EPSV\r\n' 01:33:30.010931 Received DATA (on stdin) 01:33:30.011088 > 39 bytes data, server => client 01:33:30.011180 '229 Entering Passive Mode (|||37557|)\r\n' 01:33:30.040566 < 13 bytes data, client => server 01:33:30.064489 'RETR chmod2\r\n' 01:33:30.064624 Received DATA (on stdin) 01:33:30.064693 > 51 bytes data, server => client 01:33:30.064799 '150 Binary data connection for chmod2 (38 bytes).\r\n' 01:33:30.064907 Received DATA (on stdin) 01:33:30.064984 > 0 bytes data, server => client 01:33:30.065050 got 0 reading from stdin 01:33:30.075648 Received DATA (on stdin) 01:33:30.075764 > 28 bytes data, server => client 01:33:30.075847 '226 File transfer complete\r\n' 01:33:30.142234 < 6 bytes data, client => server 01:33:30.142446 'EPSV\r\n' 01:33:30.200172 Received DATA (on stdin) 01:33:30.200311 > 39 bytes data, server => client 01:33:30.200422 '229 Entering Passive Mode (|||35149|)\r\n' 01:33:30.221348 < 13 bytes data, client => server 01:33:30.221500 'RETR chmod3\r\n' 01:33:30.222906 Received DATA (on stdin) 01:33:30.222985 > 51 bytes data, server => client 01:33:30.226552 '150 Binary data connection for chmod3 (38 bytes).\r\n' 01:33:30.226665 Received DATA (on stdin) 01:33:30.226727 > 0 bytes data, server => client 01:33:30.226786 got 0 reading from stdin 01:33:30.236680 Received DATA (on stdin) 01:33:30.236777 > 28 bytes data, server => client 01:33:30.236857 '226 File transfer complete\r\n' 01:33:30.289343 < 6 bytes data, client => server 01:33:30.289514 'EPSV\r\n' 01:33:30.337372 Received DATA (on stdin) 01:33:30.337512 > 39 bytes data, server => client 01:33:30.337625 '229 Entering Passive Mode (|||42387|)\r\n' 01:33:30.348037 < 21 bytes data, client => server 01:33:30.348155 'RETR empty_file.dat\r\n' 01:33:30.349382 Received DATA (on stdin) 01:33:30.349456 > 58 bytes data, server => client 01:33:30.349573 '150 Binary data connection for empty_file.dat (0 bytes).\r\n' 01:33:30.349683 Received DATA (on stdin) 01:33:30.349744 > 0 bytes data, server => client 01:33:30.349802 got 0 reading from stdin 01:33:30.359528 Received DATA (on stdin) 01:33:30.359627 > 28 bytes data, server => client 01:33:30.359979 '226 File transfer complete\r\n' 01:33:30.415181 < 6 bytes data, client => server 01:33:30.415347 'EPSV\r\n' 01:33:30.459192 Received DATA (on stdin) 01:33:30.459340 > 39 bytes data, server => client 01:33:30.459431 '229 Entering Passive Mode (|||44925|)\r\n' 01:33:30.472649 < 15 bytes data, client => server 01:33:30.472791 'RETR file.txt\r\n' 01:33:30.475506 Received DATA (on stdin) 01:33:30.475590 > 53 bytes data, server => client 01:33:30.475726 '150 Binary data connection for file.txt (35 bytes).\r\n' 01:33:30.475826 Received DATA (on stdin) 01:33:30.475891 > 0 bytes data, server => client 01:33:30.475956 got 0 reading from stdin 01:33:30.483529 Received DATA (on stdin) 01:33:30.483653 > 28 bytes data, server => client 01:33:30.483735 '226 File transfer complete\r\n' 01:33:30.555684 < 6 bytes data, client => server 01:33:30.555838 'EPSV\r\n' 01:33:30.598770 Received DATA (on stdin) 01:33:30.598923 > 39 bytes data, server => client 01:33:30.599053 '229 Entering Passive Mode (|||41871|)\r\n' 01:33:30.610497 < 24 bytes data, client => server 01:33:30.610655 'RETR someothertext.txt\r\n' 01:33:30.614522 Received DATA (on stdin) 01:33:30.614628 > 62 bytes data, server => client 01:33:30.614734 '150 Binary data connection for someothertext.txt (47 bytes).\r' 01:33:30.614793 '\n' 01:33:30.614882 Received DATA (on stdin) 01:33:30.614942 > 0 bytes data, server => client 01:33:30.614999 got 0 reading from stdin 01:33:30.622506 Received DATA (on stdin) 01:33:30.622661 > 28 bytes data, server => client 01:33:30.622747 '226 File transfer complete\r\n' 01:33:30.967403 < 6 bytes data, client => server 01:33:30.967593 'EPSV\r\n' 01:33:31.016871 Received DATA (on stdin) 01:33:31.017007 > 39 bytes data, server => client 01:33:31.017588 '229 Entering Passive Mode (|||38955|)\r\n' 01:33:31.046673 < 8 bytes data, client => server 01:33:31.046811 'TYPE A\r\n' 01:33:31.047737 Received DATA (on stdin) 01:33:31.047808 > 33 bytes data, server => client 01:33:31.047912 '200 I modify TYPE as you wanted\r\n' 01:33:31.051976 < 6 bytes data, client => server 01:33:31.052072 'LIST\r\n' 01:33:31.052895 Received DATA (on stdin) 01:33:31.052969 > 28 bytes data, server => client 01:33:31.055678 '150 here comes a directory\r\n' 01:33:31.073218 Received DATA (on stdin) 01:33:31.073360 > 29 bytes data, server => client 01:33:31.073444 '226 ASCII transfer complete\r\n' 01:33:31.214784 < 6 bytes data, client => server 01:33:31.214945 'EPSV\r\n' 01:33:31.260625 Received DATA (on stdin) 01:33:31.260766 > 39 bytes data, server => client 01:33:31.261352 '229 Entering Passive Mode (|||41579|)\r\n' 01:33:31.274280 < 8 bytes data, client => server 01:33:31.274405 'TYPE I\r\n' 01:33:31.275478 Received DATA (on stdin) 01:33:31.275551 > 33 bytes data, server => client 01:33:31.276237 '200 I modify TYPE as you wanted\r\n' 01:33:31.278425 < 13 bytes data, client => server 01:33:31.278501 'RETR chmod1\r\n' 01:33:31.279525 Received DATA (on stdin) 01:33:31.279597 > 51 bytes data, server => client 01:33:31.283013 '150 Binary data connection for chmod1 (38 bytes).\r\n' 01:33:31.283118 Received DATA (on stdin) 01:33:31.283183 > 0 bytes data, server => client 01:33:31.283244 got 0 reading from stdin 01:33:31.287099 Received DATA (on stdin) 01:33:31.287182 > 28 bytes data, server => client 01:33:31.287283 '226 File transfer complete\r\n' 01:33:31.354724 < 6 bytes data, client => server 01:33:31.354896 'EPSV\r\n' 01:33:31.399365 Received DATA (on stdin) 01:33:31.399498 > 39 bytes data, server => client 01:33:31.399590 '229 Entering Passive Mode (|||39463|)\r\n' 01:33:31.413507 < 13 bytes data, client => server 01:33:31.413641 'RETR chmod2\r\n' 01:33:31.415393 Received DATA (on stdin) 01:33:31.415467 > 51 bytes data, server => client 01:33:31.415708 '150 Binary data connection for chmod2 (38 bytes).\r\n' 01:33:31.415876 Received DATA (on stdin) 01:33:31.415950 > 0 bytes data, server => client 01:33:31.416018 got 0 reading from stdin 01:33:31.425578 Received DATA (on stdin) 01:33:31.425695 > 28 bytes data, server => client 01:33:31.425814 '226 File transfer complete\r\n' 01:33:31.473450 < 6 bytes data, client => server 01:33:31.473625 'EPSV\r\n' 01:33:31.519482 Received DATA (on stdin) 01:33:31.519621 > 39 bytes data, server => client 01:33:31.519761 '229 Entering Passive Mode (|||35333|)\r\n' 01:33:31.530233 < 13 bytes data, client => server 01:33:31.530372 'RETR chmod3\r\n' 01:33:31.533452 Received DATA (on stdin) 01:33:31.533540 > 51 bytes data, server => client 01:33:31.534724 '150 Binary data connection for chmod3 (38 bytes).\r\n' 01:33:31.534822 Received DATA (on stdin) 01:33:31.534884 > 0 bytes data, server => client 01:33:31.534948 got 0 reading from stdin 01:33:31.539658 Received DATA (on stdin) 01:33:31.539744 > 28 bytes data, server => client 01:33:31.544769 '226 File transfer complete\r\n' 01:33:31.604047 < 6 bytes data, client => server 01:33:31.604205 'EPSV\r\n' 01:33:31.655300 Received DATA (on stdin) 01:33:31.655437 > 39 bytes data, server => client 01:33:31.655549 '229 Entering Passive Mode (|||42907|)\r\n' 01:33:31.666136 < 21 bytes data, client => server 01:33:31.666262 'RETR empty_file.dat\r\n' 01:33:31.668506 Received DATA (on stdin) 01:33:31.668579 > 58 bytes data, server => client 01:33:31.668680 '150 Binary data connection for empty_file.dat (0 bytes).\r\n' 01:33:31.668762 Received DATA (on stdin) 01:33:31.668821 > 0 bytes data, server => client 01:33:31.668878 got 0 reading from stdin 01:33:31.676708 Received DATA (on stdin) 01:33:31.676806 > 28 bytes data, server => client 01:33:31.676889 '226 File transfer complete\r\n' 01:33:31.726595 < 6 bytes data, client => server 01:33:31.726753 'EPSV\r\n' 01:33:31.780893 Received DATA (on stdin) 01:33:31.781032 > 39 bytes data, server => client 01:33:31.781148 '229 Entering Passive Mode (|||42973|)\r\n' 01:33:31.795579 < 15 bytes data, client => server 01:33:31.795726 'RETR file.txt\r\n' 01:33:31.801755 Received DATA (on stdin) 01:33:31.801866 > 53 bytes data, server => client 01:33:31.801963 '150 Binary data connection for file.txt (35 bytes).\r\n' 01:33:31.802048 Received DATA (on stdin) 01:33:31.802109 > 0 bytes data, server => client 01:33:31.802165 got 0 reading from stdin 01:33:31.811837 Received DATA (on stdin) 01:33:31.811936 > 28 bytes data, server => client 01:33:31.812015 '226 File transfer complete\r\n' 01:33:31.868378 < 6 bytes data, client => server 01:33:31.868544 'EPSV\r\n' 01:33:31.917055 Received DATA (on stdin) 01:33:31.917206 > 39 bytes data, server => client 01:33:31.917299 '229 Entering Passive Mode (|||45913|)\r\n' 01:33:31.929759 < 24 bytes data, client => server 01:33:31.929939 'RETR someothertext.txt\r\n' 01:33:31.932838 Received DATA (on stdin) 01:33:31.932926 > 62 bytes data, server => client 01:33:31.935065 '150 Binary data connection for someothertext.txt (47 bytes).\r' 01:33:31.935133 '\n' 01:33:31.935221 Received DATA (on stdin) 01:33:31.935284 > 0 bytes data, server => client 01:33:31.935342 got 0 reading from stdin 01:33:31.945894 Received DATA (on stdin) 01:33:31.946025 > 28 bytes data, server => client 01:33:31.946109 '226 File transfer complete\r\n' 01:33:32.188409 < 6 bytes data, client => server 01:33:32.188560 'QUIT\r\n' 01:33:32.192306 Received DATA (on stdin) 01:33:32.192403 > 18 bytes data, server => client 01:33:32.192482 '221 bye bye baby\r\n' 01:33:32.290552 ====> Client disconnect 01:33:32.291297 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:32:40.523034 Running IPv4 version 01:32:40.530668 Listening on port 41507 01:32:40.531133 Wrote pid 270192 to log/6/server/ftp_sockdata.pid 01:32:40.531906 Received PING (on stdin) 01:32:40.536005 Received PORT (on stdin) 01:32:40.540264 ====> Client connect 01:32:40.545908 Received DATA (on stdin) 01:32:40.546189 > 18 bytes data, server => client 01:32:40.546545 'WE ROOLZ: 201819\r\n' 01:32:40.546776 Received DISC (on stdin) 01:32:40.546891 ====> Client forcibly disconnected 01:32:40.552867 Received QUIT (on stdin) 01:32:40.552951 quits 01:32:40.553496 ============> sockfilt quits 01:33:27.088273 Running IPv4 version 01:33:27.095803 Listening on port 39983 01:33:27.096298 Wrote pid 271244 to log/6/server/ftp_sockdata.pid 01:33:27.097056 Received PING (on stdin) 01:33:27.098152 Received PORT (on stdin) 01:33:27.243187 ====> Client connect 01:33:27.402411 Received DATA (on stdin) 01:33:27.402793 > 64 bytes data, server => client 01:33:27.403182 'drwxrwxrwx 4 ftp-default ftp-default 20480 Apr 27 5:12 ' 01:33:27.403338 '.\r\n' 01:33:27.404676 Received DATA (on stdin) 01:33:27.404747 > 65 bytes data, server => client 01:33:27.404856 'drwxrwxrwx 4 ftp-default ftp-default 20480 Apr 23 3:12 ' 01:33:27.404923 '..\r\n' 01:33:27.405013 Received DATA (on stdin) 01:33:27.405079 > 69 bytes data, server => client 01:33:27.405186 '-r--r--r-- 1 ftp-default ftp-default 38 Jan 11 10:00 ' 01:33:27.405255 'chmod1\r\n' 01:33:27.405353 Received DATA (on stdin) 01:33:27.405420 > 69 bytes data, server => client 01:33:27.405526 '-rw-rw-rw- 1 ftp-default ftp-default 38 Feb 1 8:00 ' 01:33:27.405594 'chmod2\r\n' 01:33:27.405691 Received DATA (on stdin) 01:33:27.405763 > 69 bytes data, server => client 01:33:27.405866 '-rwxrwxrwx 1 ftp-default ftp-default 38 Feb 1 8:00 ' 01:33:27.405933 'chmod3\r\n' 01:33:27.406013 Received DATA (on stdin) 01:33:27.406079 > 69 bytes data, server => client 01:33:27.406184 'd--S--S--t 1 ftp-default ftp-default 4096 May 4 4:31 ' 01:33:27.406254 'chmod4\r\n' 01:33:27.406338 Received DATA (on stdin) 01:33:27.406400 > 69 bytes data, server => client 01:33:27.406499 'd--s--s--T 1 ftp-default ftp-default 4096 May 4 4:31 ' 01:33:27.406564 'chmod5\r\n' 01:33:27.406647 Received DATA (on stdin) 01:33:27.406714 > 77 bytes data, server => client 01:33:27.406818 '-rw-r--r-- 1 ftp-default ftp-default 0 Apr 27 11:01 ' 01:33:27.406887 'empty_file.dat\r\n' 01:33:27.406964 Received DATA (on stdin) 01:33:27.407029 > 71 bytes data, server => client 01:33:27.407133 '-rw-r--r-- 1 ftp-default ftp-default 35 Apr 27 11:01 ' 01:33:27.407203 'file.txt\r\n' 01:33:27.407288 Received DATA (on stdin) 01:33:27.407349 > 79 bytes data, server => client 01:33:27.407447 'lrwxrwxrwx 1 ftp-default ftp-default 0 Jan 6 4:42 ' 01:33:27.407521 'link -> file.txt\r\n' 01:33:27.407605 Received DATA (on stdin) 01:33:27.407671 > 98 bytes data, server => client 01:33:27.407775 'lrwxrwxrwx 1 ftp-default ftp-default 0 Jan 6 4:45 ' 01:33:27.407855 'link_absolute -> /data/ftp/file.txt\r\n' 01:33:27.407929 Received DATA (on stdin) 01:33:27.407989 > 68 bytes data, server => client 01:33:27.408083 'drwxrwxrwx 4 ftp-default ftp-default 4096 Jan 23 2:05 ' 01:33:27.408146 '.NeXT\r\n' 01:33:27.408229 Received DATA (on stdin) 01:33:27.408296 > 80 bytes data, server => client 01:33:27.408400 '-rw-r--r-- 1 ftp-default ftp-default 47 Apr 27 11:01 ' 01:33:27.408476 'someothertext.txt\r\n' 01:33:27.408559 Received DATA (on stdin) 01:33:27.408626 > 75 bytes data, server => client 01:33:27.408731 'drwxr-xrwx 2 ftp-default ftp-default 4096 Apr 23 3:12 ' 01:33:27.408803 'weirddir.txt\r\n' 01:33:27.408886 Received DISC (on stdin) 01:33:27.412357 ====> Client forcibly disconnected 01:33:27.412975 Received QUIT (on stdin) 01:33:27.413056 quits 01:33:27.413568 ============> sockfilt quits 01:33:30.635483 Running IPv4 version 01:33:30.649113 Listening on port 40605 01:33:30.649618 Wrote pid 271302 to log/6/server/ftp_sockdata.pid 01:33:30.650394 Received PING (on stdin) 01:33:30.651299 Received PORT (on stdin) 01:33:30.675730 ====> Client connect 01:33:30.734297 Received DATA (on stdin) 01:33:30.734691 > 38 bytes data, server => client 01:33:30.735056 'This file should have permissions 444\n' 01:33:30.737258 Received DISC (on stdin) 01:33:30.737383 ====> Client forcibly disconnected 01:33:30.742758 Received QUIT (on stdin) 01:33:30.742863 quits 01:33:30.743400 ============> sockfilt quits 01:33:30.999767 Running IPv4 version 01:33:31.007496 Listening on port 37557 01:33:31.008004 Wrote pid 271333 to log/6/server/ftp_sockdata.pid 01:33:31.008771 Received PING (on stdin) 01:33:31.009865 Received PORT (on stdin) 01:33:31.020088 ====> Client connect 01:33:31.063386 Received DATA (on stdin) 01:33:31.063766 > 38 bytes data, server => client 01:33:31.064146 'This file should have permissions 666\n' 01:33:31.065139 Received DISC (on stdin) 01:33:31.065284 ====> Client forcibly disconnected 01:33:31.069395 Received QUIT (on stdin) 01:33:31.069491 quits 01:33:31.070028 ============> sockfilt quits 01:33:30.189358 Running IPv4 version 01:33:30.196892 Listening on port 35149 01:33:30.197374 Wrote pid 271354 to log/6/server/ftp_sockdata.pid 01:33:30.198109 Received PING (on stdin) 01:33:30.199216 Received PORT (on stdin) 01:33:30.212432 ====> Client connect 01:33:30.224389 Received DATA (on stdin) 01:33:30.224749 > 38 bytes data, server => client 01:33:30.225118 'This file should have permissions 777\n' 01:33:30.226862 Received DISC (on stdin) 01:33:30.226982 ====> Client forcibly disconnected 01:33:30.229443 Received QUIT (on stdin) 01:33:30.229527 quits 01:33:30.230044 ============> sockfilt quits 01:33:30.326730 Running IPv4 version 01:33:30.334126 Listening on port 42387 01:33:30.334612 Wrote pid 271371 to log/6/server/ftp_sockdata.pid 01:33:30.335354 Received PING (on stdin) 01:33:30.336399 Received PORT (on stdin) 01:33:30.343819 ====> Client connect 01:33:30.350850 Received DATA (on stdin) 01:33:30.351152 > 0 bytes data, server => client 01:33:30.351337 got 0 reading from stdin 01:33:30.351575 Received DISC (on stdin) 01:33:30.351688 ====> Client forcibly disconnected 01:33:30.352217 Received QUIT (on stdin) 01:33:30.352322 quits 01:33:30.352823 ============> sockfilt quits 01:33:30.448079 Running IPv4 version 01:33:30.455513 Listening on port 44925 01:33:30.456057 Wrote pid 271387 to log/6/server/ftp_sockdata.pid 01:33:30.456802 Received PING (on stdin) 01:33:30.457785 Received PORT (on stdin) 01:33:30.464899 ====> Client connect 01:33:30.476502 Received DATA (on stdin) 01:33:30.476814 > 35 bytes data, server => client 01:33:30.477152 'This is content of file "file.txt"\n' 01:33:30.477387 Received DISC (on stdin) 01:33:30.479005 ====> Client forcibly disconnected 01:33:30.479193 Received QUIT (on stdin) 01:33:30.479261 quits 01:33:30.479743 ============> sockfilt quits 01:33:30.587812 Running IPv4 version 01:33:30.595149 Listening on port 41871 01:33:30.595670 Wrote pid 271398 to log/6/server/ftp_sockdata.pid 01:33:30.596449 Received PING (on stdin) 01:33:30.597647 Received PORT (on stdin) 01:33:30.607115 ====> Client connect 01:33:30.613378 Received DATA (on stdin) 01:33:30.613741 > 47 bytes data, server => client 01:33:30.614129 'Some junk ;-) This file does not really exist.\n' 01:33:30.614407 Received DISC (on stdin) 01:33:30.615140 ====> Client forcibly disconnected 01:33:30.615778 Received QUIT (on stdin) 01:33:30.615862 quits 01:33:30.616359 ============> sockfilt quits 01:33:31.005907 Running IPv4 version 01:33:31.013463 Listening on port 38955 01:33:31.013958 Wrote pid 271416 to log/6/server/ftp_sockdata.pid 01:33:31.014716 Received PING (on stdin) 01:33:31.015884 Received PORT (on stdin) 01:33:31.042131 ====> Client connect 01:33:31.058985 Received DATA (on stdin) 01:33:31.059363 > 64 bytes data, server => client 01:33:31.059715 'drwxrwxrwx 4 ftp-default ftp-default 20480 Apr 27 5:12 ' 01:33:31.059863 '.\r\n' 01:33:31.060142 Received DATA (on stdin) 01:33:31.060206 > 65 bytes data, server => client 01:33:31.060306 'drwxrwxrwx 4 ftp-default ftp-default 20480 Apr 23 3:12 ' 01:33:31.060376 '..\r\n' 01:33:31.060475 Received DATA (on stdin) 01:33:31.060538 > 69 bytes data, server => client 01:33:31.060642 '-r--r--r-- 1 ftp-default ftp-default 38 Jan 11 10:00 ' 01:33:31.060707 'chmod1\r\n' 01:33:31.060804 Received DATA (on stdin) 01:33:31.060864 > 69 bytes data, server => client 01:33:31.060954 '-rw-rw-rw- 1 ftp-default ftp-default 38 Feb 1 8:00 ' 01:33:31.061009 'chmod2\r\n' 01:33:31.061082 Received DATA (on stdin) 01:33:31.061143 > 69 bytes data, server => client 01:33:31.061240 '-rwxrwxrwx 1 ftp-default ftp-default 38 Feb 1 8:00 ' 01:33:31.061303 'chmod3\r\n' 01:33:31.061386 Received DATA (on stdin) 01:33:31.061449 > 69 bytes data, server => client 01:33:31.061550 'd--S--S--t 1 ftp-default ftp-default 4096 May 4 4:31 ' 01:33:31.061609 'chmod4\r\n' 01:33:31.061681 Received DATA (on stdin) 01:33:31.061739 > 69 bytes data, server => client 01:33:31.061835 'd--s--s--T 1 ftp-default ftp-default 4096 May 4 4:31 ' 01:33:31.061890 'chmod5\r\n' 01:33:31.061964 Received DATA (on stdin) 01:33:31.062029 > 77 bytes data, server => client 01:33:31.062129 '-rw-r--r-- 1 ftp-default ftp-default 0 Apr 27 11:01 ' 01:33:31.062197 'empty_file.dat\r\n' 01:33:31.062275 Received DATA (on stdin) 01:33:31.065700 > 71 bytes data, server => client 01:33:31.065805 '-rw-r--r-- 1 ftp-default ftp-default 35 Apr 27 11:01 ' 01:33:31.065868 'file.txt\r\n' 01:33:31.065946 Received DATA (on stdin) 01:33:31.066004 > 79 bytes data, server => client 01:33:31.066094 'lrwxrwxrwx 1 ftp-default ftp-default 0 Jan 6 4:42 ' 01:33:31.066155 'link -> file.txt\r\n' 01:33:31.066227 Received DATA (on stdin) 01:33:31.066288 > 98 bytes data, server => client 01:33:31.066386 'lrwxrwxrwx 1 ftp-default ftp-default 0 Jan 6 4:45 ' 01:33:31.066466 'link_absolute -> /data/ftp/file.txt\r\n' 01:33:31.066545 Received DATA (on stdin) 01:33:31.066606 > 68 bytes data, server => client 01:33:31.066705 'drwxrwxrwx 4 ftp-default ftp-default 4096 Jan 23 2:05 ' 01:33:31.066767 '.NeXT\r\n' 01:33:31.066846 Received DATA (on stdin) 01:33:31.066907 > 80 bytes data, server => client 01:33:31.067003 '-rw-r--r-- 1 ftp-default ftp-default 47 Apr 27 11:01 ' 01:33:31.067070 'someothertext.txt\r\n' 01:33:31.067144 Received DATA (on stdin) 01:33:31.067199 > 75 bytes data, server => client 01:33:31.067289 'drwxr-xrwx 2 ftp-default ftp-default 4096 Apr 23 3:12 ' 01:33:31.067350 'weirddir.txt\r\n' 01:33:31.067431 Received DISC (on stdin) 01:33:31.067551 ====> Client forcibly disconnected 01:33:31.068325 Received QUIT (on stdin) 01:33:31.068394 quits 01:33:31.068884 ============> sockfilt quits 01:33:31.249903 Running IPv4 version 01:33:31.257377 Listening on port 41579 01:33:31.257857 Wrote pid 271427 to log/6/server/ftp_sockdata.pid 01:33:31.258603 Received PING (on stdin) 01:33:31.259682 Received PORT (on stdin) 01:33:31.267024 ====> Client connect 01:33:31.281703 Received DATA (on stdin) 01:33:31.282077 > 38 bytes data, server => client 01:33:31.282454 'This file should have permissions 444\n' 01:33:31.282693 Received DISC (on stdin) 01:33:31.282806 ====> Client forcibly disconnected 01:33:31.283740 Received QUIT (on stdin) 01:33:31.283814 quits 01:33:31.284310 ============> sockfilt quits 01:33:31.388037 Running IPv4 version 01:33:31.395472 Listening on port 39463 01:33:31.395993 Wrote pid 271430 to log/6/server/ftp_sockdata.pid 01:33:31.396737 Received PING (on stdin) 01:33:31.397848 Received PORT (on stdin) 01:33:31.409087 ====> Client connect 01:33:31.414853 Received DATA (on stdin) 01:33:31.415184 > 38 bytes data, server => client 01:33:31.415824 'This file should have permissions 666\n' 01:33:31.417199 Received DISC (on stdin) 01:33:31.417323 ====> Client forcibly disconnected 01:33:31.422052 Received QUIT (on stdin) 01:33:31.422151 quits 01:33:31.422692 ============> sockfilt quits 01:33:31.508704 Running IPv4 version 01:33:31.516222 Listening on port 35333 01:33:31.516717 Wrote pid 271433 to log/6/server/ftp_sockdata.pid 01:33:31.517465 Received PING (on stdin) 01:33:31.518529 Received PORT (on stdin) 01:33:31.526019 ====> Client connect 01:33:31.531657 Received DATA (on stdin) 01:33:31.531976 > 38 bytes data, server => client 01:33:31.535284 'This file should have permissions 777\n' 01:33:31.535535 Received DISC (on stdin) 01:33:31.535655 ====> Client forcibly disconnected 01:33:31.536263 Received QUIT (on stdin) 01:33:31.536337 quits 01:33:31.536838 ============> sockfilt quits 01:33:32.644280 Running IPv4 version 01:33:32.651958 Listening on port 42907 01:33:32.652468 Wrote pid 271439 to log/6/server/ftp_sockdata.pid 01:33:32.653242 Received PING (on stdin) 01:33:32.654320 Received PORT (on stdin) 01:33:32.661746 ====> Client connect 01:33:32.668974 Received DATA (on stdin) 01:33:32.669338 > 0 bytes data, server => client 01:33:32.669526 got 0 reading from stdin 01:33:32.669770 Received DISC (on stdin) 01:33:32.669885 ====> Client forcibly disconnected 01:33:32.672964 Received QUIT (on stdin) 01:33:32.673055 quits 01:33:32.673583 ============> sockfilt quits 01:33:32.766649 Running IPv4 version 01:33:32.774437 Listening on port 42973 01:33:32.774892 Wrote pid 271442 to log/6/server/ftp_sockdata.pid 01:33:32.778987 Received PING (on stdin) 01:33:32.779921 Received PORT (on stdin) 01:33:32.788100 ====> Client connect 01:33:32.797251 Received DATA (on stdin) 01:33:32.797625 > 35 bytes data, server => client 01:33:32.801428 'This is content of file "file.txt"\n' 01:33:32.807369 Received DISC (on stdin) 01:33:32.807531 ====> Client forcibly disconnected 01:33:32.808200 Received QUIT (on stdin) 01:33:32.808278 quits 01:33:32.808788 ============> sockfilt quits 01:33:32.905949 Running IPv4 version 01:33:32.913687 Listening on port 45913 01:33:32.914177 Wrote pid 271448 to log/6/server/ftp_sockdata.pid 01:33:32.914945 Received PING (on stdin) 01:33:32.916068 Received PORT (on stdin) 01:33:32.925728 ====> Client connect 01:33:32.933018 Received DATA (on stdin) 01:33:32.933385 > 47 bytes data, server => client 01:33:32.933775 'Some junk ;-) This file does not really exist.\n' 01:33:32.939219 Received DISC (on stdin) 01:33:32.939857 ====> Client forcibly disconnected 01:33:32.940041 Received QUIT (on stdin) 01:33:32.940114 quits 01:33:32.940610 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 574 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD fully_simulated CWD UNIX EPSV TYPE A LIST EPSV TYPE I RETR chmod1 EPSV RETR chmod2 EPSV RETR chmod3 EPSV RETR empty_file.dat EPSV RETR file.txt EPSV RETR someothertext.txt EPSV TYPE A LIST EPSV TYPE I RETR chmod1 EPSV RETR chmod2 EPSV RETR chmod3 EPSV RETR empty_file.dat EPSV RETR file.txt EPSV RETR someothertext.txt QUIT === End of file server.input === Start of file stderr574 URL: ftp://127.0.0.1:39413/fully_simulated/UNIX/*.txt lib574: match string '.' against pattern '*.txt' lib574: match string '..' against pattern '*.txt' lib574: match string 'chmod1' against pattern '*.txt' lib574: match string 'chmod2' against pattern '*.txt' lib574: match string 'chmod3' against pattern '*.txt' lib574: match string 'chmod4' against pattern '*.txt' lib574: match string 'chmod5' against pattern '*.txt' lib574: match string 'empty_file.dat' against pattern '*.txt' lib574: match string 'file.txt' against pattern '*.txt' lib574: match string 'link' against pattern '*.txt' lib574: match string 'link_absolute' against pattern '*.txt' lib574: match string '.NeXT' against pattern '*.txt' lib574: match string 'someothertext.txt' against pattern '*.txt' lib574: match string 'weirddir.txt' against pattern '*.txt' lib574: match string '.' against pattern '*.txt' lib574: match string '..' against pattern '*.txt' lib574: match string 'chmod1' against pattern '*.txt' lib574: match string 'chmod2' against pattern '*.txt' lib574: match string 'chmod3' against pattern '*.txt' lib574: match string 'chmod4' against pattern '*.txt' lib574: match string 'chmod5' against pattern '*.txt' lib574: match string 'empty_file.dat' against pattern '*.txt' lib574: match string 'file.txt' against pattern '*.txt' lib574: match string 'link' against pattern '*.txt' lib574: match string 'link_absolute' against pattern '*.txt' lib574: match string '.NeXT' against pattern '*.txt' lib574: match string 'someothertext.txt' against pattern '*.txt' lib574: match string 'weirddir.txt' against pattern '*.txt' Test ended with result 0 === End of file stderr574 === Start of file stdout574 This file should have permissions 444 This file should have permissions 666 This file should have permissions 777 This is content of file "file.txt" Some junk ;-) This file does not really exist. This file should have permissions 444 This file should have permissions 666 This file should have permissions 777 This is content of file "cannot find sshd CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind575 ./libtest/libtests lib575 ftp://127.0.0.1:37481/fully_simulated/UNIX/* > log/1/stdout575 2> log/1/stderr575 file.txt" Some junk ;-) This file does not really exist. === End of file stdout574 === Start of file valgrind574 ==270202== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind574 test 0575...[FTP wildcard download - dup_handle and multi interface] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind575 ./libtest/libtests lib575 ftp://127.0.0.1:37481/fully_simulated/UNIX/* > log/1/stdout575 2> log/1/stderr575 valgrind ERROR ==270216== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 575 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind575 ./libtest/libtests lib575 ftp://127.0.0.1:37481/fully_simulated/UNIX/* > log/1/stdout575 2> log/1/stderr575 === End of file commands.log === Start of file ftp_server.log 01:32:41.032851 ====> Client connect 01:32:41.033822 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:32:41.041452 < "USER anonymous" 01:32:41.042108 > "331 We are happy you popped in![CR][LF]" 01:32:41.042819 < "PASS ftp@example.com" 01:32:41.044576 > "230 Welcome you silly person[CR][LF]" 01:32:41.045099 < "PWD" 01:32:41.047391 > "257 "/" is current directory[CR][LF]" 01:32:41.047870 < "EPSV" 01:32:41.048055 ====> Passive DATA channel requested by client 01:32:41.048188 DATA sockfilt for passive data channel starting... 01:32:41.086008 DATA sockfilt for passive data channel started (pid 270196) 01:32:41.087293 DATA sockfilt for passive data channel listens on port 40943 01:32:41.087666 > "229 Entering Passive Mode (|||40943|)[CR][LF]" 01:32:41.087825 Client has been notified that DATA conn will be accepted on port 40943 01:32:41.090694 Client connects to port 40943 01:32:41.090916 ====> Client established passive DATA connection on port 40943 01:32:41.091721 < "TYPE I" 01:32:41.091980 > "200 I modify TYPE as you wanted[CR][LF]" 01:32:41.093085 < "SIZE verifiedserver" 01:32:41.093504 > "213 18[CR][LF]" 01:32:41.094638 < "RETR verifiedserver" 01:32:41.096950 > "150 Binary junk (18 bytes).[CR][LF]" 01:32:41.097452 =====> Closing passive DATA connection... 01:32:41.097606 Server disconnects passive DATA connection 01:32:41.101026 Server disconnected passive DATA connection 01:32:41.101197 DATA sockfilt for passive data channel quits (pid 270196) 01:32:41.104165 DATA sockfilt for passive data channel quit (pid 270196) 01:32:41.104327 =====> Closed passive DATA connection 01:32:41.104573 > "226 File transfer complete[CR][LF]" 01:32:41.148204 < "QUIT" 01:32:41.150804 > "221 bye bye baby[CR][LF]" 01:32:41.151064 MAIN sockfilt said DISC 01:32:41.151240 ====> Client disconnected 01:32:41.151490 Awaiting input 01:33:26.609952 ====> Client connect 01:33:26.610733 FTPD: Getting commands from log/1/server.cmd 01:33:26.611075 FTPD: run test case number: 575 01:33:26.612617 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:33:27.691095 < "USER anonymous" 01:33:27.691513 > "331 We are happy you popped in![CR][LF]" 01:33:27.779285 < "PASS ftp@example.com" 01:33:27.784121 > "230 Welcome you silly person[CR][LF]" 01:33:27.854231 < "PWD" 01:33:27.854690 > "257 "/" is current directory[CR][LF]" 01:33:28.077643 < "CWD fully_simulated" 01:33:28.078042 > "250 CWD command successful.[CR][LF]" 01:33:28.078299 enabled FTP list parser mode 01:33:28.123875 < "CWD UNIX" 01:33:28.124234 > "250 CWD command successful.[CR][LF]" 01:33:28.124475 enabled FTP list parser mode 01:33:28.189765 < "EPSV" 01:33:28.190037 ====> Passive DATA channel requested by client 01:33:28.190172 DATA sockfilt for passive data channel starting... 01:33:28.246844 DATA sockfilt for passive data channel started (pid 271250) 01:33:28.247928 DATA sockfilt for passive data channel listens on port 37005 01:33:28.248273 > "229 Entering Passive Mode (|||37005|)[CR][LF]" 01:33:28.248439 Client has been notified that DATA conn will be accepted on port 37005 01:33:28.405040 Client connects to port 37005 01:33:28.405589 ====> Client established passive DATA connection on port 37005 01:33:28.528215 < "TYPE A" 01:33:28.528999 > "200 I modify TYPE as you wanted[CR][LF]" 01:33:28.579552 < "LIST" 01:33:28.579963 > "150 here comes a directory[CR][LF]" 01:33:28.580154 pass LIST data on data connection 01:33:28.584216 =====> Closing passive DATA connection... 01:33:28.584398 Server disconnects passive DATA connection 01:33:28.589230 Server disconnected passive DATA connection 01:33:28.589430 DATA sockfilt for passive data channel quits (pid 271250) 01:33:28.593068 DATA sockfilt for passive data channel quit (pid 271250) 01:33:28.593261 =====> Closed passive DATA connection 01:33:28.593893 > "226 ASCII transfer complete[CR][LF]" 01:33:31.513354 < "EPSV" 01:33:31.513695 ====> Passive DATA channel requested by client 01:33:31.513851 DATA sockfilt for passive data channel starting... 01:33:31.598688 DATA sockfilt for passive data channel started (pid 271421) 01:33:31.599985 DATA sockfilt for passive data channel listens on port 46375 01:33:31.600480 > "229 Entering Passive Mode (|||46375|)[CR][LF]" 01:33:31.600710 Client has been notified that DATA conn will be accepted on port 46375 01:33:31.627499 Client connects to port 46375 01:33:31.628176 ====> Client established passive DATA connection on port 46375 01:33:31.662027 < "TYPE I" 01:33:31.662431 > "200 I modify TYPE as you wanted[CR][LF]" 01:33:31.697084 < "RETR chmod1" 01:33:31.697933 > "150 Binary data connection for chmod1 (38 bytes).[CR][LF]" 01:33:31.698203 > "" 01:33:31.698655 =====> Closing passive DATA connection... 01:33:31.698812 Server disconnects passive DATA connection 01:33:31.700853 Server disconnected passive DATA connection 01:33:31.701036 DATA sockfilt for passive data channel quits (pid 271421) 01:33:31.704199 DATA sockfilt for passive data channel quit (pid 271421) 01:33:31.704392 =====> Closed passive DATA connection 01:33:31.704943 > "226 File transfer complete[CR][LF]" 01:33:31.929391 < "EPSV" 01:33:31.929717 ====> Passive DATA channel requested by client 01:33:31.929868 DATA sockfilt for passive data channel starting... 01:33:31.981746 DATA sockfilt for passive data channel started (pid 271436) 01:33:31.982960 DATA sockfilt for passive data channel listens on port 41589 01:33:31.983303 > "229 Entering Passive Mode (|||41589|)[CR][LF]" 01:33:31.983474 Client has been notified that DATA conn will be accepted on port 41589 01:33:31.997676 Client connects to port 41589 01:33:31.998230 ====> Client established passive DATA connection on port 41589 01:33:32.022576 < "RETR chmod2" 01:33:32.023979 > "150 Binary data connection for chmod2 (38 bytes).[CR][LF]" 01:33:32.024172 > "" 01:33:32.024667 =====> Closing passive DATA connection... 01:33:32.024834 Server disconnects passive DATA connection 01:33:32.030756 Server disconnected passive DATA connection 01:33:32.031060 DATA sockfilt for passive data channel quits (pid 271436) 01:33:32.034497 DATA sockfilt for passive data channel quit (pid 271436) 01:33:32.034698 =====> Closed passive DATA connection 01:33:32.035015 > "226 File transfer complete[CR][LF]" 01:33:32.117039 < "EPSV" 01:33:32.117360 ====> Passive DATA channel requested by client 01:33:32.117511 DATA sockfilt for passive data channel starting... 01:33:32.160666 DATA sockfilt for passive data channel started (pid 271443) 01:33:32.162168 DATA sockfilt for passive data channel listens on port 42283 01:33:32.162522 > "229 Entering Passive Mode (|||42283|)[CR][LF]" 01:33:32.162692 Client has been notified that DATA conn will be accepted on port 42283 01:33:32.174478 Client connects to port 42283 01:33:32.174988 ====> Client established passive DATA connection on port 42283 01:33:32.177966 < "RETR chmod3" 01:33:32.178620 > "150 Binary data connection for chmod3 (38 bytes).[CR][LF]" 01:33:32.178795 > "" 01:33:32.179244 =====> Closing passive DATA connection... 01:33:32.179406 Server disconnects passive DATA connection 01:33:32.185107 Server disconnected passive DATA connection 01:33:32.185459 DATA sockfilt for passive data channel quits (pid 271443) 01:33:32.188812 DATA sockfilt for passive data channel quit (pid 271443) 01:33:32.188998 =====> Closed passive DATA connection 01:33:32.189312 > "226 File transfer complete[CR][LF]" 01:33:32.261857 < "EPSV" 01:33:32.262185 ====> Passive DATA channel requested by client 01:33:32.262351 DATA sockfilt for passive data channel starting... 01:33:32.311398 DATA sockfilt for passive data channel started (pid 271450) 01:33:32.312629 DATA sockfilt for passive data channel listens on port 42309 01:33:32.312975 > "229 Entering Passive Mode (|||42309|)[CR][LF]" 01:33:32.313145 Client has been notified that DATA conn will be accepted on port 42309 01:33:32.322558 Client connects to port 42309 01:33:32.323103 ====> Client established passive DATA connection on port 42309 01:33:32.330831 < "RETR empty_file.dat" 01:33:32.332526 > "150 Binary data connection for empty_file.dat (0 bytes).[CR][LF]" 01:33:32.332699 > "" 01:33:32.333142 =====> Closing passive DATA connection... 01:33:32.333312 Server disconnects passive DATA connection 01:33:32.334648 Server disconnected passive DATA connection 01:33:32.334844 DATA sockfilt for passive data channel quits (pid 271450) 01:33:32.341442 DATA sockfilt for passive data channel quit (pid 271450) 01:33:32.341669 =====> Closed passive DATA connection 01:33:32.341958 > "226 File transfer complete[CR][LF]" 01:33:32.398281 < "EPSV" 01:33:32.398608 ====> Passive DATA channel requested by client 01:33:32.398754 DATA sockfilt for passive data channel starting... 01:33:32.441100 DATA sockfilt for passive data channel started (pid 271454) 01:33:32.442537 DATA sockfilt for passive data channel listens on port 33279 01:33:32.442886 > "229 Entering Passive Mode (|||33279|)[CR][LF]" 01:33:32.443055 Client has been notified that DATA conn will be accepted on port 33279 01:33:32.451218 Client connects to port 33279 01:33:32.451611 ====> Client established passive DATA connection on port 33279 01:33:32.457720 < "RETR file.txt" 01:33:32.459531 > "150 Binary data connection for file.txt (35 bytes).[CR][LF]" 01:33:32.459718 > "" 01:33:32.460158 =====> Closing passive DATA connection... 01:33:32.460312 Server disconnects passive DATA connection 01:33:32.461541 Server disconnected passive DATA connection 01:33:32.461712 DATA sockfilt for passive data channel quits (pid 271454) 01:33:32.464936 DATA sockfilt for passive data channel quit (pid 271454) 01:33:32.465134 =====> Closed passive DATA connection 01:33:32.465596 > "226 File transfer complete[CR][LF]" 01:33:32.528506 < "EPSV" 01:33:32.528825 ====> Passive DATA channel requested by client 01:33:32.528973 DATA sockfilt for passive data channel starting... 01:33:32.572056 DATA sockfilt for passive data channel started (pid 271457) 01:33:32.573381 DATA sockfilt for passive data channel listens on port 40091 01:33:32.573728 > "229 Entering Passive Mode (|||40091|)[CR][LF]" 01:33:32.573902 Client has been notified that DATA conn will be accepted on port 40091 01:33:32.584450 Client connects to port 40091 01:33:32.584921 ====> Client established passive DATA connection on port 40091 01:33:32.589157 < "RETR someothertext.txt" 01:33:32.591999 > "150 Binary data connection for someothertext.txt (47 bytes).[CR][LF]" 01:33:32.592200 > "" 01:33:32.592626 =====> Closing passive DATA connection... 01:33:32.592781 Server disconnects passive DATA connection 01:33:32.594405 Server disconnected passive DATA connection 01:33:32.594573 DATA sockfilt for passive data channel quits (pid 271457) 01:33:32.600473 DATA sockfilt for passive data channel quit (pid 271457) 01:33:32.600730 =====> Closed passive DATA connection 01:33:32.601022 > "226 File transfer complete[CR][LF]" 01:33:32.970368 < "EPSV" 01:33:32.970718 ====> Passive DATA channel requested by client 01:33:32.970870 DATA sockfilt for passive data channel starting... 01:33:33.020796 DATA sockfilt for passive data channel started (pid 271460) 01:33:33.022220 DATA sockfilt for passive data channel listens on port 41979 01:33:33.027501 > "229 Entering Passive Mode (|||41979|)[CR][LF]" 01:33:33.027822 Client has been notified that DATA conn will be accepted on port 41979 01:33:33.034955 Client connects to port 41979 01:33:33.035394 ====> Client established passive DATA connection on port 41979 01:33:33.041925 < "TYPE A" 01:33:33.042303 > "200 I modify TYPE as you wanted[CR][LF]" 01:33:33.047702 < "LIST" 01:33:33.048034 > "150 here comes a directory[CR][LF]" 01:33:33.048232 pass LIST data on data connection 01:33:33.050063 =====> Closing passive DATA connection... 01:33:33.050229 Server disconnects passive DATA connection 01:33:33.062960 Server disconnected passive DATA connection 01:33:33.063308 DATA sockfilt for passive data channel quits (pid 271460) 01:33:33.068637 DATA sockfilt for passive data channel quit (pid 271460) 01:33:33.068841 =====> Closed passive DATA connection 01:33:33.069161 > "226 ASCII transfer complete[CR][LF]" 01:33:33.136311 < "EPSV" 01:33:33.136617 ====> Passive DATA channel requested by client 01:33:33.136762 DATA sockfilt for passive data channel starting... 01:33:33.184421 DATA sockfilt for passive data channel started (pid 271463) 01:33:33.185772 DATA sockfilt for passive data channel listens on port 33679 01:33:33.186124 > "229 Entering Passive Mode (|||33679|)[CR][LF]" 01:33:33.186306 Client has been notified that DATA conn will be accepted on port 33679 01:33:33.194582 Client connects to port 33679 01:33:33.194977 ====> Client established passive DATA connection on port 33679 01:33:33.200820 < "TYPE I" 01:33:33.201196 > "200 I modify TYPE as you wanted[CR][LF]" 01:33:33.206285 < "RETR chmod1" 01:33:33.210881 > "150 Binary data connection for chmod1 (38 bytes).[CR][LF]" 01:33:33.211135 > "" 01:33:33.211606 =====> Closing passive DATA connection... 01:33:33.211765 Server disconnects passive DATA connection 01:33:33.212241 Server disconnected passive DATA connection 01:33:33.212416 DATA sockfilt for passive data channel quits (pid 271463) 01:33:33.220224 DATA sockfilt for passive data channel quit (pid 271463) 01:33:33.220578 =====> Closed passive DATA connection 01:33:33.221260 > "226 File transfer complete[CR][LF]" 01:33:33.273066 < "EPSV" 01:33:33.273388 ====> Passive DATA channel requested by client 01:33:33.273540 DATA sockfilt for passive data channel starting... 01:33:33.316956 DATA sockfilt for passive data channel started (pid 271466) 01:33:33.318218 DATA sockfilt for passive data channel listens on port 44297 01:33:33.320819 > "229 Entering Passive Mode (|||44297|)[CR][LF]" 01:33:33.321034 Client has been notified that DATA conn will be accepted on port 44297 01:33:33.327156 Client connects to port 44297 01:33:33.327480 ====> Client established passive DATA connection on port 44297 01:33:33.333408 < "RETR chmod2" 01:33:33.336052 > "150 Binary data connection for chmod2 (38 bytes).[CR][LF]" 01:33:33.336253 > "" 01:33:33.336702 =====> Closing passive DATA connection... 01:33:33.336875 Server disconnects passive DATA connection 01:33:33.340751 Server disconnected passive DATA connection 01:33:33.340989 DATA sockfilt for passive data channel quits (pid 271466) 01:33:33.344318 DATA sockfilt for passive data channel quit (pid 271466) 01:33:33.344505 =====> Closed passive DATA connection 01:33:33.345141 > "226 File transfer complete[CR][LF]" 01:33:33.402783 < "EPSV" 01:33:33.403128 ====> Passive DATA channel requested by client 01:33:33.403289 DATA sockfilt for passive data channel starting... 01:33:33.447121 DATA sockfilt for passive data channel started (pid 271469) 01:33:33.448408 DATA sockfilt for passive data channel listens on port 46595 01:33:33.454158 > "229 Entering Passive Mode (|||46595|)[CR][LF]" 01:33:33.454459 Client has been notified that DATA conn will be accepted on port 46595 01:33:33.461018 Client connects to port 46595 01:33:33.461462 ====> Client established passive DATA connection on port 46595 01:33:33.463991 < "RETR chmod3" 01:33:33.464635 > "150 Binary data connection for chmod3 (38 bytes).[CR][LF]" 01:33:33.464825 > "" 01:33:33.465257 =====> Closing passive DATA connection... 01:33:33.465415 Server disconnects passive DATA connection 01:33:33.466880 Server disconnected passive DATA connection 01:33:33.467047 DATA sockfilt for passive data channel quits (pid 271469) 01:33:33.477484 DATA sockfilt for passive data channel quit (pid 271469) 01:33:33.477823 =====> Closed passive DATA connection 01:33:33.478152 > "226 File transfer complete[CR][LF]" 01:33:33.532761 < "EPSV" 01:33:33.533081 ====> Passive DATA channel requested by client 01:33:33.533244 DATA sockfilt for passive data channel starting... 01:33:33.577039 DATA sockfilt for passive data channel started (pid 271472) 01:33:33.578260 DATA sockfilt for passive data channel listens on port 36771 01:33:33.578592 > "229 Entering Passive Mode (|||36771|)[CR][LF]" 01:33:33.578755 Client has been notified that DATA conn will be accepted on port 36771 01:33:33.587428 Client connects to port 36771 01:33:33.587811 ====> Client established passive DATA connection on port 36771 01:33:33.593208 < "RETR empty_file.dat" 01:33:33.595534 > "150 Binary data connection for empty_file.dat (0 bytes).[CR][LF]" 01:33:33.595720 > "" 01:33:33.596155 =====> Closing passive DATA connection... 01:33:33.596313 Server disconnects passive DATA connection 01:33:33.600752 Server disconnected passive DATA connection 01:33:33.600990 DATA sockfilt for passive data channel quits (pid 271472) 01:33:33.607166 DATA sockfilt for passive data channel quit (pid 271472) 01:33:33.607397 =====> Closed passive DATA connection 01:33:33.607693 > "226 File transfer complete[CR][LF]" 01:33:33.655762 < "EPSV" 01:33:33.656057 ====> Passive DATA channel requested by client 01:33:33.656196 DATA sockfilt for passive data channel starting... 01:33:33.693790 DATA sockfilt for passive data channel started (pid 271475) 01:33:33.695088 DATA sockfilt for passive data channel listens on port 41707 01:33:33.695802 > "229 Entering Passive Mode (|||41707|)[CR][LF]" 01:33:33.695962 Client has been notified that DATA conn will be accepted on port 41707 01:33:33.710759 Client connects to port 41707 01:33:33.711155 ====> Client established passive DATA connection on port 41707 01:33:33.716259 < "RETR file.txt" 01:33:33.716956 > "150 Binary data connection for file.txt (35 bytes).[CR][LF]" 01:33:33.717114 > "" 01:33:33.717528 =====> Closing passive DATA connection... 01:33:33.717687 Server disconnects passive DATA connection 01:33:33.724075 Server disconnected passive DATA connection 01:33:33.724330 DATA sockfilt for passive data channel quits (pid 271475) 01:33:33.730099 DATA sockfilt for passive data channel quit (pid 271475) 01:33:33.730335 =====> Closed passive DATA connection 01:33:33.730624 > "226 File transfer complete[CR][LF]" 01:33:33.783687 < "EPSV" 01:33:33.784005 ====> Passive DATA channel requested by client 01:33:33.784177 DATA sockfilt for passive data channel starting... 01:33:33.828289 DATA sockfilt for passive data channel started (pid 271478) 01:33:33.829500 DATA sockfilt for passive data channel listens on port 43521 01:33:33.829829 > "229 Entering Passive Mode (|||43521|)[CR][LF]" 01:33:33.829989 Client has been notified that DATA conn will be accepted on port 43521 01:33:33.840755 Client connects to port 43521 01:33:33.841152 ====> Client established passive DATA connection on port 43521 01:33:33.844108 < "RETR someothertext.txt" 01:33:33.844926 > "150 Binary data connection for someothertext.txt (47 bytes).[CR][LF]" 01:33:33.845093 > "" 01:33:33.845514 =====> Closing passive DATA connection... 01:33:33.845676 Server disconnects passive DATA connection 01:33:33.849361 Server disconnected passive DATA connection 01:33:33.849577 DATA sockfilt for passive data channel quits (pid 271478) 01:33:33.857794 DATA sockfilt for passive data channel quit (pid 271478) 01:33:33.858163 =====> Closed passive DATA connection 01:33:33.858490 > "226 File transfer complete[CR][LF]" 01:33:34.215253 < "QUIT" 01:33:34.220785 > "221 bye bye baby[CR][LF]" 01:33:34.337020 MAIN sockfilt said DISC 01:33:34.337720 ====> Client disconnected 01:33:34.338025 Awaiting input 01:33:34.772188 ====> Client connect 01:33:34.772872 FTPD: Getting commands from log/1/server.cmd 01:33:34.773170 FTPD: run test case number: 575 01:33:34.773560 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:33:34.915353 < "USER anonymous" 01:33:34.920812 > "331 We are happy you popped in![CR][LF]" 01:33:34.950902 < "PASS ftp@example.com" 01:33:34.951274 > "230 Welcome you silly person[CR][LF]" 01:33:34.957635 < "PWD" 01:33:34.957957 > "257 "/" is current directory[CR][LF]" 01:33:34.969682 < "CWD fully_simulated" 01:33:34.970057 > "250 CWD command successful.[CR][LF]" 01:33:34.970330 enabled FTP list parser mode 01:33:34.974852 < "CWD UNIX" 01:33:34.975132 > "250 CWD command successful.[CR][LF]" 01:33:34.975349 enabled FTP list parser mode 01:33:34.980153 < "EPSV" 01:33:34.980372 ====> Passive DATA channel requested by client 01:33:34.980516 DATA sockfilt for passive data channel starting... 01:33:35.025456 DATA sockfilt for passive data channel started (pid 271487) 01:33:35.026783 DATA sockfilt for passive data channel listens on port 42305 01:33:35.027109 > "229 Entering Passive Mode (|||42305|)[CR][LF]" 01:33:35.027275 Client has been notified that DATA conn will be accepted on port 42305 01:33:35.035164 Client connects to port 42305 01:33:35.035583 ====> Client established passive DATA connection on port 42305 01:33:35.045154 < "TYPE A" 01:33:35.045785 > "200 I modify TYPE as you wanted[CR][LF]" 01:33:35.051083 < "LIST" 01:33:35.051632 > "150 here comes a directory[CR][LF]" 01:33:35.051801 pass LIST data on data connection 01:33:35.057089 =====> Closing passive DATA connection... 01:33:35.057267 Server disconnects passive DATA connection 01:33:35.065652 Server disconnected passive DATA connection 01:33:35.065919 DATA sockfilt for passive data channel quits (pid 271487) 01:33:35.072530 DATA sockfilt for passive data channel quit (pid 271487) 01:33:35.072720 =====> Closed passive DATA connection 01:33:35.073343 > "226 ASCII transfer complete[CR][LF]" 01:33:35.139788 < "EPSV" 01:33:35.140097 ====> Passive DATA channel requested by client 01:33:35.140240 DATA sockfilt for passive data channel starting... 01:33:35.181938 DATA sockfilt for passive data channel started (pid 271490) 01:33:35.183019 DATA sockfilt for passive data channel listens on port 35287 01:33:35.187482 > "229 Entering Passive Mode (|||35287|)[CR][LF]" 01:33:35.187727 Client has been notified that DATA conn will be accepted on port 35287 01:33:35.191052 Client connects to port 35287 01:33:35.191294 ====> Client established passive DATA connection on port 35287 01:33:35.196417 < "TYPE I" 01:33:35.196760 > "200 I modify TYPE as you wanted[CR][LF]" 01:33:35.200340 < "RETR chmod1" 01:33:35.207482 > "150 Binary data connection for chmod1 (38 bytes).[CR][LF]" 01:33:35.207740 > "" 01:33:35.208193 =====> Closing passive DATA connection... 01:33:35.208350 Server disconnects passive DATA connection 01:33:35.209124 Server disconnected passive DATA connection 01:33:35.209288 DATA sockfilt for passive data channel quits (pid 271490) 01:33:35.212441 DATA sockfilt for passive data channel quit (pid 271490) 01:33:35.212603 =====> Closed passive DATA connection 01:33:35.213111 > "226 File transfer complete[CR][LF]" 01:33:35.273103 < "EPSV" 01:33:35.273412 ====> Passive DATA channel requested by client 01:33:35.273553 DATA sockfilt for passive data channel starting... 01:33:35.312402 DATA sockfilt for passive data channel started (pid 271493) 01:33:35.313646 DATA sockfilt for passive data channel listens on port 43801 01:33:35.313984 > "229 Entering Passive Mode (|||43801|)[CR][LF]" 01:33:35.314221 Client has been notified that DATA conn will be accepted on port 43801 01:33:35.322176 Client connects to port 43801 01:33:35.322493 ====> Client established passive DATA connection on port 43801 01:33:35.327880 < "RETR chmod2" 01:33:35.329458 > "150 Binary data connection for chmod2 (38 bytes).[CR][LF]" 01:33:35.329627 > "" 01:33:35.330073 =====> Closing passive DATA connection... 01:33:35.330231 Server disconnects passive DATA connection 01:33:35.334077 Server disconnected passive DATA connection 01:33:35.334275 DATA sockfilt for passive data channel quits (pid 271493) 01:33:35.337511 DATA sockfilt for passive data channel quit (pid 271493) 01:33:35.337683 =====> Closed passive DATA connection 01:33:35.337943 > "226 File transfer complete[CR][LF]" 01:33:35.393642 < "EPSV" 01:33:35.393949 ====> Passive DATA channel requested by client 01:33:35.394102 DATA sockfilt for passive data channel starting... 01:33:35.459729 DATA sockfilt for passive data channel started (pid 271496) 01:33:35.461166 DATA sockfilt for passive data channel listens on port 45119 01:33:35.461506 > "229 Entering Passive Mode (|||45119|)[CR][LF]" 01:33:35.461670 Client has been notified that DATA conn will be accepted on port 45119 01:33:35.469579 Client connects to port 45119 01:33:35.469882 ====> Client established passive DATA connection on port 45119 01:33:35.476459 < "RETR chmod3" 01:33:35.477080 > "150 Binary data connection for chmod3 (38 bytes).[CR][LF]" 01:33:35.477248 > "" 01:33:35.477686 =====> Closing passive DATA connection... 01:33:35.477840 Server disconnects passive DATA connection 01:33:35.479693 Server disconnected passive DATA connection 01:33:35.479866 DATA sockfilt for passive data channel quits (pid 271496) 01:33:35.490093 DATA sockfilt for passive data channel quit (pid 271496) 01:33:35.490370 =====> Closed passive DATA connection 01:33:35.490661 > "226 File transfer complete[CR][LF]" 01:33:35.540502 < "EPSV" 01:33:35.540808 ====> Passive DATA channel requested by client 01:33:35.540953 DATA sockfilt for passive data channel starting... 01:33:35.585729 DATA sockfilt for passive data channel started (pid 271499) 01:33:35.586953 DATA sockfilt for passive data channel listens on port 43713 01:33:35.587290 > "229 Entering Passive Mode (|||43713|)[CR][LF]" 01:33:35.587468 Client has been notified that DATA conn will be accepted on port 43713 01:33:35.595512 Client connects to port 43713 01:33:35.595841 ====> Client established passive DATA connection on port 43713 01:33:35.601368 < "RETR empty_file.dat" 01:33:35.602820 > "150 Binary data connection for empty_file.dat (0 bytes).[CR][LF]" 01:33:35.602985 > "" 01:33:35.603411 =====> Closing passive DATA connection... 01:33:35.603565 Server disconnects passive DATA connection 01:33:35.604578 Server disconnected passive DATA connection 01:33:35.604758 DATA sockfilt for passive data channel quits (pid 271499) 01:33:35.608089 DATA sockfilt for passive data channel quit (pid 271499) 01:33:35.608260 =====> Closed passive DATA connection 01:33:35.608674 > "226 File transfer complete[CR][LF]" 01:33:35.668287 < "EPSV" 01:33:35.668636 ====> Passive DATA channel requested by client 01:33:35.668782 DATA sockfilt for passive data channel starting... 01:33:35.715578 DATA sockfilt for passive data channel started (pid 271505) 01:33:35.716830 DATA sockfilt for passive data channel listens on port 36201 01:33:35.717148 > "229 Entering Passive Mode (|||36201|)[CR][LF]" 01:33:35.717312 Client has been notified that DATA conn will be accepted on port 36201 01:33:35.725223 Client connects to port 36201 01:33:35.725602 ====> Client established passive DATA connection on port 36201 01:33:35.731207 < "RETR file.txt" 01:33:35.732916 > "150 Binary data connection for file.txt (35 bytes).[CR][LF]" 01:33:35.733083 > "" 01:33:35.733518 =====> Closing passive DATA connection... 01:33:35.733671 Server disconnects passive DATA connection 01:33:35.737421 Server disconnected passive DATA connection 01:33:35.737622 DATA sockfilt for passive data channel quits (pid 271505) 01:33:35.740633 DATA sockfilt for passive data channel quit (pid 271505) 01:33:35.740881 =====> Closed passive DATA connection 01:33:35.741152 > "226 File transfer complete[CR][LF]" 01:33:35.798583 < "EPSV" 01:33:35.798886 ====> Passive DATA channel requested by client 01:33:35.799026 DATA sockfilt for passive data channel starting... 01:33:35.839576 DATA sockfilt for passive data channel started (pid 271508) 01:33:35.840844 DATA sockfilt for passive data channel listens on port 42975 01:33:35.847482 > "229 Entering Passive Mode (|||42975|)[CR][LF]" 01:33:35.847701 Client has been notified that DATA conn will be accepted on port 42975 01:33:35.849048 Client connects to port 42975 01:33:35.849243 ====> Client established passive DATA connection on port 42975 01:33:35.854514 < "RETR someothertext.txt" 01:33:35.855281 > "150 Binary data connection for someothertext.txt (47 bytes).[CR][LF]" 01:33:35.855438 > "" 01:33:35.855853 =====> Closing passive DATA connection... 01:33:35.856001 Server disconnects passive DATA connection 01:33:35.857659 Server disconnected passive DATA connection 01:33:35.857822 DATA sockfilt for passive data channel quits (pid 271508) 01:33:35.861003 DATA sockfilt for passive data channel quit (pid 271508) 01:33:35.861163 =====> Closed passive DATA connection 01:33:35.861410 > "226 File transfer complete[CR][LF]" 01:33:35.941289 < "QUIT" 01:33:35.941686 > "221 bye bye baby[CR][LF]" 01:33:35.950292 MAIN sockfilt said DISC 01:33:35.950655 ====> Client disconnected 01:33:35.950936 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:32:41.644207 ====> Client connect 01:32:41.645836 Received DATA (on stdin) 01:32:41.645933 > 160 bytes data, server => client 01:32:41.646055 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:32:41.646168 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:32:41.646263 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:32:41.652216 < 16 bytes data, client => server 01:32:41.652327 'USER anonymous\r\n' 01:32:41.653494 Received DATA (on stdin) 01:32:41.653571 > 33 bytes data, server => client 01:32:41.653675 '331 We are happy you popped in!\r\n' 01:32:41.653925 < 22 bytes data, client => server 01:32:41.654002 'PASS ftp@example.com\r\n' 01:32:41.654764 Received DATA (on stdin) 01:32:41.654830 > 30 bytes data, server => client 01:32:41.655814 '230 Welcome you silly person\r\n' 01:32:41.656052 < 5 bytes data, client => server 01:32:41.656114 'PWD\r\n' 01:32:41.657042 Received DATA (on stdin) 01:32:41.657104 > 30 bytes data, server => client 01:32:41.657195 '257 "/" is current directory\r\n' 01:32:41.658469 < 6 bytes data, client => server 01:32:41.658530 'EPSV\r\n' 01:32:41.699768 Received DATA (on stdin) 01:32:41.699901 > 39 bytes data, server => client 01:32:41.699988 '229 Entering Passive Mode (|||40943|)\r\n' 01:32:41.702862 < 8 bytes data, client => server 01:32:41.702938 'TYPE I\r\n' 01:32:41.703890 Received DATA (on stdin) 01:32:41.703953 > 33 bytes data, server => client 01:32:41.704029 '200 I modify TYPE as you wanted\r\n' 01:32:41.704365 < 21 bytes data, client => server 01:32:41.704435 'SIZE verifiedserver\r\n' 01:32:41.705061 Received DATA (on stdin) 01:32:41.705122 > 8 bytes data, server => client 01:32:41.705407 '213 18\r\n' 01:32:41.705915 < 21 bytes data, client => server 01:32:41.705991 'RETR verifiedserver\r\n' 01:32:41.706605 Received DATA (on stdin) 01:32:41.706666 > 29 bytes data, server => client 01:32:41.706827 '150 Binary junk (18 bytes).\r\n' 01:32:41.718323 Received DATA (on stdin) 01:32:41.718427 > 28 bytes data, server => client 01:32:41.718503 '226 File transfer complete\r\n' 01:32:41.759037 < 6 bytes data, client => server 01:32:41.759184 'QUIT\r\n' 01:32:41.760227 Received DATA (on stdin) 01:32:41.760292 > 18 bytes data, server => client 01:32:41.760552 '221 bye bye baby\r\n' 01:32:41.761067 ====> Client disconnect 01:32:41.763374 Received ACKD (on stdin) 01:33:27.221235 ====> Client connect 01:33:27.225652 Received DATA (on stdin) 01:33:27.225761 > 160 bytes data, server => client 01:33:27.225873 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:33:27.225977 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:33:27.226071 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:33:28.301392 < 16 bytes data, client => server 01:33:28.301599 'USER anonymous\r\n' 01:33:28.305648 Received DATA (on stdin) 01:33:28.305735 > 33 bytes data, server => client 01:33:28.305824 '331 We are happy you popped in!\r\n' 01:33:28.389843 < 22 bytes data, client => server 01:33:28.390006 'PASS ftp@example.com\r\n' 01:33:28.391233 Received DATA (on stdin) 01:33:28.391311 > 30 bytes data, server => client 01:33:28.396006 '230 Welcome you silly person\r\n' 01:33:28.464638 < 5 bytes data, client => server 01:33:28.464789 'PWD\r\n' 01:33:28.466519 Received DATA (on stdin) 01:33:28.466610 > 30 bytes data, server => client 01:33:28.466700 '257 "/" is current directory\r\n' 01:33:28.688066 < 21 bytes data, client => server 01:33:28.688231 'CWD fully_simulated\r\n' 01:33:28.690087 Received DATA (on stdin) 01:33:28.690161 > 29 bytes data, server => client 01:33:28.690238 '250 CWD command successful.\r\n' 01:33:28.734543 < 10 bytes data, client => server 01:33:28.734692 'CWD UNIX\r\n' 01:33:28.741939 Received DATA (on stdin) 01:33:28.742029 > 29 bytes data, server => client 01:33:28.742110 '250 CWD command successful.\r\n' 01:33:28.800534 < 6 bytes data, client => server 01:33:28.800650 'EPSV\r\n' 01:33:28.860267 Received DATA (on stdin) 01:33:28.860412 > 39 bytes data, server => client 01:33:28.860500 '229 Entering Passive Mode (|||37005|)\r\n' 01:33:29.137650 < 8 bytes data, client => server 01:33:29.137842 'TYPE A\r\n' 01:33:29.140245 Received DATA (on stdin) 01:33:29.140327 > 33 bytes data, server => client 01:33:29.140432 '200 I modify TYPE as you wanted\r\n' 01:33:29.189790 < 6 bytes data, client => server 01:33:29.189964 'LIST\r\n' 01:33:29.192682 Received DATA (on stdin) 01:33:29.192771 > 28 bytes data, server => client 01:33:29.192859 '150 here comes a directory\r\n' 01:33:29.205099 Received DATA (on stdin) 01:33:29.205212 > 29 bytes data, server => client 01:33:29.205320 '226 ASCII transfer complete\r\n' 01:33:32.123816 < 6 bytes data, client => server 01:33:32.123996 'EPSV\r\n' 01:33:32.213735 Received DATA (on stdin) 01:33:32.213928 > 39 bytes data, server => client 01:33:32.214028 '229 Entering Passive Mode (|||46375|)\r\n' 01:33:32.272539 < 8 bytes data, client => server 01:33:32.272684 'TYPE I\r\n' 01:33:32.275931 Received DATA (on stdin) 01:33:32.276021 > 33 bytes data, server => client 01:33:32.276108 '200 I modify TYPE as you wanted\r\n' 01:33:32.308024 < 13 bytes data, client => server 01:33:32.308170 'RETR chmod1\r\n' 01:33:32.311885 Received DATA (on stdin) 01:33:32.311970 > 51 bytes data, server => client 01:33:32.312068 '150 Binary data connection for chmod1 (38 bytes).\r\n' 01:33:32.312147 Received DATA (on stdin) 01:33:32.312204 > 0 bytes data, server => client 01:33:32.312328 got 0 reading from stdin 01:33:32.316210 Received DATA (on stdin) 01:33:32.316292 > 28 bytes data, server => client 01:33:32.316395 '226 File transfer complete\r\n' 01:33:32.539873 < 6 bytes data, client => server 01:33:32.540012 'EPSV\r\n' 01:33:32.594836 Received DATA (on stdin) 01:33:32.594986 > 39 bytes data, server => client 01:33:32.595084 '229 Entering Passive Mode (|||41589|)\r\n' 01:33:32.632367 < 13 bytes data, client => server 01:33:32.632581 'RETR chmod2\r\n' 01:33:32.635504 Received DATA (on stdin) 01:33:32.635579 > 51 bytes data, server => client 01:33:32.635692 '150 Binary data connection for chmod2 (38 bytes).\r\n' 01:33:32.635814 Received DATA (on stdin) 01:33:32.635885 > 0 bytes data, server => client 01:33:32.635961 got 0 reading from stdin 01:33:32.646540 Received DATA (on stdin) 01:33:32.646668 > 28 bytes data, server => client 01:33:32.646755 '226 File transfer complete\r\n' 01:33:32.727814 < 6 bytes data, client => server 01:33:32.727955 'EPSV\r\n' 01:33:32.774044 Received DATA (on stdin) 01:33:32.774198 > 39 bytes data, server => client 01:33:32.774295 '229 Entering Passive Mode (|||42283|)\r\n' 01:33:32.788991 < 13 bytes data, client => server 01:33:32.789128 'RETR chmod3\r\n' 01:33:32.790143 Received DATA (on stdin) 01:33:32.790216 > 51 bytes data, server => client 01:33:32.790312 '150 Binary data connection for chmod3 (38 bytes).\r\n' 01:33:32.790397 Received DATA (on stdin) 01:33:32.790461 > 0 bytes data, server => client 01:33:32.790525 got 0 reading from stdin 01:33:32.800842 Received DATA (on stdin) 01:33:32.800975 > 28 bytes data, server => client 01:33:32.801061 '226 File transfer complete\r\n' 01:33:32.871987 < 6 bytes data, client => server 01:33:32.872137 'EPSV\r\n' 01:33:32.924507 Received DATA (on stdin) 01:33:32.924658 > 39 bytes data, server => client 01:33:32.924760 '229 Entering Passive Mode (|||42309|)\r\n' 01:33:32.941451 < 21 bytes data, client => server 01:33:32.941597 'RETR empty_file.dat\r\n' 01:33:32.945092 Received DATA (on stdin) 01:33:32.945182 > 58 bytes data, server => client 01:33:32.945291 '150 Binary data connection for empty_file.dat (0 bytes).\r\n' 01:33:32.945390 Received DATA (on stdin) 01:33:32.945461 > 0 bytes data, server => client 01:33:32.945525 got 0 reading from stdin 01:33:32.953495 Received DATA (on stdin) 01:33:32.953621 > 28 bytes data, server => client 01:33:32.953710 '226 File transfer complete\r\n' 01:33:33.006081 < 6 bytes data, client => server 01:33:33.006245 'EPSV\r\n' 01:33:33.054888 Received DATA (on stdin) 01:33:33.055025 > 39 bytes data, server => client 01:33:33.055120 '229 Entering Passive Mode (|||33279|)\r\n' 01:33:33.072078 < 15 bytes data, client => server 01:33:33.072209 'RETR file.txt\r\n' 01:33:33.072312 Received DATA (on stdin) 01:33:33.072382 > 53 bytes data, server => client 01:33:33.072479 '150 Binary data connection for file.txt (35 bytes).\r\n' 01:33:33.072565 Received DATA (on stdin) 01:33:33.072628 > 0 bytes data, server => client 01:33:33.072691 got 0 reading from stdin 01:33:33.076956 Received DATA (on stdin) 01:33:33.077052 > 28 bytes data, server => client 01:33:33.077422 '226 File transfer complete\r\n' 01:33:33.139015 < 6 bytes data, client => server 01:33:33.139178 'EPSV\r\n' 01:33:33.185750 Received DATA (on stdin) 01:33:33.185896 > 39 bytes data, server => client 01:33:33.185991 '229 Entering Passive Mode (|||40091|)\r\n' 01:33:33.199925 < 24 bytes data, client => server 01:33:33.200059 'RETR someothertext.txt\r\n' 01:33:33.204555 Received DATA (on stdin) 01:33:33.204641 > 62 bytes data, server => client 01:33:33.204739 '150 Binary data connection for someothertext.txt (47 bytes).\r' 01:33:33.204799 '\n' 01:33:33.204895 Received DATA (on stdin) 01:33:33.204958 > 0 bytes data, server => client 01:33:33.205020 got 0 reading from stdin 01:33:33.212839 Received DATA (on stdin) 01:33:33.212948 > 28 bytes data, server => client 01:33:33.213043 '226 File transfer complete\r\n' 01:33:33.580813 < 6 bytes data, client => server 01:33:33.580990 'EPSV\r\n' 01:33:33.634115 Received DATA (on stdin) 01:33:33.634254 > 39 bytes data, server => client 01:33:33.634394 '229 Entering Passive Mode (|||41979|)\r\n' 01:33:33.654108 < 8 bytes data, client => server 01:33:33.654242 'TYPE A\r\n' 01:33:33.654322 Received DATA (on stdin) 01:33:33.654386 > 33 bytes data, server => client 01:33:33.654469 '200 I modify TYPE as you wanted\r\n' 01:33:33.658992 < 6 bytes data, client => server 01:33:33.659119 'LIST\r\n' 01:33:33.659569 Received DATA (on stdin) 01:33:33.659649 > 28 bytes data, server => client 01:33:33.659743 '150 here comes a directory\r\n' 01:33:33.682313 Received DATA (on stdin) 01:33:33.682457 > 29 bytes data, server => client 01:33:33.682551 '226 ASCII transfer complete\r\n' 01:33:33.747053 < 6 bytes data, client => server 01:33:33.747233 'EPSV\r\n' 01:33:33.797646 Received DATA (on stdin) 01:33:33.797808 > 39 bytes data, server => client 01:33:33.797913 '229 Entering Passive Mode (|||33679|)\r\n' 01:33:33.813000 < 8 bytes data, client => server 01:33:33.813133 'TYPE I\r\n' 01:33:33.813215 Received DATA (on stdin) 01:33:33.813283 > 33 bytes data, server => client 01:33:33.813370 '200 I modify TYPE as you wanted\r\n' 01:33:33.817137 < 13 bytes data, client => server 01:33:33.817238 'RETR chmod1\r\n' 01:33:33.818514 Received DATA (on stdin) 01:33:33.818597 > 51 bytes data, server => client 01:33:33.818728 '150 Binary data connection for chmod1 (38 bytes).\r\n' 01:33:33.823546 Received DATA (on stdin) 01:33:33.823646 > 0 bytes data, server => client 01:33:33.823719 got 0 reading from stdin 01:33:33.832443 Received DATA (on stdin) 01:33:33.832565 > 28 bytes data, server => client 01:33:33.832677 '226 File transfer complete\r\n' 01:33:33.883554 < 6 bytes data, client => server 01:33:33.883713 'EPSV\r\n' 01:33:33.930105 Received DATA (on stdin) 01:33:33.930247 > 39 bytes data, server => client 01:33:33.930364 '229 Entering Passive Mode (|||44297|)\r\n' 01:33:33.944186 < 13 bytes data, client => server 01:33:33.944325 'RETR chmod2\r\n' 01:33:33.949495 Received DATA (on stdin) 01:33:33.949593 > 51 bytes data, server => client 01:33:33.949689 '150 Binary data connection for chmod2 (38 bytes).\r\n' 01:33:33.949773 Received DATA (on stdin) 01:33:33.949835 > 0 bytes data, server => client 01:33:33.949894 got 0 reading from stdin 01:33:33.956328 Received DATA (on stdin) 01:33:33.956447 > 28 bytes data, server => client 01:33:33.956565 '226 File transfer complete\r\n' 01:33:34.013262 < 6 bytes data, client => server 01:33:34.013417 'EPSV\r\n' 01:33:34.060282 Received DATA (on stdin) 01:33:34.060424 > 39 bytes data, server => client 01:33:34.060542 '229 Entering Passive Mode (|||46595|)\r\n' 01:33:34.078973 < 13 bytes data, client => server 01:33:34.079126 'RETR chmod3\r\n' 01:33:34.079218 Received DATA (on stdin) 01:33:34.079287 > 51 bytes data, server => client 01:33:34.079399 '150 Binary data connection for chmod3 (38 bytes).\r\n' 01:33:34.079481 Received DATA (on stdin) 01:33:34.079543 > 0 bytes data, server => client 01:33:34.079602 got 0 reading from stdin 01:33:34.089982 Received DATA (on stdin) 01:33:34.090097 > 28 bytes data, server => client 01:33:34.090184 '226 File transfer complete\r\n' 01:33:34.143653 < 6 bytes data, client => server 01:33:34.143810 'EPSV\r\n' 01:33:34.190572 Received DATA (on stdin) 01:33:34.190707 > 39 bytes data, server => client 01:33:34.190797 '229 Entering Passive Mode (|||36771|)\r\n' 01:33:34.203974 < 21 bytes data, client => server 01:33:34.204108 'RETR empty_file.dat\r\n' 01:33:34.205467 Received DATA (on stdin) 01:33:34.205548 > 58 bytes data, server => client 01:33:34.206719 '150 Binary data connection for empty_file.dat (0 bytes).\r\n' 01:33:34.206864 Received DATA (on stdin) 01:33:34.206931 > 0 bytes data, server => client 01:33:34.206990 got 0 reading from stdin 01:33:34.219509 Received DATA (on stdin) 01:33:34.219627 > 28 bytes data, server => client 01:33:34.219707 '226 File transfer complete\r\n' 01:33:34.266393 < 6 bytes data, client => server 01:33:34.266533 'EPSV\r\n' 01:33:34.306937 Received DATA (on stdin) 01:33:34.307072 > 39 bytes data, server => client 01:33:34.307180 '229 Entering Passive Mode (|||41707|)\r\n' 01:33:34.325775 < 15 bytes data, client => server 01:33:34.325907 'RETR file.txt\r\n' 01:33:34.330622 Received DATA (on stdin) 01:33:34.330710 > 53 bytes data, server => client 01:33:34.330801 '150 Binary data connection for file.txt (35 bytes).\r\n' 01:33:34.330881 Received DATA (on stdin) 01:33:34.330938 > 0 bytes data, server => client 01:33:34.330992 got 0 reading from stdin 01:33:34.342450 Received DATA (on stdin) 01:33:34.342559 > 28 bytes data, server => client 01:33:34.342637 '226 File transfer complete\r\n' 01:33:34.394227 < 6 bytes data, client => server 01:33:34.394377 'EPSV\r\n' 01:33:34.441801 Received DATA (on stdin) 01:33:34.441938 > 39 bytes data, server => client 01:33:34.442027 '229 Entering Passive Mode (|||43521|)\r\n' 01:33:34.458842 < 24 bytes data, client => server 01:33:34.459021 'RETR someothertext.txt\r\n' 01:33:34.459105 Received DATA (on stdin) 01:33:34.459171 > 62 bytes data, server => client 01:33:34.459283 '150 Binary data connection for someothertext.txt (47 bytes).\r' 01:33:34.459345 '\n' 01:33:34.459439 Received DATA (on stdin) 01:33:34.459505 > 0 bytes data, server => client 01:33:34.459568 got 0 reading from stdin 01:33:34.470324 Received DATA (on stdin) 01:33:34.470445 > 28 bytes data, server => client 01:33:34.470528 '226 File transfer complete\r\n' 01:33:34.825690 < 6 bytes data, client => server 01:33:34.825879 'QUIT\r\n' 01:33:34.827206 Received DATA (on stdin) 01:33:34.827284 > 18 bytes data, server => client 01:33:34.832631 '221 bye bye baby\r\n' 01:33:34.948294 ====> Client disconnect 01:33:34.949145 Received ACKD (on stdin) 01:33:35.383501 ====> Client connect 01:33:35.386224 Received DATA (on stdin) 01:33:35.386310 > 160 bytes data, server => client 01:33:35.386411 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:33:35.386501 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:33:35.386581 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:33:35.525847 < 16 bytes data, client => server 01:33:35.526007 'USER anonymous\r\n' 01:33:35.527288 Received DATA (on stdin) 01:33:35.527359 > 33 bytes data, server => client 01:33:35.532670 '331 We are happy you popped in!\r\n' 01:33:35.561543 < 22 bytes data, client => server 01:33:35.561687 'PASS ftp@example.com\r\n' 01:33:35.563068 Received DATA (on stdin) 01:33:35.563143 > 30 bytes data, server => client 01:33:35.563226 '230 Welcome you silly person\r\n' 01:33:35.568611 < 5 bytes data, client => server 01:33:35.568696 'PWD\r\n' 01:33:35.569735 Received DATA (on stdin) 01:33:35.569808 > 30 bytes data, server => client 01:33:35.569891 '257 "/" is current directory\r\n' 01:33:35.580317 < 21 bytes data, client => server 01:33:35.580461 'CWD fully_simulated\r\n' 01:33:35.582129 Received DATA (on stdin) 01:33:35.582201 > 29 bytes data, server => client 01:33:35.582292 '250 CWD command successful.\r\n' 01:33:35.585873 < 10 bytes data, client => server 01:33:35.585956 'CWD UNIX\r\n' 01:33:35.588707 Received DATA (on stdin) 01:33:35.588781 > 29 bytes data, server => client 01:33:35.588863 '250 CWD command successful.\r\n' 01:33:35.591183 < 6 bytes data, client => server 01:33:35.591255 'EPSV\r\n' 01:33:35.639110 Received DATA (on stdin) 01:33:35.639256 > 39 bytes data, server => client 01:33:35.639349 '229 Entering Passive Mode (|||42305|)\r\n' 01:33:35.655806 < 8 bytes data, client => server 01:33:35.655944 'TYPE A\r\n' 01:33:35.657056 Received DATA (on stdin) 01:33:35.657125 > 33 bytes data, server => client 01:33:35.657227 '200 I modify TYPE as you wanted\r\n' 01:33:35.662063 < 6 bytes data, client => server 01:33:35.662154 'LIST\r\n' 01:33:35.662916 Received DATA (on stdin) 01:33:35.662986 > 28 bytes data, server => client 01:33:35.663082 '150 here comes a directory\r\n' 01:33:35.684544 Received DATA (on stdin) 01:33:35.684667 > 29 bytes data, server => client 01:33:35.684772 '226 ASCII transfer complete\r\n' 01:33:35.750271 < 6 bytes data, client => server 01:33:35.750467 'EPSV\r\n' 01:33:35.794867 Received DATA (on stdin) 01:33:35.795010 > 39 bytes data, server => client 01:33:35.795122 '229 Entering Passive Mode (|||35287|)\r\n' 01:33:35.807399 < 8 bytes data, client => server 01:33:35.807542 'TYPE I\r\n' 01:33:35.808560 Received DATA (on stdin) 01:33:35.808633 > 33 bytes data, server => client 01:33:35.808719 '200 I modify TYPE as you wanted\r\n' 01:33:35.811357 < 13 bytes data, client => server 01:33:35.811439 'RETR chmod1\r\n' 01:33:35.812458 Received DATA (on stdin) 01:33:35.812534 > 51 bytes data, server => client 01:33:35.813556 '150 Binary data connection for chmod1 (38 bytes).\r\n' 01:33:35.820121 Received DATA (on stdin) 01:33:35.820211 > 0 bytes data, server => client 01:33:35.820270 got 0 reading from stdin 01:33:35.824397 Received DATA (on stdin) 01:33:35.824474 > 28 bytes data, server => client 01:33:35.824572 '226 File transfer complete\r\n' 01:33:35.883600 < 6 bytes data, client => server 01:33:35.883757 'EPSV\r\n' 01:33:35.926037 Received DATA (on stdin) 01:33:35.926181 > 39 bytes data, server => client 01:33:35.926274 '229 Entering Passive Mode (|||43801|)\r\n' 01:33:35.938722 < 13 bytes data, client => server 01:33:35.938842 'RETR chmod2\r\n' 01:33:35.942264 Received DATA (on stdin) 01:33:35.942349 > 51 bytes data, server => client 01:33:35.942444 '150 Binary data connection for chmod2 (38 bytes).\r\n' 01:33:35.942520 Received DATA (on stdin) 01:33:35.942583 > 0 bytes data, server => client 01:33:35.942641 got 0 reading from stdin 01:33:35.949736 Received DATA (on stdin) 01:33:35.949826 > 28 bytes data, server => client 01:33:35.949903 '226 File transfer complete\r\n' 01:33:36.001822 < 6 bytes data, client => server 01:33:36.001980 'EPSV\r\n' 01:33:36.073493 Received DATA (on stdin) 01:33:36.073630 > 39 bytes data, server => client 01:33:36.073722 '229 Entering Passive Mode (|||45119|)\r\n' 01:33:36.086046 < 13 bytes data, client => server 01:33:36.086167 'RETR chmod3\r\n' 01:33:36.090813 Received DATA (on stdin) 01:33:36.090891 > 51 bytes data, server => client 01:33:36.090985 '150 Binary data connection for chmod3 (38 bytes).\r\n' 01:33:36.091066 Received DATA (on stdin) 01:33:36.091127 > 0 bytes data, server => client 01:33:36.091185 got 0 reading from stdin 01:33:36.102481 Received DATA (on stdin) 01:33:36.102592 > 28 bytes data, server => client 01:33:36.102673 '226 File transfer complete\r\n' 01:33:36.151096 < 6 bytes data, client => server 01:33:36.151237 'EPSV\r\n' 01:33:36.199305 Received DATA (on stdin) 01:33:36.199443 > 39 bytes data, server => client 01:33:36.199534 '229 Entering Passive Mode (|||43713|)\r\n' 01:33:36.212173 < 21 bytes data, client => server 01:33:36.212314 'RETR empty_file.dat\r\n' 01:33:36.215328 Received DATA (on stdin) 01:33:36.215400 > 58 bytes data, server => client 01:33:36.215501 '150 Binary data connection for empty_file.dat (0 bytes).\r\n' 01:33:36.215600 Received DATA (on stdin) 01:33:36.215685 > 0 bytes data, server => client 01:33:36.215746 got 0 reading from stdin 01:33:36.220058 Received DATA (on stdin) 01:33:36.220137 > 28 bytes data, server => client 01:33:36.220472 '226 File transfer complete\r\n' 01:33:36.277410 < 6 bytes data, client => server 01:33:36.277559 'EPSV\r\n' 01:33:36.329181 Received DATA (on stdin) 01:33:36.329321 > 39 bytes data, server => client 01:33:36.329410 '229 Entering Passive Mode (|||36201|)\r\n' 01:33:36.341967 < 15 bytes data, client => server 01:33:36.342107 'RETR file.txt\r\n' 01:33:36.343947 Received DATA (on stdin) 01:33:36.344020 > 53 bytes data, server => client 01:33:36.344132 '150 Binary data connection for file.txt (35 bytes).\r\n' 01:33:36.344243 Received DATA (on stdin) 01:33:36.344304 > 0 bytes data, server => client 01:33:36.344360 got 0 reading from stdin 01:33:36.352695 Received DATA (on stdin) 01:33:36.352805 > 28 bytes data, server => client 01:33:36.352882 '226 File transfer complete\r\n' 01:33:36.409340 < 6 bytes data, client => server 01:33:36.409498 'EPSV\r\n' 01:33:36.452718 Received DATA (on stdin) 01:33:36.452860 > 39 bytes data, server => client 01:33:36.452988 '229 Entering Passive Mode (|||42975|)\r\n' 01:33:36.465397 < 24 bytes data, client => server 01:33:36.465514 'RETR someothertext.txt\r\n' 01:33:36.467756 Received DATA (on stdin) 01:33:36.467827 > 62 bytes data, server => client 01:33:36.467923 '150 Binary data connection for someothertext.txt (47 bytes).\r' 01:33:36.467979 '\n' 01:33:36.468055 Received DATA (on stdin) 01:33:36.468112 > 0 bytes data, server => client 01:33:36.468168 got 0 reading from stdin 01:33:36.473182 Received DATA (on stdin) 01:33:36.473253 > 28 bytes data, server => client 01:33:36.473329 '226 File transfer complete\r\n' 01:33:36.551790 < 6 bytes data, client => server 01:33:36.551965 'QUIT\r\n' 01:33:36.555622 Received DATA (on stdin) 01:33:36.555708 > 18 bytes data, server => client 01:33:36.555779 '221 bye bye baby\r\n' 01:33:36.561764 ====> Client disconnect 01:33:36.562111 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:32:41.689233 Running IPv4 version 01:32:41.696289 Listening on port 40943 01:32:41.696708 Wrote pid 270196 to log/1/server/ftp_sockdata.pid 01:32:41.697412 Received PING (on stdin) 01:32:41.698392 Received PORT (on stdin) 01:32:41.702301 ====> Client connect 01:32:41.709499 Received DATA (on stdin) 01:32:41.709778 > 18 bytes data, server => client 01:32:41.710111 'WE ROOLZ: 202066\r\n' 01:32:41.712447 Received DISC (on stdin) 01:32:41.712566 ====> Client forcibly disconnected 01:32:41.713117 Received QUIT (on stdin) 01:32:41.713187 quits 01:32:41.713651 ============> sockfilt quits 01:33:28.849847 Running IPv4 version 01:33:28.856937 Listening on port 37005 01:33:28.857402 Wrote pid 271250 to log/1/server/ftp_sockdata.pid 01:33:28.858117 Received PING (on stdin) 01:33:28.858907 Received PORT (on stdin) 01:33:29.016323 ====> Client connect 01:33:29.193921 Received DATA (on stdin) 01:33:29.194302 > 64 bytes data, server => client 01:33:29.194681 'drwxrwxrwx 4 ftp-default ftp-default 20480 Apr 27 5:12 ' 01:33:29.194845 '.\r\n' 01:33:29.196186 Received DATA (on stdin) 01:33:29.196256 > 65 bytes data, server => client 01:33:29.196361 'drwxrwxrwx 4 ftp-default ftp-default 20480 Apr 23 3:12 ' 01:33:29.196426 '..\r\n' 01:33:29.196514 Received DATA (on stdin) 01:33:29.196579 > 69 bytes data, server => client 01:33:29.196687 '-r--r--r-- 1 ftp-default ftp-default 38 Jan 11 10:00 ' 01:33:29.196754 'chmod1\r\n' 01:33:29.196849 Received DATA (on stdin) 01:33:29.196915 > 69 bytes data, server => client 01:33:29.197018 '-rw-rw-rw- 1 ftp-default ftp-default 38 Feb 1 8:00 ' 01:33:29.197084 'chmod2\r\n' 01:33:29.197164 Received DATA (on stdin) 01:33:29.197228 > 69 bytes data, server => client 01:33:29.197340 '-rwxrwxrwx 1 ftp-default ftp-default 38 Feb 1 8:00 ' 01:33:29.197417 'chmod3\r\n' 01:33:29.197509 Received DATA (on stdin) 01:33:29.197576 > 69 bytes data, server => client 01:33:29.197680 'd--S--S--t 1 ftp-default ftp-default 4096 May 4 4:31 ' 01:33:29.197748 'chmod4\r\n' 01:33:29.197830 Received DATA (on stdin) 01:33:29.197894 > 69 bytes data, server => client 01:33:29.197996 'd--s--s--T 1 ftp-default ftp-default 4096 May 4 4:31 ' 01:33:29.198063 'chmod5\r\n' 01:33:29.198148 Received DATA (on stdin) 01:33:29.198216 > 77 bytes data, server => client 01:33:29.198324 '-rw-r--r-- 1 ftp-default ftp-default 0 Apr 27 11:01 ' 01:33:29.198400 'empty_file.dat\r\n' 01:33:29.198485 Received DATA (on stdin) 01:33:29.198549 > 71 bytes data, server => client 01:33:29.198650 '-rw-r--r-- 1 ftp-default ftp-default 35 Apr 27 11:01 ' 01:33:29.198717 'file.txt\r\n' 01:33:29.198797 Received DATA (on stdin) 01:33:29.198862 > 79 bytes data, server => client 01:33:29.198975 'lrwxrwxrwx 1 ftp-default ftp-default 0 Jan 6 4:42 ' 01:33:29.199051 'link -> file.txt\r\n' 01:33:29.199136 Received DATA (on stdin) 01:33:29.199205 > 98 bytes data, server => client 01:33:29.199307 'lrwxrwxrwx 1 ftp-default ftp-default 0 Jan 6 4:45 ' 01:33:29.199391 'link_absolute -> /data/ftp/file.txt\r\n' 01:33:29.199472 Received DATA (on stdin) 01:33:29.199536 > 68 bytes data, server => client 01:33:29.199636 'drwxrwxrwx 4 ftp-default ftp-default 4096 Jan 23 2:05 ' 01:33:29.199700 '.NeXT\r\n' 01:33:29.199781 Received DATA (on stdin) 01:33:29.199848 > 80 bytes data, server => client 01:33:29.199966 '-rw-r--r-- 1 ftp-default ftp-default 47 Apr 27 11:01 ' 01:33:29.200050 'someothertext.txt\r\n' 01:33:29.200142 Received DATA (on stdin) 01:33:29.200219 > 75 bytes data, server => client 01:33:29.200335 'drwxr-xrwx 2 ftp-default ftp-default 4096 Apr 23 3:12 ' 01:33:29.200415 'weirddir.txt\r\n' 01:33:29.200508 Received DISC (on stdin) 01:33:29.200636 ====> Client forcibly disconnected 01:33:29.201213 Received QUIT (on stdin) 01:33:29.201297 quits 01:33:29.201841 ============> sockfilt quits 01:33:31.190374 Running IPv4 version 01:33:31.205051 Listening on port 46375 01:33:31.209015 Wrote pid 271421 to log/1/server/ftp_sockdata.pid 01:33:31.209878 Received PING (on stdin) 01:33:31.210843 Received PORT (on stdin) 01:33:31.235427 ====> Client connect 01:33:31.310601 Received DATA (on stdin) 01:33:31.310982 > 38 bytes data, server => client 01:33:31.311348 'This file should have permissions 444\n' 01:33:31.311593 Received DISC (on stdin) 01:33:31.311709 ====> Client forcibly disconnected 01:33:31.312798 Received QUIT (on stdin) 01:33:31.312878 quits 01:33:31.313374 ============> sockfilt quits 01:33:31.574016 Running IPv4 version 01:33:31.588118 Listening on port 41589 01:33:31.588629 Wrote pid 271436 to log/1/server/ftp_sockdata.pid 01:33:31.592770 Received PING (on stdin) 01:33:31.593872 Received PORT (on stdin) 01:33:31.608928 ====> Client connect 01:33:31.634877 Received DATA (on stdin) 01:33:31.635289 > 38 bytes data, server => client 01:33:31.636854 'This file should have permissions 666\n' 01:33:31.637121 Received DISC (on stdin) 01:33:31.637246 ====> Client forcibly disconnected 01:33:31.642902 Received QUIT (on stdin) 01:33:31.643014 quits 01:33:31.643559 ============> sockfilt quits 01:33:32.762977 Running IPv4 version 01:33:32.770623 Listening on port 42283 01:33:32.771093 Wrote pid 271443 to log/1/server/ftp_sockdata.pid 01:33:32.771866 Received PING (on stdin) 01:33:32.773029 Received PORT (on stdin) 01:33:32.785753 ====> Client connect 01:33:32.792313 Received DATA (on stdin) 01:33:32.792658 > 38 bytes data, server => client 01:33:32.793047 'This file should have permissions 777\n' 01:33:32.793303 Received DISC (on stdin) 01:33:32.793425 ====> Client forcibly disconnected 01:33:32.797314 Received QUIT (on stdin) 01:33:32.797438 quits 01:33:32.797964 ============> sockfilt quits 01:33:32.908247 Running IPv4 version 01:33:32.915854 Listening on port 42309 01:33:32.916320 Wrote pid 271450 to log/1/server/ftp_sockdata.pid 01:33:32.922398 Received PING (on stdin) 01:33:32.923529 Received PORT (on stdin) 01:33:32.933840 ====> Client connect 01:33:32.943169 Received DATA (on stdin) 01:33:32.943531 > 0 bytes data, server => client 01:33:32.943737 got 0 reading from stdin 01:33:32.945605 Received DISC (on stdin) 01:33:32.945740 ====> Client forcibly disconnected 01:33:32.946622 Received QUIT (on stdin) 01:33:32.946707 quits 01:33:32.947222 ============> sockfilt quits 01:33:32.042831 Running IPv4 version 01:33:32.050988 Listening on port 33279 01:33:32.051480 Wrote pid 271454 to log/1/server/ftp_sockdata.pid 01:33:32.052291 Received PING (on stdin) 01:33:32.053435 Received PORT (on stdin) 01:33:32.062557 ====> Client connect 01:33:32.070016 Received DATA (on stdin) 01:33:32.070348 > 35 bytes data, server => client 01:33:32.070750 'This is content of file "file.txt"\n' 01:33:32.072771 Received DISC (on stdin) 01:33:32.072935 ====> Client forcibly disconnected 01:33:32.073470 Received QUIT (on stdin) 01:33:32.073546 quits 01:33:32.074050 ============> sockfilt quits 01:33:32.174227 Running IPv4 version 01:33:32.181994 Listening on port 40091 01:33:32.182519 Wrote pid 271457 to log/1/server/ftp_sockdata.pid 01:33:32.183291 Received PING (on stdin) 01:33:32.184327 Received PORT (on stdin) 01:33:32.195736 ====> Client connect 01:33:32.201511 Received DATA (on stdin) 01:33:32.201829 > 47 bytes data, server => client 01:33:32.205374 'Some junk ;-) This file does not really exist.\n' 01:33:32.205667 Received DISC (on stdin) 01:33:32.205798 ====> Client forcibly disconnected 01:33:32.208970 Received QUIT (on stdin) 01:33:32.209067 quits 01:33:32.209589 ============> sockfilt quits 01:33:33.622866 Running IPv4 version 01:33:33.630642 Listening on port 41979 01:33:33.631167 Wrote pid 271460 to log/1/server/ftp_sockdata.pid 01:33:33.632003 Received PING (on stdin) 01:33:33.633134 Received PORT (on stdin) 01:33:33.646313 ====> Client connect 01:33:33.665648 Received DATA (on stdin) 01:33:33.666023 > 64 bytes data, server => client 01:33:33.666371 'drwxrwxrwx 4 ftp-default ftp-default 20480 Apr 27 5:12 ' 01:33:33.666519 '.\r\n' 01:33:33.666798 Received DATA (on stdin) 01:33:33.666865 > 65 bytes data, server => client 01:33:33.666968 'drwxrwxrwx 4 ftp-default ftp-default 20480 Apr 23 3:12 ' 01:33:33.667034 '..\r\n' 01:33:33.667131 Received DATA (on stdin) 01:33:33.667190 > 69 bytes data, server => client 01:33:33.667289 '-r--r--r-- 1 ftp-default ftp-default 38 Jan 11 10:00 ' 01:33:33.667352 'chmod1\r\n' 01:33:33.667448 Received DATA (on stdin) 01:33:33.667512 > 69 bytes data, server => client 01:33:33.667614 '-rw-rw-rw- 1 ftp-default ftp-default 38 Feb 1 8:00 ' 01:33:33.667680 'chmod2\r\n' 01:33:33.667762 Received DATA (on stdin) 01:33:33.667826 > 69 bytes data, server => client 01:33:33.667927 '-rwxrwxrwx 1 ftp-default ftp-default 38 Feb 1 8:00 ' 01:33:33.667992 'chmod3\r\n' 01:33:33.668072 Received DATA (on stdin) 01:33:33.668131 > 69 bytes data, server => client 01:33:33.668226 'd--S--S--t 1 ftp-default ftp-default 4096 May 4 4:31 ' 01:33:33.668285 'chmod4\r\n' 01:33:33.668360 Received DATA (on stdin) 01:33:33.668420 > 69 bytes data, server => client 01:33:33.668519 'd--s--s--T 1 ftp-default ftp-default 4096 May 4 4:31 ' 01:33:33.668581 'chmod5\r\n' 01:33:33.668657 Received DATA (on stdin) 01:33:33.668716 > 77 bytes data, server => client 01:33:33.668811 '-rw-r--r-- 1 ftp-default ftp-default 0 Apr 27 11:01 ' 01:33:33.668876 'empty_file.dat\r\n' 01:33:33.672317 Received DATA (on stdin) 01:33:33.672398 > 71 bytes data, server => client 01:33:33.672500 '-rw-r--r-- 1 ftp-default ftp-default 35 Apr 27 11:01 ' 01:33:33.672567 'file.txt\r\n' 01:33:33.672658 Received DATA (on stdin) 01:33:33.672723 > 79 bytes data, server => client 01:33:33.672828 'lrwxrwxrwx 1 ftp-default ftp-default 0 Jan 6 4:42 ' 01:33:33.672900 'link -> file.txt\r\n' 01:33:33.672978 Received DATA (on stdin) 01:33:33.673037 > 98 bytes data, server => client 01:33:33.673137 'lrwxrwxrwx 1 ftp-default ftp-default 0 Jan 6 4:45 ' 01:33:33.673224 'link_absolute -> /data/ftp/file.txt\r\n' 01:33:33.673300 Received DATA (on stdin) 01:33:33.673360 > 68 bytes data, server => client 01:33:33.673460 'drwxrwxrwx 4 ftp-default ftp-default 4096 Jan 23 2:05 ' 01:33:33.673521 '.NeXT\r\n' 01:33:33.673598 Received DATA (on stdin) 01:33:33.673658 > 80 bytes data, server => client 01:33:33.673756 '-rw-r--r-- 1 ftp-default ftp-default 47 Apr 27 11:01 ' 01:33:33.673826 'someothertext.txt\r\n' 01:33:33.673904 Received DATA (on stdin) 01:33:33.673964 > 75 bytes data, server => client 01:33:33.674060 'drwxr-xrwx 2 ftp-default ftp-default 4096 Apr 23 3:12 ' 01:33:33.674125 'weirddir.txt\r\n' 01:33:33.674201 Received DISC (on stdin) 01:33:33.674321 ====> Client forcibly disconnected 01:33:33.675090 Received QUIT (on stdin) 01:33:33.675166 quits 01:33:33.675685 ============> sockfilt quits 01:33:33.786656 Running IPv4 version 01:33:33.794404 Listening on port 33679 01:33:33.794908 Wrote pid 271463 to log/1/server/ftp_sockdata.pid 01:33:33.795671 Received PING (on stdin) 01:33:33.796709 Received PORT (on stdin) 01:33:33.805917 ====> Client connect 01:33:33.818410 Received DATA (on stdin) 01:33:33.818821 > 38 bytes data, server => client 01:33:33.819213 'This file should have permissions 444\n' 01:33:33.823532 Received DISC (on stdin) 01:33:33.823703 ====> Client forcibly disconnected 01:33:33.824174 Received QUIT (on stdin) 01:33:33.824257 quits 01:33:33.824789 ============> sockfilt quits 01:33:33.919083 Running IPv4 version 01:33:33.926782 Listening on port 44297 01:33:33.927262 Wrote pid 271466 to log/1/server/ftp_sockdata.pid 01:33:33.928015 Received PING (on stdin) 01:33:33.929107 Received PORT (on stdin) 01:33:33.938561 ====> Client connect 01:33:33.945520 Received DATA (on stdin) 01:33:33.945850 > 38 bytes data, server => client 01:33:33.948907 'This file should have permissions 666\n' 01:33:33.949193 Received DISC (on stdin) 01:33:33.949311 ====> Client forcibly disconnected 01:33:33.952825 Received QUIT (on stdin) 01:33:33.952921 quits 01:33:33.953452 ============> sockfilt quits 01:33:33.049190 Running IPv4 version 01:33:33.056904 Listening on port 46595 01:33:33.057410 Wrote pid 271469 to log/1/server/ftp_sockdata.pid 01:33:33.058161 Received PING (on stdin) 01:33:33.059293 Received PORT (on stdin) 01:33:33.068936 ====> Client connect 01:33:33.077204 Received DATA (on stdin) 01:33:33.077536 > 38 bytes data, server => client 01:33:33.077910 'This file should have permissions 777\n' 01:33:33.078164 Received DISC (on stdin) 01:33:33.078280 ====> Client forcibly disconnected 01:33:33.078837 Received QUIT (on stdin) 01:33:33.078912 quits 01:33:33.082819 ============> sockfilt quits 01:33:33.179176 Running IPv4 version 01:33:33.186858 Listening on port 36771 01:33:33.187340 Wrote pid 271472 to log/1/server/ftp_sockdata.pid 01:33:33.188108 Received PING (on stdin) 01:33:33.189172 Received PORT (on stdin) 01:33:33.198303 ====> Client connect 01:33:33.205893 Received DATA (on stdin) 01:33:33.206217 > 0 bytes data, server => client 01:33:33.206412 got 0 reading from stdin 01:33:33.208974 Received DISC (on stdin) 01:33:33.209116 ====> Client forcibly disconnected 01:33:33.215645 Received QUIT (on stdin) 01:33:33.215761 quits 01:33:33.216301 ============> sockfilt quits 01:33:33.297070 Running IPv4 version 01:33:33.303907 Listening on port 41707 01:33:33.304357 Wrote pid 271475 to log/1/server/ftp_sockdata.pid 01:33:33.305045 Received PING (on stdin) 01:33:33.306056 Received PORT (on stdin) 01:33:33.320294 ====> Client connect 01:33:33.329453 Received DATA (on stdin) 01:33:33.329770 > 35 bytes data, server => client 01:33:33.330114 'This is content of file "file.txt"\n' 01:33:33.330351 Received DISC (on stdin) 01:33:33.330458 ====> Client forcibly disconnected 01:33:33.336135 Received QUIT (on stdin) 01:33:33.336243 quits 01:33:33.336734 ============> sockfilt quits 01:33:33.430455 Running IPv4 version 01:33:33.438079 Listening on port 43521 01:33:33.438563 Wrote pid 271478 to log/1/server/ftp_sockdata.pid 01:33:33.439330 Received PING (on stdin) 01:33:33.440391 Received PORT (on stdin) 01:33:33.449568 ====> Client connect 01:33:33.459662 Received DATA (on stdin) 01:33:33.460007 > 47 bytes data, server => client 01:33:33.460393 'Some junk ;-) This file does not really exist.\n' 01:33:33.460641 Received DISC (on stdin) 01:33:33.460760 ====> Client forcibly disconnected 01:33:33.461339 Received QUIT (on stdin) 01:33:33.461416 quits 01:33:33.461917 ============> sockfilt quits 01:33:35.628232 Running IPv4 version 01:33:35.635472 Listening on port 42305 01:33:35.635975 Wrote pid 271487 to log/1/server/ftp_sockdata.pid 01:33:35.636712 Received PING (on stdin) 01:33:35.637732 Received PORT (on stdin) 01:33:35.646499 ====> Client connect 01:33:35.664586 Received DATA (on stdin) 01:33:35.664940 > 64 bytes data, server => client 01:33:35.669271 'drwxrwxrwx 4 ftp-default ftp-default 20480 Apr 27 5:12 ' 01:33:35.669429 '.\r\n' 01:33:35.669698 Received DATA (on stdin) 01:33:35.669763 > 65 bytes data, server => client 01:33:35.669862 'drwxrwxrwx 4 ftp-default ftp-default 20480 Apr 23 3:12 ' 01:33:35.669922 '..\r\n' 01:33:35.670002 Received DATA (on stdin) 01:33:35.670062 > 69 bytes data, server => client 01:33:35.670159 '-r--r--r-- 1 ftp-default ftp-default 38 Jan 11 10:00 ' 01:33:35.670220 'chmod1\r\n' 01:33:35.670309 Received DATA (on stdin) 01:33:35.670369 > 69 bytes data, server => client 01:33:35.670466 '-rw-rw-rw- 1 ftp-default ftp-default 38 Feb 1 8:00 ' 01:33:35.670528 'chmod2\r\n' 01:33:35.670603 Received DATA (on stdin) 01:33:35.670662 > 69 bytes data, server => client 01:33:35.670759 '-rwxrwxrwx 1 ftp-default ftp-default 38 Feb 1 8:00 ' 01:33:35.670819 'chmod3\r\n' 01:33:35.670895 Received DATA (on stdin) 01:33:35.670955 > 69 bytes data, server => client 01:33:35.671052 'd--S--S--t 1 ftp-default ftp-default 4096 May 4 4:31 ' 01:33:35.671113 'chmod4\r\n' 01:33:35.671189 Received DATA (on stdin) 01:33:35.671250 > 69 bytes data, server => client 01:33:35.671346 'd--s--s--T 1 ftp-default ftp-default 4096 May 4 4:31 ' 01:33:35.671408 'chmod5\r\n' 01:33:35.671484 Received DATA (on stdin) 01:33:35.671543 > 77 bytes data, server => client 01:33:35.671640 '-rw-r--r-- 1 ftp-default ftp-default 0 Apr 27 11:01 ' 01:33:35.671706 'empty_file.dat\r\n' 01:33:35.671800 Received DATA (on stdin) 01:33:35.671859 > 71 bytes data, server => client 01:33:35.671955 '-rw-r--r-- 1 ftp-default ftp-default 35 Apr 27 11:01 ' 01:33:35.672018 'file.txt\r\n' 01:33:35.672094 Received DATA (on stdin) 01:33:35.672153 > 79 bytes data, server => client 01:33:35.672249 'lrwxrwxrwx 1 ftp-default ftp-default 0 Jan 6 4:42 ' 01:33:35.675696 'link -> file.txt\r\n' 01:33:35.675793 Received DATA (on stdin) 01:33:35.675858 > 98 bytes data, server => client 01:33:35.675961 'lrwxrwxrwx 1 ftp-default ftp-default 0 Jan 6 4:45 ' 01:33:35.676048 'link_absolute -> /data/ftp/file.txt\r\n' 01:33:35.676130 Received DATA (on stdin) 01:33:35.676194 > 68 bytes data, server => client 01:33:35.676297 'drwxrwxrwx 4 ftp-default ftp-default 4096 Jan 23 2:05 ' 01:33:35.676364 '.NeXT\r\n' 01:33:35.676445 Received DATA (on stdin) 01:33:35.676509 > 80 bytes data, server => client 01:33:35.676613 '-rw-r--r-- 1 ftp-default ftp-default 47 Apr 27 11:01 ' 01:33:35.676685 'someothertext.txt\r\n' 01:33:35.676767 Received DATA (on stdin) 01:33:35.676830 > 75 bytes data, server => client 01:33:35.676932 'drwxr-xrwx 2 ftp-default ftp-default 4096 Apr 23 3:12 ' 01:33:35.677004 'weirddir.txt\r\n' 01:33:35.677082 Received DISC (on stdin) 01:33:35.677210 ====> Client forcibly disconnected 01:33:35.677675 Received QUIT (on stdin) 01:33:35.677757 quits 01:33:35.678279 ============> sockfilt quits 01:33:35.784619 Running IPv4 version 01:33:35.791799 Listening on port 35287 01:33:35.792272 Wrote pid 271490 to log/1/server/ftp_sockdata.pid 01:33:35.793064 Received PING (on stdin) 01:33:35.793968 Received PORT (on stdin) 01:33:35.802485 ====> Client connect 01:33:35.812526 Received DATA (on stdin) 01:33:35.812878 > 38 bytes data, server => client 01:33:35.813244 'This file should have permissions 444\n' 01:33:35.820352 Received DISC (on stdin) 01:33:35.820507 ====> Client forcibly disconnected 01:33:35.821073 Received QUIT (on stdin) 01:33:35.821146 quits 01:33:35.821651 ============> sockfilt quits 01:33:35.915184 Running IPv4 version 01:33:35.922461 Listening on port 43801 01:33:35.922937 Wrote pid 271493 to log/1/server/ftp_sockdata.pid 01:33:35.923676 Received PING (on stdin) 01:33:35.924607 Received PORT (on stdin) 01:33:35.933558 ====> Client connect 01:33:35.939981 Received DATA (on stdin) 01:33:35.940299 > 38 bytes data, server => client 01:33:35.940687 'This file should have permissions 666\n' 01:33:35.941982 Received DISC (on stdin) 01:33:35.942094 ====> Client forcibly disconnected 01:33:35.946072 Received QUIT (on stdin) 01:33:35.946159 quits 01:33:35.946669 ============> sockfilt quits 01:33:35.040298 Running IPv4 version 01:33:35.047867 Listening on port 45119 01:33:35.070141 Wrote pid 271496 to log/1/server/ftp_sockdata.pid 01:33:35.070938 Received PING (on stdin) 01:33:35.072058 Received PORT (on stdin) 01:33:35.080964 ====> Client connect 01:33:35.089611 Received DATA (on stdin) 01:33:35.089931 > 38 bytes data, server => client 01:33:35.090294 'This file should have permissions 777\n' 01:33:35.090525 Received DISC (on stdin) 01:33:35.090639 ====> Client forcibly disconnected 01:33:35.095626 Received QUIT (on stdin) 01:33:35.095719 quits 01:33:35.096224 ============> sockfilt quits 01:33:35.188041 Running IPv4 version 01:33:35.195526 Listening on port 43713 01:33:35.196024 Wrote pid 271499 to log/1/server/ftp_sockdata.pid 01:33:35.196764 Received PING (on stdin) 01:33:35.197871 Received PORT (on stdin) 01:33:35.206873 ====> Client connect 01:33:35.213543 Received DATA (on stdin) 01:33:35.213855 > 0 bytes data, server => client 01:33:35.214045 got 0 reading from stdin 01:33:35.215831 Received DISC (on stdin) 01:33:35.215960 ====> Client forcibly disconnected 01:33:35.216514 Received QUIT (on stdin) 01:33:35.216588 quits 01:33:35.217114 ============> sockfilt quits 01:33:35.318327 Running IPv4 version 01:33:35.325682 Listening on port 36201 01:33:35.326152 Wrote pid 271505 to log/1/server/ftp_sockdata.pid 01:33:35.326868 Received PING (on stdin) 01:33:35.327792 Received PORT (on stdin) 01:33:35.336536 ====> Client connect 01:33:35.343413 Received DATA (on stdin) 01:33:35.343752 > 35 bytes data, server => client 01:33:35.345687 'This is content of file "file.txt"\n' 01:33:35.345927 Received DISC (on stdin) 01:33:35.346041 ====> Client forcibly disconnected 01:33:35.349430 Received QUIT (on stdin) 01:33:35.349513 quits 01:33:35.349993 ============> sockfilt quits 01:33:35.442647 Running IPv4 version 01:33:35.449647 Listening on port 42975 01:33:35.450108 Wrote pid 271508 to log/1/server/ftp_sockdata.pid 01:33:35.450804 Received PING (on stdin) 01:33:35.451702 Received PORT (on stdin) 01:33:35.460505 ====> Client connect 01:33:35.468243 Received DATA (on stdin) 01:33:35.468539 > 47 bytes data, server => client 01:33:35.468891 'Some junk ;-) This file does not really exist.\n' 01:33:35.469132 Received DISC (on stdin) 01:33:35.469621 ====> Client forcibly disconnected 01:33:35.469771 Received QUIT (on stdin) 01:33:35.469838 quits 01:33:35.470310 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 575 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD fully_simulated CWD UNIX EPSV TYPE A LIST EPSV TYPE I RETR chmod1 EPSV RETR chmod2 EPSV RETR chmod3 EPSV RETR empty_file.dat EPSV RETR file.txt EPSV RETR someothertext.txt EPSV TYPE A LIST EPSV TYPE I RETR chmod1 EPSV RETR chmod2 EPSV RETR chmod3 EPSV RETR empty_file.dat EPSV RETR file.txt EPSV RETR someothertext.txt QUIT USER anonymous PASS ftp@example.com PWD CWD fully_simulated CWD UNIX EPSV TYPE A LIST EPSV TYPE I RETR chmod1 EPSV RETR chmod2 EPSV RETR chmod3 EPSV RETR empty_file.dat EPSV RETR file.txt EPSV RETR someothertext.txt QUIT === End of file server.input === Start of file stderr575 URL: ftp://127.0.0.1:37481/fully_simulated/UNIX/* * Trying 127.0.0.1:37481... * Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 127.0.0.1 port 34058 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' * Wildcard - Parsing started > CWD fully_simulated < 250 CWD command successful. > CWD UNIX < 250 CWD command successful. > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||37005|) * Connecting to 127.0.0.1 (127.0.0.1) port 37005 * Trying 127.0.0.1:37005... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 37005) from 127.0.0.1 port 51130 > TYPE A < 200 I modify TYPE as you wanted > LIST < 150 here comes a directory * Maxdownload = -1 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 ASCII transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "." * Wildcard - START of ".." * Wildcard - START of "chmod1" * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||46375|) * Connecting to 127.0.0.1 (127.0.0.1) port 46375 * Trying 127.0.0.1:46375... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 46375) from 127.0.0.1 port 54912 > TYPE I < 200 I modify TYPE as you wanted > RETR chmod1 < 150 Binary data connection for chmod1 (38 bytes). * Maxdownload = -1 * Getting file with size: 38 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "chmod2" * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||41589|) * Connecting to 127.0.0.1 (127.0.0.1) port 41589 * Trying 127.0.0.1:41589... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 41589) from 127.0.0.1 port 46660 > RETR chmod2 < 150 Binary data connection for chmod2 (38 bytes). * Maxdownload = -1 * Getting file with size: 38 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "chmod3" * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||42283|) * Connecting to 127.0.0.1 (127.0.0.1) port 42283 * Trying 127.0.0.1:42283... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 42283) from 127.0.0.1 port 36984 > RETR chmod3 < 150 Binary data connection for chmod3 (38 bytes). * Maxdownload = -1 * Getting file with size: 38 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "chmod4" * Wildcard - START of "chmod5" * Wildcard - START of "empty_file.dat" * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||42309|) * Connecting to 127.0.0.1 (127.0.0.1) port 42309 * Trying 127.0.0.1:42309... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 42309) from 127.0.0.1 port 33726 > RETR empty_file.dat < 150 Binary data connection for empty_file.dat (0 bytes). * Maxdownload = -1 * Getting file with size: 0 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "file.txt" * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||33279|) * Connecting to 127.0.0.1 (127.0.0.1) port 33279 * Trying 127.0.0.1:33279... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 33279) from 127.0.0.1 port 42246 > RETR file.txt < 150 Binary data connection for file.txt (35 bytes). * Maxdownload = -1 * Getting file with size: 35 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "link" * Wildcard - START of "link_absolute" * Wildcard - START of ".NeXT" * Wildcard - START of "someothertext.txt" * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||40091|) * Connecting to 127.0.0.1 (127.0.0.1) port 40091 * Trying 127.0.0.1:40091... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 40091) from 127.0.0.1 port 37342 > RETR someothertext.txt < 150 Binary data connection for someothertext.txt (47 bytes). * Maxdownload = -1 * Getting file with size: 47 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "weirddir.txt" * Remembering we are in dir "fully_simulated/UNIX/" * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Request has same path as previous transfer * Wildcard - Parsing started > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||41979|) * Connecting to 127.0.0.1 (127.0.0.1) port 41979 * Trying 127.0.0.1:41979... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 41979) from 127.0.0.1 port 49442 > TYPE A < 200 I modify TYPE as you wanted > LIST < 150 here comes a directory * Maxdownload = -1 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 ASCII transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "." * Wildcard - START of ".." * Wildcard - START of "chmod1" * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||33679|) * Connecting to 127.0.0.1 (127.0.0.1) port 33679 * Trying 127.0.0.1:33679... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 33679) from 127.0.0.1 port 45448 > TYPE I < 200 I modify TYPE as you wanted > RETR chmod1 < 150 Binary data connection for chmod1 (38 bytes). * Maxdownload = -1 * Getting file with size: 38 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "chmod2" * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||44297|) * Connecting to 127.0.0.1 (127.0.0.1) port 44297 * Trying 127.0.0.1:44297... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 44297) from 127.0.0.1 port 54564 > RETR chmod2 < 150 Binary data connection for chmod2 (38 bytes). * Maxdownload = -1 * Getting file with size: 38 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "chmod3" * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||46595|) * Connecting to 127.0.0.1 (127.0.0.1) port 46595 * Trying 127.0.0.1:46595... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 46595) from 127.0.0.1 port 36740 > RETR chmod3 < 150 Binary data connection for chmod3 (38 bytes). * Maxdownload = -1 * Getting file with size: 38 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "chmod4" * Wildcard - START of "chmod5" * Wildcard - START of "empty_file.dat" * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||36771|) * Connecting to 127.0.0.1 (127.0.0.1) port 36771 * Trying 127.0.0.1:36771... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 36771) from 127.0.0.1 port 35978 > RETR empty_file.dat < 150 Binary data connection for empty_file.dat (0 bytes). * Maxdownload = -1 * Getting file with size: 0 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "file.txt" * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||41707|) * Connecting to 127.0.0.1 (127.0.0.1) port 41707 * Trying 127.0.0.1:41707... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 41707) from 127.0.0.1 port 34490 > RETR file.txt < 150 Binary data connection for file.txt (35 bytes). * Maxdownload = -1 * Getting file with size: 35 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "link" * Wildcard - START of "link_absolute" * Wildcard - START of ".NeXT" * Wildcard - START of "someothertext.txt" * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||43521|) * Connecting to 127.0.0.1 (127.0.0.1) port 43521 * Trying 127.0.0.1:43521... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 43521) from 127.0.0.1 port 43920 > RETR someothertext.txt < 150 Binary data connection for someothertext.txt (47 bytes). * Maxdownload = -1 * Getting file with size: 47 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "weirddir.txt" * Remembering we are in dir "fully_simulated/UNIX/" * Connection #0 to host 127.0.0.1:37481 left intact * Trying 127.0.0.1:37481... * Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 127.0.0.1 port 50470 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' * Wildcard - Parsing started > CWD fully_simulated < 250 CWD command successful. > CWD UNIX < 250 CWD command successful. > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||42305|) * Connecting to 127.0.0.1 (127.0.0.1) port 42305 * Trying 127.0.0.1:42305... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 42305) from 127.0.0.1 port 38124 > TYPE A < 200 I modify TYPE as you wanted > LIST < 150 here comes a directory * Maxdownload = -1 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 ASCII transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "." * Wildcard - START of ".." * Wildcard - START of "chmod1" * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||35287|) * Connecting to 127.0.0.1 (127.0.0.1) port 35287 * Trying 127.0.0.1:35287... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 35287) from 127.0.0.1 port 45218 > TYPE I < 200 I modify TYPE as you wanted > RETR chmod1 < 150 Binary data connection for chmod1 (38 bytes). * Maxdownload = -1 * Getting file with size: 38 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "chmod2" * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||43801|) * Connecting to 127.0.0.1 (127.0.0.1) port 43801 * Trying 127.0.0.1:43801... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 43801) from 127.0.0.1 port 49182 > RETR chmod2 < 150 Binary data connection for chmod2 (38 bytes). * Maxdownload = -1 * Getting file with size: 38 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "chmod3" * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||45119|) * Connecting to 127.0.0.1 (127.0.0.1) port 45119 * Tryincannot find sshd CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind576 ./libtest/libtests lib576 ftp://127.0.0.1:45353/fully_simulated/UNIX/* > log/7/stdout576 2> log/7/stderr576 g 127.0.0.1:45119... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 45119) from 127.0.0.1 port 48336 > RETR chmod3 < 150 Binary data connection for chmod3 (38 bytes). * Maxdownload = -1 * Getting file with size: 38 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "chmod4" * Wildcard - START of "chmod5" * Wildcard - START of "empty_file.dat" * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||43713|) * Connecting to 127.0.0.1 (127.0.0.1) port 43713 * Trying 127.0.0.1:43713... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 43713) from 127.0.0.1 port 35238 > RETR empty_file.dat < 150 Binary data connection for empty_file.dat (0 bytes). * Maxdownload = -1 * Getting file with size: 0 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "file.txt" * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||36201|) * Connecting to 127.0.0.1 (127.0.0.1) port 36201 * Trying 127.0.0.1:36201... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 36201) from 127.0.0.1 port 34232 > RETR file.txt < 150 Binary data connection for file.txt (35 bytes). * Maxdownload = -1 * Getting file with size: 35 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "link" * Wildcard - START of "link_absolute" * Wildcard - START of ".NeXT" * Wildcard - START of "someothertext.txt" * Request has same path as previous transfer > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||42975|) * Connecting to 127.0.0.1 (127.0.0.1) port 42975 * Trying 127.0.0.1:42975... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 42975) from 127.0.0.1 port 43640 > RETR someothertext.txt < 150 Binary data connection for someothertext.txt (47 bytes). * Maxdownload = -1 * Getting file with size: 47 * abort upload * Remembering we are in dir "fully_simulated/UNIX/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Wildcard - START of "weirddir.txt" * Remembering we are in dir "fully_simulated/UNIX/" * Connection #0 to host 127.0.0.1:37481 left intact Test ended with result 0 === End of file stderr575 === Start of file stdout575 This file should have permissions 444 This file should have permissions 666 This file should have permissions 777 This is content of file "file.txt" Some junk ;-) This file does not really exist. This file should have permissions 444 This file should have permissions 666 This file should have permissions 777 This is content of file "file.txt" Some junk ;-) This file does not really exist. This file should have permissions 444 This file should have permissions 666 This file should have permissions 777 This is content of file "file.txt" Some junk ;-) This file does not really exist. === End of file stdout575 === Start of file valgrind575 ==270216== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind575 test 0576...[FTP wildcard - skip/parser_correctness/CURLOPT_FNMATCH_FUNCTION (Unix)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind576 ./libtest/libtests lib576 ftp://127.0.0.1:45353/fully_simulated/UNIX/* > log/7/stdout576 2> log/7/stderr576 valgrind ERROR ==270480== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 576 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind576 ./libtest/libtests lib576 ftp://127.0.0.1:45353/fully_simulated/UNIX/* > log/7/stdout576 2> log/7/stderr576 === End of file commands.log === Start of file ftp_server.log 01:32:49.950044 ====> Client connect 01:32:49.950966 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:32:49.958379 < "USER anonymous" 01:32:49.958914 > "331 We are happy you popped in![CR][LF]" 01:32:49.959543 < "PASS ftp@example.com" 01:32:49.964094 > "230 Welcome you silly person[CR][LF]" 01:32:49.964969 < "PWD" 01:32:49.965222 > "257 "/" is current directory[CR][LF]" 01:32:49.967135 < "EPSV" 01:32:49.967319 ====> Passive DATA channel requested by client 01:32:49.967467 DATA sockfilt for passive data channel starting... 01:32:50.003807 DATA sockfilt for passive data channel started (pid 270474) 01:32:50.005107 DATA sockfilt for passive data channel listens on port 46317 01:32:50.005437 > "229 Entering Passive Mode (|||46317|)[CR][LF]" 01:32:50.005590 Client has been notified that DATA conn will be accepted on port 46317 01:32:50.007974 Client connects to port 46317 01:32:50.008199 ====> Client established passive DATA connection on port 46317 01:32:50.009550 < "TYPE I" 01:32:50.009810 > "200 I modify TYPE as you wanted[CR][LF]" 01:32:50.010639 < "SIZE verifiedserver" 01:32:50.010961 > "213 18[CR][LF]" 01:32:50.011837 < "RETR verifiedserver" 01:32:50.012109 > "150 Binary junk (18 bytes).[CR][LF]" 01:32:50.014239 =====> Closing passive DATA connection... 01:32:50.014395 Server disconnects passive DATA connection 01:32:50.017729 Server disconnected passive DATA connection 01:32:50.017905 DATA sockfilt for passive data channel quits (pid 270474) 01:32:50.020671 DATA sockfilt for passive data channel quit (pid 270474) 01:32:50.020842 =====> Closed passive DATA connection 01:32:50.021273 > "226 File transfer complete[CR][LF]" 01:32:50.061870 < "QUIT" 01:32:50.067443 > "221 bye bye baby[CR][LF]" 01:32:50.067673 MAIN sockfilt said DISC 01:32:50.067877 ====> Client disconnected 01:32:50.068136 Awaiting input 01:33:35.639309 ====> Client connect 01:33:35.640049 FTPD: Getting commands from log/7/server.cmd 01:33:35.640372 FTPD: run test case number: 576 01:33:35.644153 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:33:36.610255 < "USER anonymous" 01:33:36.614146 > "331 We are happy you popped in![CR][LF]" 01:33:36.692274 < "PASS ftp@example.com" 01:33:36.692667 > "230 Welcome you silly person[CR][LF]" 01:33:36.766740 < "PWD" 01:33:36.767154 > "257 "/" is current directory[CR][LF]" 01:33:36.971551 < "CWD fully_simulated" 01:33:36.971948 > "250 CWD command successful.[CR][LF]" 01:33:36.972265 enabled FTP list parser mode 01:33:37.014827 < "CWD UNIX" 01:33:37.015365 > "250 CWD command successful.[CR][LF]" 01:33:37.015609 enabled FTP list parser mode 01:33:37.079447 < "EPSV" 01:33:37.079799 ====> Passive DATA channel requested by client 01:33:37.079954 DATA sockfilt for passive data channel starting... 01:33:37.123313 DATA sockfilt for passive data channel started (pid 271515) 01:33:37.124581 DATA sockfilt for passive data channel listens on port 46265 01:33:37.124957 > "229 Entering Passive Mode (|||46265|)[CR][LF]" 01:33:37.125134 Client has been notified that DATA conn will be accepted on port 46265 01:33:37.267042 Client connects to port 46265 01:33:37.267610 ====> Client established passive DATA connection on port 46265 01:33:37.372648 < "TYPE A" 01:33:37.373335 > "200 I modify TYPE as you wanted[CR][LF]" 01:33:37.420781 < "LIST" 01:33:37.421202 > "150 here comes a directory[CR][LF]" 01:33:37.421384 pass LIST data on data connection 01:33:37.429721 =====> Closing passive DATA connection... 01:33:37.429942 Server disconnects passive DATA connection 01:33:37.434305 Server disconnected passive DATA connection 01:33:37.434509 DATA sockfilt for passive data channel quits (pid 271515) 01:33:37.438094 DATA sockfilt for passive data channel quit (pid 271515) 01:33:37.438268 =====> Closed passive DATA connection 01:33:37.438563 > "226 ASCII transfer complete[CR][LF]" 01:33:39.990771 < "EPSV" 01:33:39.991103 ====> Passive DATA channel requested by client 01:33:39.991247 DATA sockfilt for passive data channel starting... 01:33:40.034969 DATA sockfilt for passive data channel started (pid 271534) 01:33:40.036097 DATA sockfilt for passive data channel listens on port 35379 01:33:40.036425 > "229 Entering Passive Mode (|||35379|)[CR][LF]" 01:33:40.036581 Client has been notified that DATA conn will be accepted on port 35379 01:33:40.064557 Client connects to port 35379 01:33:40.065045 ====> Client established passive DATA connection on port 35379 01:33:40.095803 < "TYPE I" 01:33:40.096460 > "200 I modify TYPE as you wanted[CR][LF]" 01:33:40.123939 < "RETR chmod1" 01:33:40.125224 > "150 Binary data connection for chmod1 (38 bytes).[CR][LF]" 01:33:40.125467 > "" 01:33:40.125895 =====> Closing passive DATA connection... 01:33:40.126045 Server disconnects passive DATA connection 01:33:40.126351 Server disconnected passive DATA connection 01:33:40.126509 DATA sockfilt for passive data channel quits (pid 271534) 01:33:40.129952 DATA sockfilt for passive data channel quit (pid 271534) 01:33:40.130134 =====> Closed passive DATA connection 01:33:40.130568 > "226 File transfer complete[CR][LF]" 01:33:40.350098 < "EPSV" 01:33:40.350441 ====> Passive DATA channel requested by client 01:33:40.350584 DATA sockfilt for passive data channel starting... 01:33:40.391692 DATA sockfilt for passive data channel started (pid 271537) 01:33:40.392911 DATA sockfilt for passive data channel listens on port 35419 01:33:40.393266 > "229 Entering Passive Mode (|||35419|)[CR][LF]" 01:33:40.393429 Client has been notified that DATA conn will be accepted on port 35419 01:33:40.407457 Client connects to port 35419 01:33:40.407977 ====> Client established passive DATA connection on port 35419 01:33:40.424344 < "RETR chmod2" 01:33:40.425103 > "150 Binary data connection for chmod2 (38 bytes).[CR][LF]" 01:33:40.425284 > "" 01:33:40.425782 =====> Closing passive DATA connection... 01:33:40.425941 Server disconnects passive DATA connection 01:33:40.426850 Server disconnected passive DATA connection 01:33:40.427037 DATA sockfilt for passive data channel quits (pid 271537) 01:33:40.430236 DATA sockfilt for passive data channel quit (pid 271537) 01:33:40.430412 =====> Closed passive DATA connection 01:33:40.430685 > "226 File transfer complete[CR][LF]" 01:33:40.499607 < "EPSV" 01:33:40.499922 ====> Passive DATA channel requested by client 01:33:40.500063 DATA sockfilt for passive data channel starting... 01:33:40.540245 DATA sockfilt for passive data channel started (pid 271540) 01:33:40.541475 DATA sockfilt for passive data channel listens on port 46551 01:33:40.541831 > "229 Entering Passive Mode (|||46551|)[CR][LF]" 01:33:40.541993 Client has been notified that DATA conn will be accepted on port 46551 01:33:40.569142 Client connects to port 46551 01:33:40.569610 ====> Client established passive DATA connection on port 46551 01:33:40.573888 < "RETR chmod3" 01:33:40.574553 > "150 Binary data connection for chmod3 (38 bytes).[CR][LF]" 01:33:40.574714 > "" 01:33:40.575166 =====> Closing passive DATA connection... 01:33:40.575317 Server disconnects passive DATA connection 01:33:40.576226 Server disconnected passive DATA connection 01:33:40.576414 DATA sockfilt for passive data channel quits (pid 271540) 01:33:40.579603 DATA sockfilt for passive data channel quit (pid 271540) 01:33:40.579786 =====> Closed passive DATA connection 01:33:40.580046 > "226 File transfer complete[CR][LF]" 01:33:40.647978 < "EPSV" 01:33:40.648309 ====> Passive DATA channel requested by client 01:33:40.648439 DATA sockfilt for passive data channel starting... 01:33:40.689015 DATA sockfilt for passive data channel started (pid 271543) 01:33:40.690272 DATA sockfilt for passive data channel listens on port 46797 01:33:40.690606 > "229 Entering Passive Mode (|||46797|)[CR][LF]" 01:33:40.690778 Client has been notified that DATA conn will be accepted on port 46797 01:33:40.700429 Client connects to port 46797 01:33:40.701021 ====> Client established passive DATA connection on port 46797 01:33:40.705339 < "RETR empty_file.dat" 01:33:40.706033 > "150 Binary data connection for empty_file.dat (0 bytes).[CR][LF]" 01:33:40.706189 > "" 01:33:40.706614 =====> Closing passive DATA connection... 01:33:40.706761 Server disconnects passive DATA connection 01:33:40.707534 Server disconnected passive DATA connection 01:33:40.707728 DATA sockfilt for passive data channel quits (pid 271543) 01:33:40.710812 DATA sockfilt for passive data channel quit (pid 271543) 01:33:40.711001 =====> Closed passive DATA connection 01:33:40.711274 > "226 File transfer complete[CR][LF]" 01:33:40.767309 < "EPSV" 01:33:40.767646 ====> Passive DATA channel requested by client 01:33:40.767793 DATA sockfilt for passive data channel starting... 01:33:40.807613 DATA sockfilt for passive data channel started (pid 271546) 01:33:40.808805 DATA sockfilt for passive data channel listens on port 37179 01:33:40.809145 > "229 Entering Passive Mode (|||37179|)[CR][LF]" 01:33:40.809305 Client has been notified that DATA conn will be accepted on port 37179 01:33:40.815650 Client connects to port 37179 01:33:40.816099 ====> Client established passive DATA connection on port 37179 01:33:40.819663 < "RETR file.txt" 01:33:40.820950 > "150 Binary data connection for file.txt (35 bytes).[CR][LF]" 01:33:40.821123 > "" 01:33:40.821564 =====> Closing passive DATA connection... 01:33:40.821718 Server disconnects passive DATA connection 01:33:40.822035 Server disconnected passive DATA connection 01:33:40.822198 DATA sockfilt for passive data channel quits (pid 271546) 01:33:40.825571 DATA sockfilt for passive data channel quit (pid 271546) 01:33:40.825757 =====> Closed passive DATA connection 01:33:40.826013 > "226 File transfer complete[CR][LF]" 01:33:41.367611 < "QUIT" 01:33:41.368028 > "221 bye bye baby[CR][LF]" 01:33:41.481485 MAIN sockfilt said DISC 01:33:41.482117 ====> Client disconnected 01:33:41.482404 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:32:49.561370 ====> Client connect 01:32:49.565742 Received DATA (on stdin) 01:32:49.565820 > 160 bytes data, server => client 01:32:49.565917 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:32:49.566002 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:32:49.566078 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:32:49.569323 < 16 bytes data, client => server 01:32:49.569404 'USER anonymous\r\n' 01:32:49.570338 Received DATA (on stdin) 01:32:49.570401 > 33 bytes data, server => client 01:32:49.570492 '331 We are happy you popped in!\r\n' 01:32:49.570715 < 22 bytes data, client => server 01:32:49.570787 'PASS ftp@example.com\r\n' 01:32:49.571441 Received DATA (on stdin) 01:32:49.571501 > 30 bytes data, server => client 01:32:49.576010 '230 Welcome you silly person\r\n' 01:32:49.576230 < 5 bytes data, client => server 01:32:49.576291 'PWD\r\n' 01:32:49.577099 Received DATA (on stdin) 01:32:49.577160 > 30 bytes data, server => client 01:32:49.577231 '257 "/" is current directory\r\n' 01:32:49.578416 < 6 bytes data, client => server 01:32:49.578477 'EPSV\r\n' 01:32:49.617298 Received DATA (on stdin) 01:32:49.617441 > 39 bytes data, server => client 01:32:49.617527 '229 Entering Passive Mode (|||46317|)\r\n' 01:32:49.620836 < 8 bytes data, client => server 01:32:49.620921 'TYPE I\r\n' 01:32:49.621472 Received DATA (on stdin) 01:32:49.621533 > 33 bytes data, server => client 01:32:49.621606 '200 I modify TYPE as you wanted\r\n' 01:32:49.621950 < 21 bytes data, client => server 01:32:49.622018 'SIZE verifiedserver\r\n' 01:32:49.622630 Received DATA (on stdin) 01:32:49.622695 > 8 bytes data, server => client 01:32:49.622754 '213 18\r\n' 01:32:49.623145 < 21 bytes data, client => server 01:32:49.623212 'RETR verifiedserver\r\n' 01:32:49.623778 Received DATA (on stdin) 01:32:49.623837 > 29 bytes data, server => client 01:32:49.623910 '150 Binary junk (18 bytes).\r\n' 01:32:49.632757 Received DATA (on stdin) 01:32:49.632849 > 28 bytes data, server => client 01:32:49.634902 '226 File transfer complete\r\n' 01:32:49.672263 < 6 bytes data, client => server 01:32:49.672577 'QUIT\r\n' 01:32:49.673931 Received DATA (on stdin) 01:32:49.673996 > 18 bytes data, server => client 01:32:49.674244 '221 bye bye baby\r\n' 01:32:49.674745 ====> Client disconnect 01:32:49.679996 Received ACKD (on stdin) 01:33:35.250592 ====> Client connect 01:33:35.253827 Received DATA (on stdin) 01:33:35.253906 > 160 bytes data, server => client 01:33:35.255994 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:33:35.256100 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:33:35.256187 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:33:36.220604 < 16 bytes data, client => server 01:33:36.220786 'USER anonymous\r\n' 01:33:36.222208 Received DATA (on stdin) 01:33:36.222293 > 33 bytes data, server => client 01:33:36.226058 '331 We are happy you popped in!\r\n' 01:33:36.302767 < 22 bytes data, client => server 01:33:36.302945 'PASS ftp@example.com\r\n' 01:33:36.304449 Received DATA (on stdin) 01:33:36.304520 > 30 bytes data, server => client 01:33:36.304598 '230 Welcome you silly person\r\n' 01:33:36.377313 < 5 bytes data, client => server 01:33:36.377469 'PWD\r\n' 01:33:36.378971 Received DATA (on stdin) 01:33:36.379069 > 30 bytes data, server => client 01:33:36.379157 '257 "/" is current directory\r\n' 01:33:36.579323 < 21 bytes data, client => server 01:33:36.579513 'CWD fully_simulated\r\n' 01:33:36.583489 Received DATA (on stdin) 01:33:36.583574 > 29 bytes data, server => client 01:33:36.583664 '250 CWD command successful.\r\n' 01:33:36.625668 < 10 bytes data, client => server 01:33:36.625847 'CWD UNIX\r\n' 01:33:36.626735 Received DATA (on stdin) 01:33:36.626810 > 29 bytes data, server => client 01:33:36.627384 '250 CWD command successful.\r\n' 01:33:36.690169 < 6 bytes data, client => server 01:33:36.690346 'EPSV\r\n' 01:33:36.736967 Received DATA (on stdin) 01:33:36.737110 > 39 bytes data, server => client 01:33:36.737216 '229 Entering Passive Mode (|||46265|)\r\n' 01:33:36.983091 < 8 bytes data, client => server 01:33:36.983279 'TYPE A\r\n' 01:33:36.984583 Received DATA (on stdin) 01:33:36.984652 > 33 bytes data, server => client 01:33:36.984749 '200 I modify TYPE as you wanted\r\n' 01:33:37.025575 < 6 bytes data, client => server 01:33:37.025724 'LIST\r\n' 01:33:37.032739 Received DATA (on stdin) 01:33:37.032853 > 28 bytes data, server => client 01:33:37.032941 '150 here comes a directory\r\n' 01:33:37.050388 Received DATA (on stdin) 01:33:37.050519 > 29 bytes data, server => client 01:33:37.050604 '226 ASCII transfer complete\r\n' 01:33:39.601204 < 6 bytes data, client => server 01:33:39.601377 'EPSV\r\n' 01:33:39.648382 Received DATA (on stdin) 01:33:39.648520 > 39 bytes data, server => client 01:33:39.648610 '229 Entering Passive Mode (|||35379|)\r\n' 01:33:39.706339 < 8 bytes data, client => server 01:33:39.706505 'TYPE I\r\n' 01:33:39.707706 Received DATA (on stdin) 01:33:39.707773 > 33 bytes data, server => client 01:33:39.707875 '200 I modify TYPE as you wanted\r\n' 01:33:39.734856 < 13 bytes data, client => server 01:33:39.734962 'RETR chmod1\r\n' 01:33:39.736172 Received DATA (on stdin) 01:33:39.736245 > 51 bytes data, server => client 01:33:39.736357 '150 Binary data connection for chmod1 (38 bytes).\r\n' 01:33:39.736470 Received DATA (on stdin) 01:33:39.736533 > 0 bytes data, server => client 01:33:39.736648 got 0 reading from stdin 01:33:39.741921 Received DATA (on stdin) 01:33:39.742011 > 28 bytes data, server => client 01:33:39.742370 '226 File transfer complete\r\n' 01:33:39.960526 < 6 bytes data, client => server 01:33:39.960720 'EPSV\r\n' 01:33:40.004778 Received DATA (on stdin) 01:33:40.004936 > 39 bytes data, server => client 01:33:40.005025 '229 Entering Passive Mode (|||35419|)\r\n' 01:33:40.034986 < 13 bytes data, client => server 01:33:40.035164 'RETR chmod2\r\n' 01:33:40.036598 Received DATA (on stdin) 01:33:40.036674 > 51 bytes data, server => client 01:33:40.036768 '150 Binary data connection for chmod2 (38 bytes).\r\n' 01:33:40.036859 Received DATA (on stdin) 01:33:40.036920 > 0 bytes data, server => client 01:33:40.036977 got 0 reading from stdin 01:33:40.042295 Received DATA (on stdin) 01:33:40.042384 > 28 bytes data, server => client 01:33:40.042461 '226 File transfer complete\r\n' 01:33:40.110118 < 6 bytes data, client => server 01:33:40.110292 'EPSV\r\n' 01:33:40.153812 Received DATA (on stdin) 01:33:40.153950 > 39 bytes data, server => client 01:33:40.154039 '229 Entering Passive Mode (|||46551|)\r\n' 01:33:40.184895 < 13 bytes data, client => server 01:33:40.185037 'RETR chmod3\r\n' 01:33:40.186060 Received DATA (on stdin) 01:33:40.186134 > 51 bytes data, server => client 01:33:40.186231 '150 Binary data connection for chmod3 (38 bytes).\r\n' 01:33:40.186319 Received DATA (on stdin) 01:33:40.186380 > 0 bytes data, server => client 01:33:40.186438 got 0 reading from stdin 01:33:40.191583 Received DATA (on stdin) 01:33:40.191690 > 28 bytes data, server => client 01:33:40.191772 '226 File transfer complete\r\n' 01:33:40.258597 < 6 bytes data, client => server 01:33:40.258835 'EPSV\r\n' 01:33:40.302114 Received DATA (on stdin) 01:33:40.302272 > 39 bytes data, server => client 01:33:40.302372 '229 Entering Passive Mode (|||46797|)\r\n' 01:33:40.316296 < 21 bytes data, client => server 01:33:40.316457 'RETR empty_file.dat\r\n' 01:33:40.317552 Received DATA (on stdin) 01:33:40.317619 > 58 bytes data, server => client 01:33:40.317719 '150 Binary data connection for empty_file.dat (0 bytes).\r\n' 01:33:40.317807 Received DATA (on stdin) 01:33:40.317869 > 0 bytes data, server => client 01:33:40.317929 got 0 reading from stdin 01:33:40.323075 Received DATA (on stdin) 01:33:40.323170 > 28 bytes data, server => client 01:33:40.323251 '226 File transfer complete\r\n' 01:33:40.377838 < 6 bytes data, client => server 01:33:40.377997 'EPSV\r\n' 01:33:40.420659 Received DATA (on stdin) 01:33:40.420814 > 39 bytes data, server => client 01:33:40.420908 '229 Entering Passive Mode (|||37179|)\r\n' 01:33:40.430283 < 15 bytes data, client => server 01:33:40.430414 'RETR file.txt\r\n' 01:33:40.431924 Received DATA (on stdin) 01:33:40.431996 > 53 bytes data, server => client 01:33:40.432114 '150 Binary data connection for file.txt (35 bytes).\r\n' 01:33:40.432233 Received DATA (on stdin) 01:33:40.432313 > 0 bytes data, server => client 01:33:40.432374 got 0 reading from stdin 01:33:40.437551 Received DATA (on stdin) 01:33:40.437648 > 28 bytes data, server => client 01:33:40.437731 '226 File transfer complete\r\n' 01:33:40.978144 < 6 bytes data, client => server 01:33:40.978363 'QUIT\r\n' 01:33:40.979806 Received DATA (on stdin) 01:33:40.979885 > 18 bytes data, server => client 01:33:40.979962 '221 bye bye baby\r\n' 01:33:41.092734 ====> Client disconnect 01:33:41.093536 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:32:49.607287 Running IPv4 version 01:32:49.614125 Listening on port 46317 01:32:49.614527 Wrote pid 270474 to log/7/server/ftp_sockdata.pid 01:32:49.615183 Received PING (on stdin) 01:32:49.616192 Received PORT (on stdin) 01:32:49.619511 ====> Client connect 01:32:49.626263 Received DATA (on stdin) 01:32:49.626533 > 18 bytes data, server => client 01:32:49.626851 'WE ROOLZ: 202639\r\n' 01:32:49.629114 Received DISC (on stdin) 01:32:49.629238 ====> Client forcibly disconnected 01:32:49.629767 Received QUIT (on stdin) 01:32:49.629834 quits 01:32:49.630274 ============> sockfilt quits 01:33:37.725090 Running IPv4 version 01:33:37.732996 Listening on port 46265 01:33:37.733511 Wrote pid 271515 to log/7/server/ftp_sockdata.pid 01:33:37.734311 Received PING (on stdin) 01:33:37.735416 Received PORT (on stdin) 01:33:37.878290 ====> Client connect 01:33:38.038985 Received DATA (on stdin) 01:33:38.039382 > 64 bytes data, server => client 01:33:38.039753 'drwxrwxrwx 4 ftp-default ftp-default 20480 Apr 27 5:12 ' 01:33:38.039914 '.\r\n' 01:33:38.040224 Received DATA (on stdin) 01:33:38.040294 > 65 bytes data, server => client 01:33:38.040402 'drwxrwxrwx 4 ftp-default ftp-default 20480 Apr 23 3:12 ' 01:33:38.040467 '..\r\n' 01:33:38.041716 Received DATA (on stdin) 01:33:38.041788 > 69 bytes data, server => client 01:33:38.041895 '-r--r--r-- 1 ftp-default ftp-default 38 Jan 11 10:00 ' 01:33:38.041967 'chmod1\r\n' 01:33:38.042068 Received DATA (on stdin) 01:33:38.042135 > 69 bytes data, server => client 01:33:38.042245 '-rw-rw-rw- 1 ftp-default ftp-default 38 Feb 1 8:00 ' 01:33:38.042327 'chmod2\r\n' 01:33:38.042414 Received DATA (on stdin) 01:33:38.042480 > 69 bytes data, server => client 01:33:38.042587 '-rwxrwxrwx 1 ftp-default ftp-default 38 Feb 1 8:00 ' 01:33:38.042657 'chmod3\r\n' 01:33:38.042742 Received DATA (on stdin) 01:33:38.042809 > 69 bytes data, server => client 01:33:38.042916 'd--S--S--t 1 ftp-default ftp-default 4096 May 4 4:31 ' 01:33:38.042987 'chmod4\r\n' 01:33:38.043072 Received DATA (on stdin) 01:33:38.043140 > 69 bytes data, server => client 01:33:38.043249 'd--s--s--T 1 ftp-default ftp-default 4096 May 4 4:31 ' 01:33:38.043318 'chmod5\r\n' 01:33:38.043402 Received DATA (on stdin) 01:33:38.043468 > 77 bytes data, server => client 01:33:38.043581 '-rw-r--r-- 1 ftp-default ftp-default 0 Apr 27 11:01 ' 01:33:38.043656 'empty_file.dat\r\n' 01:33:38.043742 Received DATA (on stdin) 01:33:38.043809 > 71 bytes data, server => client 01:33:38.043917 '-rw-r--r-- 1 ftp-default ftp-default 35 Apr 27 11:01 ' 01:33:38.043987 'file.txt\r\n' 01:33:38.044071 Received DATA (on stdin) 01:33:38.044136 > 79 bytes data, server => client 01:33:38.044241 'lrwxrwxrwx 1 ftp-default ftp-default 0 Jan 6 4:42 ' 01:33:38.044315 'link -> file.txt\r\n' 01:33:38.044398 Received DATA (on stdin) 01:33:38.044464 > 98 bytes data, server => client 01:33:38.044568 'lrwxrwxrwx 1 ftp-default ftp-default 0 Jan 6 4:45 ' 01:33:38.044654 'link_absolute -> /data/ftp/file.txt\r\n' 01:33:38.044738 Received DATA (on stdin) 01:33:38.044804 > 68 bytes data, server => client 01:33:38.044908 'drwxrwxrwx 4 ftp-default ftp-default 4096 Jan 23 2:05 ' 01:33:38.044975 '.NeXT\r\n' 01:33:38.045058 Received DATA (on stdin) 01:33:38.045124 > 80 bytes data, server => client 01:33:38.045229 '-rw-r--r-- 1 ftp-default ftp-default 47 Apr 27 11:01 ' 01:33:38.045304 'someothertext.txt\r\n' 01:33:38.045387 Received DATA (on stdin) 01:33:38.045453 > 75 bytes data, server => client 01:33:38.045557 'drwxr-xrwx 2 ftp-default ftp-default 4096 Apr 23 3:12 ' 01:33:38.045647 'weirddir.txt\r\n' 01:33:38.045743 Received DISC (on stdin) 01:33:38.046330 ====> Client forcibly disconnected 01:33:38.046501 Received QUIT (on stdin) 01:33:38.046576 quits 01:33:38.047101 ============> sockfilt quits 01:33:40.637306 Running IPv4 version 01:33:40.644872 Listening on port 35379 01:33:40.645368 Wrote pid 271534 to log/7/server/ftp_sockdata.pid 01:33:40.646163 Received PING (on stdin) 01:33:40.647040 Received PORT (on stdin) 01:33:40.675891 ====> Client connect 01:33:40.736046 Received DATA (on stdin) 01:33:40.736411 > 38 bytes data, server => client 01:33:40.736770 'This file should have permissions 444\n' 01:33:40.737796 Received DISC (on stdin) 01:33:40.738303 ====> Client forcibly disconnected 01:33:40.738478 Received QUIT (on stdin) 01:33:40.738548 quits 01:33:40.739086 ============> sockfilt quits 01:33:40.993715 Running IPv4 version 01:33:41.001413 Listening on port 35419 01:33:41.001924 Wrote pid 271537 to log/7/server/ftp_sockdata.pid 01:33:41.002730 Received PING (on stdin) 01:33:41.003790 Received PORT (on stdin) 01:33:41.017036 ====> Client connect 01:33:41.037082 Received DATA (on stdin) 01:33:41.037479 > 38 bytes data, server => client 01:33:41.037857 'This file should have permissions 666\n' 01:33:41.038099 Received DISC (on stdin) 01:33:41.038215 ====> Client forcibly disconnected 01:33:41.038776 Received QUIT (on stdin) 01:33:41.038849 quits 01:33:41.039416 ============> sockfilt quits 01:33:40.142571 Running IPv4 version 01:33:40.150064 Listening on port 46551 01:33:40.150541 Wrote pid 271540 to log/7/server/ftp_sockdata.pid 01:33:40.151298 Received PING (on stdin) 01:33:40.152347 Received PORT (on stdin) 01:33:40.180412 ====> Client connect 01:33:40.186540 Received DATA (on stdin) 01:33:40.186873 > 38 bytes data, server => client 01:33:40.187239 'This file should have permissions 777\n' 01:33:40.187478 Received DISC (on stdin) 01:33:40.187598 ====> Client forcibly disconnected 01:33:40.188154 Received QUIT (on stdin) 01:33:40.188226 quits 01:33:40.188737 ============> sockfilt quits 01:33:40.291464 Running IPv4 version 01:33:40.298986 Listening on port 46797 01:33:40.299483 Wrote pid 271543 to log/7/server/ftp_sockdata.pid 01:33:40.300223 Received PING (on stdin) 01:33:40.301150 Received PORT (on stdin) 01:33:40.311703 ====> Client connect 01:33:40.318027 Received DATA (on stdin) 01:33:40.318351 > 0 bytes data, server => client 01:33:40.318542 got 0 reading from stdin 01:33:40.318773 Received DISC (on stdin) 01:33:40.318890 ====> Client forcibly disconnected 01:33:40.319464 Received QUIT (on stdin) 01:33:40.319533 quits 01:33:40.320039 ============> sockfilt quits 01:33:40.410047 Running IPv4 version 01:33:40.417426 Listening on port 37179 01:33:40.417904 Wrote pid 271546 to log/7/server/ftp_sockdata.pid 01:33:40.418642 Received PING (on stdin) 01:33:40.419688 Received PORT (on stdin) 01:33:40.426948 ====> Client connect 01:33:40.431871 Received DATA (on stdin) 01:33:40.432175 > 35 bytes data, server => client 01:33:40.432554 'This is content of file "file.txt"\n' 01:33:40.433478 Received DISC (on stdin) 01:33:40.433988 ====> Client forcibly disconnected 01:33:40.434150 Received QUIT (on stdin) 01:33:40.434218 quits 01:33:40.434722 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 576 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD fully_simulated CWD UNIX EPSV TYPE A LIST EPSV TYPE I RETR chmod1 EPSV RETR chmod2 EPSV RETR chmod3 EPSV RETR empty_file.dat EPSV RETR file.txt QUIT === End of file server.input === Start of file stderr576 URL: ftp://127.0.0.1:45353/fully_simulated/UNIX/* Test ended with result 0 === End of file stderr576 === Start of file stdout576 ============================================================= Remains: 14 Filename: . Permissions: rwxrwxrwx (parsed => 777) Size: 20480B User: ftp-default Group: ftp-default Time: Apr 27 5:12 Filetype: directory ============================================================= Remains: 13 Filename: .. Permissions: rwxrwxrwx (parsed => 777) Size: 20480B User: ftp-default Group: ftp-default Time: Apr 23 3:12 Filetype: directory ============================================================= Remains: 12 Filename: chmod1 Permissions: r--r--r-- (parsed => 444) Size: 38B User: ftp-default Group: ftp-default Time: Jan 11 10:00 Filetype: regular file Content: ------------------------------------------------------------- This file should have permissions 444 ------------------------------------------------------------- ============================================================= RCMD (2048): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind577 ./libtest/libtests lib567 rtsp://127.0.0.1:42033/577 > log/8/stdout577 2> log/8/stderr577 emains: 11 Filename: chmod2 Permissions: rw-rw-rw- (parsed => 666) Size: 38B User: ftp-default Group: ftp-default Time: Feb 1 8:00 Filetype: regular file Content: ------------------------------------------------------------- This file should have permissions 666 ------------------------------------------------------------- ============================================================= Remains: 10 Filename: chmod3 Permissions: rwxrwxrwx (parsed => 777) Size: 38B User: ftp-default Group: ftp-default Time: Feb 1 8:00 Filetype: regular file Content: ------------------------------------------------------------- This file should have permissions 777 ------------------------------------------------------------- ============================================================= Remains: 9 Filename: chmod4 Permissions: --S--S--t (parsed => 7001) Size: 4096B User: ftp-default Group: ftp-default Time: May 4 4:31 Filetype: directory ============================================================= Remains: 8 Filename: chmod5 Permissions: --s--s--T (parsed => 7110) Size: 4096B User: ftp-default Group: ftp-default Time: May 4 4:31 Filetype: directory ============================================================= Remains: 7 Filename: empty_file.dat Permissions: rw-r--r-- (parsed => 644) Size: 0B User: ftp-default Group: ftp-default Time: Apr 27 11:01 Filetype: regular file Content: ------------------------------------------------------------- ------------------------------------------------------------- ============================================================= Remains: 6 Filename: file.txt Permissions: rw-r--r-- (parsed => 644) Size: 35B User: ftp-default Group: ftp-default Time: Apr 27 11:01 Filetype: regular file Content: ------------------------------------------------------------- This is content of file "file.txt" ------------------------------------------------------------- ============================================================= Remains: 5 Filename: link Permissions: rwxrwxrwx (parsed => 777) Size: 0B User: ftp-default Group: ftp-default Time: Jan 6 4:42 Filetype: symlink Target: file.txt ============================================================= Remains: 4 Filename: link_absolute Permissions: rwxrwxrwx (parsed => 777) Size: 0B User: ftp-default Group: ftp-default Time: Jan 6 4:45 Filetype: symlink Target: /data/ftp/file.txt ============================================================= Remains: 3 Filename: .NeXT Permissions: rwxrwxrwx (parsed => 777) Size: 4096B User: ftp-default Group: ftp-default Time: Jan 23 2:05 Filetype: directory ============================================================= Remains: 2 Filename: someothertext.txt Permissions: rw-r--r-- (parsed => 644) Size: 47B User: ftp-default Group: ftp-default Time: Apr 27 11:01 Filetype: regular file Content: ------------------------------------------------------------- # THIS CONTENT WAS SKIPPED IN CHUNK_BGN CALLBACK # ------------------------------------------------------------- ============================================================= Remains: 1 Filename: weirddir.txt Permissions: rwxr-xrwx (parsed => 757) Size: 4096B User: ftp-default Group: ftp-default Time: Apr 23 3:12 Filetype: directory ============================================================= === End of file stdout576 === Start of file valgrind576 ==270480== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind576 test 0577...[Funny RTSP version in response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind577 ./libtest/libtests lib567 rtsp://127.0.0.1:42033/577 > log/8/stdout577 2> log/8/stderr577 valgrind ERROR ==270642== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 577 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind577 ./libtest/libtests lib567 rtsp://127.0.0.1:42033/577 > log/8/stdout577 2> log/8/stderr577 === End of file commands.log === Start of file rtsp_server.log 01:33:00.119445 ====> Client connect 01:33:00.126525 Read 93 bytes 01:33:00.126632 rtspd_ProcessRequest() called with testno -7 and line [GET /verifiedserver HTTP/1.1 Host: 127.0.0.1:42033 User-Agent: curl/8.17.0 Accept: */* ] 01:33:00.126847 Got request: GET /verifiedserver HTTP/1.1 01:33:00.127057 Are-we-friendly question received 01:33:00.127206 Wrote request (93 bytes) input to log/8/server.input 01:33:00.127292 Send response number -2 part 0 01:33:00.127384 Identifying ourselves as friends 01:33:00.127611 Sent off 69 bytes 01:33:00.127690 Response sent (69 bytes) and written to log/8/server.response 01:33:00.127773 special request received, no persistency 01:33:00.127837 ====> Client disconnect 01:33:45.235748 ====> Client connect 01:33:46.126490 Read 95 bytes 01:33:46.126690 rtspd_ProcessRequest() called with testno -7 and line [OPTIONS rtsp://127.0.0.1:42033/577 RTSP/1.0 CSeq: 1 User-Agent: test567 Test-Number: 567 ] 01:33:46.126794 Got request: OPTIONS rtsp://127.0.0.1:42033/577 RTSP/1.0 01:33:46.126896 Requested test number 577 part 0 01:33:46.127102 rtspd_ProcessRequest found a complete request 01:33:46.127277 Wrote request (95 bytes) input to log/8/server.input 01:33:46.127379 Send response number 577 part 0 01:33:46.127590 connection close instruction "swsclose" found in response 01:33:46.127695 Sent off 140 bytes 01:33:46.127859 Response sent (140 bytes) and written to log/8/server.response 01:33:46.127927 instructed to close connection after server-reply 01:33:46.127990 ====> Client disconnect === End of file rtsp_server.log === Start of file rtsp_verify.log * Trying 127.0.0.1:42033... * Established connection to 127.0.0.1 (127.0.0.1 port 42033) from 127.0.0.1 port 40978 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42033 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 30 < { [30 bytes data] * Connection #0 to host 127.0.0.1:42033 left intact === End of file rtsp_verify.log === Start of file rtsp_verify.out RTSP_SERVER WE ROOLZ: 269425 === End of file rtsp_verify.out === Start of file server.cmd Testnum 577 === End of file server.cmd === Start of file server.input OPTIONS rtsp://127.0.0.1:42033/577 RTSP/1.0 CSeq: 1 User-Agent: test567 Test-Number: 567 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 30 RTSP_SERVER WE ROOLZ: 269425 RTSP/1.1234567 200 OK Server: RTSPD/libcurl-test CSeq: 1 Public: DESCRIBE, OPTIONS, SETUP, TEARDOWN, PLAY, PAUSE Curl-Private: swsclose === End of file server.response === Start of file stderr577 URL: rtsp://127.0.0.1:42033/577 * Trying 127.0.0.1:42033... * Established connection to 127.0.0.1 (127.0.0.1 port 42033) from 127.0.0.1 port 34146 > OPTIONS rtsp://127.0.0.1:42033/577 RTSP/1.0 CSeq: 1 User-Agent: test567 Test-Number: 567 * closing connection #0 Test ended with result 8 === End of file stderr577 === Start of file valgrind577 ==270642== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind577 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/sshserver.pl --verbose --pidfile "log/6/server/ssh_server.pid" --logdir "log/6" --ipv4 --addr "127.0.0.1" --user "builduser" --sshport 45311 startnCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind578 ./libtest/libtests lib578 http://127.0.0.1:42621/578 log/4/ip578 > log/4/stdout578 2> log/4/stderr578 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind579 ./libtest/libtests lib579 http://127.0.0.1:46853/579 log/3/ip579 > log/3/stdout579 2> log/3/stderr579 ew: child process has died, server might start up RUN: failed to start the SSH server on 45311 test 0582 SKIPPED: failed starting SSH server test 0578...[HTTP POST lower than MAX_INITIAL_POST_SIZE with progress callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind578 ./libtest/libtests lib578 http://127.0.0.1:42621/578 log/4/ip578 > log/4/stdout578 2> log/4/stderr578 valgrind ERROR ==270789== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 578 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind578 ./libtest/libtests lib578 http://127.0.0.1:42621/578 log/4/ip578 > log/4/stdout578 2> log/4/stderr578 === End of file commands.log === Start of file http_server.log 01:33:02.880268 ====> Client connect 01:33:02.880430 accept_connection 3 returned 4 01:33:02.880516 accept_connection 3 returned 0 01:33:02.888178 Read 93 bytes 01:33:02.888294 Process 93 bytes request 01:33:02.888393 Got request: GET /verifiedserver HTTP/1.1 01:33:02.888464 Are-we-friendly question received 01:33:02.888588 Wrote request (93 bytes) input to log/4/server.input 01:33:02.888683 Identifying ourselves as friends 01:33:02.888862 Response sent (57 bytes) and written to log/4/server.response 01:33:02.888929 special request received, no persistency 01:33:02.888992 ====> Client disconnect 0 01:33:48.096871 ====> Client connect 01:33:48.097012 accept_connection 3 returned 4 01:33:48.097091 accept_connection 3 returned 0 01:33:49.203938 Read 152 bytes 01:33:49.204162 Process 152 bytes request 01:33:49.204268 Got request: POST /578 HTTP/1.1 01:33:49.204343 Serve test number 578 part 0 01:33:49.204513 - request found to be complete (578) 01:33:49.204659 Found Content-Length: 25 in the request 01:33:49.204825 Wrote request (152 bytes) input to log/4/server.input 01:33:49.204931 Send response test578 section 01:33:49.205344 Response sent (267 bytes) and written to log/4/server.response 01:33:49.205412 => persistent connection request ended, awaits new request 01:33:50.766094 Connection closed by client 01:33:50.766290 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 57222 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file ip578 PASSED, UL data matched data size === End of file ip578 === Start of file server.cmd Testnum 578 === End of file server.cmd === Start of file server.input POST /578 HTTP/1.1 Host: 127.0.0.1:42621 Accept: */* Content-Length: 25 Content-Type: application/x-www-form-urlencoded this is a short string. === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr578 URL: http://127.0.0.1:42621/578 * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 53006 * using HTTP/1.x > POST /578 HTTP/1.1 Host: 127.0.0.1:42621 Accept: */* Content-Length: 25 Content-Type: application/x-www-form-urlencoded * upload completely sent off: 25 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT < ETag: "21025-dc7-39462498" < Accept-Ranges: bytes < Content-Length: 6 < Connection: close < Content-Type: text/html < Funny-head: yesyes < * shutting down connection #0 Test ended with result 0 === End of file stderr578 === Start of file stdout578 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file stdout578 === Start of file valgrind578 ==270789== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind578 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/sshserver.pl --verbose --pidfile "log/1/server/ssh_server.pid" --logdir "log/1" --ipv4 --addr "127.0.0.1" --user "builduser" --sshport 41141 startnew: child process has died, server might start up RUN: failed to start the SSH server on 41141 test 0583 SKIPPED: failed starting SSH server Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 588 in state 4 Runner 2 (id 185908) running test 581 in state 4 Runner 3 (id 185910) running test 579 in state 4 Runner 4 (id 185912) running test 587 in state 4 Runner 5 (id 185914) running test 580 in state 4 Runner 6 (id 185916) running test 586 in state 4 Runner 7 (id 185918) running test 584 in state 4 Runner 8 (id 185920) running test 585 in state 4 test 0579...[small chunked HTTP POSTs with digest auth. and progress callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind579 ./libtest/libtests lib579 http://127.0.0.1:46853/579 log/3/ip579 > log/3/stdout579 2> log/3/stderr579 valgrind ERROR ==270960== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 579 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind579 ./libtest/libtests lib579 http://127.0.0.1:46853/579 log/3/ip579 > log/3/stdout579 2> log/3/stderr579 === End of file commands.log === Start of file http_server.log 01:33:10.609573 ====> Client connect 01:33:10.609747 accept_connection 3 returned 4 01:33:10.609834 accept_connection 3 returned 0 01:33:10.615734 Read 93 bytes 01:33:10.615841 Process 93 bytes request 01:33:10.615948 Got request: GET /verifiedserver HTTP/1.1 01:33:10.616022 Are-we-friendly question received 01:33:10.616155 Wrote request (93 bytes) input to log/3/server.input 01:33:10.616260 Identifying ourselves as friends 01:33:10.616461 Response sent (57 bytes) and written to log/3/server.response 01:33:10.616531 special request received, no persistency 01:33:10.616594 ====> Client disconnect 0 01:33:53.195880 ====> Client connect 01:33:53.196034 accept_connection 3 returned 4 01:33:53.196116 accept_connection 3 returned 0 01:33:54.526334 Read 140 bytes 01:33:54.526565 Process 140 bytes request 01:33:54.526677 Got request: POST /579 HTTP/1.1 01:33:54.526757 Serve test number 579 part 0 01:33:54.527001 - request found to be complete (579) 01:33:54.527294 Wrote request (140 bytes) input to log/3/server.input 01:33:54.527416 Send response test579 section 01:33:54.527670 enable "swsbounce" in the next request 01:33:54.527954 Response sent (315 bytes) and written to log/3/server.response 01:33:54.528022 => persistent connection request ended, awaits new request 01:34:03.173918 Read 291 bytes 01:34:03.174115 Process 291 bytes request 01:34:03.174209 Got request: POST /579 HTTP/1.1 01:34:03.174279 Serve test number 579 part 0 01:34:03.174475 - request found to be complete (579)CMD (2048): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind580 ./libtest/libtests lib507 http://127.0.0.1:46263/580 > log/5/stdout580 2> log/5/stderr580 01:34:04.384080 Read 8 bytes 01:34:04.384277 Process 299 bytes request [CONTINUED] 01:34:04.384349 - request found to be complete (579) 01:34:04.430762 Read 8 bytes 01:34:04.430941 Process 307 bytes request [CONTINUED] 01:34:04.431006 - request found to be complete (579) 01:34:04.436371 Read 10 bytes 01:34:04.436448 Process 317 bytes request [CONTINUED] 01:34:04.436511 - request found to be complete (579) 01:34:04.438675 Read 35 bytes 01:34:04.438743 Process 352 bytes request [CONTINUED] 01:34:04.438805 - request found to be complete (579) 01:34:04.446951 Read 5 bytes 01:34:04.447033 Process 357 bytes request [CONTINUED] 01:34:04.447097 - request found to be complete (579) 01:34:04.447304 Wrote request (357 bytes) input to log/3/server.input 01:34:04.447395 BOUNCE part number to 1 01:34:04.447465 Send response test579 section 01:34:04.447820 Response sent (115 bytes) and written to log/3/server.response 01:34:04.447886 => persistent connection request ended, awaits new request 01:34:05.142220 Connection closed by client 01:34:05.142429 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 36808 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file ip579 Progress: start UL 0/0 Progress: end UL 5/0 Progress: start UL 0/0 Progress: end UL 66/0 === End of file ip579 === Start of file server.cmd Testnum 579 === End of file server.cmd === Start of file server.input POST /579 HTTP/1.1 Host: 127.0.0.1:46853 Accept: */* Transfer-Encoding: chunked Content-Type: application/x-www-form-urlencoded 0 POST /579 HTTP/1.1 Host: 127.0.0.1:46853 Authorization: Digest username="foo", realm="testrealm", nonce="1053604144", uri="/579", response="fa588227e683aa3718cd15596102fdae" Accept: */* Transfer-Encoding: chunked Content-Type: application/x-www-form-urlencoded Expect: 100-continue 3 one 3 two 5 three 1d and a final longer crap: four 0 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 100 Continue Server: Microsoft-IIS/5.0 Date: Sun, 03 Apr 2005 14:57:45 GMT X-Powered-By: ASP.NET HTTP/1.1 401 authentication please swsbounce Server: Microsoft-IIS/6.0 WWW-Authenticate: Digest realm="testrealm", nonce="1053604144" Content-Type: text/html; charset=iso-8859-1 Content-Length: 0 HTTP/1.1 200 A OK Server: Microsoft-IIS/6.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 3 ok === End of file server.response === Start of file stderr579 URL: http://127.0.0.1:46853/579 * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 56930 * using HTTP/1.x * Server auth using Digest with user 'foo' > POST /579 HTTP/1.1 Host: 127.0.0.1:46853 Accept: */* Transfer-Encoding: chunked Content-Type: application/x-www-form-urlencoded * upload completely sent off: 5 bytes < HTTP/1.1 100 Continue < Server: Microsoft-IIS/5.0 < Date: Sun, 03 Apr 2005 14:57:45 GMT < X-Powered-By: ASP.NET < < HTTP/1.1 401 authentication please swsbounce < Server: Microsoft-IIS/6.0 < WWW-Authenticate: Digest realm="testrealm", nonce="1053604144" < Content-Type: text/html; charset=iso-8859-1 < Content-Length: 0 * Ignoring the response-body * setting size while ignoring < * Connection #0 to host 127.0.0.1:46853 left intact * Issue another request to this URL: 'http://127.0.0.1:46853/579' * Reusing existing http: connection with host 127.0.0.1 * Server auth using Digest with user 'foo' > POST /579 HTTP/1.1 Host: 127.0.0.1:46853 Authorization: Digest username="foo", realm="testrealm", nonce="1053604144", uri="/579", response="fa588227e683aa3718cd15596102fdae" Accept: */* Transfer-Encoding: chunked Content-Type: application/x-www-form-urlencoded Expect: 100-continue * Done waiting for 100-continue * upload completely sent off: 66 bytes < HTTP/1.1 200 A OK < Server: Microsoft-IIS/6.0 < Content-Type: text/html; charset=iso-8859-1 < Content-Length: 3 < * Connection #0 to host 127.0.0.1:46853 left intact Test ended with result 0 === End of file stderr579 === Start of file stdout579 HTTP/1.1 100 Continue Server: Microsoft-IIS/5.0 Date: Sun, 03 Apr 2005 14:57:45 GMT X-Powered-By: ASP.NET HTTP/1.1 401 authentication please swsbounce Server: Microsoft-IIS/6.0 WWW-Authenticate: Digest realm="testrealm", nonce="1053604144" Content-Type: text/html; charset=iso-8859-1 Content-Length: 0 HTTP/1.1 200 A OK Server: Microsoft-IIS/6.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 3 ok === End of file stdout579 === Start of file valgrind579 ==270960== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind579 test 0580...[multi interface, multiple Location: headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind580 ./libtest/libtests lib507 http://127.0.0.1:46263/580 > log/5/stdout580 2> log/5/stderr580 valgrind ERROR ==271128== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 580 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind580 ./libtest/libtests lib507 http://127.0.0.1:46263/580 > log/5/stdout580 2> log/5/stderr580 === End of file commands.log === Start of file http_server.log 01:33:19.524259 ====> Client connect 01:33:19.524414 accept_connection 3 returned 4 01:33:19.524486 accept_connection 3 returned 0 01:33:19.531308 Read 93 bytes 01:33:19.531416 Process 93 bytes request 01:33:19.531499 Got request: GET /verifiedserver HTTP/1.1 01:33:19.531560 Are-we-friendly question received 01:33:19.531668 Wrote request (93 bytes) input to log/5/server.input 01:33:19.531747 Identifying ourselves as friends 01:33:19.531910 Response sent (57 bytes) and written to log/5/server.response 01:33:19.531967 special request received, no persistency 01:33:19.532020 ====> Client disconnect 0 01:34:03.873549 ====> Client connect 01:34:03.873696 accept_connection 3 returned 4 01:34:03.873775 accept_connection 3 returned 0 01:34:04.820978 Read 57 bytes 01:34:04.821156 Process 57 bytes request 01:34:04.821247 Got request: GET /580 HTTP/1.1 01:34:04.821310 Serve test number 580 part 0 01:34:04.821488 - request found to be complete (580) 01:34:04.821753 Wrote request (57 bytes) input to log/5/server.input 01:34:04.821853 Send response test580 section 01:34:04.822212 Response sent (213 bytes) and written to log/5/server.response 01:34:04.822276 => persistent connection request ended, awaits new request 01:34:05.936085 Connection closed by client 01:34:05.936289 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 39830 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 580 === End of file server.cmd === Start of file server.input GET /580 HTTP/1.1 Host: 127.0.0.1:46263 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 302 eat this Date:CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind581 ./libtest/libtests lib507 http://127.0.0.1:39863/581 > log/2/stdout581 2> log/2/stderr581 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind585 ./libtest/libtests lib500 http://127.0.0.1:39461/585 > log/8/stdout585 2> log/8/stderr585 Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: this-is-the-first.html Content-Length: 0 Connection: close Location: and there's a second one too! / moo.html === End of file server.response === Start of file stderr580 URL: http://127.0.0.1:46263/580 Test ended with result 8 === End of file stderr580 === Start of file stdout580 HTTP/1.1 302 eat this Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: this-is-the-first.html Content-Length: 0 Connection: close === End of file stdout580 === Start of file valgrind580 ==271128== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind580 test 0581...[multi interface, multiple Content-Type: headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind581 ./libtest/libtests lib507 http://127.0.0.1:39863/581 > log/2/stdout581 2> log/2/stderr581 valgrind ERROR ==271299== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 581 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind581 ./libtest/libtests lib507 http://127.0.0.1:39863/581 > log/2/stdout581 2> log/2/stderr581 === End of file commands.log === Start of file http_server.log 01:33:30.124261 ====> Client connect 01:33:30.124417 accept_connection 3 returned 4 01:33:30.124491 accept_connection 3 returned 0 01:33:30.131523 Read 93 bytes 01:33:30.131627 Process 93 bytes request 01:33:30.131716 Got request: GET /verifiedserver HTTP/1.1 01:33:30.131780 Are-we-friendly question received 01:33:30.131889 Wrote request (93 bytes) input to log/2/server.input 01:33:30.131979 Identifying ourselves as friends 01:33:30.132135 Response sent (57 bytes) and written to log/2/server.response 01:33:30.132196 special request received, no persistency 01:33:30.132250 ====> Client disconnect 0 01:34:12.133635 ====> Client connect 01:34:12.133800 accept_connection 3 returned 4 01:34:12.133886 accept_connection 3 returned 0 01:34:13.218891 Read 57 bytes 01:34:13.219083 Process 57 bytes request 01:34:13.219194 Got request: GET /581 HTTP/1.1 01:34:13.219278 Serve test number 581 part 0 01:34:13.219490 - request found to be complete (581) 01:34:13.219772 Wrote request (57 bytes) input to log/2/server.input 01:34:13.219898 Send response test581 section 01:34:13.220349 Response sent (183 bytes) and written to log/2/server.response 01:34:13.220428 => persistent connection request ended, awaits new request 01:34:14.682214 Connection closed by client 01:34:14.682427 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 42180 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 581 === End of file server.cmd === Start of file server.input GET /581 HTTP/1.1 Host: 127.0.0.1:39863 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 all good Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Content-Length: 0 Connection: close Content-Type: changed/my/mind === End of file server.response === Start of file stderr581 URL: http://127.0.0.1:39863/581 Test ended with result 0 === End of file stderr581 === Start of file stdout581 HTTP/1.1 200 all good Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Content-Length: 0 Connection: close Content-Type: changed/my/mind === End of file stdout581 === Start of file valgrind581 ==271299== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind581 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 588 in state 4 Runner 2 (id 185908) running test 591 in state 4 Runner 3 (id 185910) running test 589 in state 4 Runner 4 (id 185912) running test 587 in state 4 Runner 5 (id 185914) running test 590 in state 4 Runner 6 (id 185916) running test 586 in state 4 Runner 7 (id 185918) running test 584 in state 4 Runner 8 (id 185920) running test 585 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 588 in state 4 Runner 2 (id 185908) running test 591 in state 4 Runner 3 (id 185910) running test 589 in state 4 Runner 4 (id 185912) running test 587 in state 4 Runner 5 (id 185914) running test 590 in state 4 Runner 6 (id 185916) running test 586 in state 4 Runner 7 (id 185918) running test 584 in state 4 Runner 8 (id 185920) running test 585 in state 4 test 0585...[socket open/close callbacks] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind585 ./libtest/libtests lib500 http://127.0.0.1:39461/585 > log/8/stdout585 2> log/8/stderr585 valgrind ERROR ==271757== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 585 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind585 ./libtest/libtests lib500 http://127.0.0.1:39461/585 > log/8/stdout585 2> log/8/stderr585 === End of file commands.log === Start of file http_server.log 01:33:51.425732 ====> Client connect 01:33:51.425892 accept_connection 3 returned 4 01:33:51.425965 accept_connection 3 returned 0 01:33:51.432043 Read 93 bytes 01:33:51.432133 Process 93 bytes request 01:33:51.432219 Got request: GET /verifiedserver HTTP/1.1 01:33:51.432295 Are-we-friendly question received 01:33:51.432401 Wrote request (93 bytes) input to log/8/server.input 01:33:51.432490 Identifying ourselves as friends 01:33:51.432643 Response sent (57 bytes) and written to log/8/server.response 01:33:51.432706 special request received, no persistency 01:33:51.432761 ====> Client disconnect 0 01:34:36.847273 ====> Client connect 01:34:36.847419 accept_connection 3 returned 4 01:34:36.847498 accept_connection 3 returned 0 01:34:37.866906 Read 57 bytes 01:34:37.867113 Process 57 bytes request 01:34:37.867209 Got request: GET /585 HTTP/1.1 01:34:37.867283 Serve test number 585 part 0 01:34:37.867470 - request found to be complete (585) 01:34:37.867724 Wrote request (57 bytes) input to log/8/server.input 01:34:37.867832 Send response test585 section 01:34:37.868187 Response sent (161 bytes) and written to log/8/server.response 01:34:37.868255 => persistent connection request ended, awaits new request 01:34:39.828226 Connection closed by client 01:34:39.828411 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 45692 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 585 === End of file server.cmd === Start of file server.input GET /585 HTTP/1.1 HostCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind584 ./libtest/libtests lib589 http://127.0.0.1:34897/584 > log/7/stdout584 2> log/7/stderr584 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind586 ./libtest/libtests lib500 ftp://127.0.0.1:39413/586 > log/6/stdout586 2> log/6/stderr586 : 127.0.0.1:39461 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 302 eat this Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: this-is-the-first.html Content-Length: 0 Connection: close === End of file server.response === Start of file stderr585 URL: http://127.0.0.1:39461/585 01:34:36.533622 == Info: Trying 127.0.0.1:39461... 01:34:37.410360 == Info: Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 38842 01:34:37.557094 == Info: using HTTP/1.x 01:34:37.910422 => Send header, 57 bytes (0x39) 0000: GET /585 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: Accept: */* 0037: 01:34:38.298421 <= Recv header, 24 bytes (0x18) 0000: HTTP/1.1 302 eat this 01:34:38.544378 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:34:38.631600 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:34:38.704037 <= Recv header, 34 bytes (0x22) 0000: Location: this-is-the-first.html 01:34:38.745829 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 0 01:34:38.803620 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:34:38.898254 <= Recv header, 2 bytes (0x2) 0000: 01:34:38.995237 == Info: we are done reading and this is set to close, stop send 01:34:39.056149 == Info: abort upload 01:34:39.597491 == Info: shutting down connection #0 Test ended with result 0 === End of file stderr585 === Start of file stdout585 [OPEN] counter: 1 HTTP/1.1 302 eat this Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: this-is-the-first.html Content-Length: 0 Connection: close [CLOSE] counter: 1 === End of file stdout585 === Start of file valgrind585 ==271757== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind585 test 0584...[CURLOPT_MIMEPOST first set then set to NULL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind584 ./libtest/libtests lib589 http://127.0.0.1:34897/584 > log/7/stdout584 2> log/7/stderr584 valgrind ERROR ==271598== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 584 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind584 ./libtest/libtests lib589 http://127.0.0.1:34897/584 > log/7/stdout584 2> log/7/stderr584 === End of file commands.log === Start of file http_server.log 01:33:45.372410 ====> Client connect 01:33:45.372565 accept_connection 3 returned 4 01:33:45.372645 accept_connection 3 returned 0 01:33:45.377649 Read 93 bytes 01:33:45.377737 Process 93 bytes request 01:33:45.377828 Got request: GET /verifiedserver HTTP/1.1 01:33:45.377895 Are-we-friendly question received 01:33:45.378008 Wrote request (93 bytes) input to log/7/server.input 01:33:45.378098 Identifying ourselves as friends 01:33:45.378257 Response sent (57 bytes) and written to log/7/server.response 01:33:45.378320 special request received, no persistency 01:33:45.378377 ====> Client disconnect 0 01:34:35.905747 ====> Client connect 01:34:35.905901 accept_connection 3 returned 4 01:34:35.905991 accept_connection 3 returned 0 01:34:37.356547 Read 327 bytes 01:34:37.356763 Process 327 bytes request 01:34:37.356863 Got request: POST /584 HTTP/1.1 01:34:37.356941 Serve test number 584 part 0 01:34:37.357140 - request found to be complete (584) 01:34:37.357319 Found Content-Length: 156 in the request 01:34:37.357498 Wrote request (327 bytes) input to log/7/server.input 01:34:37.357610 Send response test584 section 01:34:37.357837 connection close instruction "swsclose" found in response 01:34:37.358011 Response sent (113 bytes) and written to log/7/server.response 01:34:37.358080 instructed to close connection after server-reply 01:34:37.358140 ====> Client disconnect 0 01:34:39.627407 ====> Client connect 01:34:39.627544 accept_connection 3 returned 4 01:34:39.627618 accept_connection 3 returned 0 01:34:39.706335 Read 77 bytes 01:34:39.706500 Process 77 bytes request 01:34:39.706604 Got request: POST /584 HTTP/1.1 01:34:39.706682 Serve test number 584 part 0 01:34:39.706874 - request found to be complete (584) 01:34:39.707042 Found Content-Length: 0 in the request 01:34:39.707149 Wrote request (77 bytes) input to log/7/server.input 01:34:39.707240 Send response test584 section 01:34:39.707476 connection close instruction "swsclose" found in response 01:34:39.707632 Response sent (113 bytes) and written to log/7/server.response 01:34:39.707695 instructed to close connection after server-reply 01:34:39.707753 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 44296 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 584 === End of file server.cmd === Start of file server.input POST /584 HTTP/1.1 Host: 127.0.0.1:34897 Accept: */* Content-Length: 156 Content-Type: multipart/form-data; boundary=------------------------tgNG3YD8XaVyxi2grixARo --------------------------tgNG3YD8XaVyxi2grixARo Content-Disposition: form-data; name="fake" party --------------------------tgNG3YD8XaVyxi2grixARo-- POST /584 HTTP/1.1 Host: 127.0.0.1:34897 Accept: */* Content-Length: 0 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 3 OK HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 3 OK === End of file server.response === Start of file stderr584 URL: http://127.0.0.1:34897/584 * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 57286 * using HTTP/1.x > POST /584 HTTP/1.1 Host: 127.0.0.1:34897 Accept: */* Content-Length: 156 Content-Type: multipart/form-data; boundary=------------------------tgNG3YD8XaVyxi2grixARo * upload completely sent off: 156 bytes < HTTP/1.1 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Content-Length: 3 < * Connection #0 to host 127.0.0.1:34897 left intact * Connection 0 seems to be dead * shutting down connection #0 * Hostname 127.0.0.1 was found in DNS cache * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 57292 * using HTTP/1.x > POST /584 HTTP/1.1 Host: 127.0.0.1:34897 Accept: */* Content-Length: 0 < HTTP/1.1 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Content-Length: 3 < * Connection #1 to host 127.0.0.1:34897 left intact Test ended with result 0 === End of file stderr584 === Start of file stdout584 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 3 OK HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 3 OK === End of file stdout584 === Start of file valgrind584 ==271598== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind584 test 0586...[FTP and open/close socket callbacks] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind586 ./libtest/libtests lib500 ftp://127.0.0.1:39413/586 > log/6/stdout586 2> log/6/stderr586 valgrind ERROR ==271896== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 586 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind586 ./libtest/libtests lib500 ftp://127.0.0.1:39413/586 > log/6/stdout586 2> log/6/stderr586 === End of file commands.log === Start of file ftp_server.log 01:33:53.021956 ====> Client connect 01:33:53.023556 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:33:53.029690 < "USER anonymous" 01:33:53.030245 > "331 We are happy you popped in![CR][LF]" 01:33:53.031488 < "PASS ftp@example.com" 01:33:53.031807 > "230 Welcome you silly person[CR][LF]" 01:33:53.032666 < "PWD" 01:33:53.032919 > "257 "/" is current directory[CR][LF]" 01:33:53.034881 < "EPSV" 01:33:53.035071 ====> Passive DATA channel requested by client 01:33:53.035201 DATA sockfilt for passive data channel starting... 01:33:53.076037 DATA sockfilt for passive data channel started (pid 271858) 01:33:53.077335 DATA sockfilt for passive data channel listens on port 34201 01:33:53.077756 > "229 Entering Passive Mode (|||34201|)[CR][LF]" 01:33:53.077943 Client has been notified that DATA conn will be accepted on port 34201 01:33:53.081471 Client connects to port 34201 01:33:53.081691 ====> Client established passive DATA connection on port 34201 01:33:53.082349 < "TYPE I" 01:33:53.083501 > "200 I modify TYPE as you wanted[CR][LF]" 01:33:53.084057 < "SIZE verifiedserver" 01:33:53.085114 > "213 18[CR][LF]" 01:33:53.085853 < "RETR verifiedserver" 01:33:53.088540 > "150 Binary junk (18 bytes).[CR][LF]" 01:33:53.089120 =====> Closing passive DATA connection... 01:33:53.089290 Server disconnects passive DATA connection 01:33:53.090801 Server disconnected passive DATA connection 01:33:53.090981 DATA sockfilt for passive data channel quits (pid 271858) 01:33:53.097849 DATA sockfilt for passive data channel quit (pid 271858) 01:33:53.098034 =====> Closed passive DATA connection 01:33:53.098541 > "226 File transfer complete[CR][LF]" 01:33:53.138062 < "QUIT" 01:33:53.139452 > "221 bye bye baby[CR][LF]" 01:33:53.139686 MAIN sockfilt said DISC 01:33:53.139888 ====> Client disconnected 01:33:53.140184 Awaiting input 01:34:37.877849 ====> Client connect 01:34:37.878578 FTPD: Getting commands from log/6/server.cmd 01:34:37.878910 FTPD: run test case number: 586 01:34:37.884186 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:34:39.171627 < "USER anonymous" 01:34:39.172060 > "331 We are happy you popped in![CR][LF]" 01:34:39.296430 < "PASS ftp@example.com" 01:34:39.296894 > "230 Welcome you silly person[CR][LF]" 01:34:39.405216 < "PWD" 01:34:39.406042 > "257 "/" is current directory[CR][LF]" 01:34:39.642939 < "EPSV" 01:34:39.643291 ====> Passive DATA channel requested by client 01:34:39.643448 DATA sockfilt for passive data channel starting... 01:34:39.729186 DATA sockfilt for passive data channel started (pid 272858) 01:34:39.737825 DATA sockfilt for passive data channel listens on port 34219 01:34:39.738316 > "229 Entering Passive Mode (|||34219|)[CR][LF]" 01:34:39.738503 Client has been notified that DATA conn will be accepted on port 34219 01:34:39.965992 Client connects to port 34219 01:34:39.966569 ====> Client established passive DATA connection on port 34219 01:34:40.093560 < "TYPE I" 01:34:40.097461 > "200 I modify TYPE as you wanted[CR][LF]" 01:34:40.160400 < "SIZE 586" 01:34:40.164467 > "213 24[CR][LF]" 01:34:40.252169 < "RETR 586" 01:34:40.257639 > "150 Binary data connection for 586 () (24 bytes).[CR][LF]" 01:34:40.258313 =====> Closing passive DATA connection... 01:34:40.258480 Server disconnects passive DATA connection 01:34:40.259835 Server disconnected passive DATA connection 01:34:40.260033 DATA sockfilt for passive data channel quits (pid 272858) 01:34:40.263303 DATA sockfilt for passive data channel quit (pid 272858) 01:34:40.263523 =====> Closed passive DATA connection 01:34:40.263807 > "226 File transfer complete[CR][LF]" 01:34:42.013656 < "QUIT" 01:34:42.014097 > "221 bye bye baby[CR][LF]" 01:34:42.147196 MAIN sockfilt said DISC 01:34:42.147859 ====> Client disconnected 01:34:42.148169 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:33:52.632598 ====> Client connect 01:33:52.634392 Received DATA (on stdin) 01:33:52.634478 > 160 bytes data, server => client 01:33:52.634623 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:33:52.634737 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:33:52.634836 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:33:52.640314 < 16 bytes data, client => server 01:33:52.640436 'USER anonymous\r\n' 01:33:52.641554 Received DATA (on stdin) 01:33:52.641633 > 33 bytes data, server => client 01:33:52.642046 '331 We are happy you popped in!\r\n' 01:33:52.642396 < 22 bytes data, client => server 01:33:52.642490 'PASS ftp@example.com\r\n' 01:33:52.643419 Received DATA (on stdin) 01:33:52.643513 > 30 bytes data, server => client 01:33:52.643603 '230 Welcome you silly person\r\n' 01:33:52.643828 < 5 bytes data, client => server 01:33:52.643913 'PWD\r\n' 01:33:52.644421 Received DATA (on stdin) 01:33:52.644510 > 30 bytes data, server => client 01:33:52.644614 '257 "/" is current directory\r\n' 01:33:52.645816 < 6 bytes data, client => server 01:33:52.645911 'EPSV\r\n' 01:33:52.689731 Received DATA (on stdin) 01:33:52.689875 > 39 bytes data, server => client 01:33:52.689979 '229 Entering Passive Mode (|||34201|)\r\n' 01:33:52.692829 < 8 bytes data, client => server 01:33:52.692913 'TYPE I\r\n' 01:33:52.694142 Received DATA (on stdin) 01:33:52.694216 > 33 bytes data, server => client 01:33:52.694332 '200 I modify TYPE as you wanted\r\n' 01:33:52.694716 < 21 bytes data, client => server 01:33:52.694801 'SIZE verifiedserver\r\n' 01:33:52.695912 Received DATA (on stdin) 01:33:52.695991 > 8 bytes data, server => client 01:33:52.696088 '213 18\r\n' 01:33:52.696875 < 21 bytes data, client => server 01:33:52.696961 'RETR verifiedserver\r\n' 01:33:52.697669 Received DATA (on stdin) 01:33:52.697741 > 29 bytes data, server => client 01:33:52.697853 '150 Binary junk (18 bytes).\r\n' 01:33:52.709785 Received DATA (on stdin) 01:33:52.709867 > 28 bytes data, server => client 01:33:52.709962 '226 File transfer complete\r\n' 01:33:52.748293 < 6 bytes data, client => server 01:33:52.748500 'QUIT\r\n' 01:33:52.750002 Received DATA (on stdin) 01:33:52.750084 > 18 bytes data, server => client 01:33:52.750195 '221 bye bye baby\r\n' 01:33:52.750838 ====> Client disconnect 01:33:52.754838 Received ACKD (on stdin) 01:34:37.488997 ====> Client connect 01:34:37.491296 Received DATA (on stdin) 01:34:37.491399 > 160 bytes data, server => client 01:34:37.495945 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:34:37.496063 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:34:37.496152 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:34:38.781728 < 16 bytes data, client => server 01:34:38.781936 'USER anonymous\r\n' 01:34:38.783728 Received DATA (on stdin) 01:34:38.783820 > 33 bytes data, server => client 01:34:38.783922 '331 We are happy you popped in!\r\n' 01:34:38.906736 < 22 bytes data, client => server 01:34:38.906907 'PASS ftp@example.com\r\n' 01:34:38.912140 Received DATA (on stdin) 01:34:38.912248 > 30 bytes data, server => client 01:34:38.912339 '230 Welcome you silly person\r\n' 01:34:39.015436 < 5 bytes data, client => server 01:34:39.015624 'PWD\r\n' 01:34:39.017065 Received DATA (on stdin) 01:34:39.017149 > 30 bytes data, server => client 01:34:39.017261 '257 "/" is current directory\r\n' 0CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind588 ./libtest/libtests lib525 ftp://127.0.0.1:37481/path/588 log/1/upload588 > log/1/stdout588 2> log/1/stderr588 1:34:39.253167 < 6 bytes data, client => server 01:34:39.253369 'EPSV\r\n' 01:34:39.350176 Received DATA (on stdin) 01:34:39.350315 > 39 bytes data, server => client 01:34:39.350413 '229 Entering Passive Mode (|||34219|)\r\n' 01:34:39.703780 < 8 bytes data, client => server 01:34:39.703982 'TYPE I\r\n' 01:34:39.705361 Received DATA (on stdin) 01:34:39.705460 > 33 bytes data, server => client 01:34:39.709188 '200 I modify TYPE as you wanted\r\n' 01:34:39.770656 < 10 bytes data, client => server 01:34:39.770832 'SIZE 586\r\n' 01:34:39.775480 Received DATA (on stdin) 01:34:39.775588 > 8 bytes data, server => client 01:34:39.775693 '213 24\r\n' 01:34:39.862421 < 10 bytes data, client => server 01:34:39.862620 'RETR 586\r\n' 01:34:39.864861 Received DATA (on stdin) 01:34:39.864942 > 51 bytes data, server => client 01:34:39.868850 '150 Binary data connection for 586 () (24 bytes).\r\n' 01:34:39.875187 Received DATA (on stdin) 01:34:39.875288 > 28 bytes data, server => client 01:34:39.875374 '226 File transfer complete\r\n' 01:34:41.623964 < 6 bytes data, client => server 01:34:41.624137 'QUIT\r\n' 01:34:41.628806 Received DATA (on stdin) 01:34:41.628907 > 18 bytes data, server => client 01:34:41.628986 '221 bye bye baby\r\n' 01:34:41.758320 ====> Client disconnect 01:34:41.759118 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:33:53.676496 Running IPv4 version 01:33:53.685582 Listening on port 34201 01:33:53.686099 Wrote pid 271858 to log/6/server/ftp_sockdata.pid 01:33:53.686984 Received PING (on stdin) 01:33:53.688117 Received PORT (on stdin) 01:33:53.692663 ====> Client connect 01:33:53.701025 Received DATA (on stdin) 01:33:53.701345 > 18 bytes data, server => client 01:33:53.701748 'WE ROOLZ: 201819\r\n' 01:33:53.702008 Received DISC (on stdin) 01:33:53.702135 ====> Client forcibly disconnected 01:33:53.702702 Received QUIT (on stdin) 01:33:53.702787 quits 01:33:53.703329 ============> sockfilt quits 01:34:39.320776 Running IPv4 version 01:34:39.338884 Listening on port 34219 01:34:39.339387 Wrote pid 272858 to log/6/server/ftp_sockdata.pid 01:34:39.340212 Received PING (on stdin) 01:34:39.345461 Received PORT (on stdin) 01:34:39.577133 ====> Client connect 01:34:39.869403 Received DATA (on stdin) 01:34:39.869805 > 7 bytes data, server => client 01:34:39.870170 'line 1\n' 01:34:39.870446 Received DATA (on stdin) 01:34:39.870517 > 7 bytes data, server => client 01:34:39.870596 'line 2\n' 01:34:39.870692 Received DATA (on stdin) 01:34:39.870759 > 10 bytes data, server => client 01:34:39.870832 'last line\n' 01:34:39.870928 Received DISC (on stdin) 01:34:39.871054 ====> Client forcibly disconnected 01:34:39.871633 Received QUIT (on stdin) 01:34:39.871712 quits 01:34:39.872253 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 586 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE 586 RETR 586 QUIT === End of file server.input === Start of file stderr586 URL: ftp://127.0.0.1:39413/586 01:34:37.185958 == Info: Trying 127.0.0.1:39413... 01:34:38.051950 == Info: Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 34290 01:34:38.309558 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:34:38.627041 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:34:38.659625 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:34:38.674295 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:34:38.687594 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:34:38.802507 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:34:38.876595 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:34:38.908118 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:34:38.986686 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:34:39.015524 => Send header, 5 bytes (0x5) 0000: PWD 01:34:39.038249 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:34:39.084875 == Info: Entry path is '/' 01:34:39.193220 == Info: Request has same path as previous transfer 01:34:39.253256 => Send header, 6 bytes (0x6) 0000: EPSV 01:34:39.277946 == Info: Connect data stream passively 01:34:39.366688 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||34219|) 01:34:39.493977 == Info: Connecting to 127.0.0.1 (127.0.0.1) port 34219 01:34:39.565744 == Info: Trying 127.0.0.1:34219... 01:34:39.661671 == Info: Established 2nd connection to 127.0.0.1 (127.0.0.1 port 34219) from 127.0.0.1 port 37918 01:34:39.703876 => Send header, 8 bytes (0x8) 0000: TYPE I 01:34:39.728967 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:34:39.770726 => Send header, 10 bytes (0xa) 0000: SIZE 586 01:34:39.805755 <= Recv header, 8 bytes (0x8) 0000: 213 24 01:34:39.862392 => Send header, 10 bytes (0xa) 0000: RETR 586 01:34:39.890713 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 586 () (24 bytes). 01:34:39.943510 == Info: Maxdownload = -1 01:34:39.959662 == Info: Getting file with size: 24 01:34:40.115332 <= Recv data, 24 bytes (0x18) 0000: line 1.line 2.last line. 01:34:40.412829 == Info: abort upload 01:34:40.441355 <= Recv data, 0 bytes (0x0) 01:34:40.618168 == Info: Remembering we are in dir "" 01:34:40.839656 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:34:41.135217 == Info: Connection #0 to host 127.0.0.1:39413 left intact Test ended with result 0 === End of file stderr586 === Start of file stdout586 [OPEN] counter: 1 [OPEN] counter: 2 line 1 line 2 last line [CLOSE] counter: 2 [CLOSE] counter: 1 === End of file stdout586 === Start of file valgrind586 ==271896== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind586 test 0588...[FTP PORT upload using multi interface, EPRT doesn't work] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind588 ./libtest/libtests lib525 ftp://127.0.0.1:37481/path/588 log/1/upload588 > log/1/stdout588 2> log/1/stderr588 valgrind ERROR ==272198== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 588 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind588 ./libtest/libtests lib525 ftp://127.0.0.1:37481/path/588 log/1/upload588 > log/1/stdout588 2> log/1/stderr588 === End of file commands.log === Start of file ftp_server.log 01:33:56.053666 ====> Client connect 01:33:56.057541 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:33:56.062627 < "USER anonymous" 01:33:56.063216 > "331 We are happy you popped in![CR][LF]" 01:33:56.064099 < "PASS ftp@example.com" 01:33:56.064362 > "230 Welcome you silly person[CR][LF]" 01:33:56.065494 < "PWD" 01:33:56.065889 > "257 "/" is current directory[CR][LF]" 01:33:56.068407 < "EPSV" 01:33:56.068605 ====> Passive DATA channel requested by client 01:33:56.068745 DATA sockfilt for passive data channel starting... 01:33:56.122761 DATA sockfilt for passive data channel started (pid 272184) 01:33:56.124091 DATA sockfilt for passive data channel listens on port 40747 01:33:56.124905 > "229 Entering Passive Mode (|||40747|)[CR][LF]" 01:33:56.125088 Client has been notified that DATA conn will be accepted on port 40747 01:33:56.128853 Client connects to port 40747 01:33:56.129077 ====> Client established passive DATA connection on port 40747 01:33:56.129964 < "TYPE I" 01:33:56.130529 > "200 I modify TYPE as you wanted[CR][LF]" 01:33:56.131244 < "SIZE verifiedserver" 01:33:56.131718 > "213 18[CR][LF]" 01:33:56.132801 < "RETR verifiedserver" 01:33:56.133367 > "150 Binary junk (18 bytes).[CR][LF]" 01:33:56.133884 =====> Closing passive DATA connection... 01:33:56.134057 Server disconnects passive DATA connection 01:33:56.135501 Server disconnected passive DATA connection 01:33:56.135667 DATA sockfilt for passive data channel quits (pid 272184) 01:33:56.138915 DATA sockfilt for passive data channel quit (pid 272184) 01:33:56.139087 =====> Closed passive DATA connection 01:33:56.139622 > "226 File transfer complete[CR][LF]" 01:33:56.182782 < "QUIT" 01:33:56.184064 > "221 bye bye baby[CR][LF]" 01:33:56.184293 MAIN sockfilt said DISC 01:33:56.184487 ====> Client disconnected 01:33:56.184769 Awaiting input 01:34:41.174533 ====> Client connect 01:34:41.175271 FTPD: Getting commands from log/1/server.cmd 01:34:41.176040 FTPD: set custom reply for EPRT command 01:34:41.176310 FTPD: run test case number: 588 01:34:41.180836 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:34:42.378550 < "USER anonymous" 01:34:42.384137 > "331 We are happy you popped in![CR][LF]" 01:34:42.477478 < "PASS ftp@example.com" 01:34:42.477909 > "230 Welcome you silly person[CR][LF]" 01:34:42.566672 < "PWD" 01:34:42.567137 > "257 "/" is current directory[CR][LF]" 01:34:42.769839 < "CWD path" 01:34:42.770244 > "250 CWD command successful.[CR][LF]" 01:34:42.940752 < "EPRT |1|127.0.0.1|40189|" 01:34:42.941514 > "500 we don't like EPRT now[CR][LF]" 01:34:43.170682 < "PORT 127,0,0,1,179,91" 01:34:43.174109 > "200 You said PORT - I say FINE[CR][LF]" 01:34:43.174373 ====> Active DATA channel requested by client 01:34:43.175006 DATA sockfilt for active data channel starting... 01:34:43.259132 DATA sockfilt for active data channel started (pid 272870) 01:34:43.259627 ====> Active DATA channel connected to client port 45915 01:34:43.537547 < "TYPE I" 01:34:43.538324 > "200 I modify TYPE as you wanted[CR][LF]" 01:34:43.578379 < "STOR 588" 01:34:43.578687 STOR test number 588 in log/1/upload.588 01:34:43.579259 > "125 Gimme gimme gimme![CR][LF]" 01:34:43.937540 > Appending 27 bytes to file 01:34:44.343600 =====> Closing active DATA connection... 01:34:44.343933 Server knows active DATA connection is already disconnected 01:34:44.344139 DATA sockfilt for active data channel quits (pid 272870) 01:34:44.347795 DATA sockfilt for active data channel quit (pid 272870) 01:34:44.348010 =====> Closed active DATA connection 01:34:44.348213 received 27 bytes upload 01:34:44.348526 > "226 File transfer complete[CR][LF]" 01:34:45.345021 < "QUIT" 01:34:45.345859 > "221 bye bye baby[CR][LF]" 01:34:45.494130 MAIN sockfilt said DISC 01:34:45.494618 ====> Client disconnected 01:34:45.494916 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:33:56.664784 ====> Client connect 01:33:56.666148 Received DATA (on stdin) 01:33:56.666244 > 160 bytes data, server => client 01:33:56.669415 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:33:56.669540 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:33:56.669642 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:33:56.673289 < 16 bytes data, client => server 01:33:56.673386 'USER anonymous\r\n' 01:33:56.674437 Received DATA (on stdin) 01:33:56.674506 > 33 bytes data, server => client 01:33:56.674607 '331 We are happy you popped in!\r\n' 01:33:56.675151 < 22 bytes data, client => server 01:33:56.675227 'PASS ftp@example.com\r\n' 01:33:56.676154 Received DATA (on stdin) 01:33:56.676223 > 30 bytes data, server => client 01:33:56.676300 '230 Welcome you silly person\r\n' 01:33:56.676581 < 5 bytes data, client => server 01:33:56.676644 'PWD\r\n' 01:33:56.677252 Received DATA (on stdin) 01:33:56.677316 > 30 bytes data, server => client 01:33:56.677622 '257 "/" is current directory\r\n' 01:33:56.679473 < 6 bytes data, client => server 01:33:56.679545 'EPSV\r\n' 01:33:56.735943 Received DATA (on stdin) 01:33:56.736090 > 39 bytes data, server => client 01:33:56.736206 '229 Entering Passive Mode (|||40747|)\r\n' 01:33:56.740884 < 8 bytes data, client => server 01:33:56.740969 'TYPE I\r\n' 01:33:56.741735 Received DATA (on stdin) 01:33:56.741802 > 33 bytes data, server => client 01:33:56.741908 '200 I modify TYPE as you wanted\r\n' 01:33:56.742276 < 21 bytes data, client => server 01:33:56.742358 'SIZE verifiedserver\r\n' 01:33:56.743056 Received DATA (on stdin) 01:33:56.743131 > 8 bytes data, server => client 01:33:56.743448 '213 18\r\n' 01:33:56.743870 < 21 bytes data, client => server 01:33:56.743945 'RETR verifiedserver\r\n' 01:33:56.744605 Received DATA (on stdin) 01:33:56.744671 > 29 bytes data, server => client 01:33:56.744771 '150 Binary junk (18 bytes).\r\n' 01:33:56.750845 Received DATA (on stdin) 01:33:56.750928 > 28 bytes data, server => client 01:33:56.751032 '226 File transfer complete\r\n' 01:33:56.793203 < 6 bytes data, client => server 01:33:56.793365 'QUIT\r\n' 01:33:56.794682 Received DATA (on stdin) 01:33:56.794756 > 18 bytes data, server => client 01:33:56.794857 '221 bye bye baby\r\n' 01:33:56.795441 ====> Client disconnect 01:33:56.798900 Received ACKD (on stdin) 01:34:41.785620 ====> Client connect 01:34:41.788765 Received DATA (on stdin) 01:34:41.788890 > 160 bytes data, server => client 01:34:41.792563 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:34:41.792685 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:34:41.792775 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:34:42.988721 < 16 bytes data, client => server 01:34:42.988924 'USER anonymous\r\n' 01:34:42.990342 Received DATA (on stdin) 01:34:42.990422 > 33 bytes data, server => client 01:34:42.995905 '331 We are happy you popped in!\r\n' 01:34:43.087635 < 22 bytes data, client => server 01:34:43.087819 'PASS ftp@example.com\r\n' 01:34:43.089554 Received DATA (on stdin) 01:34:43.089644 > 30 bytes data, server => client 01:34:43.089731 '230 Welcome you silly person\r\n' 01:34:43.176988 < 5 bytes data, client => server 01:34:43.177152 'PWD\r\n' 01:34:43.178781 Received DATA (on stdin) 01:34:43.178869 > 30 bytes data, server => client 01:34:43.178956 '257 "/" is current directory\r\n' 01:34:43.380119 < 10 bytes data, client => server 01:34:43.380322 'CWD path\r\n' 01:34:43.385459 Received DATA (on stdin) 01:34:43.385559 > 29 bytes data, server => client 01:34:43.385644 '250 CWD command successful.\r\n' 01:34:43.550979 < 26 bytes data, client => server 01:34:43.551185 'EPRT |1|127.0.0.1|40189|\r\n' 01:34:43.552547 Received DATA (on stdin) 01:34:43.552634 > 28 bytes data, server => client 01:34:43.552747 '500 we don't like EPRT now\r\n' 01:34:43.780919 < 23 bytes data, client => server 01:34:43.781108 'PORT 127,0,0,1,179,91\r\n' 01:34:43.782478 Received DATA (on stdin) 01:34:43.782564 > 32 bytes data, server => client 01:34:43.788549 '200 You said PORT - I say FINE\r\n' 01:34:44.147781 < 8 bytes data, client => server 01:34:44.147951 'TYPE I\r\n' 01:34:44.149356 Received DATA (on stdin) 01:34:44.149439 > 33 bytes data, server => client 01:34:44.149549 '200 I modify TYPE as you wanted\r\n' 01:34:44.188759 < 10 bytes data, client => server 01:34:44.188929 'STOR 588\r\n' 01:34:44.190325 Received DATA (on stdin) 01:34:44.190403 > 24 bytes data, server => client 01:34:44.190504 '125 Gimme gimme gimme!\r\n' 01:34:44.959875 Received DATA (on stdin) 01:34:44.960033 > 28 bytes data, server => client 01:34:44.960125 '226 File transfer complete\r\n' 01:34:45.953732 < 6 bytes data, client => server 01:34:45.953877 'QUIT\r\n' 01:34:45.956853 Received DATA (on stdin) 01:34:45.956955 > 18 bytes data, server => client 01:34:45.957078 '221 bye bye baby\r\n' 01:34:46.104051 ====> Client disconnect 01:34:46.106539 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:33:56.724545 Running IPv4 version 01:33:56.732438 Listening on CMD (10752): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind587 ./libtest/libtests lib554 http://127.0.0.1:42621/587 > log/4/stdout587 2> log/4/stderr587 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind589 ./libtest/libtests lib589 http://127.0.0.1:46853/589 > log/3/stdout589 2> log/3/stderr589 port 40747 01:33:56.732920 Wrote pid 272184 to log/1/server/ftp_sockdata.pid 01:33:56.733716 Received PING (on stdin) 01:33:56.734857 Received PORT (on stdin) 01:33:56.740218 ====> Client connect 01:33:56.745783 Received DATA (on stdin) 01:33:56.746075 > 18 bytes data, server => client 01:33:56.746476 'WE ROOLZ: 202066\r\n' 01:33:56.746722 Received DISC (on stdin) 01:33:56.746844 ====> Client forcibly disconnected 01:33:56.747371 Received QUIT (on stdin) 01:33:56.747448 quits 01:33:56.747947 ============> sockfilt quits 01:34:43.850910 ====> Client connect 01:34:43.862025 Running IPv4 version 01:34:43.868893 Connected to port 45915 01:34:43.869383 Wrote pid 272870 to log/1/server/ftp_sockdata.pid 01:34:43.870198 Received PING (on stdin) 01:34:44.548399 < 27 bytes data, client => server 01:34:44.548909 'Moooooooooooo\n upload this\n' 01:34:44.953873 ====> Client disconnect 01:34:44.954338 Received ACKD (on stdin) 01:34:44.954669 disconnected, no socket to read on 01:34:44.955749 Received QUIT (on stdin) 01:34:44.955859 quits 01:34:44.956491 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPRT 500 we don't like EPRT now Testnum 588 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD path EPRT |1|127.0.0.1|40189| PORT 127,0,0,1,179,91 TYPE I STOR 588 QUIT === End of file server.input === Start of file stderr588 URL: ftp://127.0.0.1:37481/path/588 * Trying 127.0.0.1:37481... * Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 127.0.0.1 port 42472 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' > CWD path < 250 CWD command successful. > EPRT |1|127.0.0.1|40189| < 500 we don't like EPRT now * disabling EPRT usage * Hostname 127.0.0.1 was found in DNS cache > PORT 127,0,0,1,179,91 < 200 You said PORT - I say FINE * Connect data stream actively * Ready to accept data connection from server * Connection accepted from server * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 55622) from 127.0.0.1 port 45915 > TYPE I < 200 I modify TYPE as you wanted > STOR 588 < 125 Gimme gimme gimme * upload completely sent off: 27 bytes * Remembering we are in dir "path/" < 226 File transfer complete * Connection #0 to host 127.0.0.1:37481 left intact Test ended with result 0 === End of file stderr588 === Start of file upload.588 Moooooooooooo upload this === End of file upload.588 === Start of file upload588 Moooooooooooo upload this === End of file upload588 === Start of file valgrind588 ==272198== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind588 test 0587...[HTTP multi-part formpost with aborted read callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind587 ./libtest/libtests lib554 http://127.0.0.1:42621/587 > log/4/stdout587 2> log/4/stderr587 valgrind ERROR ==272049== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 587 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind587 ./libtest/libtests lib554 http://127.0.0.1:42621/587 > log/4/stdout587 2> log/4/stderr587 === End of file commands.log === Start of file http_server.log 01:33:55.130755 ====> Client connect 01:33:55.130906 accept_connection 3 returned 4 01:33:55.130975 accept_connection 3 returned 0 01:33:55.136841 Read 93 bytes 01:33:55.136927 Process 93 bytes request 01:33:55.137013 Got request: GET /verifiedserver HTTP/1.1 01:33:55.137071 Are-we-friendly question received 01:33:55.137169 Wrote request (93 bytes) input to log/4/server.input 01:33:55.137251 Identifying ourselves as friends 01:33:55.137416 Response sent (57 bytes) and written to log/4/server.response 01:33:55.137473 special request received, no persistency 01:33:55.137521 ====> Client disconnect 0 01:34:40.082756 ====> Client connect 01:34:40.082891 accept_connection 3 returned 4 01:34:40.082972 accept_connection 3 returned 0 01:34:47.903307 Read 294 bytes 01:34:47.903513 Process 294 bytes request 01:34:47.903612 Got request: POST /587 HTTP/1.1 01:34:47.903686 Serve test number 587 part 0 01:34:47.903862 - request found to be complete (587) 01:34:47.904014 Found Content-Length: 780 in the request 01:34:48.610750 Connection closed by client 01:34:48.611015 Wrote request (294 bytes) input to log/4/server.input 01:34:48.611120 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 46794 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 587 === End of file server.cmd === Start of file server.input POST /587 HTTP/1.1 Host: 127.0.0.1:42621 Accept: */* Content-Length: 780 Content-Type: multipart/form-data; boundary=------------------------GhiKlLDXqb5V7FIeugDdvK --------------------------GhiKlLDXqb5V7FIeugDdvK Content-Disposition: form-data; name="sendfile"; filename="postit2.c" === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 === End of file server.response === Start of file stderr587 URL: http://127.0.0.1:42621/587 * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 41578 * using HTTP/1.x > POST /587 HTTP/1.1 Host: 127.0.0.1:42621 Accept: */* Content-Length: 780 Content-Type: multipart/form-data; boundary=------------------------GhiKlLDXqb5V7FIeugDdvK * operation aborted by callback * closing connection #0 Test ended with result 42 === End of file stderr587 === Start of file valgrind587 ==272049== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind587 test 0589...[make an HTTP MIME POST set to NULL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind589 ./libtest/libtests lib589 http://127.0.0.1:46853/589 > log/3/stdout589 2> log/3/stderr589 valgrind ERROR ==272416== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 589 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind589 ./libtest/libtests lib589 http://127.0.0.1:46853/589 > log/3/stdout589 2> log/3/stderr589 === End of file commands.log === Start of file http_server.log 01:34:09.927384 ====> Client connect 01:34:09.927547 accept_connection 3 returned 4 01:34:09.927622 accept_connection 3 returned 0 01:34:09.934416 Read 93 bytes 01:34:09.934500 Process 93 bytes request 01:34:09.934587 Got request: GET /verifiedserver HTTP/1.1 01:34:09.934651 Are-we-friendly question received 01:34:09.934760 Wrote request (93 bytes) input to log/3/server.input 01:34:09.934849 Identifying ourselves as friends 01:34:09.935023 Response sent (57 bytes) and written to log/3/server.response 01:34:09.935083 special request received, no persistency 01:34:09.935138 ====> Client disconnect 0 01:34:55.108904 ====> Client connect 01:34:55.109063 acceptCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind590 ./libtest/libtests lib590 http://test.remote.example.com/path/590 http://127.0.0.1:46263 > log/5/stdout590 2> log/5/stderr590 _connection 3 returned 4 01:34:55.109145 accept_connection 3 returned 0 01:34:56.150926 Read 77 bytes 01:34:56.151142 Process 77 bytes request 01:34:56.151238 Got request: POST /589 HTTP/1.1 01:34:56.151312 Serve test number 589 part 0 01:34:56.151483 - request found to be complete (589) 01:34:56.151628 Found Content-Length: 0 in the request 01:34:56.151792 Wrote request (77 bytes) input to log/3/server.input 01:34:56.151903 Send response test589 section 01:34:56.152120 connection close instruction "swsclose" found in response 01:34:56.152314 Response sent (113 bytes) and written to log/3/server.response 01:34:56.152379 instructed to close connection after server-reply 01:34:56.152439 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 56714 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 589 === End of file server.cmd === Start of file server.input POST /589 HTTP/1.1 Host: 127.0.0.1:46853 Accept: */* Content-Length: 0 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 3 OK === End of file server.response === Start of file stderr589 URL: http://127.0.0.1:46853/589 * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 43778 * using HTTP/1.x > POST /589 HTTP/1.1 Host: 127.0.0.1:46853 Accept: */* Content-Length: 0 < HTTP/1.1 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Content-Length: 3 < * Connection #0 to host 127.0.0.1:46853 left intact Test ended with result 0 === End of file stderr589 === Start of file stdout589 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 3 OK === End of file stdout589 === Start of file valgrind589 ==272416== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind589 test 0590...[HTTP proxy offers Negotiate+NTLM, use only NTLM] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind590 ./libtest/libtests lib590 http://test.remote.example.com/path/590 http://127.0.0.1:46263 > log/5/stdout590 2> log/5/stderr590 valgrind ERROR ==272496== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 590 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind590 ./libtest/libtests lib590 http://test.remote.example.com/path/590 http://127.0.0.1:46263 > log/5/stdout590 2> log/5/stderr590 === End of file commands.log === Start of file http_server.log 01:34:10.628972 ====> Client connect 01:34:10.629154 accept_connection 3 returned 4 01:34:10.629242 accept_connection 3 returned 0 01:34:10.630804 Read 93 bytes 01:34:10.630893 Process 93 bytes request 01:34:10.630991 Got request: GET /verifiedserver HTTP/1.1 01:34:10.631065 Are-we-friendly question received 01:34:10.631188 Wrote request (93 bytes) input to log/5/server.input 01:34:10.631287 Identifying ourselves as friends 01:34:10.631493 Response sent (57 bytes) and written to log/5/server.response 01:34:10.631564 special request received, no persistency 01:34:10.631630 ====> Client disconnect 0 01:34:56.371002 ====> Client connect 01:34:56.371154 accept_connection 3 returned 4 01:34:56.371232 accept_connection 3 returned 0 01:34:57.343508 Read 130 bytes 01:34:57.343731 Process 130 bytes request 01:34:57.343833 Got request: GET http://test.remote.example.com/path/590 HTTP/1.1 01:34:57.343908 Serve test number 590 part 0 01:34:57.344145 - request found to be complete (590) 01:34:57.344477 Wrote request (130 bytes) input to log/5/server.input 01:34:57.344588 Send response test590 section 01:34:57.344857 connection close instruction "swsclose" found in response 01:34:57.345097 Response sent (237 bytes) and written to log/5/server.response 01:34:57.345167 instructed to close connection after server-reply 01:34:57.345233 ====> Client disconnect 0 01:34:59.192054 ====> Client connect 01:34:59.192209 accept_connection 3 returned 4 01:34:59.192293 accept_connection 3 returned 0 01:34:59.358769 Read 202 bytes 01:34:59.358971 Process 202 bytes request 01:34:59.359069 Got request: GET http://test.remote.example.com/path/590 HTTP/1.1 01:34:59.359143 Serve test number 590 part 0 01:34:59.359390 - request found to be complete (590) 01:34:59.359610 Received NTLM type-1, sending back data 1001 01:34:59.359712 Wrote request (202 bytes) input to log/5/server.input 01:34:59.359803 Send response test590 section 01:34:59.360300 Response sent (356 bytes) and written to log/5/server.response 01:34:59.360366 => persistent connection request ended, awaits new request 01:35:00.687868 Read 326 bytes 01:35:00.688068 Process 326 bytes request 01:35:00.688159 Got request: GET http://test.remote.example.com/path/590 HTTP/1.1 01:35:00.688227 Serve test number 590 part 0 01:35:00.688451 - request found to be complete (590) 01:35:00.688650 Received NTLM type-3, sending back data 1002 01:35:00.688748 Wrote request (326 bytes) input to log/5/server.input 01:35:00.688831 Send response test590 section 01:35:00.689088 connection close instruction "swsclose" found in response 01:35:00.689296 Response sent (189 bytes) and written to log/5/server.response 01:35:00.689360 instructed to close connection after server-reply 01:35:00.689416 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 53932 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 590 === End of file server.cmd === Start of file server.input GET http://test.remote.example.com/path/590 HTTP/1.1 Host: test.remote.example.com Accept: */* Proxy-Connection: Keep-Alive GET http://test.remote.example.com/path/590 HTTP/1.1 Host: test.remote.example.com Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= Accept: */* Proxy-Connection: Keep-Alive GET http://test.remote.example.com/path/590 HTTP/1.1 Host: test.remote.example.com Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAAAgACAHAAAAALAAsAcgAAAAAAAAAAAAAAhoIBAAQt1KW5CgG4YdWWcfXyfXBz1ZMCzYp37xYjBiAizmw58O6eQS7yR66eqYGWeSwl9W1lV09SS1NUQVRJT04= Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 407 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Proxy-Authenticate: Negotiate Proxy-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Connection: close This is not the real page HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYCMD (2560): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind591 ./libtest/libtests lib591 ftp://127.0.0.1:39881/path/591 8 log/2/upload591 > log/2/stdout591 2> log/2/stderr591 ALgBuAHUAAAAAAA== Content-Length: 34 Hey you, authenticate or go away HTTP/1.1 200 Things are fine in proxy land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. === End of file server.response === Start of file stderr590 URL: http://test.remote.example.com/path/590 Test ended with result 0 === End of file stderr590 === Start of file stdout590 HTTP/1.1 407 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Proxy-Authenticate: Negotiate Proxy-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Connection: close HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 34 HTTP/1.1 200 Things are fine in proxy land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. === End of file stdout590 === Start of file valgrind590 ==272496== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind590 test 0591...[FTP multi PORT and 425 on upload] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind591 ./libtest/libtests lib591 ftp://127.0.0.1:39881/path/591 8 log/2/upload591 > log/2/stdout591 2> log/2/stderr591 valgrind ERROR ==272698== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 591 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind591 ./libtest/libtests lib591 ftp://127.0.0.1:39881/path/591 8 log/2/upload591 > log/2/stdout591 2> log/2/stderr591 === End of file commands.log === Start of file ftp_server.log 01:34:18.639022 ====> Client connect 01:34:18.662390 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:34:18.667602 < "USER anonymous" 01:34:18.670309 > "331 We are happy you popped in![CR][LF]" 01:34:18.671638 < "PASS ftp@example.com" 01:34:18.671992 > "230 Welcome you silly person[CR][LF]" 01:34:18.673195 < "PWD" 01:34:18.674080 > "257 "/" is current directory[CR][LF]" 01:34:18.676078 < "EPSV" 01:34:18.676273 ====> Passive DATA channel requested by client 01:34:18.676413 DATA sockfilt for passive data channel starting... 01:34:18.719334 DATA sockfilt for passive data channel started (pid 272685) 01:34:18.720636 DATA sockfilt for passive data channel listens on port 44623 01:34:18.723463 > "229 Entering Passive Mode (|||44623|)[CR][LF]" 01:34:18.723646 Client has been notified that DATA conn will be accepted on port 44623 01:34:18.724107 Client connects to port 44623 01:34:18.724302 ====> Client established passive DATA connection on port 44623 01:34:18.724889 < "TYPE I" 01:34:18.725144 > "200 I modify TYPE as you wanted[CR][LF]" 01:34:18.725982 < "SIZE verifiedserver" 01:34:18.726268 > "213 18[CR][LF]" 01:34:18.727118 < "RETR verifiedserver" 01:34:18.727401 > "150 Binary junk (18 bytes).[CR][LF]" 01:34:18.729620 =====> Closing passive DATA connection... 01:34:18.729774 Server disconnects passive DATA connection 01:34:18.731059 Server disconnected passive DATA connection 01:34:18.731217 DATA sockfilt for passive data channel quits (pid 272685) 01:34:18.734142 DATA sockfilt for passive data channel quit (pid 272685) 01:34:18.734305 =====> Closed passive DATA connection 01:34:18.734543 > "226 File transfer complete[CR][LF]" 01:34:18.785349 < "QUIT" 01:34:18.786521 > "221 bye bye baby[CR][LF]" 01:34:18.786737 MAIN sockfilt said DISC 01:34:18.786912 ====> Client disconnected 01:34:18.787184 Awaiting input 01:35:03.895684 ====> Client connect 01:35:03.896417 FTPD: Getting commands from log/2/server.cmd 01:35:03.896675 FTPD: instructed to use NODATACONN425 01:35:03.897395 FTPD: set custom reply for EPRT command 01:35:03.897645 FTPD: run test case number: 591 01:35:03.901159 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:35:05.109954 < "USER anonymous" 01:35:05.114103 > "331 We are happy you popped in![CR][LF]" 01:35:05.209671 < "PASS ftp@example.com" 01:35:05.210103 > "230 Welcome you silly person[CR][LF]" 01:35:05.313100 < "PWD" 01:35:05.314256 > "257 "/" is current directory[CR][LF]" 01:35:05.540821 < "CWD path" 01:35:05.541251 > "250 CWD command successful.[CR][LF]" 01:35:05.700437 < "EPRT |1|127.0.0.1|33483|" 01:35:05.700849 > "500 we don't like EPRT now[CR][LF]" 01:35:05.925181 < "PORT 127,0,0,1,138,183" 01:35:05.925893 > "200 You said PORT - I say FINE[CR][LF]" 01:35:05.926100 ====> Active DATA channel requested by client 01:35:05.926691 DATA sockfilt for active data channel not started (NODATACONN425) 01:35:05.926863 ====> Active DATA channel not established 01:35:06.252500 < "TYPE I" 01:35:06.257465 > "200 I modify TYPE as you wanted[CR][LF]" 01:35:06.297613 < "STOR 591" 01:35:06.298037 > "150 Opening data connection[CR][LF]" 01:35:06.298255 > "425 Can't open data connection[CR][LF]" 01:35:07.213484 < "QUIT" 01:35:07.213903 > "221 bye bye baby[CR][LF]" 01:35:07.453250 MAIN sockfilt said DISC 01:35:07.453768 ====> Client disconnected 01:35:07.457352 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:34:19.250103 ====> Client connect 01:34:19.274152 Received DATA (on stdin) 01:34:19.274266 > 160 bytes data, server => client 01:34:19.274377 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:34:19.274478 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:34:19.274569 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:34:19.278459 < 16 bytes data, client => server 01:34:19.278574 'USER anonymous\r\n' 01:34:19.279403 Received DATA (on stdin) 01:34:19.279478 > 33 bytes data, server => client 01:34:19.281574 '331 We are happy you popped in!\r\n' 01:34:19.282416 < 22 bytes data, client => server 01:34:19.282506 'PASS ftp@example.com\r\n' 01:34:19.283682 Received DATA (on stdin) 01:34:19.283754 > 30 bytes data, server => client 01:34:19.283832 '230 Welcome you silly person\r\n' 01:34:19.284104 < 5 bytes data, client => server 01:34:19.284168 'PWD\r\n' 01:34:19.284900 Received DATA (on stdin) 01:34:19.284963 > 30 bytes data, server => client 01:34:19.285057 '257 "/" is current directory\r\n' 01:34:19.287091 < 6 bytes data, client => server 01:34:19.287161 'EPSV\r\n' 01:34:19.332398 Received DATA (on stdin) 01:34:19.332529 > 39 bytes data, server => client 01:34:19.332641 '229 Entering Passive Mode (|||44623|)\r\n' 01:34:19.335545 < 8 bytes data, client => server 01:34:19.335637 'TYPE I\r\n' 01:34:19.336591 Received DATA (on stdin) 01:34:19.336660 > 33 bytes data, server => client 01:34:19.336742 '200 I modify TYPE as you wanted\r\n' 01:34:19.337084 < 21 bytes data, client => server 01:34:19.337158 'SIZE verifiedserver\r\n' 01:34:19.337719 Received DATA (on stdin) 01:34:19.337784 > 8 bytes data, server => client 01:34:19.337849 '213 18\r\n' 01:34:19.338252 < 21 bytes data, client => server 01:34:19.338327 'RETR verifiedserver\r\n' 01:34:19.338843 Received DATA (on stdin) 01:34:19.338914 > 29 bytes data, server => client 01:34:19.338999 '150 Binary junk (18 bytes).\r\n' 01:34:19.345989 Received DATA (on stdin) 01:34:19.346074 > 28 bytes data, server => client 01:34:19.346155 '226 File transfer complete\r\n' 01:34:19.395769 < 6 bytes data, client => server 01:34:19.395920 'QUIT\r\n' 01:34:19.397170 Received DATA (on stdin) 01:34:19.397242 > 18 bcannot find sshd CMD (2560): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind592 ./libtest/libtests lib591 ftp://127.0.0.1:33545/path/592 8 log/8/upload592 > log/8/stdout592 2> log/8/stderr592 ytes data, server => client 01:34:19.397332 '221 bye bye baby\r\n' 01:34:19.397867 ====> Client disconnect 01:34:19.402189 Received ACKD (on stdin) 01:35:04.506735 ====> Client connect 01:35:04.510007 Received DATA (on stdin) 01:35:04.510088 > 160 bytes data, server => client 01:35:04.512120 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:35:04.512229 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:35:04.512320 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:35:05.720008 < 16 bytes data, client => server 01:35:05.720195 'USER anonymous\r\n' 01:35:05.721685 Received DATA (on stdin) 01:35:05.721760 > 33 bytes data, server => client 01:35:05.725710 '331 We are happy you popped in!\r\n' 01:35:05.819806 < 22 bytes data, client => server 01:35:05.819993 'PASS ftp@example.com\r\n' 01:35:05.821685 Received DATA (on stdin) 01:35:05.821760 > 30 bytes data, server => client 01:35:05.821847 '230 Welcome you silly person\r\n' 01:35:05.923275 < 5 bytes data, client => server 01:35:05.923458 'PWD\r\n' 01:35:05.924866 Received DATA (on stdin) 01:35:05.924940 > 30 bytes data, server => client 01:35:05.925444 '257 "/" is current directory\r\n' 01:35:06.147752 < 10 bytes data, client => server 01:35:06.147941 'CWD path\r\n' 01:35:06.152906 Received DATA (on stdin) 01:35:06.152990 > 29 bytes data, server => client 01:35:06.153070 '250 CWD command successful.\r\n' 01:35:06.311055 < 26 bytes data, client => server 01:35:06.311224 'EPRT |1|127.0.0.1|33483|\r\n' 01:35:06.312401 Received DATA (on stdin) 01:35:06.312475 > 28 bytes data, server => client 01:35:06.312555 '500 we don't like EPRT now\r\n' 01:35:06.535440 < 24 bytes data, client => server 01:35:06.535599 'PORT 127,0,0,1,138,183\r\n' 01:35:06.536904 Received DATA (on stdin) 01:35:06.536977 > 32 bytes data, server => client 01:35:06.537079 '200 You said PORT - I say FINE\r\n' 01:35:06.862707 < 8 bytes data, client => server 01:35:06.862903 'TYPE I\r\n' 01:35:06.864225 Received DATA (on stdin) 01:35:06.864296 > 33 bytes data, server => client 01:35:06.869112 '200 I modify TYPE as you wanted\r\n' 01:35:06.907842 < 10 bytes data, client => server 01:35:06.908011 'STOR 591\r\n' 01:35:06.909807 Received DATA (on stdin) 01:35:06.909879 > 29 bytes data, server => client 01:35:06.909954 '150 Opening data connection\r\n' 01:35:06.910039 Received DATA (on stdin) 01:35:06.910096 > 32 bytes data, server => client 01:35:06.910171 '425 Can't open data connection\r\n' 01:35:07.823692 < 6 bytes data, client => server 01:35:07.823867 'QUIT\r\n' 01:35:07.825494 Received DATA (on stdin) 01:35:07.825570 > 18 bytes data, server => client 01:35:07.825639 '221 bye bye baby\r\n' 01:35:08.063591 ====> Client disconnect 01:35:08.065884 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:34:18.322286 Running IPv4 version 01:34:18.329356 Listening on port 44623 01:34:18.329784 Wrote pid 272685 to log/2/server/ftp_sockdata.pid 01:34:18.330484 Received PING (on stdin) 01:34:18.331474 Received PORT (on stdin) 01:34:18.335416 ====> Client connect 01:34:18.341422 Received DATA (on stdin) 01:34:18.341692 > 18 bytes data, server => client 01:34:18.342022 'WE ROOLZ: 202189\r\n' 01:34:18.342247 Received DISC (on stdin) 01:34:18.342360 ====> Client forcibly disconnected 01:34:18.342902 Received QUIT (on stdin) 01:34:18.342972 quits 01:34:18.343431 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd NODATACONN425 REPLY EPRT 500 we don't like EPRT now Testnum 591 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD path EPRT |1|127.0.0.1|33483| PORT 127,0,0,1,138,183 TYPE I STOR 591 QUIT === End of file server.input === Start of file stderr591 URL: ftp://127.0.0.1:39881/path/591 * Trying 127.0.0.1:39881... * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 53568 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' > CWD path < 250 CWD command successful. > EPRT |1|127.0.0.1|33483| < 500 we don't like EPRT now * disabling EPRT usage * Hostname 127.0.0.1 was found in DNS cache > PORT 127,0,0,1,138,183 < 200 You said PORT - I say FINE * Connect data stream actively > TYPE I < 200 I modify TYPE as you wanted > STOR 591 < 150 Opening data connection * Data conn was not available immediately * Ctrl conn has data while waiting for data conn < 425 Can't open data connection * FTP code: 425 * Remembering we are in dir "path/" * Connection #0 to host 127.0.0.1:39881 left intact Test ended with result 10 === End of file stderr591 === Start of file upload591 Moooooooooooo for 591 upload this === End of file upload591 === Start of file valgrind591 ==272698== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind591 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 596 in state 4 Runner 2 (id 185908) running test 600 in state 3 Runner 3 (id 185910) running test 598 in state 4 Runner 4 (id 185912) running test 597 in state 4 Runner 5 (id 185914) running test 599 in state 4 Runner 6 (id 185916) running test 595 in state 4 Runner 7 (id 185918) running test 593 in state 4 Runner 8 (id 185920) running test 592 in state 4 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/sshserver.pl --verbose --pidfile "log/2/server/ssh_server.pid" --logdir "log/2" --ipv4 --addr "127.0.0.1" --user "builduser" --sshport 42657 startnew: child process has died, server might start up RUN: failed to start the SSH server on 42657 test 0600 SKIPPED: failed starting SSH server Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 596 in state 4 Runner 2 (id 185908) running test 632 in state 4 Runner 3 (id 185910) running test 598 in state 4 Runner 4 (id 185912) running test 597 in state 4 Runner 5 (id 185914) running test 599 in state 4 Runner 6 (id 185916) running test 595 in state 4 Runner 7 (id 185918) running test 593 in state 4 Runner 8 (id 185920) running test 592 in state 4 test 0592...[FTP multi PORT and 421 on upload] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind592 ./libtest/libtests lib591 ftp://127.0.0.1:33545/path/592 8 log/8/upload592 > log/8/stdout592 2> log/8/stderr592 valgrind ERROR ==272962== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 592 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind592 ./libtest/libtests lib591 ftp://127.0.0.1:33545/path/592 8 log/8/upload592 > log/8/stdout592 2> log/8/stderr592 === End of file commands.log === Start of file ftp_server.log 01:34:45.024135 ====> Client connect 01:34:45.025117 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:34:45.033052 < "USER anonymous" 01:34:45.033429 > "331 We are happy you popped in![CR][LF]" 01:34:45.035512 < "PASS ftp@example.com" 01:34:45.036473 > "230 Welcome you silly person[CR][LF]" 01:34:45.037030 < "PWD" 01:34:45.039685 > "257 "/" is current directory[CR][LF]" 01:34:45.040398 < "EPSV" 01:34:45.040606 ====> Passive DATA channel requested by client 01:34:45.040764 DATA sockfilt for passive data channel starting... 01:34:45.091513 DATA sockfilt for passive data channel started (pid 272952) 01:34:45.092996 DATA sockfilt for passive data channel listens on port 36057 01:34:45.093353 > "229 Entering Passive Mode (|||36057|)[CR][LF]" 01:34:45.093539 Client has been notified that DATA conn will be accepted on port 36057 01:34:45.097092 Client connects to port 36057 01:34:45.097354 ====> Client established passive DATA connection on port 36057 01:34:45.098262 < "TYPE I" 01:34:45.098857 > "200 I modify TYPE as you wanted[CR][LF]" 01:34:45.099897 < "SIZE verifiedserver" 01:34:45.100606 > "213 18[CR][LF]" 01:34:45.101816 < "RETR verifiedserver" 01:34:45.102129 > "150 Binary junk (18 bytes).[CR][LF]" 01:34:45.102637 =====> Closing passive DATA connection... 01:34:45.102802 Server disconnects passive DATA connection 01:34:45.107388 Server disconnected passive DATA connection 01:34:45.107587 DATA sockfilt for passive data channel quits (pid 272952) 01:34:45.114477 DATA sockfilt for passive data channel quit (pid 272952) 01:34:45.114668 =====> Closed passive DATA connection 01:34:45.114947 > "226 File transfer complete[CR][LF]" 01:34:45.156609 < "QUIT" 01:34:45.157510 > "221 bye bye baby[CR][LF]" 01:34:45.160815 MAIN sockfilt said DISC 01:34:45.161168 ====> Client disconnected 01:34:45.161457 Awaiting input 01:35:29.921544 ====> Client connect 01:35:29.922285 FTPD: Getting commands from log/8/server.cmd 01:35:29.922557 FTPD: instructed to use NODATACONN421 01:35:29.923268 FTPD: set custom reply for EPRT command 01:35:29.923524 FTPD: run test case number: 592 01:35:29.928218 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:35:31.187346 < "USER anonymous" 01:35:31.190790 > "331 We are happy you popped in![CR][LF]" 01:35:31.287612 < "PASS ftp@example.com" 01:35:31.288012 > "230 Welcome you silly person[CR][LF]" 01:35:31.380532 < "PWD" 01:35:31.381006 > "257 "/" is current directory[CR][LF]" 01:35:31.580891 < "CWD path" 01:35:31.584144 > "250 CWD command successful.[CR][LF]" 01:35:31.751036 < "EPRT |1|127.0.0.1|41837|" 01:35:31.751471 > "500 we don't like EPRT now[CR][LF]" 01:35:31.976435 < "PORT 127,0,0,1,237,227" 01:35:31.976824 > "200 You said PORT - I say FINE[CR][LF]" 01:35:31.977040 ====> Active DATA channel requested by client 01:35:31.977710 DATA sockfilt for active data channel not started (NODATACONN421) 01:35:31.977896 ====> Active DATA channel not established 01:35:32.300564 < "TYPE I" 01:35:32.301302 > "200 I modify TYPE as you wanted[CR][LF]" 01:35:32.353415 < "STOR 592" 01:35:32.357468 > "150 Opening data connection[CR][LF]" 01:35:32.357828 > "421 Connection timed out[CR][LF]" 01:35:33.245621 < "QUIT" 01:35:33.247623 > "221 bye bye baby[CR][LF]" 01:35:33.445817 MAIN sockfilt said DISC 01:35:33.446462 ====> Client disconnected 01:35:33.446758 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:34:45.633470 ====> Client connect 01:34:45.636763 Received DATA (on stdin) 01:34:45.636853 > 160 bytes data, server => client 01:34:45.636961 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:34:45.637056 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:34:45.637143 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:34:45.643508 < 16 bytes data, client => server 01:34:45.643620 'USER anonymous\r\n' 01:34:45.645466 Received DATA (on stdin) 01:34:45.645556 > 33 bytes data, server => client 01:34:45.645662 '331 We are happy you popped in!\r\n' 01:34:45.646263 < 22 bytes data, client => server 01:34:45.646352 'PASS ftp@example.com\r\n' 01:34:45.647170 Received DATA (on stdin) 01:34:45.647243 > 30 bytes data, server => client 01:34:45.647355 '230 Welcome you silly person\r\n' 01:34:45.647610 < 5 bytes data, client => server 01:34:45.647681 'PWD\r\n' 01:34:45.648693 Received DATA (on stdin) 01:34:45.648774 > 30 bytes data, server => client 01:34:45.648909 '257 "/" is current directory\r\n' 01:34:45.651327 < 6 bytes data, client => server 01:34:45.651399 'EPSV\r\n' 01:34:45.705208 Received DATA (on stdin) 01:34:45.705363 > 39 bytes data, server => client 01:34:45.705496 '229 Entering Passive Mode (|||36057|)\r\n' 01:34:45.709033 < 8 bytes data, client => server 01:34:45.709118 'TYPE I\r\n' 01:34:45.709926 Received DATA (on stdin) 01:34:45.710002 > 33 bytes data, server => client 01:34:45.710119 '200 I modify TYPE as you wanted\r\n' 01:34:45.710787 < 21 bytes data, client => server 01:34:45.710873 'SIZE verifiedserver\r\n' 01:34:45.711603 Received DATA (on stdin) 01:34:45.711676 > 8 bytes data, server => client 01:34:45.711882 '213 18\r\n' 01:34:45.712697 < 21 bytes data, client => server 01:34:45.712789 'RETR verifiedserver\r\n' 01:34:45.715695 Received DATA (on stdin) 01:34:45.715773 > 29 bytes data, server => client 01:34:45.715863 '150 Binary junk (18 bytes).\r\n' 01:34:45.726579 Received DATA (on stdin) 01:34:45.726672 > 28 bytes data, server => client 01:34:45.726767 '226 File transfer complete\r\n' 01:34:45.767029 < 6 bytes data, client => server 01:34:45.767162 'QUIT\r\n' 01:34:45.768363 Received DATA (on stdin) 01:34:45.768442 > 18 bytes data, server => client 01:34:45.768743 '221 bye bye baby\r\n' 01:34:45.772110 ====> Client disconnect 01:34:45.772438 Received ACKD (on stdin) 01:35:30.532523 ====> Client connect 01:35:30.539203 Received DATA (on stdin) 01:35:30.539325 > 160 bytes data, server => client 01:35:30.539807 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:35:30.539916 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:35:30.540012 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:35:31.797378 < 16 bytes data, client => server 01:35:31.797573 'USER anonymous\r\n' 01:35:31.799029 Received DATA (on stdin) 01:35:31.799111 > 33 bytes data, server => client 01:35:31.802404 '331 We are happy you popped in!\r\n' 01:35:31.898003 < 22 bytes data, client => server 01:35:31.898215 'PASS ftp@example.com\r\n' 01:35:31.899264 Received DATA (on stdin) 01:35:31.899343 > 30 bytes data, server => client 01:35:31.899434 '230 Welcome you silly person\r\n' 01:35:31.990605 < 5 bytes data, client => server 01:35:31.990815 'PWD\r\n' 01:35:31.995337 Received DATA (on stdin) 01:35:31.995442 > 30 bytes data, server => client 01:35:31.995535 '257 "/" is current directory\r\n' 01:35:32.191071 < 10 bytes data, client => server 01:35:32.191251 'CWD path\r\n' 01:35:32.192563 Received DATA (on stdin) 01:35:32.192645 > 29 bytes data, server => client 01:35:32.192749 '250 CWD command successful.\r\n' 01:35:32.361107 < 26 bytes data, client => server 01:35:32.361286 'EPRT |1|127.0.0.1|41837|\r\n' 01:35:32.362981 Received DATA (on stdin) 01:35:32.363068 > 28 bytes data, server => client 01:35:32.363162 '500 we don't like EPRT now\r\n' 01:35:32.586645 < 24 bytes data, client => server 01:35:32.586804 'PORT 127,0,0,1,237,227\r\n' 01:35:32.591995 Received DATA (on stdin) 01:35:32.592088 > 32 bytes data, server => client 01:35:32.592178 '200 You said PORT - I say FINE\r\n' 01:35:32.910730 < 8 bytes data, client => server 01:35:32.910902 'TYPE I\r\n' 01:35:32.912235 Received DATA (on stdin) 01:35:32.912317 > 33 bytes data, server => client 01:35:32.912425 '200 I modify TYPE as you wanted\r\n' 01:35:32.963584 < 10 bytes data, client => server 01:35:32.963738 'STOR 592\r\n' 01:35:32.965106 Received DATA (on stdin) 01:35:32.965180 > 29 bytes data, server => client 01:35:32.969389 '150 Opening data connection\r\n' 01:35:32.969540 Received DATA (on stdin) 01:35:32.969608 > 26 bytes data, server => client 01:35:32.969689 '421 Connection timed out\r\n' 01:35:33.855852 < 6 bytes data, client => server 01:35:33.856051 'QUIT\r\n' 01:35:33.857279 Received DATA (on stdin) 01:35:33.857355 > 18 bytes data, server => client 01:35:33.858701 '221 bye bye baby\r\n' 01:35:34.056805 ====> Client disconnect 01:35:34.057597 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.lcannot find sshd CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind595 ./libtest/libtests lib500 ftp://127.0.0.1:39413/595 log/6/ip595 > log/6/stdout595 2> log/6/stderr595 og 01:34:45.692337 Running IPv4 version 01:34:45.701177 Listening on port 36057 01:34:45.701665 Wrote pid 272952 to log/8/server/ftp_sockdata.pid 01:34:45.702548 Received PING (on stdin) 01:34:45.703699 Received PORT (on stdin) 01:34:45.708324 ====> Client connect 01:34:45.714402 Received DATA (on stdin) 01:34:45.714720 > 18 bytes data, server => client 01:34:45.715126 'WE ROOLZ: 220580\r\n' 01:34:45.715386 Received DISC (on stdin) 01:34:45.715515 ====> Client forcibly disconnected 01:34:45.719230 Received QUIT (on stdin) 01:34:45.719321 quits 01:34:45.719890 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd NODATACONN421 REPLY EPRT 500 we don't like EPRT now Testnum 592 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD path EPRT |1|127.0.0.1|41837| PORT 127,0,0,1,237,227 TYPE I STOR 592 QUIT === End of file server.input === Start of file stderr592 URL: ftp://127.0.0.1:33545/path/592 * Trying 127.0.0.1:33545... * Established connection to 127.0.0.1 (127.0.0.1 port 33545) from 127.0.0.1 port 45888 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' > CWD path < 250 CWD command successful. > EPRT |1|127.0.0.1|41837| < 500 we don't like EPRT now * disabling EPRT usage * Hostname 127.0.0.1 was found in DNS cache > PORT 127,0,0,1,237,227 < 200 You said PORT - I say FINE * Connect data stream actively > TYPE I < 200 I modify TYPE as you wanted > STOR 592 < 150 Opening data connection * Data conn was not available immediately * Ctrl conn has data while waiting for data conn < 421 Connection timed out * We got a 421 - timeout * FTP code: 421 * Remembering we are in dir "path/" * Connection #0 to host 127.0.0.1:33545 left intact Test ended with result 10 === End of file stderr592 === Start of file upload592 Moooooooooooo for 592 upload this === End of file upload592 === Start of file valgrind592 ==272962== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind592 test 0595...[verify close callbacks with passive FTP] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind595 ./libtest/libtests lib500 ftp://127.0.0.1:39413/595 log/6/ip595 > log/6/stdout595 2> log/6/stderr595 valgrind ERROR ==273237== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 595 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind595 ./libtest/libtests lib500 ftp://127.0.0.1:39413/595 log/6/ip595 > log/6/stdout595 2> log/6/stderr595 === End of file commands.log === Start of file ftp_server.log 01:34:46.724141 ====> Client connect 01:34:46.725271 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:34:46.730915 < "USER anonymous" 01:34:46.732148 > "331 We are happy you popped in![CR][LF]" 01:34:46.732794 < "PASS ftp@example.com" 01:34:46.733751 > "230 Welcome you silly person[CR][LF]" 01:34:46.734317 < "PWD" 01:34:46.737032 > "257 "/" is current directory[CR][LF]" 01:34:46.737902 < "EPSV" 01:34:46.738134 ====> Passive DATA channel requested by client 01:34:46.738290 DATA sockfilt for passive data channel starting... 01:34:46.801703 DATA sockfilt for passive data channel started (pid 273155) 01:34:46.802890 DATA sockfilt for passive data channel listens on port 33031 01:34:46.803271 > "229 Entering Passive Mode (|||33031|)[CR][LF]" 01:34:46.803433 Client has been notified that DATA conn will be accepted on port 33031 01:34:46.806411 Client connects to port 33031 01:34:46.806614 ====> Client established passive DATA connection on port 33031 01:34:46.807222 < "TYPE I" 01:34:46.807494 > "200 I modify TYPE as you wanted[CR][LF]" 01:34:46.808461 < "SIZE verifiedserver" 01:34:46.808819 > "213 18[CR][LF]" 01:34:46.810515 < "RETR verifiedserver" 01:34:46.810970 > "150 Binary junk (18 bytes).[CR][LF]" 01:34:46.811593 =====> Closing passive DATA connection... 01:34:46.811768 Server disconnects passive DATA connection 01:34:46.817430 Server disconnected passive DATA connection 01:34:46.817749 DATA sockfilt for passive data channel quits (pid 273155) 01:34:46.821475 DATA sockfilt for passive data channel quit (pid 273155) 01:34:46.821720 =====> Closed passive DATA connection 01:34:46.822048 > "226 File transfer complete[CR][LF]" 01:34:46.864022 < "QUIT" 01:34:46.864472 > "221 bye bye baby[CR][LF]" 01:34:46.867568 MAIN sockfilt said DISC 01:34:46.867918 ====> Client disconnected 01:34:46.868253 Awaiting input 01:35:30.582374 ====> Client connect 01:35:30.583130 FTPD: Getting commands from log/6/server.cmd 01:35:30.583461 FTPD: run test case number: 595 01:35:30.587929 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:35:31.847375 < "USER anonymous" 01:35:31.850796 > "331 We are happy you popped in![CR][LF]" 01:35:31.969517 < "PASS ftp@example.com" 01:35:31.969937 > "230 Welcome you silly person[CR][LF]" 01:35:32.080243 < "PWD" 01:35:32.080719 > "257 "/" is current directory[CR][LF]" 01:35:32.320187 < "EPSV" 01:35:32.320522 ====> Passive DATA channel requested by client 01:35:32.320687 DATA sockfilt for passive data channel starting... 01:35:32.403391 DATA sockfilt for passive data channel started (pid 274170) 01:35:32.408151 DATA sockfilt for passive data channel listens on port 45789 01:35:32.410827 > "229 Entering Passive Mode (|||45789|)[CR][LF]" 01:35:32.411115 Client has been notified that DATA conn will be accepted on port 45789 01:35:32.637406 Client connects to port 45789 01:35:32.637984 ====> Client established passive DATA connection on port 45789 01:35:32.764919 < "TYPE I" 01:35:32.765359 > "200 I modify TYPE as you wanted[CR][LF]" 01:35:32.829026 < "SIZE 595" 01:35:32.831139 > "213 4[CR][LF]" 01:35:32.911569 < "RETR 595" 01:35:32.912779 > "150 Binary data connection for 595 () (4 bytes).[CR][LF]" 01:35:32.913356 =====> Closing passive DATA connection... 01:35:32.913522 Server disconnects passive DATA connection 01:35:32.917391 Server disconnected passive DATA connection 01:35:32.917592 DATA sockfilt for passive data channel quits (pid 274170) 01:35:32.923809 DATA sockfilt for passive data channel quit (pid 274170) 01:35:32.924058 =====> Closed passive DATA connection 01:35:32.924365 > "226 File transfer complete[CR][LF]" 01:35:34.710552 < "QUIT" 01:35:34.711309 > "221 bye bye baby[CR][LF]" 01:35:34.840988 MAIN sockfilt said DISC 01:35:34.841775 ====> Client disconnected 01:35:34.842176 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:34:46.332141 ====> Client connect 01:34:46.336952 Received DATA (on stdin) 01:34:46.337078 > 160 bytes data, server => client 01:34:46.337200 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:34:46.337310 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:34:46.337409 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:34:46.341369 < 16 bytes data, client => server 01:34:46.341495 'USER anonymous\r\n' 01:34:46.342702 Received DATA (on stdin) 01:34:46.342789 > 33 bytes data, server => client 01:34:46.342909 '331 We are happy you popped in!\r\n' 01:34:46.343250 < 22 bytes data, client => server 01:34:46.343336 'PASS ftp@example.com\r\n' 01:34:46.344444 Received DATA (on stdin) 01:34:46.344518 > 30 bytes data, server => client 01:34:46.344630 '230 Welcome you silly person\r\n' 01:34:46.344963 < 5 bytes data, client => server 01:34:46.345034 'PWD\r\n' 01:34:46.345987 Received DATA (on stdin) 01:34:46.346065 > 30 bytes data, server => client 01:34:46.346182 '257 "/" is current directory\r\n' 01:34:46.348702 < 6 bytes data, client => server 01:34:46.348817 'EPSV\r\n' 01:34:46.414611 Received DATA (on stdin) 01:34:46.414766 > 39 bytes data, server => client 01:34:46.414873 '229 Entering Passive Mode (|||33031|)\r\n' 01:34:46.417890 < 8 bytes data, client => server 01:34:46.417986 'TYPE I\r\n' 01:34:46.418859 Received DATA (on stdin) 01:34:46.418936 > 33 bytes data, server => client 01:34:46.419034 '200 I modify TYPE as you wanted\r\n' 01:34:46.420434 < 21 bytes data, client => server 01:34:46.420526 'SIZE verifiedserver\r\n' 01:34:46.420602 Received DATA (on stdin) 01:34:46.420671 > 8 bytes data, server => client 01:34:46.420747 '213 18\r\n' 01:34:46.421392 < 21 bytes data, client => server 01:34:46.421472 'RETR verifiedserver\r\n' 01:34:46.423375 Received DATA (on stdin) 01:34:46.423462 > 29 bytes data, server => client 01:34:46.423557 '150 Binary junk (18 bytes).\r\n' 01:34:46.433714 Received DATA (on stdin) 01:34:46.433847 > 28 bytes data, server => client 01:34:46.433943 '226 File transfer complete\r\n' 01:34:46.474223 < 6 bytes data, client => server 01:34:46.474398 'QUIT\r\n' 01:34:46.476311 Received DATA (on stdin) 01:34:46.476398 > 18 bytes data, server => client 01:34:46.476486 '221 bye bye baby\r\n' 01:34:46.478863 ====> Client disconnect 01:34:46.479187 Received ACKD (on stdin) 01:35:30.193353 ====> Client connect 01:35:30.199515 Received DATA (on stdin) 01:35:30.199631 > 160 bytes data, server => client 01:35:30.199742 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:35:30.199850 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:35:30.199950 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:35:31.457396 < 16 bytes data, client => server 01:35:31.457599 'USER anonymous\r\n' 01:35:31.459038 Received DATA (on stdin) 01:35:31.459117 > 33 bytes data, server => client 01:35:31.462402 '331 We are happy you popped in!\r\n' 01:35:31.579639 < 22 bytes data, client => server 01:35:31.579821 'PASS ftp@example.com\r\n' 01:35:31.581451 Received DATA (on stdin) 01:35:31.581531 > 30 bytes data, server => client 01:35:31.581616 '230 Welcome you silly person\r\n' 01:35:31.690329 < 5 bytes data, client => server 01:35:31.690532 'PWD\r\n' 01:35:31.695343 Received DATA (on stdin) 01:35:31.695446 > 30 bytes data, server => client 01:35:31.695533 '257 "/" is current directory\r\n' 01:35:31.930333 < 6 bytes data, client => server 01:35:31.930490 'EPSV\r\n' 01:35:32.019910 Received DATA (on stdin) 01:35:32.020058 > 39 bytes data, server => client 01:35:32.022690 '229 Entering Passive Mode (|||45789|)\r\n' 01:35:32.373054 < 8 bytes data, client => server 01:35:32.373250 'TYPE I\r\n' 01:35:32.376582 Received DATA (on stdin) 01:35:32.376685 > 33 bytes data, server => client 01:35:32.376791 '200 I modify TYPE as you wanted\r\n' 01:35:32.439447 < 10 bytes data, client => server 01:35:32.439664 'SIZE 595\r\n' 01:35:32.442388 Received DATA (on stdin) 01:35:32.442485 > 7 bytes data, server => client 01:35:32.442570 '213 4\r\n' 01:35:32.520559 < 10 bytes data, client => server 01:35:32.520735 'RETR 595\r\n' 01:35:32.524024 Received DATA (on stdin) 01:35:32.524122 > 50 bytes data, server => client 01:35:32.524235 '150 Binary data connection for 595 () (4 bytes).\r\n' 01:35:32.535595 Received DATA (on stdin) 01:35:32.535733 > 28 bytes data, server => client 01:35:32.535830 '226 File transfer complete\r\n' 01:35:34.321175 < 6 bytes data, client => server 01:35:34.321565 'QUIT\r\n' 01:35:34.322232 Received DATA (on stdin) 01:35:34.322306 > 18 bytes data, server => client 01:35:34.322404 '221 bye bye baby\r\n' 01:35:34.452000 ====> Client disconnect 01:35:34.452853 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:34:46.402469 Running IPv4 version 01:34:46.411331 Listening on port 33031 01:34:46.411845 Wrote pid 273155 to log/6/server/ftp_sockdata.pid 01:34:46.412721 Received PING (on stdin) 01:34:46.413635 Received PORT (on stdin) 01:34:46.417702 ====> Client connect 01:34:46.423676 Received DATA (on stdin) 01:34:46.424044 > 18 bytes data, server => client 01:34:46.424453 'WE ROOLZ: 201819\r\n' 01:34:46.424723 Received DISC (on stdin) 01:34:46.424850 ====> Client forcibly disconnected 01:34:46.429458 Received QUIT (on stdin) 01:34:46.429566 quits 01:34:46.430152 ============> sockfilt quits 01:35:32.994792 Running IPv4 version 01:35:33.012934 Listening on port 45789 01:35:33.013505 Wrote pid 274170 to log/6/server/ftp_sockdata.pid 01:35:33.014300 Received PING (on stdin) 01:35:33.018664 Received PORT (on stdin) 01:35:33.248403 ====> Client connect 01:35:33.524354 Received DATA (on stdin) 01:35:33.524766 > 4 bytes data, server => client 01:35:33.525121 'moo\n' 01:35:33.525414 Received DISC (on stdin) 01:35:33.525540 ====> Client forcibly disconnected 01:35:33.531995 Received QUIT (on stdin) 01:35:33.532102 quits 01:35:33.532611 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file ip595 IP 127.0.0.1 connect vs pretransfer: 5.362714 4.789851 pretransfer vs starttransfer: 4.789851 3.275236 === End of file ip595 === Start of file server.cmd Testnum 595 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE 595 RETR 595 QUIT === End of file server.input === Start of file stderr595 URL: ftp://127.0.0.1:39413/595 01:35:30.899153 == Info: Trying 127.0.0.1:39413... 01:35:31.733741 == Info: Established connection to 127.0.0.1 (127.0.0.1 port 39413) from 127.0.0.1 port 39954 01:35:31.982987 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:35:32.302449 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:35:32.333832 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:35:32.349055 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:35:32.362544 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:35:32.477731 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:35:32.550576 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:35:32.580867 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:35:32.662101 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:35:32.690415 => Send header, 5 bytes (0x5) 0000: PWD 01:35:32.711246 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:35:32.756372 == Info: Entry path is '/' 01:35:32.869181 == Info: Request has same path as previous transfer 01:35:32.930273 => Send header, 6 bytes (0x6) 0000: EPSV 01:35:32.952325 == Info: Connect data stream passively 01:35:33.036264 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||45789|) 01:35:33.164112 == Info: Connecting to 127.0.0.1 (127.0.0.1) port 45789 01:35:33.236802 == Info: Trying 127.0.0.1:45789... 01:35:33.331218 == Info: Established 2nd connection to 127.0.0.1 (127.0.0.1 port 45789) from 127.0.0.1 port 35842 01:35:33.373148 => Send header, 8 bytes (0x8) 0000: TYPE I 01:35:33.397842 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:35:33.439538 => Send header, 10 bytes (0xa) 0000: SIZE 595 01:35:33.473751 <= Recv header, 7 bytes (0x7) 0000: 213 4 01:35:33.520649 => Send header, 10 bytes (0xa) 0000: RETR 595 01:35:33.543036 <= Recv header, 50 bytes (0x32) 0000: 150 Binary data connection for 595 () (4 bytes). 01:35:33.595031 == Info: Maxdownload = -1 01:35:33.611053 == Info: Getting file with size: 4 01:35:33.771186 <= Recv data, 4 bytes (0x4) 0000: moo. 01:35:34.060249 == Info: abort upload 01:35:34.088571 <= Recv data, 0 bytes (0x0) 01:35:34.261223 == Info: Remembering we are in dir "" 01:35:34.469971 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer compCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind596 ./libtest/libtests lib500 ftp://127.0.0.1:37481/596 log/1/ip596 activeftp > log/1/stdout596 2> log/1/stderr596 lete 01:35:34.763479 == Info: Connection #0 to host 127.0.0.1:39413 left intact Test ended with result 0 === End of file stderr595 === Start of file stdout595 [OPEN] counter: 1 [OPEN] counter: 2 moo [CLOSE] counter: 2 [CLOSE] counter: 1 === End of file stdout595 === Start of file valgrind595 ==273237== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind595 test 0596...[verify close callbacks with active FTP] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind596 ./libtest/libtests lib500 ftp://127.0.0.1:37481/596 log/1/ip596 activeftp > log/1/stdout596 2> log/1/stderr596 valgrind ERROR ==273403== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 596 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind596 ./libtest/libtests lib500 ftp://127.0.0.1:37481/596 log/1/ip596 activeftp > log/1/stdout596 2> log/1/stderr596 === End of file commands.log === Start of file ftp_server.log 01:34:50.017475 ====> Client connect 01:34:50.018545 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:34:50.023388 < "USER anonymous" 01:34:50.023740 > "331 We are happy you popped in![CR][LF]" 01:34:50.026175 < "PASS ftp@example.com" 01:34:50.026445 > "230 Welcome you silly person[CR][LF]" 01:34:50.027152 < "PWD" 01:34:50.027413 > "257 "/" is current directory[CR][LF]" 01:34:50.029661 < "EPSV" 01:34:50.029855 ====> Passive DATA channel requested by client 01:34:50.029991 DATA sockfilt for passive data channel starting... 01:34:50.074705 DATA sockfilt for passive data channel started (pid 273397) 01:34:50.076023 DATA sockfilt for passive data channel listens on port 40353 01:34:50.076362 > "229 Entering Passive Mode (|||40353|)[CR][LF]" 01:34:50.076524 Client has been notified that DATA conn will be accepted on port 40353 01:34:50.079131 Client connects to port 40353 01:34:50.079349 ====> Client established passive DATA connection on port 40353 01:34:50.079956 < "TYPE I" 01:34:50.080222 > "200 I modify TYPE as you wanted[CR][LF]" 01:34:50.081379 < "SIZE verifiedserver" 01:34:50.081676 > "213 18[CR][LF]" 01:34:50.082980 < "RETR verifiedserver" 01:34:50.085225 > "150 Binary junk (18 bytes).[CR][LF]" 01:34:50.085727 =====> Closing passive DATA connection... 01:34:50.085878 Server disconnects passive DATA connection 01:34:50.087171 Server disconnected passive DATA connection 01:34:50.087325 DATA sockfilt for passive data channel quits (pid 273397) 01:34:50.094353 DATA sockfilt for passive data channel quit (pid 273397) 01:34:50.094565 =====> Closed passive DATA connection 01:34:50.095014 > "226 File transfer complete[CR][LF]" 01:34:50.132130 < "QUIT" 01:34:50.132525 > "221 bye bye baby[CR][LF]" 01:34:50.134306 MAIN sockfilt said DISC 01:34:50.134495 ====> Client disconnected 01:34:50.134758 Awaiting input 01:35:34.976616 ====> Client connect 01:35:34.977364 FTPD: Getting commands from log/1/server.cmd 01:35:34.977691 FTPD: run test case number: 596 01:35:34.978740 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:35:36.198684 < "USER anonymous" 01:35:36.200953 > "331 We are happy you popped in![CR][LF]" 01:35:36.313200 < "PASS ftp@example.com" 01:35:36.313921 > "230 Welcome you silly person[CR][LF]" 01:35:36.416895 < "PWD" 01:35:36.419004 > "257 "/" is current directory[CR][LF]" 01:35:36.745007 < "EPRT |1|127.0.0.1|53801|" 01:35:36.745358 ====> Active DATA channel requested by client 01:35:36.745954 > "200 Thanks for dropping by. We contact you later[CR][LF]" 01:35:36.746167 DATA sockfilt for active data channel starting... 01:35:36.788152 DATA sockfilt for active data channel started (pid 274185) 01:35:36.788648 ====> Active DATA channel connected to client port 53801 01:35:37.179011 < "TYPE I" 01:35:37.179466 > "200 I modify TYPE as you wanted[CR][LF]" 01:35:37.244267 < "SIZE 596" 01:35:37.249057 > "213 4[CR][LF]" 01:35:37.394977 < "RETR 596" 01:35:37.396505 > "150 Binary data connection for 596 () (4 bytes).[CR][LF]" 01:35:37.397052 =====> Closing active DATA connection... 01:35:37.397217 Server disconnects active DATA connection 01:35:37.398626 Server disconnected active DATA connection 01:35:37.398800 DATA sockfilt for active data channel quits (pid 274185) 01:35:37.402376 DATA sockfilt for active data channel quit (pid 274185) 01:35:37.402569 =====> Closed active DATA connection 01:35:37.403249 > "226 File transfer complete[CR][LF]" 01:35:38.890945 < "QUIT" 01:35:38.891377 > "221 bye bye baby[CR][LF]" 01:35:39.043240 MAIN sockfilt said DISC 01:35:39.043872 ====> Client disconnected 01:35:39.044184 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:34:50.625460 ====> Client connect 01:34:50.630189 Received DATA (on stdin) 01:34:50.630311 > 160 bytes data, server => client 01:34:50.630418 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:34:50.630516 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:34:50.630604 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:34:50.634068 < 16 bytes data, client => server 01:34:50.634164 'USER anonymous\r\n' 01:34:50.635356 Received DATA (on stdin) 01:34:50.635443 > 33 bytes data, server => client 01:34:50.635530 '331 We are happy you popped in!\r\n' 01:34:50.637063 < 22 bytes data, client => server 01:34:50.637142 'PASS ftp@example.com\r\n' 01:34:50.637811 Received DATA (on stdin) 01:34:50.637882 > 30 bytes data, server => client 01:34:50.637963 '230 Welcome you silly person\r\n' 01:34:50.638197 < 5 bytes data, client => server 01:34:50.638263 'PWD\r\n' 01:34:50.638782 Received DATA (on stdin) 01:34:50.638855 > 30 bytes data, server => client 01:34:50.638938 '257 "/" is current directory\r\n' 01:34:50.640280 < 6 bytes data, client => server 01:34:50.640348 'EPSV\r\n' 01:34:50.687708 Received DATA (on stdin) 01:34:50.687875 > 39 bytes data, server => client 01:34:50.687972 '229 Entering Passive Mode (|||40353|)\r\n' 01:34:50.690182 < 8 bytes data, client => server 01:34:50.690274 'TYPE I\r\n' 01:34:50.691815 Received DATA (on stdin) 01:34:50.691884 > 33 bytes data, server => client 01:34:50.691962 '200 I modify TYPE as you wanted\r\n' 01:34:50.692319 < 21 bytes data, client => server 01:34:50.692396 'SIZE verifiedserver\r\n' 01:34:50.693355 Received DATA (on stdin) 01:34:50.693418 > 8 bytes data, server => client 01:34:50.693480 '213 18\r\n' 01:34:50.693940 < 21 bytes data, client => server 01:34:50.694010 'RETR verifiedserver\r\n' 01:34:50.694621 Received DATA (on stdin) 01:34:50.694683 > 29 bytes data, server => client 01:34:50.694775 '150 Binary junk (18 bytes).\r\n' 01:34:50.706181 Received DATA (on stdin) 01:34:50.706282 > 28 bytes data, server => client 01:34:50.706626 '226 File transfer complete\r\n' 01:34:50.742294 < 6 bytes data, client => server 01:34:50.742456 'QUIT\r\n' 01:34:50.744146 Received DATA (on stdin) 01:34:50.744217 > 18 bytes data, server => client 01:34:50.744291 '221 bye bye baby\r\n' 01:34:50.744816 ====> Client disconnect 01:34:50.746324 Received ACKD (on stdin) 01:35:35.587585 ====> Client connect 01:35:35.590615 Received DATA (on stdin) 01:35:35.590725 > 160 bytes data, server => client 01:35:35.590833 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:35:35.590931 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:35:35.591020 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:35:36.808691 < 16 bytes data, client => server 01:35:36.808880 'USER anonymous\r\n' 01:35:36.810327 Received DATA (on stdin) 01:35:36.810400 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind597 ./libtest/libtests lib597 ftp://127.0.0.1:38207 > log/4/stdout597 2> log/4/stderr597 > 33 bytes data, server => client 01:35:36.812033 '331 We are happy you popped in!\r\n' 01:35:36.923381 < 22 bytes data, client => server 01:35:36.923553 'PASS ftp@example.com\r\n' 01:35:36.924848 Received DATA (on stdin) 01:35:36.924924 > 30 bytes data, server => client 01:35:36.925031 '230 Welcome you silly person\r\n' 01:35:37.026978 < 5 bytes data, client => server 01:35:37.027153 'PWD\r\n' 01:35:37.029938 Received DATA (on stdin) 01:35:37.030025 > 30 bytes data, server => client 01:35:37.030115 '257 "/" is current directory\r\n' 01:35:37.355076 < 26 bytes data, client => server 01:35:37.355249 'EPRT |1|127.0.0.1|53801|\r\n' 01:35:37.357191 Received DATA (on stdin) 01:35:37.357270 > 50 bytes data, server => client 01:35:37.357371 '200 Thanks for dropping by. We contact you later\r\n' 01:35:37.789281 < 8 bytes data, client => server 01:35:37.789483 'TYPE I\r\n' 01:35:37.790687 Received DATA (on stdin) 01:35:37.790766 > 33 bytes data, server => client 01:35:37.790855 '200 I modify TYPE as you wanted\r\n' 01:35:37.854596 < 10 bytes data, client => server 01:35:37.854792 'SIZE 596\r\n' 01:35:37.859961 Received DATA (on stdin) 01:35:37.860061 > 7 bytes data, server => client 01:35:37.860163 '213 4\r\n' 01:35:38.005367 < 10 bytes data, client => server 01:35:38.005552 'RETR 596\r\n' 01:35:38.007415 Received DATA (on stdin) 01:35:38.007494 > 50 bytes data, server => client 01:35:38.007616 '150 Binary data connection for 596 () (4 bytes).\r\n' 01:35:38.014096 Received DATA (on stdin) 01:35:38.014208 > 28 bytes data, server => client 01:35:38.014352 '226 File transfer complete\r\n' 01:35:39.501018 < 6 bytes data, client => server 01:35:39.501200 'QUIT\r\n' 01:35:39.505306 Received DATA (on stdin) 01:35:39.505388 > 18 bytes data, server => client 01:35:39.505462 '221 bye bye baby\r\n' 01:35:39.654252 ====> Client disconnect 01:35:39.655000 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:34:50.677524 Running IPv4 version 01:34:50.684603 Listening on port 40353 01:34:50.685029 Wrote pid 273397 to log/1/server/ftp_sockdata.pid 01:34:50.685759 Received PING (on stdin) 01:34:50.686790 Received PORT (on stdin) 01:34:50.690369 ====> Client connect 01:34:50.697449 Received DATA (on stdin) 01:34:50.697732 > 18 bytes data, server => client 01:34:50.698067 'WE ROOLZ: 202066\r\n' 01:34:50.698286 Received DISC (on stdin) 01:34:50.698393 ====> Client forcibly disconnected 01:34:50.702096 Received QUIT (on stdin) 01:34:50.702181 quits 01:34:50.702665 ============> sockfilt quits 01:35:36.389826 ====> Client connect 01:35:36.397469 Running IPv4 version 01:35:36.397620 Connected to port 53801 01:35:36.398093 Wrote pid 274185 to log/1/server/ftp_sockdata.pid 01:35:36.398914 Received PING (on stdin) 01:35:37.008676 Received DATA (on stdin) 01:35:37.009068 > 4 bytes data, server => client 01:35:37.009423 'moo\n' 01:35:37.009784 Received DISC (on stdin) 01:35:37.010342 ====> Client forcibly disconnected 01:35:37.010540 disconnected, no socket to read on 01:35:37.010625 Received QUIT (on stdin) 01:35:37.010699 quits 01:35:37.011216 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file ip596 IP 127.0.0.1 connect vs pretransfer: 5.198170 4.817077 pretransfer vs starttransfer: 4.817077 3.168635 === End of file ip596 === Start of file server.cmd Testnum 596 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPRT |1|127.0.0.1|53801| TYPE I SIZE 596 RETR 596 QUIT === End of file server.input === Start of file stderr596 URL: ftp://127.0.0.1:37481/596 01:35:34.297285 == Info: Trying 127.0.0.1:37481... 01:35:35.114604 == Info: Established connection to 127.0.0.1 (127.0.0.1 port 37481) from 127.0.0.1 port 58220 01:35:35.357488 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:35:35.662378 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:35:35.692032 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:35:35.707146 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:35:35.719847 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:35:35.826466 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:35:35.895873 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:35:35.924540 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:35:35.998777 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:35:36.027067 => Send header, 5 bytes (0x5) 0000: PWD 01:35:36.048973 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:35:36.091718 == Info: Entry path is '/' 01:35:36.195051 == Info: Request has same path as previous transfer 01:35:36.355159 => Send header, 26 bytes (0x1a) 0000: EPRT |1|127.0.0.1|53801| 01:35:36.475557 <= Recv header, 50 bytes (0x32) 0000: 200 Thanks for dropping by. We contact you later 01:35:36.519376 == Info: Connect data stream actively 01:35:36.626108 == Info: Ready to accept data connection from server 01:35:36.649046 == Info: Connection accepted from server 01:35:36.747231 == Info: Established 2nd connection to 127.0.0.1 (127.0.0.1 port 54524) from 127.0.0.1 port 53801 01:35:36.789373 => Send header, 8 bytes (0x8) 0000: TYPE I 01:35:36.813570 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:35:36.854689 => Send header, 10 bytes (0xa) 0000: SIZE 596 01:35:36.958881 <= Recv header, 7 bytes (0x7) 0000: 213 4 01:35:37.002902 => Send header, 10 bytes (0xa) 0000: RETR 596 01:35:37.031150 <= Recv header, 50 bytes (0x32) 0000: 150 Binary data connection for 596 () (4 bytes). 01:35:37.090639 == Info: Maxdownload = -1 01:35:37.106672 == Info: Getting file with size: 4 01:35:37.267344 <= Recv data, 4 bytes (0x4) 0000: moo. 01:35:37.521811 == Info: abort upload 01:35:37.544215 <= Recv data, 0 bytes (0x0) 01:35:37.682770 == Info: Remembering we are in dir "" 01:35:37.781286 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:35:38.015164 == Info: Connection #0 to host 127.0.0.1:37481 left intact Test ended with result 0 === End of file stderr596 === Start of file stdout596 [OPEN] counter: 1 [OPEN] counter: 2 [CLOSE] counter: 2 moo [CLOSE] counter: 1 === End of file stdout596 === Start of file valgrind596 ==273403== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind596 test 0597...[FTP connect only option] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind597 ./libtest/libtests lib597 ftp://127.0.0.1:38207 > log/4/stdout597 2> log/4/stderr597 valgrind ERROR ==273568== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 597 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind597 ./libtest/libtests lib597 ftp://127.0.0.1:38207 > log/4/stdout597 2> log/4/stderr597 === End of file commands.log === Start of file ftp_server.log 01:34:54.142653 ====> Client connect 01:34:54.143677 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:34:54.151418 < "USER anonymous" 01:34:54.151749 > "331 We are happy you popped in![CR][LF]" 01:34:54.157791 < "PASS ftp@example.com" 01:34:54.158066 > "230 Welcome you silly person[CR][LF]" 01:34:54.158713 < "PWD" 01:34:54.158972 > "257 "/" is current directory[CR][LF]" 01:34:54.160614 < "EPSV" 01:34:54.160823 ====> Passive DATA channel requested by client 01:34:54.160963 DATA sockfilt for passive data channel starting... 01:34:54.197375 DATA sockfilt for passive data channel started (pid 273559) 01:34:54.198732 DATA sockfilt for passive data channel listens on port 45203 0CMD (3072): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind593 ./libtest/libtests lib591 ftp://127.0.0.1:45353/path/593 8 log/7/upload593 > log/7/stdout593 2> log/7/stderr593 1:34:54.199470 > "229 Entering Passive Mode (|||45203|)[CR][LF]" 01:34:54.199633 Client has been notified that DATA conn will be accepted on port 45203 01:34:54.201330 Client connects to port 45203 01:34:54.201530 ====> Client established passive DATA connection on port 45203 01:34:54.203119 < "TYPE I" 01:34:54.204004 > "200 I modify TYPE as you wanted[CR][LF]" 01:34:54.204609 < "SIZE verifiedserver" 01:34:54.204905 > "213 18[CR][LF]" 01:34:54.206032 < "RETR verifiedserver" 01:34:54.206299 > "150 Binary junk (18 bytes).[CR][LF]" 01:34:54.209137 =====> Closing passive DATA connection... 01:34:54.209301 Server disconnects passive DATA connection 01:34:54.210170 Server disconnected passive DATA connection 01:34:54.210331 DATA sockfilt for passive data channel quits (pid 273559) 01:34:54.213119 DATA sockfilt for passive data channel quit (pid 273559) 01:34:54.213274 =====> Closed passive DATA connection 01:34:54.213508 > "226 File transfer complete[CR][LF]" 01:34:54.257861 < "QUIT" 01:34:54.258354 > "221 bye bye baby[CR][LF]" 01:34:54.260721 MAIN sockfilt said DISC 01:34:54.260946 ====> Client disconnected 01:34:54.261234 Awaiting input 01:35:37.743448 ====> Client connect 01:35:37.744177 FTPD: Getting commands from log/4/server.cmd 01:35:37.744491 FTPD: run test case number: 597 01:35:37.745305 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:35:38.928736 < "USER anonymous" 01:35:38.929161 > "331 We are happy you popped in![CR][LF]" 01:35:39.029496 < "PASS ftp@example.com" 01:35:39.029926 > "230 Welcome you silly person[CR][LF]" 01:35:39.117858 < "PWD" 01:35:39.118592 > "257 "/" is current directory[CR][LF]" 01:35:39.862772 MAIN sockfilt said DISC 01:35:39.863316 ====> Client disconnected 01:35:39.863617 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:34:53.753690 ====> Client connect 01:34:53.754915 Received DATA (on stdin) 01:34:53.755008 > 160 bytes data, server => client 01:34:53.755132 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:34:53.755248 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:34:53.755340 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:34:53.761018 < 16 bytes data, client => server 01:34:53.761118 'USER anonymous\r\n' 01:34:53.763090 Received DATA (on stdin) 01:34:53.763159 > 33 bytes data, server => client 01:34:53.763234 '331 We are happy you popped in!\r\n' 01:34:53.763472 < 22 bytes data, client => server 01:34:53.763544 'PASS ftp@example.com\r\n' 01:34:53.769420 Received DATA (on stdin) 01:34:53.769489 > 30 bytes data, server => client 01:34:53.769561 '230 Welcome you silly person\r\n' 01:34:53.769781 < 5 bytes data, client => server 01:34:53.769839 'PWD\r\n' 01:34:53.770330 Received DATA (on stdin) 01:34:53.770388 > 30 bytes data, server => client 01:34:53.770459 '257 "/" is current directory\r\n' 01:34:53.771677 < 6 bytes data, client => server 01:34:53.771736 'EPSV\r\n' 01:34:53.810397 Received DATA (on stdin) 01:34:53.810532 > 39 bytes data, server => client 01:34:53.810637 '229 Entering Passive Mode (|||45203|)\r\n' 01:34:53.813953 < 8 bytes data, client => server 01:34:53.814027 'TYPE I\r\n' 01:34:53.814731 Received DATA (on stdin) 01:34:53.814792 > 33 bytes data, server => client 01:34:53.814886 '200 I modify TYPE as you wanted\r\n' 01:34:53.815215 < 21 bytes data, client => server 01:34:53.815285 'SIZE verifiedserver\r\n' 01:34:53.816478 Received DATA (on stdin) 01:34:53.816543 > 8 bytes data, server => client 01:34:53.816603 '213 18\r\n' 01:34:53.816987 < 21 bytes data, client => server 01:34:53.817055 'RETR verifiedserver\r\n' 01:34:53.817962 Received DATA (on stdin) 01:34:53.818022 > 29 bytes data, server => client 01:34:53.818092 '150 Binary junk (18 bytes).\r\n' 01:34:53.825427 Received DATA (on stdin) 01:34:53.825502 > 28 bytes data, server => client 01:34:53.825575 '226 File transfer complete\r\n' 01:34:53.868329 < 6 bytes data, client => server 01:34:53.868456 'QUIT\r\n' 01:34:53.869554 Received DATA (on stdin) 01:34:53.869621 > 18 bytes data, server => client 01:34:53.869950 '221 bye bye baby\r\n' 01:34:53.870455 ====> Client disconnect 01:34:53.872805 Received ACKD (on stdin) 01:35:37.354450 ====> Client connect 01:35:37.356500 Received DATA (on stdin) 01:35:37.356601 > 160 bytes data, server => client 01:35:37.356710 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:35:37.356809 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:35:37.356899 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:35:38.538696 < 16 bytes data, client => server 01:35:38.538882 'USER anonymous\r\n' 01:35:38.540661 Received DATA (on stdin) 01:35:38.540735 > 33 bytes data, server => client 01:35:38.540823 '331 We are happy you popped in!\r\n' 01:35:38.639606 < 22 bytes data, client => server 01:35:38.639776 'PASS ftp@example.com\r\n' 01:35:38.641989 Received DATA (on stdin) 01:35:38.642080 > 30 bytes data, server => client 01:35:38.642169 '230 Welcome you silly person\r\n' 01:35:38.728016 < 5 bytes data, client => server 01:35:38.728167 'PWD\r\n' 01:35:38.729513 Received DATA (on stdin) 01:35:38.729592 > 30 bytes data, server => client 01:35:38.729701 '257 "/" is current directory\r\n' 01:35:39.473717 ====> Client disconnect 01:35:39.476307 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:34:54.800591 Running IPv4 version 01:34:54.807325 Listening on port 45203 01:34:54.807732 Wrote pid 273559 to log/4/server/ftp_sockdata.pid 01:34:54.808401 Received PING (on stdin) 01:34:54.809459 Received PORT (on stdin) 01:34:54.812571 ====> Client connect 01:34:54.819827 Received DATA (on stdin) 01:34:54.820090 > 18 bytes data, server => client 01:34:54.821060 'WE ROOLZ: 201673\r\n' 01:34:54.821288 Received DISC (on stdin) 01:34:54.821391 ====> Client forcibly disconnected 01:34:54.821874 Received QUIT (on stdin) 01:34:54.821940 quits 01:34:54.822396 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 597 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD === End of file server.input === Start of file stderr597 URL: ftp://127.0.0.1:38207 * Trying 127.0.0.1:38207... * Established connection to 127.0.0.1 (127.0.0.1 port 38207) from 127.0.0.1 port 56266 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' * Connection #0 to host 127.0.0.1:38207 left intact * closing connection #0 Test ended with result 0 === End of file stderr597 === Start of file valgrind597 ==273568== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind597 test 0593...[FTP multi PORT upload, no data conn and no transient neg. reply] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind593 ./libtest/libtests lib591 ftp://127.0.0.1:45353/path/593 8 log/7/upload593 > log/7/stdout593 2> log/7/stderr593 valgrind ERROR ==272981== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 593 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind593 ./libtest/libtests lib591 ftp://127.0.0.1:45353/path/593 8 log/7/upload593 > log/7/stdout593 2> log/7/stderr593 === End of file commands.log === Start of file ftp_server.log 01:34:45.227615 ====> Client connect 01:34:45.228559 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:34:45.237864 < "USER anonymous" 01:34:45.241380 > "331 We are happy you popped in![CR][LF]" 01:34:45.242090 < "PASS ftp@example.com" 01:34:45.242392 > "230 Welcome you silly person[CR][LF]" 01:34:45.243779 < "PWD" 01:34:45.246803 > "257 "/" is current directory[CR][LF]" 01:34:45.247414 < "EPSV" 01:34:45.247668 ====> Passive DATA channel requested by client 01:34:45.247833 DATA sockfilt for passive data channel starting... 01:34:45.297807 DATA sockfilt for passive data channel started (pid 272956) 01:34:45.299327 DATA sockfilt for passive data channel listens on port 43619 01:34:45.299726 > "229 Entering Passive Mode (|||43619|)[CR][LF]" 01:34:45.299916 Client has been notified that DATA conn will be accepted on port 43619 01:34:45.303801 Client connects to port 43619 01:34:45.304069 ====> Client established passive DATA connection on port 43619 01:34:45.304787 < "TYPE I" 01:34:45.306060 > "200 I modify TYPE as you wanted[CR][LF]" 01:34:45.306668 < "SIZE verifiedserver" 01:34:45.307023 > "213 18[CR][LF]" 01:34:45.308568 < "RETR verifiedserver" 01:34:45.311544 > "150 Binary junk (18 bytes).[CR][LF]" 01:34:45.312174 =====> Closing passive DATA connection... 01:34:45.312356 Server disconnects passive DATA connection 01:34:45.314040 Server disconnected passive DATA connection 01:34:45.314234 DATA sockfilt for passive data channel quits (pid 272956) 01:34:45.321481 DATA sockfilt for passive data channel quit (pid 272956) 01:34:45.321695 =====> Closed passive DATA connection 01:34:45.323942 > "226 File transfer complete[CR][LF]" 01:34:45.360351 < "QUIT" 01:34:45.360944 > "221 bye bye baby[CR][LF]" 01:34:45.364152 MAIN sockfilt said DISC 01:34:45.364512 ====> Client disconnected 01:34:45.364809 Awaiting input 01:35:30.527844 ====> Client connect 01:35:30.528591 FTPD: Getting commands from log/7/server.cmd 01:35:30.528858 FTPD: instructed to use NODATACONN150 01:35:30.529563 FTPD: set custom reply for EPRT command 01:35:30.529809 FTPD: run test case number: 593 01:35:30.534445 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:35:31.782670 < "USER anonymous" 01:35:31.783080 > "331 We are happy you popped in![CR][LF]" 01:35:31.884879 < "PASS ftp@example.com" 01:35:31.885300 > "230 Welcome you silly person[CR][LF]" 01:35:31.973427 < "PWD" 01:35:31.973847 > "257 "/" is current directory[CR][LF]" 01:35:32.178200 < "CWD path" 01:35:32.178601 > "250 CWD command successful.[CR][LF]" 01:35:32.349410 < "EPRT |1|127.0.0.1|59189|" 01:35:32.349834 > "500 we don't like EPRT now[CR][LF]" 01:35:32.585225 < "PORT 127,0,0,1,233,79" 01:35:32.590779 > "200 You said PORT - I say FINE[CR][LF]" 01:35:32.591056 ====> Active DATA channel requested by client 01:35:32.591682 DATA sockfilt for active data channel not started (NODATACONN150) 01:35:32.591853 ====> Active DATA channel not established 01:35:32.902867 < "TYPE I" 01:35:32.903309 > "200 I modify TYPE as you wanted[CR][LF]" 01:35:32.954986 < "STOR 593" 01:35:32.957470 > "150 Opening data connection[CR][LF]" 01:35:41.352074 < "QUIT" 01:35:41.352515 > "221 bye bye baby[CR][LF]" 01:35:41.560813 MAIN sockfilt said DISC 01:35:41.561528 ====> Client disconnected 01:35:41.561848 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:34:44.838645 ====> Client connect 01:34:44.842123 Received DATA (on stdin) 01:34:44.842227 > 160 bytes data, server => client 01:34:44.842333 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:34:44.842429 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:34:44.842514 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:34:44.848342 < 16 bytes data, client => server 01:34:44.848443 'USER anonymous\r\n' 01:34:44.849576 Received DATA (on stdin) 01:34:44.849649 > 33 bytes data, server => client 01:34:44.852179 '331 We are happy you popped in!\r\n' 01:34:44.852526 < 22 bytes data, client => server 01:34:44.852621 'PASS ftp@example.com\r\n' 01:34:44.854107 Received DATA (on stdin) 01:34:44.854187 > 30 bytes data, server => client 01:34:44.854289 '230 Welcome you silly person\r\n' 01:34:44.854647 < 5 bytes data, client => server 01:34:44.854723 'PWD\r\n' 01:34:44.855470 Received DATA (on stdin) 01:34:44.855554 > 30 bytes data, server => client 01:34:44.855678 '257 "/" is current directory\r\n' 01:34:44.857992 < 6 bytes data, client => server 01:34:44.858077 'EPSV\r\n' 01:34:44.911590 Received DATA (on stdin) 01:34:44.911746 > 39 bytes data, server => client 01:34:44.911857 '229 Entering Passive Mode (|||43619|)\r\n' 01:34:44.915005 < 8 bytes data, client => server 01:34:44.915097 'TYPE I\r\n' 01:34:44.916470 Received DATA (on stdin) 01:34:44.916554 > 33 bytes data, server => client 01:34:44.916681 '200 I modify TYPE as you wanted\r\n' 01:34:44.917121 < 21 bytes data, client => server 01:34:44.917211 'SIZE verifiedserver\r\n' 01:34:44.918653 Received DATA (on stdin) 01:34:44.918732 > 8 bytes data, server => client 01:34:44.918826 '213 18\r\n' 01:34:44.919334 < 21 bytes data, client => server 01:34:44.919425 'RETR verifiedserver\r\n' 01:34:44.920277 Received DATA (on stdin) 01:34:44.920355 > 29 bytes data, server => client 01:34:44.920477 '150 Binary junk (18 bytes).\r\n' 01:34:44.933356 Received DATA (on stdin) 01:34:44.933467 > 28 bytes data, server => client 01:34:44.935615 '226 File transfer complete\r\n' 01:34:44.970808 < 6 bytes data, client => server 01:34:44.970936 'QUIT\r\n' 01:34:44.972107 Received DATA (on stdin) 01:34:44.972193 > 18 bytes data, server => client 01:34:44.972603 '221 bye bye baby\r\n' 01:34:44.975443 ====> Client disconnect 01:34:44.975781 Received ACKD (on stdin) 01:35:30.138839 ====> Client connect 01:35:30.145647 Received DATA (on stdin) 01:35:30.145780 > 160 bytes data, server => client 01:35:30.145887 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:35:30.145989 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:35:30.146080 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:35:31.392986 < 16 bytes data, client => server 01:35:31.393183 'USER anonymous\r\n' 01:35:31.394335 Received DATA (on stdin) 01:35:31.394419 > 33 bytes data, server => client 01:35:31.394507 '331 We are happy you popped in!\r\n' 01:35:31.492722 < 22 bytes data, client => server 01:35:31.492912 'PASS ftp@example.com\r\n' 01:35:31.496557 Received DATA (on stdin) 01:35:31.496655 > 30 bytes data, server => client 01:35:31.496744 '230 Welcome you silly person\r\n' 01:35:31.583863 < 5 bytes data, client => server 01:35:31.584016 'PWD\r\n' 01:35:31.585098 Received DATA (on stdin) 01:35:31.585174 > 30 bytes data, server => client 01:35:31.585259 '257 "/" is current directory\r\n' 01:35:31.785377 < 10 bytes data, client => server 01:35:31.785560 'CWD path\r\n' 01:35:31.789855 Received DATA (on stdin) 01:35:31.789965 > 29 bytes data, server => client 01:35:31.790055 '250 CWD command successful.\r\n' 01:35:31.961327 < 26 bytes data, client => server 01:35:31.961488 'EPRT |1|127.0.0.1|59189|\r\n' 01:35:31.961577 Received DATA (on stdin) 01:35:31.961648 > 28 bytes data, server => client 01:35:31.961736 '500 we don't like EPRT now\r\n' 01:35:32.195373 < 23 bytes data, client => server 01:35:32.195548 'PORT 127,0,0,1,233,79\r\n' 01:35:32.196900 Received DATA (on stdin) 01:35:32.196975 > 32 bytes data, server => client 01:35:32.203372 '200 You said PORT - I say FINE\r\n' 01:35:32.512982 < 8 bytes data, client => server 01:35:32.513175 'TYPE I\r\n' 01:35:32.514826 Received DATA (on stdin) 01:35:32.514900 > 33 bytes data, server => client 01:35:32.514981 '200 I modify TYPE as you wanted\r\n' 01:35:32.565273 < 10 bytes data, client => server 01:35:32.565462 'STOR 593\r\n' 01:35:32.566686 Received DATA (on stdin) 01:35:32.566765 > 29 bytes data, server => client 01:35:32CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind598 ./libtest/libtests lib598 http://127.0.0.1:46853/598 > log/3/stdout598 2> log/3/stderr598 .568708 '150 Opening data connection\r\n' 01:35:40.962373 < 6 bytes data, client => server 01:35:40.962589 'QUIT\r\n' 01:35:40.963726 Received DATA (on stdin) 01:35:40.963816 > 18 bytes data, server => client 01:35:40.963910 '221 bye bye baby\r\n' 01:35:41.169465 ====> Client disconnect 01:35:41.172625 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:34:45.898014 Running IPv4 version 01:34:45.907344 Listening on port 43619 01:34:45.907881 Wrote pid 272956 to log/7/server/ftp_sockdata.pid 01:34:45.908827 Received PING (on stdin) 01:34:45.910003 Received PORT (on stdin) 01:34:45.914814 ====> Client connect 01:34:45.923977 Received DATA (on stdin) 01:34:45.924331 > 18 bytes data, server => client 01:34:45.924761 'WE ROOLZ: 202639\r\n' 01:34:45.925050 Received DISC (on stdin) 01:34:45.925189 ====> Client forcibly disconnected 01:34:45.925883 Received QUIT (on stdin) 01:34:45.925974 quits 01:34:45.926578 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd NODATACONN150 REPLY EPRT 500 we don't like EPRT now Testnum 593 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD path EPRT |1|127.0.0.1|59189| PORT 127,0,0,1,233,79 TYPE I STOR 593 QUIT === End of file server.input === Start of file stderr593 URL: ftp://127.0.0.1:45353/path/593 * Trying 127.0.0.1:45353... * Established connection to 127.0.0.1 (127.0.0.1 port 45353) from 127.0.0.1 port 60212 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' > CWD path < 250 CWD command successful. > EPRT |1|127.0.0.1|59189| < 500 we don't like EPRT now * disabling EPRT usage * Hostname 127.0.0.1 was found in DNS cache > PORT 127,0,0,1,233,79 < 200 You said PORT - I say FINE * Connect data stream actively > TYPE I < 200 I modify TYPE as you wanted > STOR 593 < 150 Opening data connection * Data conn was not available immediately * Accept timeout occurred while waiting server connect * Remembering we are in dir "path/" * Connection #0 to host 127.0.0.1:45353 left intact Test ended with result 12 === End of file stderr593 === Start of file upload593 Moooooooooooo for 593 upload this === End of file upload593 === Start of file valgrind593 ==272981== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind593 test 0598...[curl_easy_reset with referer and other strings set] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind598 ./libtest/libtests lib598 http://127.0.0.1:46853/598 > log/3/stdout598 2> log/3/stderr598 valgrind ERROR ==273727== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 598 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind598 ./libtest/libtests lib598 http://127.0.0.1:46853/598 > log/3/stdout598 2> log/3/stderr598 === End of file commands.log === Start of file http_server.log 01:35:02.327799 ====> Client connect 01:35:02.327973 accept_connection 3 returned 4 01:35:02.328058 accept_connection 3 returned 0 01:35:02.333811 Read 93 bytes 01:35:02.333903 Process 93 bytes request 01:35:02.333995 Got request: GET /verifiedserver HTTP/1.1 01:35:02.334062 Are-we-friendly question received 01:35:02.334176 Wrote request (93 bytes) input to log/3/server.input 01:35:02.334268 Identifying ourselves as friends 01:35:02.334444 Response sent (57 bytes) and written to log/3/server.response 01:35:02.334506 special request received, no persistency 01:35:02.334564 ====> Client disconnect 0 01:35:45.573324 ====> Client connect 01:35:45.573480 accept_connection 3 returned 4 01:35:45.573573 accept_connection 3 returned 0 01:35:46.548282 Read 155 bytes 01:35:46.548486 Process 155 bytes request 01:35:46.548586 Got request: GET /598 HTTP/1.1 01:35:46.548674 Serve test number 598 part 0 01:35:46.548871 - request found to be complete (598) 01:35:46.549160 Wrote request (155 bytes) input to log/3/server.input 01:35:46.549294 Send response test598 section 01:35:46.549655 Response sent (125 bytes) and written to log/3/server.response 01:35:46.549726 => persistent connection request ended, awaits new request 01:35:48.038638 Connection closed by client 01:35:48.038834 ====> Client disconnect 0 01:35:48.696180 ====> Client connect 01:35:48.696319 accept_connection 3 returned 4 01:35:48.696407 accept_connection 3 returned 0 01:35:48.756580 Read 57 bytes 01:35:48.756796 Process 57 bytes request 01:35:48.756900 Got request: GET /598 HTTP/1.1 01:35:48.756980 Serve test number 598 part 0 01:35:48.757196 - request found to be complete (598) 01:35:48.757434 Wrote request (57 bytes) input to log/3/server.input 01:35:48.757534 Send response test598 section 01:35:48.757896 Response sent (125 bytes) and written to log/3/server.response 01:35:48.757970 => persistent connection request ended, awaits new request 01:35:48.854859 Connection closed by client 01:35:48.855025 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 58734 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 598 === End of file server.cmd === Start of file server.input GET /598 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: the-moo agent next generation Accept: */* Referer: http://example.com/the-moo Cookie: name=moo GET /598 HTTP/1.1 Host: 127.0.0.1:46853 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Connection: close Content-Type: text/html -foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Connection: close Content-Type: text/html -foo- === End of file server.response === Start of file stderr598 URL: http://127.0.0.1:46853/598 * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 51454 * using HTTP/1.x > GET /598 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: the-moo agent next generation Accept: */* Referer: http://example.com/the-moo Cookie: name=moo < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Content-Length: 6 < Connection: close < Content-Type: text/html < * we are done reading and this is set to close, stop send * abort upload * shutting down connection #0 * Hostname 127.0.0.1 was found in DNS cache * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 51458 * using HTTP/1.x > GET /598 HTTP/1.1 Host: 127.0.0.1:46853 Accept: */* < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Content-Length: 6 < Connection: close < Content-Type: text/html < * we are done reading and this is set to close, stop send * abort upload * shutting down connection #1 Test ended with result 0 === End of file stderr598 === Start of file stdout598 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Connection: close Content-Type: text/html -foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Connection: close CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind599 ./libtest/libtests lib599 http://127.0.0.1:46263/599 log/5/ip599 > log/5/stdout599 2> log/5/stderr599 CMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind632 ../src/curl -q --output log/2/curl632.out --include --trace-ascii log/2/trace632 --trace-time --hostpubmd5 00 --key log/2/server/curl_client_key --pubkey log/2/server/curl_client_key.pub -u builduser: sftp://127.0.0.1:47/build/curl/src/build-curl/tests/log/2/irrelevant-file --insecure > log/2/stdout632 2> log/2/stderr632 Content-Type: text/html -foo- === End of file stdout598 === Start of file valgrind598 ==273727== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind598 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/sshserver.pl --verbose --pidfile "log/8/server/ssh_server.pid" --logdir "log/8" --ipv4 --addr "127.0.0.1" --user "builduser" --sshport 45611 startnew: child process has died, server might start up RUN: failed to start the SSH server on 45611 test 0599...[HTTP GET with progress callback and redirects changing content sizes] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind599 ./libtest/libtests lib599 http://127.0.0.1:46263/599 log/5/ip599 > log/5/stdout599 2> log/5/stderr599 valgrind ERROR ==273871== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 599 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind599 ./libtest/libtests lib599 http://127.0.0.1:46263/599 log/5/ip599 > log/5/stdout599 2> log/5/stderr599 === End of file commands.log === Start of file http_server.log 01:35:05.357254 ====> Client connect 01:35:05.357416 accept_connection 3 returned 4 01:35:05.357493 accept_connection 3 returned 0 01:35:05.363816 Read 93 bytes 01:35:05.363927 Process 93 bytes request 01:35:05.364014 Got request: GET /verifiedserver HTTP/1.1 01:35:05.364079 Are-we-friendly question received 01:35:05.364191 Wrote request (93 bytes) input to log/5/server.input 01:35:05.364280 Identifying ourselves as friends 01:35:05.364457 Response sent (57 bytes) and written to log/5/server.response 01:35:05.364518 special request received, no persistency 01:35:05.364575 ====> Client disconnect 0 01:35:48.606034 ====> Client connect 01:35:48.606181 accept_connection 3 returned 4 01:35:48.606261 accept_connection 3 returned 0 01:35:49.556678 Read 57 bytes 01:35:49.556867 Process 57 bytes request 01:35:49.556966 Got request: GET /599 HTTP/1.1 01:35:49.557034 Serve test number 599 part 0 01:35:49.557236 - request found to be complete (599) 01:35:49.557500 Wrote request (57 bytes) input to log/5/server.input 01:35:49.557604 Send response test599 section 01:35:49.557944 Response sent (170 bytes) and written to log/5/server.response 01:35:49.558011 => persistent connection request ended, awaits new request 01:35:50.976349 Connection closed by client 01:35:50.976553 ====> Client disconnect 0 01:35:51.504290 ====> Client connect 01:35:51.504411 accept_connection 3 returned 4 01:35:51.504483 accept_connection 3 returned 0 01:35:51.554875 Read 61 bytes 01:35:51.555008 Process 61 bytes request 01:35:51.555094 Got request: GET /5990001 HTTP/1.1 01:35:51.555157 Serve test number 599 part 1 01:35:51.555340 - request found to be complete (599) 01:35:51.555532 Wrote request (61 bytes) input to log/5/server.input 01:35:51.555605 Send response test599 section 01:35:51.555918 Response sent (215 bytes) and written to log/5/server.response 01:35:51.555978 => persistent connection request ended, awaits new request 01:35:51.971459 Connection closed by client 01:35:51.971632 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 50230 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file ip599 CL -1 === End of file ip599 === Start of file server.cmd Testnum 599 === End of file server.cmd === Start of file server.input GET /599 HTTP/1.1 Host: 127.0.0.1:46263 Accept: */* GET /5990001 HTTP/1.1 Host: 127.0.0.1:46263 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 302 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: 5990001 Content-Length: 6 Connection: close Content-Type: text/html -foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Transfer-Encoding: chunked Connection: close Content-Type: text/html 32 this data is slightly larger than the first piece 0 === End of file server.response === Start of file stderr599 URL: http://127.0.0.1:46263/599 * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 46530 * using HTTP/1.x > GET /599 HTTP/1.1 Host: 127.0.0.1:46263 Accept: */* < HTTP/1.1 302 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Location: 5990001 < Content-Length: 6 < Connection: close < Content-Type: text/html < * Request completely sent off * shutting down connection #0 * Issue another request to this URL: 'http://127.0.0.1:46263/5990001' * Hostname 127.0.0.1 was found in DNS cache * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 46546 * using HTTP/1.x > GET /5990001 HTTP/1.1 Host: 127.0.0.1:46263 Accept: */* < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Transfer-Encoding: chunked < Connection: close < Content-Type: text/html < * we are done reading and this is set to close, stop send * abort upload * shutting down connection #1 Test ended with result 0 === End of file stderr599 === Start of file stdout599 HTTP/1.1 302 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Location: 5990001 Content-Length: 6 Connection: close Content-Type: text/html HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Transfer-Encoding: chunked Connection: close Content-Type: text/html this data is slightly larger than the first piece === End of file stdout599 === Start of file valgrind599 ==273871== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind599 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 645 in state 4 Runner 2 (id 185908) running test 632 in state 4 Runner 3 (id 185910) running test 648 in state 4 Runner 4 (id 185912) running test 646 in state 4 Runner 5 (id 185914) running test 650 in state 4 Runner 6 (id 185916) running test 643 in state 4 Runner 7 (id 185918) running test 647 in state 4 Runner 8 (id 185920) running test 649 in state 4 test 0632...[SFTP syntactically invalid host key] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind632 ../src/curl -q --output log/2/curl632.out --include --trace-ascii log/2/trace632 --trace-time --hostpubmd5 00 --key log/2/server/curl_client_key --pubkey log/2/server/curl_client_key.pub -u builduser: sftp://127.0.0.1:47/build/curl/src/build-curl/tests/log/2/irrelevant-file --insecure > log/2/stdout632 2> log/2/stderr632 valgrind ERROR ==274042== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 632 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind632 ../src/curl -q --output log/2/curl632.out --include --trace-ascii log/2/trace632 --trace-time --hostpubmd5 00 --key log/2/server/curl_client_key --pubkey log/2/server/curl_client_key.pub -u builduser: sftp://127.0.0.1:47/build/curl/src/build-curl/tests/log/2/irrelevant-file --insecure > log/2/stCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind643 ./libtest/libtests lib643 http://127.0.0.1:38277/643 > log/6/stdout643 2> log/6/stderr643 dout632 2> log/2/stderr632 === End of file commands.log === Start of file server.cmd Testnum 632 === End of file server.cmd === Start of file stderr632 curl: option --hostpubmd5: is badly used here curl: try 'curl --help' for more information === End of file stderr632 === Start of file valgrind632 ==274042== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind632 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 645 in state 4 Runner 2 (id 185908) running test 651 in state 4 Runner 3 (id 185910) running test 648 in state 4 Runner 4 (id 185912) running test 646 in state 4 Runner 5 (id 185914) running test 650 in state 4 Runner 6 (id 185916) running test 643 in state 4 Runner 7 (id 185918) running test 647 in state 4 Runner 8 (id 185920) running test 649 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 645 in state 4 Runner 2 (id 185908) running test 651 in state 4 Runner 3 (id 185910) running test 648 in state 4 Runner 4 (id 185912) running test 646 in state 4 Runner 5 (id 185914) running test 650 in state 4 Runner 6 (id 185916) running test 643 in state 4 Runner 7 (id 185918) running test 647 in state 4 Runner 8 (id 185920) running test 649 in state 4 test 0643...[HTTP multi-part mimepost using read callback for the file part] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind643 ./libtest/libtests lib643 http://127.0.0.1:38277/643 > log/6/stdout643 2> log/6/stderr643 valgrind ERROR ==274235== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 643 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind643 ./libtest/libtests lib643 http://127.0.0.1:38277/643 > log/6/stdout643 2> log/6/stderr643 === End of file commands.log === Start of file http_server.log 01:35:38.758087 ====> Client connect 01:35:38.758254 accept_connection 3 returned 4 01:35:38.758334 accept_connection 3 returned 0 01:35:38.764871 Read 93 bytes 01:35:38.764958 Process 93 bytes request 01:35:38.765047 Got request: GET /verifiedserver HTTP/1.1 01:35:38.765110 Are-we-friendly question received 01:35:38.765221 Wrote request (93 bytes) input to log/6/server.input 01:35:38.765328 Identifying ourselves as friends 01:35:38.765515 Response sent (57 bytes) and written to log/6/server.response 01:35:38.765577 special request received, no persistency 01:35:38.765633 ====> Client disconnect 0 01:36:28.455723 ====> Client connect 01:36:28.455873 accept_connection 3 returned 4 01:36:28.455955 accept_connection 3 returned 0 01:36:29.986582 Read 295 bytes 01:36:29.986799 Process 295 bytes request 01:36:29.986898 Got request: POST /643 HTTP/1.1 01:36:29.986971 Serve test number 643 part 0 01:36:29.987195 - request found to be complete (643) 01:36:29.987402 Found Content-Length: 676 in the request 01:36:30.265061 Read 1 bytes 01:36:30.265291 Process 296 bytes request [CONTINUED] 01:36:30.265371 - request found to be complete (643) 01:36:30.380982 Read 1 bytes 01:36:30.381202 Process 297 bytes request [CONTINUED] 01:36:30.381273 - request found to be complete (643) 01:36:30.395200 Read 1 bytes 01:36:30.395340 Process 298 bytes request [CONTINUED] 01:36:30.395409 - request found to be complete (643) 01:36:30.397236 Read 1 bytes 01:36:30.397313 Process 299 bytes request [CONTINUED] 01:36:30.397378 - request found to be complete (643) 01:36:30.415208 Read 108 bytes 01:36:30.415391 Process 407 bytes request [CONTINUED] 01:36:30.415462 - request found to be complete (643) 01:36:30.417214 Read 1 bytes 01:36:30.417295 Process 408 bytes request [CONTINUED] 01:36:30.417359 - request found to be complete (643) 01:36:30.419852 Read 1 bytes 01:36:30.419931 Process 409 bytes request [CONTINUED] 01:36:30.419994 - request found to be complete (643) 01:36:30.422442 Read 1 bytes 01:36:30.422522 Process 410 bytes request [CONTINUED] 01:36:30.422589 - request found to be complete (643) 01:36:30.425086 Read 1 bytes 01:36:30.425165 Process 411 bytes request [CONTINUED] 01:36:30.425261 - request found to be complete (643) 01:36:30.427655 Read 1 bytes 01:36:30.427730 Process 412 bytes request [CONTINUED] 01:36:30.427796 - request found to be complete (643) 01:36:30.465215 Read 435 bytes 01:36:30.465426 Process 847 bytes request [CONTINUED] 01:36:30.465495 - request found to be complete (643) 01:36:30.465893 Wrote request (847 bytes) input to log/6/server.input 01:36:30.466003 Send response test643 section 01:36:30.466271 connection close instruction "swsclose" found in response 01:36:30.466493 Response sent (141 bytes) and written to log/6/server.response 01:36:30.466561 instructed to close connection after server-reply 01:36:30.466622 ====> Client disconnect 0 01:36:32.939268 ====> Client connect 01:36:32.939405 accept_connection 3 returned 4 01:36:32.939485 accept_connection 3 returned 0 01:36:33.026735 Read 309 bytes 01:36:33.026929 Process 309 bytes request 01:36:33.027023 Got request: POST /643 HTTP/1.1 01:36:33.027093 Serve test number 643 part 0 01:36:33.027314 - request found to be complete (643) 01:36:33.027512 Found Content-Length: 690 in the request 01:36:33.040354 Read 1 bytes 01:36:33.040543 Process 310 bytes request [CONTINUED] 01:36:33.040614 - request found to be complete (643) 01:36:33.046833 Read 1 bytes 01:36:33.046973 Process 311 bytes request [CONTINUED] 01:36:33.047043 - request found to be complete (643) 01:36:33.049722 Read 1 bytes 01:36:33.049810 Process 312 bytes request [CONTINUED] 01:36:33.049876 - request found to be complete (643) 01:36:33.052416 Read 1 bytes 01:36:33.052502 Process 313 bytes request [CONTINUED] 01:36:33.052568 - request found to be complete (643) 01:36:33.055816 Read 108 bytes 01:36:33.055917 Process 421 bytes request [CONTINUED] 01:36:33.055983 - request found to be complete (643) 01:36:33.058485 Read 1 bytes 01:36:33.058588 Process 422 bytes request [CONTINUED] 01:36:33.058658 - request found to be complete (643) 01:36:33.061091 Read 1 bytes 01:36:33.061170 Process 423 bytes request [CONTINUED] 01:36:33.061229 - request found to be complete (643) 01:36:33.063618 Read 1 bytes 01:36:33.063705 Process 424 bytes request [CONTINUED] 01:36:33.063767 - request found to be complete (643) 01:36:33.066245 Read 1 bytes 01:36:33.066334 Process 425 bytes request [CONTINUED] 01:36:33.066400 - request found to be complete (643) 01:36:33.068824 Read 1 bytes 01:36:33.068906 Process 426 bytes request [CONTINUED] 01:36:33.068974 - request found to be complete (643) 01:36:33.074063 Read 435 bytes 01:36:33.074184 Process 861 bytes request [CONTINUED] 01:36:33.074247 - request found to be complete (643) 01:36:33.074520 Wrote request (861 bytes) input to log/6/server.input 01:36:33.074614 Send response test643 section 01:36:33.074866 connection close instruction "swsclose" found in response 01:36:33.075026 Response sent (141 bytes) and written to log/6/server.response 01:36:33.075090 instructed to close connection after server-reply 01:36:33.075146 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 47744 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 643 === End of file server.cmdCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind645 ./libtest/libtests lib643 http://127.0.0.1:40641/645 > log/1/stdout645 2> log/1/stderr645 === Start of file server.input POST /643 HTTP/1.1 Host: 127.0.0.1:38277 Accept: */* Content-Length: 676 Content-Type: multipart/form-data; boundary=------------------------jeSSC5JeRHMHq3OEYBImQa --------------------------jeSSC5JeRHMHq3OEYBImQa Content-Disposition: form-data; name="sendfile"; filename="postit2.c" dummy --------------------------jeSSC5JeRHMHq3OEYBImQa Content-Disposition: form-data; name="callbackdata" dummy --------------------------jeSSC5JeRHMHq3OEYBImQa Content-Disposition: form-data; name="filename" postit2.c --------------------------jeSSC5JeRHMHq3OEYBImQa Content-Disposition: form-data; name="submit" send --------------------------jeSSC5JeRHMHq3OEYBImQa Content-Disposition: form-data; name="somename"; filename="somefile.txt" Content-Type: text/plain blah blah --------------------------jeSSC5JeRHMHq3OEYBImQa-- POST /643 HTTP/1.1 Host: 127.0.0.1:38277 Accept: */* Content-Length: 690 Content-Type: multipart/form-data; boundary=------------------------LUNLdQ9f546ZrJgbPqzqtY --------------------------LUNLdQ9f546ZrJgbPqzqtY Content-Disposition: form-data; name="sendfile alternative"; filename="file name 2" dummy --------------------------LUNLdQ9f546ZrJgbPqzqtY Content-Disposition: form-data; name="callbackdata" dummy --------------------------LUNLdQ9f546ZrJgbPqzqtY Content-Disposition: form-data; name="filename" postit2.c --------------------------LUNLdQ9f546ZrJgbPqzqtY Content-Disposition: form-data; name="submit" send --------------------------LUNLdQ9f546ZrJgbPqzqtY Content-Disposition: form-data; name="somename"; filename="somefile.txt" Content-Type: text/plain blah blah --------------------------LUNLdQ9f546ZrJgbPqzqtY-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file server.response === Start of file stderr643 URL: http://127.0.0.1:38277/643 * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 59788 * using HTTP/1.x > POST /643 HTTP/1.1 Host: 127.0.0.1:38277 Accept: */* Content-Length: 676 Content-Type: multipart/form-data; boundary=------------------------jeSSC5JeRHMHq3OEYBImQa * upload completely sent off: 676 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * shutting down connection #0 * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 52400 * using HTTP/1.x > POST /643 HTTP/1.1 Host: 127.0.0.1:38277 Accept: */* Content-Length: 690 Content-Type: multipart/form-data; boundary=------------------------LUNLdQ9f546ZrJgbPqzqtY * upload completely sent off: 690 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * shutting down connection #0 Test ended with result 0 === End of file stderr643 === Start of file stdout643 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file stdout643 === Start of file valgrind643 ==274235== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind643 test 0645...[HTTP multi-part chunked mimepost using read callback for the file part] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind645 ./libtest/libtests lib643 http://127.0.0.1:40641/645 > log/1/stdout645 2> log/1/stderr645 valgrind ERROR ==274392== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 645 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind645 ./libtest/libtests lib643 http://127.0.0.1:40641/645 > log/1/stdout645 2> log/1/stderr645 === End of file commands.log === Start of file http_server.log 01:35:43.806269 ====> Client connect 01:35:43.806434 accept_connection 3 returned 4 01:35:43.806510 accept_connection 3 returned 0 01:35:43.813201 Read 93 bytes 01:35:43.813302 Process 93 bytes request 01:35:43.813391 Got request: GET /verifiedserver HTTP/1.1 01:35:43.813459 Are-we-friendly question received 01:35:43.813592 Wrote request (93 bytes) input to log/1/server.input 01:35:43.813700 Identifying ourselves as friends 01:35:43.813897 Response sent (57 bytes) and written to log/1/server.response 01:35:43.813960 special request received, no persistency 01:35:43.814016 ====> Client disconnect 0 01:36:34.644132 ====> Client connect 01:36:34.644288 accept_connection 3 returned 4 01:36:34.644366 accept_connection 3 returned 0 01:36:36.047651 Read 200 bytes 01:36:36.047878 Process 200 bytes request 01:36:36.047974 Got request: POST /645 HTTP/1.1 01:36:36.048043 Serve test number 645 part 0 01:36:36.048284 - request found to be complete (645) 01:36:37.666588 Read 130 bytes 01:36:37.666814 Process 330 bytes request [CONTINUED] 01:36:37.666889 - request found to be complete (645) 01:36:37.742071 Read 6 bytes 01:36:37.742280 Process 336 bytes request [CONTINUED] 01:36:37.742353 - request found to be complete (645) 01:36:37.751279 Read 6 bytes 01:36:37.751453 Process 342 bytes request [CONTINUED] 01:36:37.751521 - request found to be complete (645) 01:36:37.754380 Read 6 bytes 01:36:37.754472 Process 348 bytes request [CONTINUED] 01:36:37.754536 - request found to be complete (645) 01:36:37.757334 Read 6 bytes 01:36:37.757433 Process 354 bytes request [CONTINUED] 01:36:37.757509 - request found to be complete (645) 01:36:37.760099 Read 6 bytes 01:36:37.760186 Process 360 bytes request [CONTINUED] 01:36:37.760253 - request found to be complete (645) 01:36:37.791867 Read 113 bytes 01:36:37.792073 Process 473 bytes request [CONTINUED] 01:36:37.792150 - request found to be complete (645) 01:36:37.794163 Read 6 bytes 01:36:37.794246 Process 479 bytes request [CONTINUED] 01:36:37.794314 - request found to be complete (645) 01:36:37.797207 Read 6 bytes 01:36:37.797315 Process 485 bytes request [CONTINUED] 01:36:37.797389 - request found to be complete (645) 01:36:37.800095 Read 6 bytes 01:36:37.800188 Process 491 bytes request [CONTINUED] 01:36:37.800262 - request found to be complete (645) 01:36:37.802943 Read 6 bytes 01:36:37.803031 Process 497 bytes request [CONTINUED] 01:36:37.803098 - request found to be complete (645) 01:36:37.808525 Read 12 bytes 01:36:37.808679 Process 509 bytes request [CONTINUED] 01:36:37.808752 - request found to be complete (645) 01:36:37.842310 Read 441 bytes 01:36:37.842503 Process 950 bytes request [CONTINUED] 01:36:37.842577 - request found to be complete (645) 01:36:37.879310 Read 5 bytes 01:36:37.879517 Process 955 bytes request [CONTINUED] 01:36:37.879589 - request found to be complete (645) 01:36:37.879940 Wrote request (955 bytes) input to log/1/server.input 01:36:37.880067 Send response test645 section 01:36:37.880343 connection close instruction "swsclose" found in response 01:36:37.880574 Response sent (141 bytes) and written to log/1/server.response 01:36:37.880644 instructed to close connection after server-reply 01:36:37.880707 ====> Client disconnect 0 01:36:40.405453 ====> Client connect 01:36:40.405594 accept_connection 3 returned 4 01:36:40.405676 accept_connection 3 returned 0 01:36:40.487498 Read 200 bytes 01:36:40.488373 Process 200 bytes request 01:36:40.488495 Got request: POST /645 HCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind646 ../src/curl -q --output log/4/curl646.out --include --trace-ascii log/4/trace646 --trace-time smtp://127.0.0.1:41811/646 --mail-rcpt recipient@example.com --mail-from sender@example.com -F "=(;type=multipart/alternative" -F "= This is the html version;headers=X-test1: this is a header;type=text/html;headers=X-test2: this is another header " -F "=This is the plain text version;headers=@log/4/headers646" -F "=)" -F "=@log/4/test646.txt;headers=" log/4/stdout646 2> log/4/stderr646 TTP/1.1 01:36:40.488573 Serve test number 645 part 0 01:36:40.488838 - request found to be complete (645) 01:36:41.521864 Read 144 bytes 01:36:41.522090 Process 344 bytes request [CONTINUED] 01:36:41.522169 - request found to be complete (645) 01:36:41.524645 Read 6 bytes 01:36:41.524721 Process 350 bytes request [CONTINUED] 01:36:41.524784 - request found to be complete (645) 01:36:41.527629 Read 6 bytes 01:36:41.527710 Process 356 bytes request [CONTINUED] 01:36:41.527773 - request found to be complete (645) 01:36:41.530665 Read 6 bytes 01:36:41.530758 Process 362 bytes request [CONTINUED] 01:36:41.530821 - request found to be complete (645) 01:36:41.533563 Read 6 bytes 01:36:41.533660 Process 368 bytes request [CONTINUED] 01:36:41.533730 - request found to be complete (645) 01:36:41.536817 Read 6 bytes 01:36:41.536923 Process 374 bytes request [CONTINUED] 01:36:41.536993 - request found to be complete (645) 01:36:41.540501 Read 113 bytes 01:36:41.540595 Process 487 bytes request [CONTINUED] 01:36:41.540664 - request found to be complete (645) 01:36:41.543330 Read 6 bytes 01:36:41.543419 Process 493 bytes request [CONTINUED] 01:36:41.543489 - request found to be complete (645) 01:36:41.548504 Read 6 bytes 01:36:41.548625 Process 499 bytes request [CONTINUED] 01:36:41.548695 - request found to be complete (645) 01:36:41.548972 Read 6 bytes 01:36:41.549042 Process 505 bytes request [CONTINUED] 01:36:41.549107 - request found to be complete (645) 01:36:41.551320 Read 6 bytes 01:36:41.551397 Process 511 bytes request [CONTINUED] 01:36:41.551465 - request found to be complete (645) 01:36:41.553865 Read 6 bytes 01:36:41.553951 Process 517 bytes request [CONTINUED] 01:36:41.554019 - request found to be complete (645) 01:36:41.556348 Read 6 bytes 01:36:41.556432 Process 523 bytes request [CONTINUED] 01:36:41.556498 - request found to be complete (645) 01:36:41.561309 Read 441 bytes 01:36:41.561414 Process 964 bytes request [CONTINUED] 01:36:41.561482 - request found to be complete (645) 01:36:41.568508 Read 5 bytes 01:36:41.568615 Process 969 bytes request [CONTINUED] 01:36:41.568685 - request found to be complete (645) 01:36:41.568990 Wrote request (969 bytes) input to log/1/server.input 01:36:41.569096 Send response test645 section 01:36:41.569411 connection close instruction "swsclose" found in response 01:36:41.569635 Response sent (141 bytes) and written to log/1/server.response 01:36:41.569705 instructed to close connection after server-reply 01:36:41.569768 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 55434 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 645 === End of file server.cmd === Start of file server.input POST /645 HTTP/1.1 Host: 127.0.0.1:40641 Accept: */* Transfer-Encoding: chunked Content-Type: multipart/form-data; boundary=------------------------GNEhLwkifsXL2cuGUy7hse Expect: 100-continue 7c --------------------------GNEhLwkifsXL2cuGUy7hse Content-Disposition: form-data; name="sendfile"; filename="postit2.c" d 1 u 1 m 1 m 1 y 1 6b --------------------------GNEhLwkifsXL2cuGUy7hse Content-Disposition: form-data; name="callbackdata" 1 d 1 u 1 m 1 m 1 y 1 1b2 --------------------------GNEhLwkifsXL2cuGUy7hse Content-Disposition: form-data; name="filename" postit2.c --------------------------GNEhLwkifsXL2cuGUy7hse Content-Disposition: form-data; name="submit" send --------------------------GNEhLwkifsXL2cuGUy7hse Content-Disposition: form-data; name="somename"; filename="somefile.txt" Content-Type: text/plain blah blah --------------------------GNEhLwkifsXL2cuGUy7hse-- 0 POST /645 HTTP/1.1 Host: 127.0.0.1:40641 Accept: */* Transfer-Encoding: chunked Content-Type: multipart/form-data; boundary=------------------------rM284jmY3AN7vJxMvUiIM5 Expect: 100-continue 8a --------------------------rM284jmY3AN7vJxMvUiIM5 Content-Disposition: form-data; name="sendfile alternative"; filename="file name 2" d 1 u 1 m 1 m 1 y 1 6b --------------------------rM284jmY3AN7vJxMvUiIM5 Content-Disposition: form-data; name="callbackdata" 1 d 1 u 1 m 1 m 1 y 1 1b2 --------------------------rM284jmY3AN7vJxMvUiIM5 Content-Disposition: form-data; name="filename" postit2.c --------------------------rM284jmY3AN7vJxMvUiIM5 Content-Disposition: form-data; name="submit" send --------------------------rM284jmY3AN7vJxMvUiIM5 Content-Disposition: form-data; name="somename"; filename="somefile.txt" Content-Type: text/plain blah blah --------------------------rM284jmY3AN7vJxMvUiIM5-- 0 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file server.response === Start of file stderr645 URL: http://127.0.0.1:40641/645 * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 57604 * using HTTP/1.x > POST /645 HTTP/1.1 Host: 127.0.0.1:40641 Accept: */* Transfer-Encoding: chunked Content-Type: multipart/form-data; boundary=------------------------GNEhLwkifsXL2cuGUy7hse Expect: 100-continue * Done waiting for 100-continue * upload completely sent off: 755 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * shutting down connection #0 * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 57608 * using HTTP/1.x > POST /645 HTTP/1.1 Host: 127.0.0.1:40641 Accept: */* Transfer-Encoding: chunked Content-Type: multipart/form-data; boundary=------------------------rM284jmY3AN7vJxMvUiIM5 Expect: 100-continue * Done waiting for 100-continue * upload completely sent off: 769 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * shutting down connection #0 Test ended with result 0 === End of file stderr645 === Start of file stdout645 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file stdout645 === Start of file valgrind645 ==274392== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind645 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/4/server/smtp_server.pid" --logfile "log/4/smtp_server.log" --logdir "log/4" --portfile "log/4/server/smtp_server.port" --srcdir "/build/curl/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 41811 (log/4/server/smtp_server.port) RUN: SMTP server is PID 274382 port 41811 * pid smtp => 274382 274382 test 0646...[SMTP multipart using mime API] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind646 ../src/curl -q --output log/4/curl646.out --include --trace-ascii log/4/trace646 --trace-time smtp://127.0.0.1:41811/646 --mail-rcpt recipient@example.com --mail-from sender@example.com -F "=(;type=multipart/alternative" -F "= This is the html version;headers=X-test1: this is a header;type=text/html;headers=X-test2: this is another header " -F "=This is the plain text version;headers=@log/4/headers646" -F "=)" -F "=@log/4/test646.txt;headers=" log/4/stdout646 2> log/4/stderr646 valgrind ERROR ==274506== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 646 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind646 ../src/curl -q --output log/4/curl646.out --include --trace-ascii log/4/trace646 --trace-time smtp://127.0.0.1:41811/646 --mail-rcpt recipient@example.com --mail-from sender@example.com -F "=(;type=multipart/alternative" -F "= This is the html version;headers=X-test1: this is a header;type=text/html;headers=X-test2: this is another header " -F "=This is the plain text version;headers=@log/4/headers646" -F "=)" -F "=@log/4/test646.txt;headers=" log/4/stdout646 2> log/4/stderr646 === End of file commands.log === Start of file headers646 # This line is a comment X-fileheader1: This is a header from a file # This line is another comment. It precedes a folded header. X-fileheader2: This is #a folded header === End of file headers646 === Start of file server.cmd Testnum 646 === End of file server.cmd === Start of file server.input EHLO 646 MAIL FROM: RCPT TO: DATA QUIT === End of file server.input === Start of file smtp_server.log 01:35:44.485949 SMTP server listens on port IPv4/41811 01:35:44.489317 logged pid 274382 in log/4/server/smtp_server.pid 01:35:44.489560 Awaiting input 01:36:39.807939 ====> Client connect 01:36:39.808839 FTPD: Getting commands from log/4/server.cmd 01:36:39.809317 FTPD: run test case number: 646 01:36:39.821001 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:36:41.176706 < "EHLO 646" 01:36:41.180803 > "250 ESMTP pingpong test server Hello 646[CR][LF]" 01:36:41.756790 < "MAIL FROM:" 01:36:41.757122 MAIL_smtp got FROM: 01:36:41.757861 > "250 Sender OK[CR][LF]" 01:36:41.821554 < "RCPT TO:" 01:36:41.821908 RCPT_smtp got TO: 01:36:41.827712 > "250 Recipient OK[CR][LF]" 01:36:41.922761 < "DATA" 01:36:41.923236 > "354 Show me the mail[CR][LF]" 01:36:41.923427 Store test number 646 in log/4/upload.646 01:36:42.536607 > Appending 1064 bytes to file 01:36:42.537036 Found SMTP EOB marker 01:36:42.537376 received 1064 bytes upload 01:36:42.537673 > "250 OK, data received![CR][LF]" 01:36:44.051898 < "QUIT" 01:36:44.057496 > "221 curl ESMTP server signing off[CR][LF]" 01:36:44.262060 MAIN sockfilt said DISC 01:36:44.262617 ====> Client disconnected 01:36:44.263372 Awaiting input === End of file smtp_server.log === Start of file smtp_sockfilt.log 01:35:44.083416 Running IPv4 version 01:35:44.091712 Listening on port 41811 01:35:44.092185 Wrote pid 274403 to log/4/server/smtp_sockfilt.pid 01:35:44.092474 Wrote port 41811 to log/4/server/smtp_server.port 01:35:44.093187 Received PING (on stdin) 01:36:39.418639 ====> Client connect 01:36:39.427128 Received DATA (on stdin) 01:36:39.427559 > 160 bytes data, server => client 01:36:39.432889 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:36:39.433055 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:36:39.433196 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:36:40.786228 < 10 bytes data, client => server 01:36:40.786447 'EHLO 646\r\n' 01:36:40.792366 Received DATA (on stdin) 01:36:40.792480 > 42 bytes data, server => client 01:36:40.792578 '250 ESMTP pingpong test server Hello 646\r\n' 01:36:41.366481 < 32 bytes data, client => server 01:36:41.366691 'MAIL FROM:\r\n' 01:36:41.371860 Received DATA (on stdin) 01:36:41.371966 > 15 bytes data, server => client 01:36:41.372047 '250 Sender OK\r\n' 01:36:41.431433 < 33 bytes data, client => server 01:36:41.431635 'RCPT TO:\r\n' 01:36:41.433903 Received DATA (on stdin) 01:36:41.433998 > 18 bytes data, server => client 01:36:41.438564 '250 Recipient OK\r\n' 01:36:41.532621 < 6 bytes data, client => server 01:36:41.532830 'DATA\r\n' 01:36:41.535194 Received DATA (on stdin) 01:36:41.535300 > 22 bytes data, server => client 01:36:41.535395 '354 Show me the mail\r\n' 01:36:42.144937 < 1064 bytes data, client => server 01:36:42.145168 'Content-Type: multipart/mixed; boundary=---------------------' 01:36:42.145274 '---z5V6kOP7yDVNeKOvcwD9vw\r\nMime-Version: 1.0\r\nFrom: diffe' 01:36:42.145372 'rent\r\nTo: another\r\nReply-To: \r\n\r' 01:36:42.145472 '\n--------------------------z5V6kOP7yDVNeKOvcwD9vw\r\nContent' 01:36:42.145570 '-Type: multipart/alternative; boundary=----------------------' 01:36:42.145667 '--KS3q1l886e6SuEPNm3B8oy\r\n\r\n--------------------------KS3' 01:36:42.145761 'q1l886e6SuEPNm3B8oy\r\nContent-Type: text/html\r\nContent-Tra' 01:36:42.145855 'nsfer-Encoding: 8bit\r\nX-test1: this is a header\r\nX-test2:' 01:36:42.145950 ' this is another header\r\n\r\nThis is the html version' 01:36:42.146046 '\r\n--------------------------KS3q1l886e6SuEPNm3B8oy\r' 01:36:42.146141 '\nX-fileheader1: This is a header from a file\r\nX-fileheader' 01:36:42.146235 '2: This is #a folded header\r\n\r\nThis is the plain text ver' 01:36:42.146332 'sion\r\n--------------------------KS3q1l886e6SuEPNm3B8oy--\r\n' 01:36:42.146430 '\r\n--------------------------z5V6kOP7yDVNeKOvcwD9vw\r\nConte' 01:36:42.146528 'nt-Disposition: attachment; filename="test646.txt"\r\nX-fileh' 01:36:42.146634 'eader1: This is a header from a file\r\nX-fileheader2: This i' 01:36:42.151913 's #a folded header\r\n\r\nThis is an attached file.\n\nIt may' 01:36:42.152027 ' contain any type of data.\n\r\n--------------------------z5V' 01:36:42.152104 '6kOP7yDVNeKOvcwD9vw--\r\n.\r\n' 01:36:42.152187 Received DATA (on stdin) 01:36:42.152253 > 24 bytes data, server => client 01:36:42.152334 '250 OK, data received!\r\n' 01:36:43.661857 < 6 bytes data, client => server 01:36:43.662052 'QUIT\r\n' 01:36:43.663430 Received DATA (on stdin) 01:36:43.663506 > 35 bytes data, server => client 01:36:43.669018 '221 curl ESMTP server signing off\r\n' 01:36:43.872784 ====> Client disconnect 01:36:43.874748 Received ACKD (on stdin) === End of file smtp_sockfilt.log === Start of file stderr646 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 1061 0 0 100 1064 0 205 0:00:05 0:00:05 --:--:-- 272 100 1061 0 0 100 1064 0 198 0:00:05 0:00:05 --:--:-- 259 === End of file stderr646 === Start of file stdin-for-646 From: different To: another body === End of file stdin-for-646 === Start of file test646.txt This is an attached file. It may contain any type of data. === End of file test646.txt === Start of file trace646 01:36:39.478929 * Trying 127.0.0.1:41811... 01:36:40.389500 * Established connection to 127.0.0.1 (127.0.0.1 port 41811) from 127.0.0.1 port 36336 01:36:40.676562 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:36:41.043915 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind647 ../src/curl -q --output log/7/curl647.out --include --trace-ascii log/7/trace647 --trace-time imap://127.0.0.1:42439/647 -F "=(;type=multipart/alternative" -F "= This is the html version;type=text/html" -F "=This is the plain text version" -F "=)" -F "=@log/7/test647.txt" -H "Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)" -H "From: Fred Foobar " -H "To: joe@example.com" -H "Message-Id: " -H "Subject: afternoon meeting" -u user:secret > log/7/stdout647 2> log/7/stderr647 | | 01:36:41.074658 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:36:41.081556 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:36:41.087150 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:36:41.200733 => Send header, 10 bytes (0xa) 0000: EHLO 646 01:36:41.279389 <= Recv header, 42 bytes (0x2a) 0000: 250 ESMTP pingpong test server Hello 646 01:36:41.759575 => Send header, 32 bytes (0x20) 0000: MAIL FROM: 01:36:41.792168 <= Recv header, 15 bytes (0xf) 0000: 250 Sender OK 01:36:41.823460 => Send header, 33 bytes (0x21) 0000: RCPT TO: 01:36:41.905750 <= Recv header, 18 bytes (0x12) 0000: 250 Recipient OK 01:36:41.921586 => Send header, 6 bytes (0x6) 0000: DATA 01:36:41.997245 <= Recv header, 22 bytes (0x16) 0000: 354 Show me the mail 01:36:42.557738 => Send data, 1064 bytes (0x428) 0000: Content-Type: multipart/mixed; boundary=------------------------ 0040: z5V6kOP7yDVNeKOvcwD9vw 0058: Mime-Version: 1.0 006b: From: different 007c: To: another 0089: Reply-To: 00ab: 00ad: --------------------------z5V6kOP7yDVNeKOvcwD9vw 00df: Content-Type: multipart/alternative; boundary=------------------ 011f: ------KS3q1l886e6SuEPNm3B8oy 013d: 013f: --------------------------KS3q1l886e6SuEPNm3B8oy 0171: Content-Type: text/html 018a: Content-Transfer-Encoding: 8bit 01ab: X-test1: this is a header 01c6: X-test2: this is another header 01e7: 01e9: This is the html version 0210: --------------------------KS3q1l886e6SuEPNm3B8oy 0242: X-fileheader1: This is a header from a file 026f: X-fileheader2: This is #a folded header 0298: 029a: This is the plain text version 02ba: --------------------------KS3q1l886e6SuEPNm3B8oy-- 02ee: 02f0: --------------------------z5V6kOP7yDVNeKOvcwD9vw 0322: Content-Disposition: attachment; filename="test646.txt" 035b: X-fileheader1: This is a header from a file 0388: X-fileheader2: This is #a folded header 03b1: 03b3: This is an attached file...It may contain any type of data.. 03f1: --------------------------z5V6kOP7yDVNeKOvcwD9vw-- 0425: . 01:36:42.746401 * upload completely sent off: 1064 bytes 01:36:42.937021 <= Recv header, 24 bytes (0x18) 0000: 250 OK, data received 01:36:43.268448 * Connection #0 to host 127.0.0.1:41811 left intact === End of file trace646 === Start of file upload.646 Content-Type: multipart/mixed; boundary=------------------------z5V6kOP7yDVNeKOvcwD9vw Mime-Version: 1.0 From: different To: another Reply-To: --------------------------z5V6kOP7yDVNeKOvcwD9vw Content-Type: multipart/alternative; boundary=------------------------KS3q1l886e6SuEPNm3B8oy --------------------------KS3q1l886e6SuEPNm3B8oy Content-Type: text/html Content-Transfer-Encoding: 8bit X-test1: this is a header X-test2: this is another header This is the html version --------------------------KS3q1l886e6SuEPNm3B8oy X-fileheader1: This is a header from a file X-fileheader2: This is #a folded header This is the plain text version --------------------------KS3q1l886e6SuEPNm3B8oy-- --------------------------z5V6kOP7yDVNeKOvcwD9vw Content-Disposition: attachment; filename="test646.txt" X-fileheader1: This is a header from a file X-fileheader2: This is #a folded header This is an attached file. It may contain any type of data. --------------------------z5V6kOP7yDVNeKOvcwD9vw-- . === End of file upload.646 === Start of file valgrind646 ==274506== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind646 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/7/server/imap_server.pid" --logfile "log/7/imap_server.log" --logdir "log/7" --portfile "log/7/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 42439 (log/7/server/imap_server.port) RUN: IMAP server is PID 274488 port 42439 * pid imap => 274488 274488 test 0647...[IMAP APPEND multipart using mime API] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind647 ../src/curl -q --output log/7/curl647.out --include --trace-ascii log/7/trace647 --trace-time imap://127.0.0.1:42439/647 -F "=(;type=multipart/alternative" -F "= This is the html version;type=text/html" -F "=This is the plain text version" -F "=)" -F "=@log/7/test647.txt" -H "Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)" -H "From: Fred Foobar " -H "To: joe@example.com" -H "Message-Id: " -H "Subject: afternoon meeting" -u user:secret > log/7/stdout647 2> log/7/stderr647 valgrind ERROR ==274643== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 647 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind647 ../src/curl -q --output log/7/curl647.out --include --trace-ascii log/7/trace647 --trace-time imap://127.0.0.1:42439/647 -F "=(;type=multipart/alternative" -F "= This is the html version;type=text/html" -F "=This is the plain text version" -F "=)" -F "=@log/7/test647.txt" -H "Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)" -H "From: Fred Foobar " -H "To: joe@example.com" -H "Message-Id: " -H "Subject: afternoon meeting" -u user:secret > log/7/stdout647 2> log/7/stderr647 === End of file commands.log === Start of file imap_server.log 01:35:46.312651 IMAP server listens on port IPv4/42439 01:35:46.316026 logged pid 274488 in log/7/server/imap_server.pid 01:35:46.316337 Awaiting input 01:36:41.771188 ====> Client connect 01:36:41.772017 FTPD: Getting commands from log/7/server.cmd 01:36:41.772460 FTPD: run test case number: 647 01:36:41.784306 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 01:36:43.152817 < "A001 CAPABILITY" 01:36:43.153831 > "A001 BAD Command[CR][LF]" 01:36:43.348518 < "A002 LOGIN user secret" 01:36:43.349119 LOGIN_imap got user secret 01:36:43.349443 > "A002 OK LOGIN completed[CR][LF]" 01:36:43.895352 < "A003 APPEND 647 (\Seen) {940}" 01:36:43.895710 APPEND_imap got 647 (\Seen) {940} 01:36:43.896135 > "+ Ready for literal data[CR][LF]" 01:36:43.896322 Store test number 647 in log/7/upload.647 01:36:44.328237 > Appending 940 bytes to file 01:36:44.329219 Received all data, waiting for final CRLF. 01:36:44.684682 received 940 bytes upload 01:36:44.685188 > "A003 OK APPEND completed[CR][LF]" 01:36:45.797830 < "A004 LOGOUT" 01:36:45.798254 > "* BYE curl IMAP server signing off[CR][LF]" 01:36:45.798495 > "A004 OK LOGOUT completed[CR][LF]" 01:36:46.005016 MAIN sockfilt said DISC 01:36:46.005578 ====> Client disconnected 01:36:46.006296 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 01:35:46.911447 Running IPv4 version 01:35:46.918482 Listening on port 42439 01:35:46.918930 Wrote pid 274531 to log/7/server/imap_sockfilt.pid 01:35:46.919177 Wrote port 42439 to log/7/server/imap_server.port 01:35:46.919913 Received PING (on stdin) 01:36:42.381952 ====> Client connect 01:36:42.389596 Received DATA (on stdin) 01:36:42.389957 > 178 bytes data, server => client 01:36:42.396181 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 01:36:42.396329 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 01:36:42.396439 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 01:36:42.396534 'rve\r\n' 01:36:43.759811 < 17 bytes data, client => server 01:36:43.760063 'A001 CAPABILITY\r\n' 01:36:43.764525 Received DATA (on stdin) 01:36:43.764623 > 18 bytes data, server => client 01:36:43.764737CMD (6656): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind649 ../src/curl -q --output log/8/curl649.out --include --trace-ascii log/8/trace649 --trace-time smtp://127.0.0.1:34749/649 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is valid;encoder=7bit' -F "=@log/8/test649.txt;encoder=7bit" -H "From: different" -H "To: another" log/8/stdout649 2> log/8/stderr649 'A001 BAD Command\r\n' 01:36:43.956175 < 24 bytes data, client => server 01:36:43.956381 'A002 LOGIN user secret\r\n' 01:36:43.960819 Received DATA (on stdin) 01:36:43.960923 > 25 bytes data, server => client 01:36:43.961010 'A002 OK LOGIN completed\r\n' 01:36:44.505243 < 31 bytes data, client => server 01:36:44.505471 'A003 APPEND 647 (\Seen) {940}\r\n' 01:36:44.511886 Received DATA (on stdin) 01:36:44.512001 > 26 bytes data, server => client 01:36:44.512091 '+ Ready for literal data\r\n' 01:36:44.936666 < 940 bytes data, client => server 01:36:44.936904 'Content-Type: multipart/mixed; boundary=---------------------' 01:36:44.937015 '---5f2HlSyfbm2SXbxmoGrpHG\r\nMime-Version: 1.0\r\nDate: Mon, ' 01:36:44.937119 '7 Feb 1994 21:52:25 -0800 (PST)\r\nFrom: Fred Foobar \r\nTo: joe@example.com\r\nMessage-Id: \r\nSubject: afternoon meeting\r\n\r\n-----' 01:36:44.937427 '---------------------5f2HlSyfbm2SXbxmoGrpHG\r\nContent-Type: ' 01:36:44.937530 'multipart/alternative; boundary=------------------------ycpig' 01:36:44.937631 'EHMPkIicLsGTuJi2a\r\n\r\n--------------------------ycpigEHMPk' 01:36:44.937732 'IicLsGTuJi2a\r\nContent-Type: text/html\r\nContent-Transfer-E' 01:36:44.937846 'ncoding: 8bit\r\n\r\nThis is the html version\r\n' 01:36:44.937948 '--------------------------ycpigEHMPkIicLsGTuJi2a\r\n\r\nThis ' 01:36:44.938046 'is the plain text version\r\n--------------------------ycpigE' 01:36:44.938148 'HMPkIicLsGTuJi2a--\r\n\r\n--------------------------5f2HlSyfb' 01:36:44.938247 'm2SXbxmoGrpHG\r\nContent-Disposition: attachment; filename="t' 01:36:44.938340 'est647.txt"\r\n\r\nThis is an attached file.\n\nIt may contai' 01:36:44.938436 'n any type of data.\n\r\n--------------------------5f2HlSyfbm' 01:36:44.938520 '2SXbxmoGrpHG--\r\n' 01:36:45.287418 < 2 bytes data, client => server 01:36:45.287600 '\r\n' 01:36:45.296567 Received DATA (on stdin) 01:36:45.296671 > 26 bytes data, server => client 01:36:45.296757 'A003 OK APPEND completed\r\n' 01:36:46.407799 < 13 bytes data, client => server 01:36:46.407983 'A004 LOGOUT\r\n' 01:36:46.409834 Received DATA (on stdin) 01:36:46.409916 > 36 bytes data, server => client 01:36:46.410002 '* BYE curl IMAP server signing off\r\n' 01:36:46.410114 Received DATA (on stdin) 01:36:46.410177 > 26 bytes data, server => client 01:36:46.410254 'A004 OK LOGOUT completed\r\n' 01:36:46.614919 ====> Client disconnect 01:36:46.617680 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 647 === End of file server.cmd === Start of file server.input A001 CAPABILITY A002 LOGIN user secret A003 APPEND 647 (\Seen) {940} A004 LOGOUT === End of file server.input === Start of file stderr647 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 940 0 0 100 940 0 180 0:00:05 0:00:05 --:--:-- 248 100 940 0 0 100 940 0 173 0:00:05 0:00:05 --:--:-- 235 === End of file stderr647 === Start of file test647.txt This is an attached file. It may contain any type of data. === End of file test647.txt === Start of file trace647 01:36:41.424674 * Trying 127.0.0.1:42439... 01:36:42.369838 * Established connection to 127.0.0.1 (127.0.0.1 port 42439) from 127.0.0.1 port 38938 01:36:42.621121 <= Recv header, 28 bytes (0x1c) 0000: _ _ ____ _ 01:36:42.993008 <= Recv header, 28 bytes (0x1c) 0000: ___| | | | _ \| | 01:36:43.022707 <= Recv header, 28 bytes (0x1c) 0000: / __| | | | |_) | | 01:36:43.032133 <= Recv header, 28 bytes (0x1c) 0000: | (__| |_| | _ {| |___ 01:36:43.036987 <= Recv header, 28 bytes (0x1c) 0000: \___|\___/|_| \_\_____| 01:36:43.041812 <= Recv header, 38 bytes (0x26) 0000: * OK curl IMAP server ready to serve 01:36:43.170964 => Send header, 17 bytes (0x11) 0000: A001 CAPABILITY 01:36:43.245130 <= Recv header, 18 bytes (0x12) 0000: A001 BAD Command 01:36:43.346372 => Send header, 24 bytes (0x18) 0000: A002 LOGIN user secret 01:36:43.422284 <= Recv header, 25 bytes (0x19) 0000: A002 OK LOGIN completed 01:36:43.893152 => Send header, 31 bytes (0x1f) 0000: A003 APPEND 647 (\Seen) {940} 01:36:43.910621 <= Recv header, 26 bytes (0x1a) 0000: + Ready for literal data 01:36:44.343800 => Send data, 940 bytes (0x3ac) 0000: Content-Type: multipart/mixed; boundary=------------------------ 0040: 5f2HlSyfbm2SXbxmoGrpHG 0058: Mime-Version: 1.0 006b: Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST) 0097: From: Fred Foobar 00bf: To: joe@example.com 00d4: Message-Id: 00fe: Subject: afternoon meeting 011a: 011c: --------------------------5f2HlSyfbm2SXbxmoGrpHG 014e: Content-Type: multipart/alternative; boundary=------------------ 018e: ------ycpigEHMPkIicLsGTuJi2a 01ac: 01ae: --------------------------ycpigEHMPkIicLsGTuJi2a 01e0: Content-Type: text/html 01f9: Content-Transfer-Encoding: 8bit 021a: 021c: This is the html version 0243: --------------------------ycpigEHMPkIicLsGTuJi2a 0275: 0277: This is the plain text version 0297: --------------------------ycpigEHMPkIicLsGTuJi2a-- 02cb: 02cd: --------------------------5f2HlSyfbm2SXbxmoGrpHG 02ff: Content-Disposition: attachment; filename="test647.txt" 0338: 033a: This is an attached file...It may contain any type of data.. 0378: --------------------------5f2HlSyfbm2SXbxmoGrpHG-- 01:36:44.522345 * upload completely sent off: 940 bytes 01:36:44.676423 => Send header, 2 bytes (0x2) 0000: 01:36:44.716676 <= Recv header, 26 bytes (0x1a) 0000: A003 OK APPEND completed 01:36:45.016752 * Connection #0 to host 127.0.0.1:42439 left intact === End of file trace647 === Start of file upload.647 Content-Type: multipart/mixed; boundary=------------------------5f2HlSyfbm2SXbxmoGrpHG Mime-Version: 1.0 Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST) From: Fred Foobar To: joe@example.com Message-Id: Subject: afternoon meeting --------------------------5f2HlSyfbm2SXbxmoGrpHG Content-Type: multipart/alternative; boundary=------------------------ycpigEHMPkIicLsGTuJi2a --------------------------ycpigEHMPkIicLsGTuJi2a Content-Type: text/html Content-Transfer-Encoding: 8bit This is the html version --------------------------ycpigEHMPkIicLsGTuJi2a This is the plain text version --------------------------ycpigEHMPkIicLsGTuJi2a-- --------------------------5f2HlSyfbm2SXbxmoGrpHG Content-Disposition: attachment; filename="test647.txt" This is an attached file. It may contain any type of data. --------------------------5f2HlSyfbm2SXbxmoGrpHG-- === End of file upload.647 === Start of file valgrind647 ==274643== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind647 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/8/server/smtp_server.pid" --logfile "log/8/smtp_server.log" --logdir "log/8" --portfile "log/8/server/smtp_server.port" --srcdir "/build/curl/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 34749 (log/8/server/smtp_server.port) RUN: SMTP server is PID 274811 port 34749 * pid smtp => 274811 274811 test 0649...[SMTP multipart with 7bit encoder error] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind649 ../src/curl -q --output log/8/curl649.out --include --trace-ascii log/8/trace649 --trace-time smtp://127.0.0.1:34749/649 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is valid;encoder=7bit' -F "=@log/8/test649.txt;encoder=7bit" -H "From: different" -H "To: another" log/8/stdout649 2> log/8/stderr649 valgrind ERROR ==274851== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 649 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind649 ../src/curl -q --output log/8/curl649.out --include --trace-ascii log/8/trace649 --trace-time smtp://127.0.0.1:34749/649 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is valid;encoder=7bit' -F "=@log/8/test649.txt;encoder=7bit" -H "From: different" -H "To: another" log/8/stdout649 2> log/8/stderr649 === End of file commands.log === Start of file server.cmd Testnum 649 === End of file server.cmd === Start of file server.input EHLO 649 MAIL FROM: RCPT TO: DATA === End of file server.input === Start of file smtp_server.log 01:35:54.125689 SMTP server listens on port IPv4/34749 01:35:54.128645 logged pid 274811 in log/8/server/smtp_server.pid 01:35:54.128872 Awaiting input 01:36:48.707317 ====> Client connect 01:36:48.708164 FTPD: Getting commands from log/8/server.cmd 01:36:48.708573 FTPD: run test case number: 649 01:36:48.717842 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:36:50.136936 < "EHLO 649" 01:36:50.140971 > "250 ESMTP pingpong test server Hello 649[CR][LF]" 01:36:50.731782 < "MAIL FROM:" 01:36:50.732211 MAIL_smtp got FROM: 01:36:50.732952 > "250 Sender OK[CR][LF]" 01:36:50.801719 < "RCPT TO:" 01:36:50.802080 RCPT_smtp got TO: 01:36:50.802972 > "250 Recipient OK[CR][LF]" 01:36:50.891969 < "DATA" 01:36:50.895984 > "354 Show me the mail[CR][LF]" 01:36:50.896279 Store test number 649 in log/8/upload.649 01:36:51.547100 > Appending 420 bytes to file 01:36:52.260923 received 420 bytes upload 01:36:52.261476 > "250 OK, data received![CR][LF]" 01:36:52.264412 MAIN sockfilt said DISC 01:36:52.264792 ====> Client disconnected 01:36:52.265503 Awaiting input === End of file smtp_server.log === Start of file smtp_sockfilt.log 01:35:54.724346 Running IPv4 version 01:35:54.731922 Listening on port 34749 01:35:54.732378 Wrote pid 274821 to log/8/server/smtp_sockfilt.pid 01:35:54.732648 Wrote port 34749 to log/8/server/smtp_server.port 01:35:54.733387 Received PING (on stdin) 01:36:49.318087 ====> Client connect 01:36:49.331827 Received DATA (on stdin) 01:36:49.332188 > 160 bytes data, server => client 01:36:49.332589 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:36:49.332705 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:36:49.332817 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:36:50.745313 < 10 bytes data, client => server 01:36:50.745548 'EHLO 649\r\n' 01:36:50.752042 Received DATA (on stdin) 01:36:50.752152 > 42 bytes data, server => client 01:36:50.752265 '250 ESMTP pingpong test server Hello 649\r\n' 01:36:51.344322 < 32 bytes data, client => server 01:36:51.344497 'MAIL FROM:\r\n' 01:36:51.344589 Received DATA (on stdin) 01:36:51.344660 > 15 bytes data, server => client 01:36:51.344739 '250 Sender OK\r\n' 01:36:51.411033 < 33 bytes data, client => server 01:36:51.411246 'RCPT TO:\r\n' 01:36:51.414039 Received DATA (on stdin) 01:36:51.414153 > 18 bytes data, server => client 01:36:51.414252 '250 Recipient OK\r\n' 01:36:51.501875 < 6 bytes data, client => server 01:36:51.502037 'DATA\r\n' 01:36:51.503532 Received DATA (on stdin) 01:36:51.503614 > 22 bytes data, server => client 01:36:51.507739 '354 Show me the mail\r\n' 01:36:52.156434 < 420 bytes data, client => server 01:36:52.156639 'Content-Type: multipart/mixed; boundary=---------------------' 01:36:52.156743 '---JUVkELrIIowZiMFhT5KRIb\r\nMime-Version: 1.0\r\nFrom: diffe' 01:36:52.156840 'rent\r\nTo: another\r\n\r\n--------------------------JUVkELrI' 01:36:52.156933 'IowZiMFhT5KRIb\r\nContent-Transfer-Encoding: 7bit\r\n\r\nThis' 01:36:52.157031 ' is valid\r\n--------------------------JUVkELrIIowZiMFhT5KRIb' 01:36:52.157128 '\r\nContent-Disposition: attachment; filename="test649.txt"\r' 01:36:52.157223 '\nContent-Transfer-Encoding: 7bit\r\n\r\nThis is an attached ' 01:36:52.157297 'file (in french: pi' 01:36:52.871119 ====> Client disconnect 01:36:52.871561 Received ACKD (on stdin) 01:36:52.875148 Received DATA (on stdin) 01:36:52.875236 > 24 bytes data, server => client 01:36:52.875328 '250 OK, data received!\r\n' 01:36:52.875411 *** We are disconnected 01:36:52.875747 Received ACKD (on stdin) === End of file smtp_sockfilt.log === Start of file stderr649 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 79 531 0 0 79 420 0 81 0:00:06 0:00:05 0:00:01 108 79 531 0 0 79 420 0 78 0:00:06 0:00:05 0:00:01 102 curl: (26) read error getting mime data === End of file stderr649 === Start of file stdin-for-649 From: different To: another body === End of file stdin-for-649 === Start of file test649.txt This is an attached file (in french: pièce jointe). It contains at least an 8-bit byte value. === End of file test649.txt === Start of file trace649 01:36:48.398868 * Trying 127.0.0.1:34749... 01:36:49.273695 * Established connection to 127.0.0.1 (127.0.0.1 port 34749) from 127.0.0.1 port 41508 01:36:49.568997 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:36:49.982392 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:36:50.021157 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:36:50.034268 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:36:50.039706 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:36:50.156483 => Send header, 10 bytes (0xa) 0000: EHLO 649 01:36:50.252649 <= Recv header, 42 bytes (0x2a) 0000: 250 ESMTP pingpong test server Hello 649 01:36:50.731812 => Send header, 32 bytes (0x20) 0000: MAIL FROM: 01:36:50.767406 <= Recv header, 15 bytes (0xf) 0000: 250 Sender OK 01:36:50.800366 => Send header, 33 bytes (0x21) 0000: RCPT TO: 01:36:50.873892 <= Recv header, 18 bytes (0x12) 0000: 250 Recipient OK 01:36:50.888325 => Send header, 6 bytes (0x6) 0000: DATA 01:36:50.966685 <= Recv header, 22 bytes (0x16) 0000: 354 Show me the mail 01:36:51.564759 => Send data, 420 bytes (0x1a4) 0000: Content-Type: multipart/mixed; boundary=------------------------ 0040: JUVkELrIIowZiMFhT5KRIb 0058: Mime-Version: 1.0 006b: From: different 007c: To: another 0089: 008b: --------------------------JUVkELrIIowZiMFhT5KRIb 00bd: Content-Transfer-Encoding: 7bit 00de: 00e0: This is valid 00ef: --------------------------JUVkELrIIowZiMFhT5KRIb 0121: Content-Disposition: attachment; filename="test649.txt" 015a: Content-Transfer-Encoding: 7bit 017b: 017d: This is an attached file (in french: pi 01:36:51.796530 * read error getting mime data 01:36:52.137231 * closing connection #0 === End of file trace649 === Start of file upload.649 Content-Type: multipart/mixed; boundary=------------------------JUVkELrIIowZiMFhT5KRIb Mime-Version: 1.0 From: different To: another --------------------------JUVkELrIIowZiMFhT5KRIb Content-Transfer-EncodinCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind648 ../src/curl -q --output log/3/curl648.out --include --trace-ascii log/3/trace648 --trace-time smtp://127.0.0.1:35359/648 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is the email inline text with a very long line containing the special character = and that should be split by encoder.;headers=Content-disposition: "inline";encoder=quoted-printable' -F "=@log/3/test648.txt;encoder=base64" -H "From: different" -H "To: another" log/3/stdout648 2> log/3/stderr648 g: 7bit This is valid --------------------------JUVkELrIIowZiMFhT5KRIb Content-Disposition: attachment; filename="test649.txt" Content-Transfer-Encoding: 7bit This is an attached file (in french: pi === End of file upload.649 === Start of file valgrind649 ==274851== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind649 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/3/server/smtp_server.pid" --logfile "log/3/smtp_server.log" --logdir "log/3" --portfile "log/3/server/smtp_server.port" --srcdir "/build/curl/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 35359 (log/3/server/smtp_server.port) RUN: SMTP server is PID 274807 port 35359 * pid smtp => 274807 274807 test 0648...[SMTP multipart with transfer content encoders] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind648 ../src/curl -q --output log/3/curl648.out --include --trace-ascii log/3/trace648 --trace-time smtp://127.0.0.1:35359/648 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is the email inline text with a very long line containing the special character = and that should be split by encoder.;headers=Content-disposition: "inline";encoder=quoted-printable' -F "=@log/3/test648.txt;encoder=base64" -H "From: different" -H "To: another" log/3/stdout648 2> log/3/stderr648 valgrind ERROR ==274830== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 648 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind648 ../src/curl -q --output log/3/curl648.out --include --trace-ascii log/3/trace648 --trace-time smtp://127.0.0.1:35359/648 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is the email inline text with a very long line containing the special character = and that should be split by encoder.;headers=Content-disposition: "inline";encoder=quoted-printable' -F "=@log/3/test648.txt;encoder=base64" -H "From: different" -H "To: another" log/3/stdout648 2> log/3/stderr648 === End of file commands.log === Start of file server.cmd Testnum 648 === End of file server.cmd === Start of file server.input EHLO 648 MAIL FROM: RCPT TO: DATA QUIT === End of file server.input === Start of file smtp_server.log 01:35:53.758244 SMTP server listens on port IPv4/35359 01:35:53.761513 logged pid 274807 in log/3/server/smtp_server.pid 01:35:53.761761 Awaiting input 01:36:49.344572 ====> Client connect 01:36:49.345456 FTPD: Getting commands from log/3/server.cmd 01:36:49.345906 FTPD: run test case number: 648 01:36:49.357680 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:36:50.804399 < "EHLO 648" 01:36:50.805469 > "250 ESMTP pingpong test server Hello 648[CR][LF]" 01:36:51.363748 < "MAIL FROM:" 01:36:51.364139 MAIL_smtp got FROM: 01:36:51.365171 > "250 Sender OK[CR][LF]" 01:36:51.425058 < "RCPT TO:" 01:36:51.425420 RCPT_smtp got TO: 01:36:51.430792 > "250 Recipient OK[CR][LF]" 01:36:51.517762 < "DATA" 01:36:51.520856 > "354 Show me the mail[CR][LF]" 01:36:51.521096 Store test number 648 in log/3/upload.648 01:36:52.193120 > Appending 737 bytes to file 01:36:52.440652 > Appending 3 bytes to file 01:36:52.441078 Found SMTP EOB marker 01:36:52.441427 received 740 bytes upload 01:36:52.442126 > "250 OK, data received![CR][LF]" 01:36:53.614957 < "QUIT" 01:36:53.615411 > "221 curl ESMTP server signing off[CR][LF]" 01:36:53.823290 MAIN sockfilt said DISC 01:36:53.823842 ====> Client disconnected 01:36:53.824603 Awaiting input === End of file smtp_server.log === Start of file smtp_sockfilt.log 01:35:53.356354 Running IPv4 version 01:35:53.363916 Listening on port 35359 01:35:53.364373 Wrote pid 274818 to log/3/server/smtp_sockfilt.pid 01:35:53.364636 Wrote port 35359 to log/3/server/smtp_server.port 01:35:53.365388 Received PING (on stdin) 01:36:48.955272 ====> Client connect 01:36:48.963021 Received DATA (on stdin) 01:36:48.963384 > 160 bytes data, server => client 01:36:48.969526 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:36:48.969685 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:36:48.969799 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:36:50.413852 < 10 bytes data, client => server 01:36:50.414026 'EHLO 648\r\n' 01:36:50.416220 Received DATA (on stdin) 01:36:50.416305 > 42 bytes data, server => client 01:36:50.416415 '250 ESMTP pingpong test server Hello 648\r\n' 01:36:50.973482 < 32 bytes data, client => server 01:36:50.973684 'MAIL FROM:\r\n' 01:36:50.975896 Received DATA (on stdin) 01:36:50.975992 > 15 bytes data, server => client 01:36:50.976099 '250 Sender OK\r\n' 01:36:51.034777 < 33 bytes data, client => server 01:36:51.035017 'RCPT TO:\r\n' 01:36:51.037396 Received DATA (on stdin) 01:36:51.037481 > 18 bytes data, server => client 01:36:51.042995 '250 Recipient OK\r\n' 01:36:51.127527 < 6 bytes data, client => server 01:36:51.127730 'DATA\r\n' 01:36:51.129306 Received DATA (on stdin) 01:36:51.129390 > 22 bytes data, server => client 01:36:51.132556 '354 Show me the mail\r\n' 01:36:51.801727 < 737 bytes data, client => server 01:36:51.801968 'Content-Type: multipart/mixed; boundary=---------------------' 01:36:51.802086 '---zZxS89PTly2s8Ejz559zLd\r\nMime-Version: 1.0\r\nFrom: diffe' 01:36:51.802192 'rent\r\nTo: another\r\n\r\n--------------------------zZxS89PT' 01:36:51.802302 'ly2s8Ejz559zLd\r\nContent-Transfer-Encoding: quoted-printable' 01:36:51.802403 '\r\nContent-disposition: "inline"\r\n\r\nThis is the email in' 01:36:51.802506 'line text with a very long line containing the special =\r\nc' 01:36:51.802608 'haracter =3D and that should be split by encoder.\r\n--------' 01:36:51.802712 '------------------zZxS89PTly2s8Ejz559zLd\r\nContent-Dispositi' 01:36:51.802817 'on: attachment; filename="test648.txt"\r\nContent-Transfer-En' 01:36:51.802919 'coding: base64\r\n\r\nVGhpcyBpcyBhbiBhdHRhY2hlZCBmaWxlLgoKSXQ' 01:36:51.803022 'gbWF5IGNvbnRhaW4gYW55IHR5cGUgb2YgZGF0\r\nYSBhbmQgd2lsbCBiZSBl' 01:36:51.803124 'bmNvZGVkIGluIGJhc2U2NCBmb3IgdHJhbnNmZXIuCg==\r\n-------------' 01:36:51.803214 '-------------zZxS89PTly2s8Ejz559zLd--\r\n' 01:36:52.048540 < 3 bytes data, client => server 01:36:52.048729 '.\r\n' 01:36:52.052797 Received DATA (on stdin) 01:36:52.052903 > 24 bytes data, server => client 01:36:52.053026 '250 OK, data received!\r\n' 01:36:53.221839 < 6 bytes data, client => server 01:36:53.222046 'QUIT\r\n' 01:36:53.226772 Received DATA (on stdin) 01:36:53.226875 > 35 bytes data, server => client 01:36:53.226969 '221 curl ESMTP server signing off\r\n' 01:36:53.434043 ====> Client disconnect 01:36:53.438531 Received ACKD (on stdin) === End of file smtp_sockfilt.log === Start of file stderr648 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 740 0 0 0 740 0 139 --:--:-- 0:00:05 --:--:-- 181 100 740 0 0 0 740 0 136 --:--:-- 0:00:05 --:--:-- 176 === End of file stderr648 === Start of file stdin-for-648 From: different To: another CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind650 ./libtest/libtests lib650 http://127.0.0.1:46263/650 log/5/test650.filedata log/5/stdout650 2> log/5/stderr650 body === End of file stdin-for-648 === Start of file test648.txt This is an attached file. It may contain any type of data and will be encoded in base64 for transfer. === End of file test648.txt === Start of file trace648 01:36:49.006268 * Trying 127.0.0.1:35359... 01:36:49.971212 * Established connection to 127.0.0.1 (127.0.0.1 port 35359) from 127.0.0.1 port 45980 01:36:50.297313 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:36:50.669487 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:36:50.695714 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:36:50.704469 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:36:50.710000 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:36:50.821566 => Send header, 10 bytes (0xa) 0000: EHLO 648 01:36:50.909466 <= Recv header, 42 bytes (0x2a) 0000: 250 ESMTP pingpong test server Hello 648 01:36:51.363636 => Send header, 32 bytes (0x20) 0000: MAIL FROM: 01:36:51.390394 <= Recv header, 15 bytes (0xf) 0000: 250 Sender OK 01:36:51.423772 => Send header, 33 bytes (0x21) 0000: RCPT TO: 01:36:51.501331 <= Recv header, 18 bytes (0x12) 0000: 250 Recipient OK 01:36:51.516450 => Send header, 6 bytes (0x6) 0000: DATA 01:36:51.583827 <= Recv header, 22 bytes (0x16) 0000: 354 Show me the mail 01:36:52.204855 => Send data, 737 bytes (0x2e1) 0000: Content-Type: multipart/mixed; boundary=------------------------ 0040: zZxS89PTly2s8Ejz559zLd 0058: Mime-Version: 1.0 006b: From: different 007c: To: another 0089: 008b: --------------------------zZxS89PTly2s8Ejz559zLd 00bd: Content-Transfer-Encoding: quoted-printable 00ea: Content-disposition: "inline" 0109: 010b: This is the email inline text with a very long line containing t 014b: he special = 0159: character =3D and that should be split by encoder. 018d: --------------------------zZxS89PTly2s8Ejz559zLd 01bf: Content-Disposition: attachment; filename="test648.txt" 01f8: Content-Transfer-Encoding: base64 021b: 021d: VGhpcyBpcyBhbiBhdHRhY2hlZCBmaWxlLgoKSXQgbWF5IGNvbnRhaW4gYW55IHR5 025d: cGUgb2YgZGF0 026b: YSBhbmQgd2lsbCBiZSBlbmNvZGVkIGluIGJhc2U2NCBmb3IgdHJhbnNmZXIuCg== 02ad: --------------------------zZxS89PTly2s8Ejz559zLd-- 01:36:52.442103 => Send data, 3 bytes (0x3) 0000: . 01:36:52.468388 * upload completely sent off: 740 bytes 01:36:52.582972 <= Recv header, 24 bytes (0x18) 0000: 250 OK, data received 01:36:52.844357 * Connection #0 to host 127.0.0.1:35359 left intact === End of file trace648 === Start of file upload.648 Content-Type: multipart/mixed; boundary=------------------------zZxS89PTly2s8Ejz559zLd Mime-Version: 1.0 From: different To: another --------------------------zZxS89PTly2s8Ejz559zLd Content-Transfer-Encoding: quoted-printable Content-disposition: "inline" This is the email inline text with a very long line containing the special = character =3D and that should be split by encoder. --------------------------zZxS89PTly2s8Ejz559zLd Content-Disposition: attachment; filename="test648.txt" Content-Transfer-Encoding: base64 VGhpcyBpcyBhbiBhdHRhY2hlZCBmaWxlLgoKSXQgbWF5IGNvbnRhaW4gYW55IHR5cGUgb2YgZGF0 YSBhbmQgd2lsbCBiZSBlbmNvZGVkIGluIGJhc2U2NCBmb3IgdHJhbnNmZXIuCg== --------------------------zZxS89PTly2s8Ejz559zLd-- . === End of file upload.648 === Start of file valgrind648 ==274830== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind648 test 0650...[HTTP formpost using form API - with redirect and re-POST] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind650 ./libtest/libtests lib650 http://127.0.0.1:46263/650 log/5/test650.filedata log/5/stdout650 2> log/5/stderr650 valgrind ERROR ==275126== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 650 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind650 ./libtest/libtests lib650 http://127.0.0.1:46263/650 log/5/test650.filedata log/5/stdout650 2> log/5/stderr650 === End of file commands.log === Start of file http_server.log 01:35:56.828726 ====> Client connect 01:35:56.828882 accept_connection 3 returned 4 01:35:56.828957 accept_connection 3 returned 0 01:35:56.832611 Read 93 bytes 01:35:56.832687 Process 93 bytes request 01:35:56.832770 Got request: GET /verifiedserver HTTP/1.1 01:35:56.832831 Are-we-friendly question received 01:35:56.832930 Wrote request (93 bytes) input to log/5/server.input 01:35:56.833009 Identifying ourselves as friends 01:35:56.833179 Response sent (57 bytes) and written to log/5/server.response 01:35:56.833237 special request received, no persistency 01:35:56.833288 ====> Client disconnect 0 01:36:49.523286 ====> Client connect 01:36:49.523457 accept_connection 3 returned 4 01:36:49.523538 accept_connection 3 returned 0 01:36:50.990990 Read 200 bytes 01:36:50.991188 Process 200 bytes request 01:36:50.991288 Got request: POST /650 HTTP/1.1 01:36:50.991363 Serve test number 650 part 0 01:36:50.991646 - request found to be complete (650) 01:36:52.538266 Read 908 bytes 01:36:52.538497 Process 1108 bytes request [CONTINUED] 01:36:52.538569 - request found to be complete (650) 01:36:52.617669 Read 177 bytes 01:36:52.617873 Process 1285 bytes request [CONTINUED] 01:36:52.617951 - request found to be complete (650) 01:36:52.635261 Read 193 bytes 01:36:52.635414 Process 1478 bytes request [CONTINUED] 01:36:52.635485 - request found to be complete (650) 01:36:52.646406 Read 290 bytes 01:36:52.646551 Process 1768 bytes request [CONTINUED] 01:36:52.646622 - request found to be complete (650) 01:36:52.655155 Read 28 bytes 01:36:52.655282 Process 1796 bytes request [CONTINUED] 01:36:52.655352 - request found to be complete (650) 01:36:52.667439 Read 60 bytes 01:36:52.667576 Process 1856 bytes request [CONTINUED] 01:36:52.667648 - request found to be complete (650) 01:36:52.705161 Read 5 bytes 01:36:52.705343 Process 1861 bytes request [CONTINUED] 01:36:52.705410 - request found to be complete (650) 01:36:52.705805 Wrote request (1861 bytes) input to log/5/server.input 01:36:52.705918 Send response test650 section 01:36:52.706237 connection close instruction "swsclose" found in response 01:36:52.706454 Response sent (161 bytes) and written to log/5/server.response 01:36:52.706522 instructed to close connection after server-reply 01:36:52.706582 ====> Client disconnect 0 01:36:54.728305 ====> Client connect 01:36:54.728436 accept_connection 3 returned 4 01:36:54.728525 accept_connection 3 returned 0 01:36:54.816668 Read 204 bytes 01:36:54.816856 Process 204 bytes request 01:36:54.816953 Got request: POST /6500002 HTTP/1.1 01:36:54.817023 Serve test number 650 part 2 01:36:54.817315 - request found to be complete (650) 01:36:55.854203 Read 908 bytes 01:36:55.854410 Process 1112 bytes request [CONTINUED] 01:36:55.854484 - request found to be complete (650) 01:36:55.868480 Read 177 bytes 01:36:55.868590 Process 1289 bytes request [CONTINUED] 01:36:55.868648 - request found to be complete (650) 01:36:55.874053 Read 193 bytes 01:36:55.874139 Process 1482 bytes request [CONTINUED] 01:36:55.874207 - request found to be complete (650) 01:36:55.882557 Read 290 bytes 01:36:55.882645 Process 1772 bytes request [CONTINUED] 01:36:55.882713 - request found to be complete (650) 01:36:55.892600 Read 28 bytes 01:36:55.892695 Process 1800 bytes request [CONTINUED] 01:36:55.892765 - request found to be complete (650) 01:36:55.898087 Read 60 bytes 01:36:55.898177 Process 1860 bytes request [CONTINUED] 01:36:55.898246 - request found to be complete (650) 01:36:55.902211 Read 5 bytes 01:36:55.902309 Process 1865 bytes request [CONTINUED] 01:36:55.902384 - request found to be complete (650) 01:36:55.90271CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind651 ./libtest/libtests lib651 http://127.0.0.1:39863/651 log/2/test651.filedata log/2/stdout651 2> log/2/stderr651 6 Wrote request (1865 bytes) input to log/5/server.input 01:36:55.902823 Send response test650 section 01:36:55.903331 Response sent (151 bytes) and written to log/5/server.response 01:36:55.903404 => persistent connection request ended, awaits new request 01:36:56.101827 Connection closed by client 01:36:56.102026 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 50922 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 650 === End of file server.cmd === Start of file server.input POST /650 HTTP/1.1 Host: 127.0.0.1:46263 Accept: */* Transfer-Encoding: chunked Content-Type: multipart/form-data; boundary=------------------------rMJKvCE5YLc22p3kK6drKy Expect: 100-continue 385 --------------------------rMJKvCE5YLc22p3kK6drKy Content-Disposition: form-data; name="fieldname" Content-Type: text/plain X-customheader-1: Header 1 data X-customheader-2: Header 2 data this is what we post to the silly web server --------------------------rMJKvCE5YLc22p3kK6drKy Content-Disposition: form-data; name="fieldnam" uhis is what we post to the silly web serve --------------------------rMJKvCE5YLc22p3kK6drKy Content-Disposition: form-data; name="multifile" Content-Type: multipart/mixed; boundary=------------------------nj3d58Io2mHzNmcfGH9PAe --------------------------nj3d58Io2mHzNmcfGH9PAe Content-Disposition: attachment; filename="test650.filedata" Content-Type: application/octet-stream This is data from a file. --------------------------nj3d58Io2mHzNmcfGH9PAe Content-Disposition: attachment; filename="test650.filedata" Content-Type: text/whatever ab This is data from a file. --------------------------nj3d58Io2mHzNmcfGH9PAe Content-Disposition: attachment; filename="test650.filedata" Content-Type: text/whatever bb This is data from a file. --------------------------nj3d58Io2mHzNmcfGH9PAe-- --------------------------rMJKvCE5YLc22p3kK6drKy Content-Disposition: form-data; name="filecontents" 11b This is data from a file. --------------------------rMJKvCE5YLc22p3kK6drKy Content-Disposition: form-data; name="formlength" 1433 --------------------------rMJKvCE5YLc22p3kK6drKy Content-Disposition: form-data; name="standardinput" Content-Type: application/octet-stream 16 Some data from stdin 36 --------------------------rMJKvCE5YLc22p3kK6drKy-- 0 POST /6500002 HTTP/1.1 Host: 127.0.0.1:46263 Accept: */* Transfer-Encoding: chunked Content-Type: multipart/form-data; boundary=------------------------rMJKvCE5YLc22p3kK6drKy Expect: 100-continue 385 --------------------------rMJKvCE5YLc22p3kK6drKy Content-Disposition: form-data; name="fieldname" Content-Type: text/plain X-customheader-1: Header 1 data X-customheader-2: Header 2 data this is what we post to the silly web server --------------------------rMJKvCE5YLc22p3kK6drKy Content-Disposition: form-data; name="fieldnam" uhis is what we post to the silly web serve --------------------------rMJKvCE5YLc22p3kK6drKy Content-Disposition: form-data; name="multifile" Content-Type: multipart/mixed; boundary=------------------------nj3d58Io2mHzNmcfGH9PAe --------------------------nj3d58Io2mHzNmcfGH9PAe Content-Disposition: attachment; filename="test650.filedata" Content-Type: application/octet-stream This is data from a file. --------------------------nj3d58Io2mHzNmcfGH9PAe Content-Disposition: attachment; filename="test650.filedata" Content-Type: text/whatever ab This is data from a file. --------------------------nj3d58Io2mHzNmcfGH9PAe Content-Disposition: attachment; filename="test650.filedata" Content-Type: text/whatever bb This is data from a file. --------------------------nj3d58Io2mHzNmcfGH9PAe-- --------------------------rMJKvCE5YLc22p3kK6drKy Content-Disposition: form-data; name="filecontents" 11b This is data from a file. --------------------------rMJKvCE5YLc22p3kK6drKy Content-Disposition: form-data; name="formlength" 1433 --------------------------rMJKvCE5YLc22p3kK6drKy Content-Disposition: form-data; name="standardinput" Content-Type: application/octet-stream 16 Some data from stdin 36 --------------------------rMJKvCE5YLc22p3kK6drKy-- 0 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 301 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html Location: /6500002 hello HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 6 Connection: close Content-Type: text/html -foo- === End of file server.response === Start of file stderr650 URL: http://127.0.0.1:46263/650 * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 42054 * using HTTP/1.x > POST /650 HTTP/1.1 Host: 127.0.0.1:46263 Accept: */* Transfer-Encoding: chunked Content-Type: multipart/form-data; boundary=------------------------rMJKvCE5YLc22p3kK6drKy Expect: 100-continue * Done waiting for 100-continue * upload completely sent off: 1661 bytes < HTTP/1.1 301 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html * Need to rewind upload for next request < Location: /6500002 < * shutting down connection #0 * Issue another request to this URL: 'http://127.0.0.1:46263/6500002' * Hostname 127.0.0.1 was found in DNS cache * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 36178 * using HTTP/1.x > POST /6500002 HTTP/1.1 Host: 127.0.0.1:46263 Accept: */* Transfer-Encoding: chunked Content-Type: multipart/form-data; boundary=------------------------rMJKvCE5YLc22p3kK6drKy Expect: 100-continue * Done waiting for 100-continue * upload completely sent off: 1661 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Content-Length: 6 < Connection: close < Content-Type: text/html < * shutting down connection #1 Test ended with result 0 === End of file stderr650 === Start of file stdin-for-650 Some data from stdin === End of file stdin-for-650 === Start of file stdout650 HTTP/1.1 301 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html Location: /6500002 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 6 Connection: close Content-Type: text/html -foo- === End of file stdout650 === Start of file test650.filedata This is data from a file. === End of file test650.filedata === Start of file valgrind650 ==275126== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind650 test 0651...[curl_formadd with huge COPYCONTENTS] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind651 ./libtest/libtests lib651 http://127.0.0.1:39863/651 log/2/test651.filedata log/2/stdout651 2> log/2/stderr651 valgrind ERROR ==275317== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 651 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind651 ./libtest/libtests lib651 http://127.0.0.1:39863/651 log/2/test651.filedata log/2/stdout651 2> log/2/stderr651 === End of file commands.log === Start of file http_server.log 01:36:12.376579 ====> Client connect 01:36:12.376732 accept_connection 3 returned 4 01:36:12.376806 accept_connection 3 returned 0 01:36:12.382988 Read 93 bytes 01:36:12.383069 Process 93 bytes request 01:36:12.383156 Got request: GET /verifiedserver HTTP/1.1 01:36:12.383216 Are-we-friendly question received 01:36:12.383321 Wrote request (93 bytes) input to log/2/server.input 01:36:12.383407 Identifying ourselves as friends 01:36:12.383580 Response sent (57 bytes) and written to log/2/server.response 01:36:12.383640 special request received, no persistency 01:36:12.383693 ====> Client disconnect 0 01:36:57.741499 ====> Client connect 01:36:57.741659 accept_connection 3 returned 4 01:36:57.741746 accept_connection 3 returned 0 01:37:05.502623 Read 17324 bytes 01:37:05.502833 Process 17324 bytes request 01:37:05.502947 Got request: POST /651 HTTP/1.1 01:37:05.503022 Serve test number 651 part 0 01:37:05.503373 - request found to be complete (651) 01:37:05.503661 Found Content-Length: 17151 in the request 01:37:05.504101 Wrote request (17324 bytes) input to log/2/server.input 01:37:05.504211 Send response test651 section 01:37:05.504540 connection close instruction "swsclose" found in response 01:37:05.504763 Response sent (141 bytes) and written to log/2/server.response 01:37:05.504832 instructed to close connection after server-reply 01:37:05.504893 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 57892 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 651 === End of file server.cmd === Start of file server.input POST /651 HTTP/1.1 Host: 127.0.0.1:39863 Accept: */* Content-Length: 17151 Content-Type: multipart/form-data; boundary=------------------------nzUUMyF0u5X9Rt59ZPJzH7 --------------------------nzUUMyF0u5X9Rt59ZPJzH7 Content-Disposition: form-data; name="hello" AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind652 ./libtest/libtests lib652 smtp://127.0.0.1:38111/652 > log/6/stdout652 2> log/6/stderr652 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ --------------------------nzUUMyF0u5X9Rt59ZPJzH7-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file server.response === Start of file stderr651 URL: http://127.0.0.1:39863/651 * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 44664 * using HTTP/1.x > POST /651 HTTP/1.1 Host: 127.0.0.1:39863 Accept: */* Content-Length: 17151 Content-Type: multipart/form-data; boundary=------------------------nzUUMyF0u5X9Rt59ZPJzH7 * upload completely sent off: 17151 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * shutting down connection #0 Test ended with result 0 === End of file stderr651 === Start of file stdin-for-651 Some data from stdin === End of file stdin-for-651 === Start of file stdout651 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file stdout651 === Start of file test651.filedata This is data from a file. === End of file test651.filedata === Start of file valgrind651 ==275317== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind651 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 653 in state 4 Runner 2 (id 185908) running test 661 in state 4 Runner 3 (id 185910) running test 659 in state 4 Runner 4 (id 185912) running test 654 in state 4 Runner 5 (id 185914) running test 660 in state 4 Runner 6 (id 185916) running test 652 in state 4 Runner 7 (id 185918) running test 655 in state 4 Runner 8 (id 185920) running test 658 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 653 in state 4 Runner 2 (id 185908) running test 661 in state 4 Runner 3 (id 185910) running test 659 in state 4 Runner 4 (id 185912) running test 654 in state 4 Runner 5 (id 185914) running test 660 in state 4 Runner 6 (id 185916) running test 652 in state 4 Runner 7 (id 185918) running test 655 in state 4 Runner 8 (id 185920) running test 658 in state 4 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/6/server/smtp_server.pid" --logfile "log/6/smtp_server.log" --logdir "log/6" --portfile "log/6/server/smtp_server.port" --srcdir "/build/curl/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 38111 (log/6/server/smtp_server.port) RUN: SMTP server is PID 275480 port 38111 * pid smtp => 275480 275480 test 0652...[SMTP with encoded huge mime data contents] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind652 ./libtest/libtests lib652 smtp://127.0.0.1:38111/652 > log/6/stdout652 2> log/6/stderr652 valgrind ERROR ==275493== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 652 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind652 ./libtest/libtests lib652 smtp://127.0.0.1:38111/652 > log/6/stdout652 2> log/6/stderr652 === End of file commands.log === Start of file server.cmd Testnum 652 === End of file server.cmd === Start of file server.input EHLO 652 MAIL FROM: RCPT TO: DATA QUIT === End of file server.input === Start of file smtp_server.log 01:36:38.547626 SMTP server listens on port IPv4/38111 01:36:38.551033 logged pid 275480 in log/6/server/smtp_server.pid 01:36:38.551296 Awaiting input 01:37:31.350845 ====> Client connect 01:37:31.351707 FTPD: Getting commands from log/6/server.cmd 01:37:31.352141 FTPD: run test case number: 652 01:37:31.360471 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:37:32.476665 < "EHLO 652" 01:37:32.480672 > "250 ESMTP pingpong test server Hello 652[CR][LF]" 01:37:32.943066 < "MAIL FROM:" 01:37:32.943388 MAIL_smtp got FROM: 01:37:32.944036 > "250 Sender OK[CR][LF]" 01:37:32.987149 < "RCPT TO:" 01:37:32.987471 RCPT_smtp got TO: 01:37:32.988327 > "250 Recipient OK[CR][LF]" 01:37:33.051191 < "DATA" 01:37:33.051654 > "354 Show me the mail[CR][LF]" 01:37:33.051860 Store test number 652 in log/6/upload.652 01:37:33.631694 > Appending 16410 bytes to file 01:37:33.874755 > Appending 7189 bytes to file 01:37:33.875161 Found SMTP EOB marker 01:37:33.875455 received 23599 bytes upload 01:37:33.875731 > "250 OK, data received![CR][LF]" 01:37:34.737542 < "QUIT" 01:37:34.738150 > "221 curl ESMTP server signing off[CR][LF]" 01:37:34.950807 MAIN sockfilt said DISC 01:37:34.951386 ====> Client disconnected 01:37:34.952138 Awaiting input === End of file smtp_server.log === Start of file smtp_sockfilt.log 01:36:38.145196 Running IPv4 version 01:36:38.153061 Listening on port 38111 01:36:38.153550 Wrote pid 275484 to log/6/server/smtp_sockfilt.pid 01:36:38.153807 Wrote port 38111 to log/6/server/smtp_server.port 01:36:38.154582 Received PING (on stdin) 01:37:30.958570 ====> Client connect 01:37:30.971325 Received DATA (on stdin) 01:37:30.971731 > 160 bytes data, server => client 01:37:30.972137 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:37:30.972261 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:37:30.972371 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:37:32.084918 < 10 bytes data, client => server 01:37:32.085129 'EHLO 652\r\n' 01:37:32.088311 Received DATA (on stdin) 01:37:32.088402 > 42 bytes data, server => client 01:37:32.088499 '250 ESMTP pingpong test server Hello 652\r\n' 01:37:32.553012 < 34 bytes data, client => server 01:37:32.553235 'MAIL FROM:\r\n' 01:37:32.555025 Received DATA (on stdin) 01:37:32.555116 > 15 bytes data, server => client 01:37:32.555191 '250 Sender OK\r\n' 01:37:32.597349 < 31 bytes data, client => server 01:37:32.597523 'RCPT TO:\r\n' 01:37:32.599322 Received DATA (on stdin) 01:37:32.599405 > 18 bytes data, server => client 01:37:32.599483 '250 Recipient OK\r\n' 01:37:32.661259 < 6 bytes data, client => server 01:37:32.661424 'DATA\r\n' 01:37:32.662644 Received DATA (on stdin) 01:37:32.662727 > 22 bytes data, server => client 01:37:32.662807 '354 Show me the mail\r\n' 01:37:33.241052 < 16410 bytes data, client => server 01:37:33.241258 'Content-Type: multipart/mixed; boundary=---------------------' 01:37:33.241360 '---GJ9IRUkcnM5vUZ97gPmh3y\r\nMime-Version: 1.0\r\n\r\n-------' 01:37:33.241472 '-------------------GJ9IRUkcnM5vUZ97gPmh3y\r\nContent-Disposit' 01:37:33.241579 'ion: attachment; filename="myfile.jpg"\r\nContent-Type: image' 01:37:33.241678 '/jpeg\r\nContent-Transfer-Encoding: base64\r\n\r\nQUFBQUFBQUF' 01:37:33.241804 'BQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVGRkZG' 01:37:33.241904 'RkZG\r\nRkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpKSkpKS' 01:37:33.242002 'kpKSktLS0tLS0tLS0tMTExM\r\nTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk' 01:37:33.242102 '5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFS\r\nUlJSUlJSUlJSU1N' 01:37:33.242207 'TU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dX' 01:37:33.242308 '\r\nV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQ' 01:37:33.242407 'kJCQkJCQkJCQkNDQ0ND\r\nQ0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRk' 01:37:33.242504 'ZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJ\r\nSUlJSUlJSUlKSkpKSkp' 01:37:33.242602 'KSkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5O\r\n' 01:37:33.242704 'Tk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU' 01:37:33.242802 '1NTU1NTVFRUVFRU\r\nVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1' 01:37:33.242900 'dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpa\r\nWlpaWlpaWkFBQUFBQUFBQUF' 01:37:33.242997 'CQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVF\r\nRkZG' 01:37:33.243103 'RkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKS' 01:37:33.243215 'kpLS0tLS0tL\r\nS0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5OT0' 01:37:33.243317 '9PT09PT09PT1BQUFBQUFBQUFBRUVFR\r\nUVFRUVFRUlJSUlJSUlJSUlNTU1N' 01:37:33.243415 'TU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZX\r\nV1dXV1dX' 01:37:33.243512 'V1dXWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQ' 01:37:33.243608 'kJCQkJC\r\nQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVGRkZGRk' 01:37:33.243704 'ZGRkZGR0dHR0dHR0dHR0hISEhI\r\nSEhISEhJSUlJSUlJSUlJSkpKSkpKSkp' 01:37:33.243800 'KSktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5O\r\nTk5OTk5OTk5P' 01:37:33.243897 'T09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU' 01:37:33.243998 '1NT\r\nU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dXV1' 01:37:33.244101 'dYWFhYWFhYWFhYWVlZWVlZ\r\nWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJ' 01:37:33.244202 'CQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVF\r\nRUVFRUVFRUZGRkZG' 01:37:33.244307 'RkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpKSkpK\r' 01:37:33.244408 '\nS0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09' 01:37:33.244515 'PT09PT09QUFBQUFBQ\r\nUFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NT' 01:37:33.244608 'U1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZW\r\nVlZWVlZWV1dXV1dXV1dXV' 01:37:33.244700 '1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFC\r\nQk' 01:37:33.244793 'JCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZ' 01:37:33.244883 'GRkdHR0dHR0dH\r\nR0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpL' 01:37:33.244975 'S0tLS0tLS0tLTExMTExMTExMTE1NTU1N\r\nTU1NTU1OTk5OTk5OTk5OT09PT' 01:37:33.251748 '09PT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNT\r\nU1NTU1' 01:37:33.251868 'NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFh' 01:37:33.251963 'YWFhYWFhY\r\nWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJC' 01:37:33.252058 'QkJCQkJDQ0NDQ0NDQ0NDRERERERE\r\nREREREVFRUVFRUVFRUVGRkZGRkZGR' 01:37:33.252154 'kZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpK\r\nSkpKSkpKSk' 01:37:33.252263 'tLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09' 01:37:33.252370 'PT09P\r\nUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NT' 01:37:33.252478 'U1RUVFRUVFRUVFRVVVVVVVVV\r\nVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYW' 01:37:33.252581 'FhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFB\r\nQUFBQUFBQkJCQk' 01:37:33.252679 'JCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZGRkZGRkZ' 01:37:33.252776 'H\r\nR0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpKSkpKS0tL' 01:37:33.252872 'S0tLS0tLS0xMTExMTExM\r\nTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT' 01:37:33.252970 '09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJS\r\nUlJSUlJTU1NTU1NTU1' 01:37:33.253068 'NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hY\r\n' 01:37:33.253165 'WFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQ' 01:37:33.253261 'kJCQ0NDQ0NDQ0ND\r\nQ0RERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRk' 01:37:33.253364 'dHR0dHR0dHR0dISEhISEhISEhISUlJSUlJ\r\nSUlJSUpKSkpKSkpKSkpLS0t' 01:37:33.253460 'LS0tLS0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5OT09P\r\nT09P' 01:37:33.253553 'T09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NUV' 01:37:33.253646 'FRUVFRUVFRU\r\nVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhYWF' 01:37:33.253741 'hYWFhYWFlZWVlZWVlZWVlaWlpaWlpa\r\nWlpaQUFBQUFBQUFBQUJCQkJCQkJ' 01:37:33.253839 'CQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVGRkZG\r\nRkZGRkZG' 01:37:33.253934 'R0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSktLS0tLS' 01:37:33.254025 '0tLS0tM\r\nTExMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09PT0' 01:37:33.254120 '9PUFBQUFBQUFBQUFFRUVFRUVFR\r\nUVFSUlJSUlJSUlJSU1NTU1NTU1NTU1R' 01:37:33.254214 'UVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dX\r\nV1dXV1dYWFhY' 01:37:33.254308 'WFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJCQkJCQ' 01:37:33.254403 'kND\r\nQ0NDQ0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZGRkZGRkZHR0' 01:37:33.254508 'dHR0dHR0dHSEhISEhISEhI\r\nSElJSUlJSUlJSUlKSkpKSkpKSkpKS0tLS0t' 01:37:33.254607 'LS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5O\r\nTk5OTk9PT09PT09P' 01:37:33.254704 'T09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NTVFRU\r' 01:37:33.254800 '\nVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hYWFhYWFh' 01:37:33.254895 'YWFhZWVlZWVlZWVlZ\r\nWlpaWlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJC' 01:37:33.254992 'Q0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVF\r\nRUVFRkZGRkZGRkZGRkdHR' 01:37:33.258458 '0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tL\r\nS0' 01:37:33.258561 'tLS0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5OT09PT09PT09PT1B' 01:37:33.258654 'QUFBQUFBQUFBR\r\nUVFRUVFRUVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NUVFRU' 01:37:33.258749 'VFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZW\r\nVlZXV1dXV1dXV1dXWFhYWFhYW' 01:37:33.258855 'FhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJC\r\nQkJCQk' 01:37:33.258958 'JDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0d' 01:37:33.259053 'HR0dHR0hI\r\nSEhISEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSktLS0tLS0tL' 01:37:33.259149 'S0tMTExMTExMTExMTU1NTU1NTU1N\r\nTU5OTk5OTk5OTk5PT09PT09PT09PU' 01:37:33.259243 'FBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NT\r\nU1NTU1RUVF' 01:37:33.259340 'RUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYWFhYWFh' 01:37:33.259439 'YWVlZ\r\nWVlZWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJCQkJCQkND' 01:37:33.259545 'Q0NDQ0NDQ0NERERERERERERE\r\nRUVFRUVFRUVFRUZGRkZGRkZGRkZHR0dHR' 01:37:33.259639 '0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpK\r\nSkpKS0tLS0tLS0' 01:37:33.259733 'tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT09QUFB' 01:37:33.259826 'Q\r\nUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRU' 01:37:33.259920 'VFRUVFVVVVVVVVVVVVVW\r\nVlZWVlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhYW' 01:37:33.260012 'FhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFB\r\nQUFCQkJCQkJCQkJCQ0' 01:37:33.260105 'NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dH\r\n' 01:37:33.260208 'R0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tLT' 01:37:33.260314 'ExMTExMTExMTE1N\r\nTU1NTU1NTU1OTk5OTk5OTk5OT09PT09PT09PT1BQUF' 01:37:33.260413 'BQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJS\r\nUlNTU1NTU1NTU1NUVFRUVFR' 01:37:33.260510 'UVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhYWFhY\r\nWFhY' 01:37:33.260606 'WFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ' 01:37:33.260704 '0NDQ0NDRERE\r\nREREREREREVFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dHR0' 01:37:33.260801 'dHR0hISEhISEhISEhJSUlJSUlJSUlJ\r\nSkpKSkpKSkpKSktLS0tLS0tLS0t' 01:37:33.260897 'MTExMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09P\r\nT09PUFBQ' 01:37:33.260994 'UFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRUV' 01:37:33.261096 'FRVVVVV\r\nVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYWFhYWFhYWV' 01:37:33.261191 'lZWVlZWVlZWVpaWlpaWlpaWlpB\r\nQUFBQUFBQUFBQkJCQkJCQkJCQkNDQ0N' 01:37:33.261284 'DQ0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZGRkZG\r\nRkZHR0dHR0dH' 01:37:33.261378 'R0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tLS0tLS0xMT' 01:37:33.261472 'ExM\r\nTExMTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT09QUFBQUF' 01:37:33.261570 'BQUFBQUVFRUVFRUVFRUVJS\r\nUlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRUVFR' 01:37:33.261666 'UVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dX\r\nV1hYWFhYWFhYWFhZ' 01:37:33.265154 'WVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0ND\r' 01:37:33.265259 '\nQ0NDQ0RERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0d' 01:37:33.265353 'ISEhISEhISEhISUlJ\r\nSUlJSUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tLTExM' 01:37:33.265447 'TExMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5O\r\nT09PT09PT09PT1BQUFBQU' 01:37:33.265540 'FBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NUVFRUVFRU\r\nVF' 01:37:33.265632 'RUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhYWFhYWFhYWFlZWVl' 01:37:33.265724 'ZWVlZWVlaWlpa\r\nWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0ND' 01:37:33.265818 'Q0NDREREREREREREREVFRUVFRUVFRUVG\r\nRkZGRkZGRkZGR0dHR0dHR0dHR' 01:37:33.265912 '0hISEhISEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSktLS0tLS0tL\r\nS0tMTE' 01:37:33.266006 'xMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09PT09PUFBQUFBQUFB' 01:37:33.266098 'QUFFRUVFR\r\nUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRV' 01:37:33.266193 'VVVVVVVVVVVVVlZWVlZWVlZWVldX\r\nV1dXV1dXV1dYWFhYWFhYWFhYWVlZW' 01:37:33.266297 'VlZWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJCQkJC\r\nQkNDQ0NDQ0' 01:37:33.266405 'NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEh' 01:37:33.266513 'ISEhI\r\nSEhISElJSUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tLS0tLS0xMTExM' 01:37:33.266620 'TExMTExNTU1NTU1NTU1NTk5O\r\nTk5OTk5OTk9PT09PT09PT09QUFBQUFBQU' 01:37:33.266725 'FBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NT\r\nVFRUVFRUVFRUVF' 01:37:33.266831 'VVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVl' 01:37:33.266939 'Z\r\nWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0ND' 01:37:33.267045 'Q0RERERERERERERFRUVF\r\nRUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dIS' 01:37:33.267151 'EhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpL\r\nS0tLS0tLS0tLTExMTE' 01:37:33.267257 'xMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5OT09PT09PT09PT1BQUFBQUFBQ\r\n' 01:37:33.267362 'UFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVV' 01:37:33.267460 'VVVVVVVVVZWVlZW\r\nVlZWVlZXV1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZWV' 01:37:33.267554 'lZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJC\r\nQkJCQkJCQkJDQ0NDQ0NDQ0N' 01:37:33.267647 'DREREREREREREREVFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dHR0dH\r\nR0hI' 01:37:33.267741 'SEhISEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSktLS0tLS0tLS0tMTExMTExMT' 01:37:33.267833 'ExMTU1NTU1N\r\nTU1NTU5OTk5OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQUF' 01:37:33.267936 'FRUVFRUVFRUVFSUlJSUlJSUlJSU1NT\r\nU1NTU1NTU1RUVFRUVFRUVFRVVVV' 01:37:33.268030 'VVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYWFhYWFhY\r\nWVlZWVlZ' 01:37:33.268124 'WVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NER' 01:37:33.268220 'ERERERE\r\nRERERUVFRUVFRUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISE' 01:37:33.268318 'hISEhISElJSUlJSUlJSUlKSkpK\r\nSkpKSkpKS0tLS0tLS0tLS0xMTExMTEx' 01:37:33.271779 'MTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT09Q\r\nUFBQUFBQUFBQ' 01:37:33.271897 'UVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVV' 01:37:33.271993 'VVV\r\nVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWV' 01:37:33.272084 'lZWlpaWlpaWlpaWkFBQUFB\r\nQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0R' 01:37:33.272177 'ERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdH\r\nR0dHR0dHR0dISEhI' 01:37:33.272270 'SEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tLTExMTExMTExM\r' 01:37:33.272367 '\nTE1NTU1NTU1NTU1OTk5OTk5OTk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVF' 01:37:33.272464 'RUVFRUVFRUlJSUlJS\r\nUlJSUlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVV' 01:37:33.272561 'VVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhY\r\nWFhYWFhYWFlZWVlZWVlZW' 01:37:33.272659 'VlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0ND\r\nRE' 01:37:33.272757 'REREREREREREVFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEh' 01:37:33.272856 'ISEhJSUlJSUlJ\r\nSUlJSkpKSkpKSkpKSktLS0tLS0tLS0tMTExMTExMTExM' 01:37:33.272950 'TU1NTU1NTU1NTU5OTk5OTk5OTk5PT09P\r\nT09PT09PUFBQUFBQUFBQUFFRU' 01:37:33.273041 'VFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRV\r\nVVVVVV' 01:37:33.273133 'VVVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVp' 01:37:33.273226 'aWlpaWlpa\r\nWlpBQUFBQUFBQUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERE' 01:37:33.273317 'RERERERERUVFRUVFRUVFRUZGRkZG\r\nRkZGRkZHR0dHR0dHR0dHSEhISEhIS' 01:37:33.273406 'EhISElJSUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tLS0tLS0xM\r\nTExMTExMTE' 01:37:33.273498 'xNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVF' 01:37:33.273590 'RUVFR\r\nUVJSUlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVV' 01:37:33.273680 'VVVWVlZWVlZWVlZWV1dXV1dX\r\nV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZW' 01:37:33.273773 'lpaWlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0ND\r\nQ0NDQ0NDQ0RERE' 01:37:33.273865 'RERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEh' 01:37:33.273956 'I\r\nSUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tLTExMTExMTExMTE1N' 01:37:33.274051 'TU1NTU1NTU1OTk5OTk5O\r\nTk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFRU' 01:37:33.274146 'VFRUVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NUVFRU\r\nVFRUVFRUVVVVVVVVVV' 01:37:33.274238 'VVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZWVla\r\n' 01:37:33.274329 'WlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDRERERERER' 01:37:33.274421 'EREREVFRUVFRUVF\r\nRUVGRkZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhISE' 01:37:33.274512 'hJSUlJSUlJSUlJSkpKSkpKSkpKSktLS0tL\r\nS0tLS0tMTExMTExMTExMTU1' 01:37:33.274603 'NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQUFFR\r\nUVFR' 01:37:33.274695 'UVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVV' 01:37:33.274785 'lZWVlZWVlZW\r\nVldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWl' 01:37:33.274875 'paWlpaWlpBQUFBQUFBQUFBQkJCQkJC\r\nQkJCQkNDQ0NDQ0NDQ0NERERERER' 01:37:33.274965 'ERERERUVFRUVFRUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhI\r\nSEhISEhI' 01:37:33.278400 'SElJSUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1NT' 01:37:33.278511 'U1NTU1N\r\nTk5OTk5OTk5OTk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVFRUV' 01:37:33.278609 'FRUVJSUlJSUlJSUlJTU1NTU1NT\r\nU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVV' 01:37:33.278713 'WVlZWVlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhYWFhZWVlZ\r\nWVlZWVlZWlpa' 01:37:33.278823 'WlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERER' 01:37:33.278930 'ERF\r\nRUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEhISU' 01:37:33.279028 'lJSUlJSUlJSUpKSkpKSkpK\r\nSkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1' 01:37:33.279123 'NTU1NTU1OTk5OTk5OTk5OT09PT09PT09PT1BQUFBQ\r\nUFBQUFBRUVFRUVFR' 01:37:33.279219 'UVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZW\r' 01:37:33.279314 '\nVlZWVlZWVlZXV1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlp' 01:37:33.279412 'aWlpaQUFBQUFBQUFB\r\nQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDRERERERERERE' 01:37:33.279509 'REVFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dH\r\nR0dHR0hISEhISEhISEhJS' 01:37:33.279615 'UlJSUlJSUlJSkpKSkpKSkpKSktLS0tLS0tLS0tMTExMTExMTExMTU1N\r\nTU' 01:37:33.279712 '1NTU1NTU5OTk5OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVF' 01:37:33.279807 'SUlJSUlJSUlJS\r\nU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZW' 01:37:33.279904 'VlZWVlZWVldXV1dXV1dXV1dYWFhYWFhY\r\nWFhYWVlZWVlZWVlZWVpaWlpaW' 01:37:33.280014 'lpaWlpBQUFBQUFBQUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERE\r\nRERERE' 01:37:33.280114 'RERUVFRUVFRUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJSUl' 01:37:33.280209 'JSUlJSUlK\r\nSkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1N' 01:37:33.280306 'TU1NTk5OTk5OTk5OTk9PT09PT09P\r\nT09QUFBQUFBQUFBQUVFRUVFRUVFRU' 01:37:33.280401 'VJSUlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVV\r\nVVVVVVVWVl' 01:37:33.280501 'ZWVlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlp' 01:37:33.280601 'aWkFB\r\nQUFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERF' 01:37:33.280696 'RUVFRUVFRUVFRkZGRkZGRkZG\r\nRkdHR0dHR0dHR0dISEhISEhISEhISUlJS' 01:37:33.280790 'UlJSUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tLTExMTExM\r\nTExMTE1NTU1NTU' 01:37:33.280885 '1NTU1OTk5OTk5OTk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJ' 01:37:33.280979 'S\r\nUlJSUlJSUlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZW' 01:37:33.281075 'VlZWVlZXV1dXV1dXV1dX\r\nWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaW' 01:37:33.281170 'lpaQUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0ND\r\nQ0NDRERERERERERERE' 01:37:33.281263 'VFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJ\r\n' 01:37:33.281358 'SUlJSUlJSkpKSkpKSkpKSktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NT' 01:37:33.281465 'U5OTk5OTk5OTk5P\r\nT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUl' 01:37:33.281568 'JSUlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRU\r\nVFRVVVVVVVVVVVVVVlZWVlZ' 01:37:33.281666 'WVlZWVldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpa\r\nWlpa' 01:37:33.285117 'WlpBQUFBQUFBQUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVFR' 01:37:33.285217 'UVFRUVFRUZG\r\nRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJSUlJSU' 01:37:33.285313 'lJSUlKSkpKSkpKSkpKS0tLS0tLS0tL\r\nS0xMTExMTExMTExNTU1NTU1NTU1' 01:37:33.285408 'NTk5OTk5OTk5OTk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVFR\r\nUVFRUVJS' 01:37:33.285506 'UlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWV' 01:37:33.285600 'lZWV1dX\r\nV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWk' 01:37:33.285692 'FBQUFBQUFBQUFCQkJCQkJCQkJC\r\nQ0NDQ0NDQ0NDQ0RERERERERERERFRUV' 01:37:33.285785 'FRUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dISEhISEhI\r\nSEhISUlJSUlJ' 01:37:33.285879 'SUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1NTU1NTU1OT' 01:37:33.285970 'k5O\r\nTk5OTk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUl' 01:37:33.286062 'JSUlJSUlNTU1NTU1NTU1NU\r\nVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZ' 01:37:33.286154 'WVlZXV1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZ\r\nWVlaWlpaWlpaWlpa' 01:37:33.286250 'QUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVF\r' 01:37:33.286352 '\nRUVFRUVGRkZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUl' 01:37:33.286462 'JSkpKSkpKSkpKSktL\r\nS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5O' 01:37:33.286569 'Tk5OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQ\r\nUFFRUVFRUVFRUVFSUlJSU' 01:37:33.286676 'lJSUlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZW\r\nVl' 01:37:33.286785 'ZWVldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUF' 01:37:33.286893 'BQUFBQUFBQkJC\r\nQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVFRUVF' 01:37:33.287001 'RUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dH\r\nSEhISEhISEhISElJSUlJSUlJS' 01:37:33.287109 'UlKSkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1N\r\nTU1NTk' 01:37:33.287220 '5OTk5OTk5OTk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJ' 01:37:33.287328 'SUlJTU1NT\r\nU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZW' 01:37:33.287436 'V1dXV1dXV1dXV1hYWFhYWFhYWFhZ\r\nWVlZWVlZWVlZWlpaWlpaWlpaWkFBQ' 01:37:33.287537 'UFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERE\r\nRERFRUVFRU' 01:37:33.287636 'VFRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJSUp' 01:37:33.287731 'KSkpK\r\nSkpKSkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5O' 01:37:33.287828 'Tk5OTk5OT09PT09PT09PT1BQ\r\nUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSU' 01:37:33.287926 'lJSUlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVV\r\nVVZWVlZWVlZWVl' 01:37:33.288032 'ZXV1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUF' 01:37:33.288128 'B\r\nQUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVF' 01:37:33.288233 'RUVGRkZGRkZGRkZGR0dH\r\nR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJS' 01:37:33.288328 'kpKSkpKSkpKSktLS0tLS0tLS0tMTExMTExMTExM\r\nTU1NTU1NTU1NTU5OTk' 01:37:33.291777 '5OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJS\r\n' 01:37:33.291886 'UlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV' 01:37:33.291987 '1dXV1dXV1dYWFhY\r\nWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFBQU' 01:37:33.292084 'FBQUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NE\r\nRERERERERERERUVFRUVFRUV' 01:37:33.292179 'FRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJ\r\nSUlK' 01:37:33.292274 'SkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OT' 01:37:33.292369 'k5OTk9PT09P\r\nT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJSUl' 01:37:33.292462 'JTU1NTU1NTU1NTVFRUVFRUVFRUVFVV\r\nVVVVVVVVVVVWVlZWVlZWVlZWV1d' 01:37:33.292566 'XV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpa\r\nWkFBQUFB' 01:37:33.292669 'QUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVFR' 01:37:33.292765 'kZGRkZG\r\nRkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpKSk' 01:37:33.292861 'pKSkpKSkpLS0tLS0tLS0tLTExM\r\nTExMTExMTE1NTU1NTU1NTU1OTk5OTk5' 01:37:33.292956 'OTk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFR\r\nUlJSUlJSUlJS' 01:37:33.293055 'UlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV' 01:37:33.293152 '1dX\r\nV1dXWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQU' 01:37:33.293246 'FBQUJCQkJCQkJCQkJDQ0ND\r\nQ0NDQ0NDREREREREREREREVFRUVFRUVFRUV' 01:37:33.293340 'GRkZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhISEhJ\r\nSUlJSUlJSUlJSkpK' 01:37:33.293437 'SkpKSkpKSktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5O\r' 01:37:33.293530 '\nTk5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1N' 01:37:33.293630 'TU1NTU1NTU1RUVFRU\r\nVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dX' 01:37:33.293735 'V1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpa\r\nWlpaWlpaWlpBQUFBQUFBQ' 01:37:33.293832 'UFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVFRUVFRUVF\r\nRU' 01:37:33.293928 'ZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkp' 01:37:33.294021 'KSkpKS0tLS0tL\r\nS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5O' 01:37:33.294114 'Tk9PT09PT09PT09QUFBQUFBQUFBQUVFR\r\nUVFRUVFRUVJSUlJSUlJSUlJTU' 01:37:33.294211 '1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZW\r\nV1dXV1' 01:37:33.294310 'dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUF' 01:37:33.294407 'CQkJCQkJC\r\nQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVFRkZG' 01:37:33.294500 'RkZGRkZGRkdHR0dHR0dHR0dISEhI\r\nSEhISEhISUlJSUlJSUlJSUpKSkpKS' 01:37:33.294593 'kpKSkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1NTU1NTU1O\r\nTk5OTk5OTk' 01:37:33.294686 '5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNTU1N' 01:37:33.294778 'TU1NT\r\nU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dX' 01:37:33.294870 'V1dXWFhYWFhYWFhYWFlZWVlZ\r\nWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQ' 01:37:33.294965 'UJCQkJCQkJCQkJDQ0NDQ0NDQ0NDREREREREREREREVF\r\nRUVFRUVFRUVGRk' 01:37:33.298413 'ZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJ' 01:37:33.483094 < 7189 bytes data, client => server 01:37:33.483341 'SkpKSkpKSkpK\r\nSktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5OT' 01:37:33.483455 'k5OTk5OTk5PT09PT09PT09PUFBQUFBQ\r\nUFBQUFFRUVFRUVFRUVFSUlJSUl' 01:37:33.483559 'JSUlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZW\r\nVlZWVlZ' 01:37:33.483658 'WVldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFB' 01:37:33.483754 'QUFBQUFB\r\nQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVFRUVFR' 01:37:33.483850 'UVFRUZGRkZGRkZGRkZHR0dHR0dH\r\nR0dHSEhISEhISEhISElJSUlJSUlJSU' 01:37:33.483950 'lKSkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1N\r\nTU1NTU1NTk5' 01:37:33.484047 'OTk5OTk5OTk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJS' 01:37:33.484144 'UlJT\r\nU1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV' 01:37:33.484245 '1dXV1dXV1dXV1hYWFhYWFhY\r\nWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQU' 01:37:33.484345 'FBQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERE\r\nRERERERFRUVFRUV' 01:37:33.484459 'FRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpK' 01:37:33.484556 '\r\nSkpKSkpKSkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5OT' 01:37:33.484651 'k5OTk5OT09PT09PT09P\r\nT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUl' 01:37:33.484747 'JSUlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVV\r\nVVVVVVZWVlZWVlZWVlZ' 01:37:33.484847 'XV1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFB\r\n' 01:37:33.484946 'QUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFR' 01:37:33.485049 'UVGRkZGRkZGRkZG\r\nR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSk' 01:37:33.485150 'pKSkpKSkpKSktLS0tLS0tLS0tMTExMTExM\r\nTExMTU1NTU1NTU1NTU5OTk5' 01:37:33.485244 'OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJS\r\nUlJS' 01:37:33.485340 'UlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV' 01:37:33.485436 '1dXV1dXV1dY\r\nWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFBQU' 01:37:33.485530 'FBQUFBQkJCQkJCQkJCQkNDQ0NDQ0ND\r\nQ0NERERERERERERERUVFRUVFRUV' 01:37:33.485623 'FRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJSUlJ\r\nSUlJSUlK' 01:37:33.485716 'SkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OT' 01:37:33.485812 'k5OTk9P\r\nT09PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJSUl' 01:37:33.485918 'JTU1NTU1NTU1NTVFRUVFRUVFRU\r\nVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1d' 01:37:33.486021 'XV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpa\r\nWlpaWkFBQUFB' 01:37:33.486120 'QUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVFR' 01:37:33.486217 'kZG\r\nRkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpKSk' 01:37:33.486314 'pKSkpKSkpLS0tLS0tLS0tL\r\nTExMTExMTExMTE1NTU1NTU1NTU1OTk5OTk5' 01:37:33.486413 'OTk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFRUVFR\r\nUVFRUlJSUlJSUlJS' 01:37:33.486509 'UlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dX\r' 01:37:33.486604 '\nV1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUF' 01:37:33.486699 'BQUJCQkJCQkJCQkJD\r\nQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVG' 01:37:33.486791 'RkZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhI\r\nSEhJSUlJSUlJSUlJSkpKS' 01:37:33.486892 'kpKSkpKSktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5OTk5O\r\nTk' 01:37:33.486997 '5OTk5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1N' 01:37:33.487094 'TU1NTU1NTU1RU\r\nVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dX' 01:37:33.487189 'V1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZ\r\nWVpaWlpaWlpaWlpBQUFBQUFBQ' 01:37:33.487283 'UFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVFRUVF\r\nRUVFRU' 01:37:33.487378 'ZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkp' 01:37:33.487475 'KSkpKS0tL\r\nS0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5O' 01:37:33.487574 'Tk9PT09PT09PT09QUFBQUFBQUFBQ\r\nUVFRUVFRUVFRUVJSUlJSUlJSUlJTU' 01:37:33.487673 '1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZW\r\nVlZWV1dXV1' 01:37:33.487768 'dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUF' 01:37:33.487861 'CQkJC\r\nQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVFRkZG' 01:37:33.487953 'RkZGRkZGRkdHR0dHR0dHR0dI\r\nSEhISEhISEhISUlJSUlJSUlJSUpKSkpKS' 01:37:33.488046 'kpKSkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1NTU1N\r\nTU1OTk5OTk5OTk' 01:37:33.488138 '5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNTU1N' 01:37:33.488232 'T\r\nU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dX' 01:37:33.488326 'V1dXWFhYWFhYWFhYWFlZ\r\nWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQ' 01:37:33.491782 'UJCQkJCQkJCQkJDQ0NDQ0NDQ0NDRERERERERERE\r\nREVFRUVFRUVFRUVGRk' 01:37:33.491887 'ZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpKSkpK\r\n' 01:37:33.491985 'SkpKSktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT' 01:37:33.492081 '09PT09PT09PUFBQ\r\nUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1' 01:37:33.492187 'NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVV\r\nVlZWVlZWVlZWVldXV1dXV1d' 01:37:33.492288 'XV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFBQUFB\r\nQUFB' 01:37:33.492384 'QkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZGR' 01:37:33.492480 'kZGRkZHR0dH\r\nR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpKSk' 01:37:33.492575 'pKS0tLS0tLS0tLS0xMTExMTExMTExN\r\nTU1NTU1NTU1NTk5OTk5OTk5OTk9' 01:37:33.492669 'PT09PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJS\r\nUlJTU1NT' 01:37:33.492766 'U1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV' 01:37:33.492875 '1hYWFhY\r\nWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFCQk' 01:37:33.492970 'JCQkJCQkJCQ0NDQ0NDQ0NDQ0RE\r\nRERERERERERFRUVFRUVFRUVFRkZGRkZ' 01:37:33.493064 'GRkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJ\r\nSUpKSkpKSkpK' 01:37:33.493158 'SkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5OT09PT' 01:37:33.493251 '09P\r\nT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNTU1NTU1' 01:37:33.493346 'NTU1NUVFRUVFRUVFRUVVVV\r\nVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dXV1d' 01:37:33.493440 'XWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpa\r\nQUFBQUFBQUFBQUJC' 01:37:33.493533 'QkJCQkJCQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVGRkZGRkZG\r' 01:37:33.493626 '\nRkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSkt' 01:37:33.493729 'LS0tLS0tLS0tMTExM\r\nTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09P' 01:37:33.493838 'T09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFS\r\nUlJSUlJSUlJSU1NTU1NTU' 01:37:33.493935 '1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dX\r\nV1' 01:37:33.494029 'dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJ' 01:37:33.494125 'CQkJCQkNDQ0ND\r\nQ0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZGRkZG' 01:37:33.494217 'RkZHR0dHR0dHR0dHSEhISEhISEhISElJ\r\nSUlJSUlJSUlKSkpKSkpKSkpKS' 01:37:33.494309 '0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5O\r\nTk9PT0' 01:37:33.494402 '9PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1N' 01:37:33.494493 'TVFRUVFRU\r\nVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hY' 01:37:33.494584 'WFhYWFhYWFhZWVlZWVlZWVlZWlpa\r\nWlpaWlpaWkFBQUFBQUFBQUFCQkJCQ' 01:37:33.494675 'kJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVF\r\nRkZGRkZGRk' 01:37:33.494767 'ZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpLS0t' 01:37:33.494858 'LS0tL\r\nS0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5OT09PT09P' 01:37:33.494951 'T09PT1BQUFBQUFBQUFBRUVFR\r\nUVFRUVFRUlJSUlJSUlJSUlNTU1NTU1NTU' 01:37:33.498399 '1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZX\r\nV1dXV1dXV1dXWF' 01:37:33.498516 'hYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJ' 01:37:33.498611 'C\r\nQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVGRkZGRkZGRkZG' 01:37:33.498702 'R0dHR0dHR0dHR0hISEhI\r\nSEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSktLS' 01:37:33.498793 '0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5O\r\nTk5OTk5OTk5PT09PT0' 01:37:33.498884 '9PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NT\r\n' 01:37:33.498976 'U1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYW' 01:37:33.499066 'FhYWFhYWVlZWVlZ\r\nWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJCQk' 01:37:33.499159 'JCQkNDQ0NDQ0NDQ0NERERERERERERERUVF\r\nRUVFRUVFRUZGRkZGRkZGRkZ' 01:37:33.499252 'HR0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpKSkpK\r\nS0tL' 01:37:33.499350 'S0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT' 01:37:33.499460 '09QUFBQUFBQ\r\nUFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NTVF' 01:37:33.499565 'RUVFRUVFRUVFVVVVVVVVVVVVVWVlZW\r\nVlZWVlZWV1dXV1dXV1dXV1hYWFh' 01:37:33.499671 'YWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFC\r\nQkJCQkJC' 01:37:33.499778 'QkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdHR' 01:37:33.499883 '0dHR0dH\r\nR0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tLS0' 01:37:33.499989 'tLS0tLTExMTExMTExMTE1NTU1N\r\nTU1NTU1OTk5OTk5OTk5OT09PT09PT09' 01:37:33.500094 'PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNT\r\nU1NTU1NTU1NU' 01:37:33.500202 'VFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhYWFhYW' 01:37:33.500302 'FhY\r\nWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJCQk' 01:37:33.500398 'JDQ0NDQ0NDQ0NDRERERERE\r\nREREREVFRUVFRUVFRUVGRkZGRkZGRkZGR0d' 01:37:33.500493 'HR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpK\r\nSkpKSkpKSktLS0tL' 01:37:33.500591 'S0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09PT09P\r' 01:37:33.500685 '\nUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NTU1RUVFR' 01:37:33.500778 'UVFRUVFRVVVVVVVVV\r\nVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYWFhY' 01:37:33.500869 'WFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFB\r\nQUFBQUFBQkJCQkJCQkJCQ' 01:37:33.500961 'kNDQ0NDQ0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZGRkZGRkZH\r\nR0' 01:37:33.501055 'dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tLS0t' 01:37:33.501163 'LS0xMTExMTExM\r\nTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT09Q' 01:37:33.501259 'UFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJS\r\nUlJSUlJTU1NTU1NTU1NTVFRUV' 01:37:33.501356 'FRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hY\r\nWFhYWF' 01:37:33.501449 'hYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0N' 01:37:33.501542 'DQ0NDQ0ND\r\nQ0RERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dH' 01:37:33.501632 'R0dHR0dISEhISEhISEhISUlJSUlJ\r\nSUlJSUpKSkpKSkpKSko=\r\n-----' 01:37:33.505066 '---------------------GJ9IRUkcnM5vUZ97gPmh3y--\r\n.\r\n' 01:37:33.505167 Received DATA (on stdin) 01:37:33.505230 > 24 bytes data, server => client 01:37:33.505306 '250 OK, data received!\r\n' 01:37:34.325296 < 6 bytes data, client => server 01:37:34.325507 'QUIT\r\n' 01:37:34.349148 Received DATA (on stdin) 01:37:34.349294 > 35 bytes data, server => client 01:37:34.349382 '221 curl ESMTP server signing off\r\n' 01:37:34.558439 ====> Client disconnect 01:37:34.562415 Received ACKD (on stdin) === End of file smtp_sockfilt.log === Start of file stderr652 URL: smtp://127.0.0.1:38111/652 * Trying 127.0.0.1:38111... * Established connection to 127.0.0.1 (127.0.0.1 port 38111) from 127.0.0.1 port 54188 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > EHLO 652 < 250 ESMTP pingpong test server Hello 652 > MAIL FROM: < 250 Sender OK > RCPT TO: < 250 Recipient OK > DATA < 354 Show me the mail * upload completely sent off: 23599 bytes < 250 OK, data received * Connection #0 to host 127.0.0.1:38111 left intact Test ended with result 0 === End of file stderr652 === Start of file upload.652 Content-Type: multipart/mixed; boundary=------------------------GJ9IRUkcnM5vUZ97gPmh3y Mime-Version: 1.0 --------------------------GJ9IRUkcnM5vUZ97gPmh3y Content-Disposition: attachment; filename="myfile.jpg" Content-Type: image/jpeg Content-Transfer-Encoding: base64 QUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVGRkZGRkZG RkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSktLS0tLS0tLS0tMTExM TExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFS UlJSUlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dX V1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJCQkJCQkNDQ0ND Q0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJ SUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5O Tk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRU VFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpa WlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVF RkZGRkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tLS0tL S0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFR UVFRUVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZX V1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJC QkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dHR0dHR0hISEhI SEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5O Tk5OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NT U1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZ WVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVF RUVFRUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpKSkpK S0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT09QUFBQUFBQ UFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZW VlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFC QkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dH R0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1N TU1NTU1OTk5OTk5OTk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNT U1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhYWFhYWFhY WFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDRERERERE REREREVFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpK SkpKSkpKSktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09PT09P UFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVV VVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFB QUFBQUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZGRkZGRkZH R0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExM TExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJS UlJSUlJTU1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hY WFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0ND Q0RERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJ SUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5OT09P T09PT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NUVFRUVFRUVFRU VVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpa WlpaQUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVGRkZG RkZGRkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSktLS0tLS0tLS0tM TExMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFR UVFSUlJSUlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dX V1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJCQkJCQkND Q0NDQ0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhI SElJSUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5O Tk5OTk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NTVFRU VFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZ WlpaWlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVF RUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tL S0tLS0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5OT09PT09PT09PT1BQUFBQUFBQUFBR UVFRUVFRUVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZW VlZXV1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJC QkJCQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dHR0dHR0hI SEhISEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1N TU5OTk5OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NT U1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZ WVlZWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERE RUVFRUVFRUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpK SkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT09QUFBQ UFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVW VlZWVlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFB QUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dH R0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tLTExMTExMTExMTE1N TU1NTU1NTU1OTk5OTk5OTk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJS UlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhYWFhY WFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDRERE REREREREREVFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJ SkpKSkpKSkpKSktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09P T09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVV VVVVVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpB QUFBQUFBQUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZGRkZG RkZHR0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tLS0tLS0xMTExM TExMTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJS UlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dX V1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0ND Q0NDQ0RERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJ SUlJSUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5O T09PT09PT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NUVFRUVFRU VFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpa WlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVG RkZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSktLS0tLS0tL S0tMTExMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFR UVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldX V1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJCQkJC QkNDQ0NDQ0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhI SEhISElJSUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5O Tk5OTk5OTk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NT VFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZ WVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVF RUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpL S0tLS0tLS0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5OT09PT09PT09PT1BQUFBQUFBQ UFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZW VlZWVlZXV1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJC QkJCQkJCQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dHR0dH R0hISEhISEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1N TU1NTU5OTk5OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NT U1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYWFhYWFhY WVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERE RERERUVFRUVFRUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpK SkpKSkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT09Q UFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVV VVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFB QUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdH R0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tLTExMTExMTExM TE1NTU1NTU1NTU1OTk5OTk5OTk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJS UlJSUlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhY WFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0ND REREREREREREREVFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJ SUlJSkpKSkpKSkpKSktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09P T09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRV VVVVVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpa WlpBQUFBQUFBQUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZG RkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tLS0tLS0xM TExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFR UVJSUlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dX V1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0ND Q0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEhI SUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5OTk5O Tk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NUVFRU VFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZWVla WlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVF RUVGRkZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSktLS0tL S0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQUFFR UVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZW VldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJC QkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhI SEhISEhISElJSUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1N Tk5OTk5OTk5OTk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NT U1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhYWFhZWVlZ WVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERF RUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpK SkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5OT09PT09PT09PT1BQUFBQ UFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZW VlZWVlZWVlZXV1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFB QUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dH R0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSktLS0tLS0tLS0tMTExMTExMTExMTU1N TU1NTU1NTU5OTk5OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJS U1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYWFhY WFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERE RERERERERUVFRUVFRUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlK SkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09P T09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVV VVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFB QUFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZG RkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tLTExMTExM TExMTE1NTU1NTU1NTU1OTk5OTk5OTk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJS UlJSUlJSUlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dX WFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0ND Q0NDREREREREREREREVFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJ SUlJSUlJSkpKSkpKSkpKSktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5P T09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRU VFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpa WlpaWlpBQUFBQUFBQUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVFRUVFRUVFRUZG RkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tLS0tL S0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVFR UVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dX V1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJC Q0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dISEhISEhI SEhISUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5O Tk5OTk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NU VFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZ WVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVF RUVFRUVGRkZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSktL S0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQ UFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZW VlZWVldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJC QkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dH SEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1N TU1NTk5OTk5OTk5OTk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NT U1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhYWFhZ WVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERE RERFRUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpK SkpKSkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5OT09PT09PT09PT1BQ UFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVV VVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFB QUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVGRkZGRkZGRkZGR0dH R0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSktLS0tLS0tLS0tMTExMTExMTExM TU1NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJS UlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhY WFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NE RERERERERERERUVFRUVFRUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJ SUlKSkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09P T09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRUVFRUVFVV VVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpa WkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVFRkZGRkZG RkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tLTExM TExMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFR UlJSUlJSUlJSUlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dX V1dXWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0ND Q0NDQ0NDREREREREREREREVFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhISEhJ SUlJSUlJSUlJSkpKSkpKSkpKSktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5O Tk5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NTU1RUVFRU VFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpa WlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVFRUVFRUVF RUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tL S0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT09QUFBQUFBQUFBQUVFR UVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZW V1dXV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJC QkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dISEhI SEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1NTU1NTU1O Tk5OTk5OTk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNTU1NTU1NT U1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZ WVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDREREREREREREREVF RUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpKSkpKSkpK SktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09PT09PUFBQUFBQ UFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZW VlZWVlZWVldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFB QkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZGRkZGRkZHR0dHR0dH R0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1N TU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJT U1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhY WFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERE RERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpK SkpKSkpKSkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5OT09PT09PT09P T1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVV VVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFB QUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVGRkZGRkZGRkZG R0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSktLS0tLS0tLS0tMTExMTExM TExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJS UlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dY WFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJCQkJCQkNDQ0NDQ0ND Q0NERERERERERERERUVFRUVFRUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJSUlJ SUlJSUlKSkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9P T09PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRUVFRU VFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpa WlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVFRkZG RkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tL TExMTExMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFRUVFR UVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dX V1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJCQkJD Q0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhI SEhJSUlJSUlJSUlJSkpKSkpKSkpKSktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5OTk5O Tk5OTk5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NTU1RU VFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZ WVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVFRUVF RUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpKSkpKS0tL S0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT09QUFBQUFBQUFBQ UVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZW VlZWV1dXV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFCQkJC QkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dI SEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1NTU1N TU1OTk5OTk5OTk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNTU1NT U1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhYWFhYWFhYWFlZ WVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDRERERERERERE REVFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpKSkpK SkpKSktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09PT09PUFBQ UFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVV VlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFBQUFB QUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZGRkZGRkZHR0dH R0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExMTExN TU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJS UlJTU1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hYWFhY WFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RE RERERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJ SUpKSkpKSkpKSkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5OT09PT09P T09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVV VVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpa QUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVGRkZGRkZG RkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSktLS0tLS0tLS0tMTExM TExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFS UlJSUlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dX V1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFBQUFBQUFBQkJCQkJCQkJCQkNDQ0ND Q0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJ SUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5O Tk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRU VFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpa WlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVF RkZGRkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tLS0tL S0tLTExMTExMTExMTE1NTU1NTU1NTU1OTk5OTk5OTk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFR UVFRUVFRUlJSUlJSUlJSUlNTU1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZX V1dXV1dXV1dXWFhYWFhYWFhYWFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJC QkJDQ0NDQ0NDQ0NDREREREREREREREVFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dHR0dHR0hISEhI SEhISEhJSUlJSUlJSUlJSkpKSkpKSkpKSktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5O Tk5OTk5OTk5PT09PT09PT09PUFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NT U1RUVFRUVFRUVFRVVVVVVVVVVVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZ WVlZWVpaWlpaWlpaWlpBQUFBQCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind655 ./libtest/libtests lib655 http://failthis/655 http://127.0.0.1:34897/655 > log/7/stdout655 2> log/7/stderr655 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind653 ./libtest/libtests lib653 http://127.0.0.1:40641/653 > log/1/stdout653 2> log/1/stderr653 UFBQUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVF RUVFRUVFRUZGRkZGRkZGRkZHR0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpKSkpK S0tLS0tLS0tLS0xMTExMTExMTExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT09QUFBQUFBQ UFBQUVFRUVFRUVFRUVJSUlJSUlJSUlJTU1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZW VlZWVlZWV1dXV1dXV1dXV1hYWFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFC QkJCQkJCQkJCQ0NDQ0NDQ0NDQ0RERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dH R0dISEhISEhISEhISUlJSUlJSUlJSUpKSkpKSkpKSkpLS0tLS0tLS0tLTExMTExMTExMTE1NTU1N TU1NTU1OTk5OTk5OTk5OT09PT09PT09PT1BQUFBQUFBQUFBRUVFRUVFRUVFRUlJSUlJSUlJSUlNT U1NTU1NTU1NUVFRUVFRUVFRUVVVVVVVVVVVVVVZWVlZWVlZWVlZXV1dXV1dXV1dXWFhYWFhYWFhY WFlZWVlZWVlZWVlaWlpaWlpaWlpaQUFBQUFBQUFBQUJCQkJCQkJCQkJDQ0NDQ0NDQ0NDRERERERE REREREVFRUVFRUVFRUVGRkZGRkZGRkZGR0dHR0dHR0dHR0hISEhISEhISEhJSUlJSUlJSUlJSkpK SkpKSkpKSktLS0tLS0tLS0tMTExMTExMTExMTU1NTU1NTU1NTU5OTk5OTk5OTk5PT09PT09PT09P UFBQUFBQUFBQUFFRUVFRUVFRUVFSUlJSUlJSUlJSU1NTU1NTU1NTU1RUVFRUVFRUVFRVVVVVVVVV VVVVVlZWVlZWVlZWVldXV1dXV1dXV1dYWFhYWFhYWFhYWVlZWVlZWVlZWVpaWlpaWlpaWlpBQUFB QUFBQUFBQkJCQkJCQkJCQkNDQ0NDQ0NDQ0NERERERERERERERUVFRUVFRUVFRUZGRkZGRkZGRkZH R0dHR0dHR0dHSEhISEhISEhISElJSUlJSUlJSUlKSkpKSkpKSkpKS0tLS0tLS0tLS0xMTExMTExM TExNTU1NTU1NTU1NTk5OTk5OTk5OTk9PT09PT09PT09QUFBQUFBQUFBQUVFRUVFRUVFRUVJSUlJS UlJSUlJTU1NTU1NTU1NTVFRUVFRUVFRUVFVVVVVVVVVVVVVWVlZWVlZWVlZWV1dXV1dXV1dXV1hY WFhYWFhYWFhZWVlZWVlZWVlZWlpaWlpaWlpaWkFBQUFBQUFBQUFCQkJCQkJCQkJCQ0NDQ0NDQ0ND Q0RERERERERERERFRUVFRUVFRUVFRkZGRkZGRkZGRkdHR0dHR0dHR0dISEhISEhISEhISUlJSUlJ SUlJSUpKSkpKSkpKSko= --------------------------GJ9IRUkcnM5vUZ97gPmh3y-- . === End of file upload.652 === Start of file valgrind652 ==275493== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind652 test 0655...[resolver start callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind655 ./libtest/libtests lib655 http://failthis/655 http://127.0.0.1:34897/655 > log/7/stdout655 2> log/7/stderr655 valgrind ERROR ==275946== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 655 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind655 ./libtest/libtests lib655 http://failthis/655 http://127.0.0.1:34897/655 > log/7/stdout655 2> log/7/stderr655 === End of file commands.log === Start of file http_server.log 01:36:49.788052 ====> Client connect 01:36:49.788221 accept_connection 3 returned 4 01:36:49.788307 accept_connection 3 returned 0 01:36:49.796038 Read 93 bytes 01:36:49.796215 Process 93 bytes request 01:36:49.796314 Got request: GET /verifiedserver HTTP/1.1 01:36:49.796381 Are-we-friendly question received 01:36:49.796514 Wrote request (93 bytes) input to log/7/server.input 01:36:49.796618 Identifying ourselves as friends 01:36:49.796790 Response sent (57 bytes) and written to log/7/server.response 01:36:49.796860 special request received, no persistency 01:36:49.796918 ====> Client disconnect 0 01:37:35.382692 ====> Client connect 01:37:35.382841 accept_connection 3 returned 4 01:37:35.382921 accept_connection 3 returned 0 01:37:36.230298 Read 57 bytes 01:37:36.230508 Process 57 bytes request 01:37:36.230611 Got request: GET /655 HTTP/1.1 01:37:36.230682 Serve test number 655 part 0 01:37:36.230848 - request found to be complete (655) 01:37:36.231091 Wrote request (57 bytes) input to log/7/server.input 01:37:36.231203 Send response test655 section 01:37:36.231405 connection close instruction "swsclose" found in response 01:37:36.231571 Response sent (141 bytes) and written to log/7/server.response 01:37:36.231638 instructed to close connection after server-reply 01:37:36.231698 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 55510 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 655 === End of file server.cmd === Start of file server.input GET /655 HTTP/1.1 Host: 127.0.0.1:34897 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file server.response === Start of file stderr655 URL: http://failthis/655 Test ended with result 0 === End of file stderr655 === Start of file stdout655 hello === End of file stdout655 === Start of file valgrind655 ==275946== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind655 test 0653...[Reuse of handle after altering mime data] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind653 ./libtest/libtests lib653 http://127.0.0.1:40641/653 > log/1/stdout653 2> log/1/stderr653 valgrind ERROR ==275643== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 653 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind653 ./libtest/libtests lib653 http://127.0.0.1:40641/653 > log/1/stdout653 2> log/1/stderr653 === End of file commands.log === Start of file http_server.log 01:36:46.591946 ====> Client connect 01:36:46.592125 accept_connection 3 returned 4 01:36:46.592203 accept_connection 3 returned 0 01:36:46.599227 Read 93 bytes 01:36:46.599337 Process 93 bytes request 01:36:46.599423 Got request: GET /verifiedserver HTTP/1.1 01:36:46.599489 Are-we-friendly question received 01:36:46.599610 Wrote request (93 bytes) input to log/1/server.input 01:36:46.599701 Identifying ourselves as friends 01:36:46.599882 Response sent (57 bytes) and written to log/1/server.response 01:36:46.599943 special request received, no persistency 01:36:46.599998 ====> Client disconnect 0 01:37:37.965217 ====> Client connect 01:37:37.965358 accept_connection 3 returned 4 01:37:37.965440 accept_connection 3 returned 0 01:37:39.417063 Read 333 bytes 01:37:39.417275 Process 333 bytes request 01:37:39.417371 Got request: POST /653 HTTP/1.1 01:37:39.417445 Serve test number 653 part 0 01:37:39.417654 - request found to be complete (653) 01:37:39.417840 Found Content-Length: 162 in the request 01:37:39.418018 Wrote request (333 bytes) input to log/1/server.input 01:37:39.418129 Send response test653 section 01:37:39.418373 connection close instruction "swsclose" found in response 01:37:39.418585 Response sent (141 bytes) and written to log/1/server.response 01:37:39.418659 instructed to close connection after server-reply 01:37:39.418728 ====> Client disconnect 0 01:37:41.639747 ====> Client connect 01:37:41.639880 accept_connection 3 returned 4 01:37:41.639955 accept_connection 3 returned 0 01:37:41.773865 Read 350 bytes 01:37:41.774078 Process 350 bytes request 01:37:41.774184 Got request: POST /653 HTTP/1.1 01:37:41.774266 Serve test number 653 part 0 01:37:41.774498 - request found to be complete (653) 01:37:41.774701 Found Content-Length: 179 in the request 01:37:41.774835 Wrote request (350 bytes) input to log/1/server.input 01:37:41.774941 Send response test653 section 01:37:41.775217 connection close instruction "swsclose" found in response 01:37:41.775457 Response sent (141 bytes) and written to log/1/server.response CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind658 ./libtest/libtests lib658 http://127.0.0.1:39461/658 > log/8/stdout658 2> log/8/stderr658 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind659 ./libtest/libtests lib659 http://127.0.0.1:46853 > log/3/stdout659 2> log/3/stderr659 01:37:41.775532 instructed to close connection after server-reply 01:37:41.775599 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 39812 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 653 === End of file server.cmd === Start of file server.input POST /653 HTTP/1.1 Host: 127.0.0.1:40641 Accept: */* Content-Length: 162 Content-Type: multipart/form-data; boundary=------------------------zTOgdFCeZz5bdQot2iH3Oc --------------------------zTOgdFCeZz5bdQot2iH3Oc Content-Disposition: form-data; name="name" short value --------------------------zTOgdFCeZz5bdQot2iH3Oc-- POST /653 HTTP/1.1 Host: 127.0.0.1:40641 Accept: */* Content-Length: 179 Content-Type: multipart/form-data; boundary=------------------------zTOgdFCeZz5bdQot2iH3Oc --------------------------zTOgdFCeZz5bdQot2iH3Oc Content-Disposition: form-data; name="name" long value for length change --------------------------zTOgdFCeZz5bdQot2iH3Oc-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file server.response === Start of file stderr653 URL: http://127.0.0.1:40641/653 * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 43706 * using HTTP/1.x > POST /653 HTTP/1.1 Host: 127.0.0.1:40641 Accept: */* Content-Length: 162 Content-Type: multipart/form-data; boundary=------------------------zTOgdFCeZz5bdQot2iH3Oc * upload completely sent off: 162 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * shutting down connection #0 * Hostname 127.0.0.1 was found in DNS cache * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 43712 * using HTTP/1.x > POST /653 HTTP/1.1 Host: 127.0.0.1:40641 Accept: */* Content-Length: 179 Content-Type: multipart/form-data; boundary=------------------------zTOgdFCeZz5bdQot2iH3Oc * upload completely sent off: 179 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * shutting down connection #1 Test ended with result 0 === End of file stderr653 === Start of file stdout653 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file stdout653 === Start of file valgrind653 ==275643== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind653 test 0658...[Pass URL to libcurl with CURLOPT_CURLU] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind658 ./libtest/libtests lib658 http://127.0.0.1:39461/658 > log/8/stdout658 2> log/8/stderr658 valgrind ERROR ==276113== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 658 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind658 ./libtest/libtests lib658 http://127.0.0.1:39461/658 > log/8/stdout658 2> log/8/stderr658 === End of file commands.log === Start of file http_server.log 01:36:55.968623 ====> Client connect 01:36:55.968774 accept_connection 3 returned 4 01:36:55.968848 accept_connection 3 returned 0 01:36:55.974262 Read 93 bytes 01:36:55.974358 Process 93 bytes request 01:36:55.974446 Got request: GET /verifiedserver HTTP/1.1 01:36:55.974510 Are-we-friendly question received 01:36:55.974622 Wrote request (93 bytes) input to log/8/server.input 01:36:55.974708 Identifying ourselves as friends 01:36:55.974859 Response sent (57 bytes) and written to log/8/server.response 01:36:55.974920 special request received, no persistency 01:36:55.974974 ====> Client disconnect 0 01:37:40.378575 ====> Client connect 01:37:40.378729 accept_connection 3 returned 4 01:37:40.378825 accept_connection 3 returned 0 01:37:41.399037 Read 57 bytes 01:37:41.399213 Process 57 bytes request 01:37:41.399307 Got request: GET /658 HTTP/1.1 01:37:41.399378 Serve test number 658 part 0 01:37:41.399545 - request found to be complete (658) 01:37:41.399794 Wrote request (57 bytes) input to log/8/server.input 01:37:41.399901 Send response test658 section 01:37:41.400256 Response sent (256 bytes) and written to log/8/server.response 01:37:41.400327 => persistent connection request ended, awaits new request 01:37:43.063436 Connection closed by client 01:37:43.063672 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 32870 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 658 === End of file server.cmd === Start of file server.input GET /658 HTTP/1.1 Host: 127.0.0.1:39461 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr658 URL: http://127.0.0.1:39461/658 * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 43506 * using HTTP/1.x > GET /658 HTTP/1.1 Host: 127.0.0.1:39461 Accept: */* < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT < ETag: "21025-dc7-39462498" < Accept-Ranges: bytes < Content-Length: 6 < Connection: close < Content-Type: text/html < Funny-head: yesyes < * we are done reading and this is set to close, stop send * abort upload * shutting down connection #0 Test ended with result 0 === End of file stderr658 === Start of file stdout658 -foo- === End of file stdout658 === Start of file valgrind658 ==276113== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind658 test 0659...[CURLOPT_CURLU without the path set - over proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind659 ./libtest/libtests lib659 http://127.0.0.1:46853 > log/3/stdout659 2> log/3/stderr659 valgrind ERROR ==276246== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 659 === Start of file commands.log ../libtool --mode=execCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind654 ./libtest/libtests lib654 http://127.0.0.1:42621/654 log/4/file654.txt > log/4/stdout654 2> log/4/stderr654 ute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind659 ./libtest/libtests lib659 http://127.0.0.1:46853 > log/3/stdout659 2> log/3/stderr659 === End of file commands.log === Start of file http_server.log 01:36:57.090864 ====> Client connect 01:36:57.091030 accept_connection 3 returned 4 01:36:57.091103 accept_connection 3 returned 0 01:36:57.097867 Read 93 bytes 01:36:57.097966 Process 93 bytes request 01:36:57.098053 Got request: GET /verifiedserver HTTP/1.1 01:36:57.098113 Are-we-friendly question received 01:36:57.098219 Wrote request (93 bytes) input to log/3/server.input 01:36:57.098307 Identifying ourselves as friends 01:36:57.098463 Response sent (57 bytes) and written to log/3/server.response 01:36:57.098526 special request received, no persistency 01:36:57.098580 ====> Client disconnect 0 01:37:41.823642 ====> Client connect 01:37:41.823804 accept_connection 3 returned 4 01:37:41.823884 accept_connection 3 returned 0 01:37:42.901074 Read 106 bytes 01:37:42.901272 Process 106 bytes request 01:37:42.901369 Got request: GET http://www.example.com/ HTTP/1.1 01:37:42.901443 No test number in path 01:37:42.901557 [log/3/server.cmd] cmdfile says testnum 659 01:37:42.901749 - request found to be complete (659) 01:37:42.902002 Wrote request (106 bytes) input to log/3/server.input 01:37:42.902108 Send response test659 section 01:37:42.902447 Response sent (256 bytes) and written to log/3/server.response 01:37:42.902553 => persistent connection request ended, awaits new request 01:37:44.544323 Connection closed by client 01:37:44.544512 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 44996 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 659 === End of file server.cmd === Start of file server.input GET http://www.example.com/ HTTP/1.1 Host: www.example.com Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr659 URL: http://127.0.0.1:46853 * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 43498 * using HTTP/1.x > GET http://www.example.com/ HTTP/1.1 Host: www.example.com Accept: */* Proxy-Connection: Keep-Alive < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT < ETag: "21025-dc7-39462498" < Accept-Ranges: bytes < Content-Length: 6 < Connection: close < Content-Type: text/html < Funny-head: yesyes < * we are done reading and this is set to close, stop send * abort upload * shutting down connection #0 Test ended with result 0 === End of file stderr659 === Start of file stdout659 -foo- === End of file stdout659 === Start of file valgrind659 ==276246== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind659 test 0654...[HTTP duplicate easy handle with mime data] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind654 ./libtest/libtests lib654 http://127.0.0.1:42621/654 log/4/file654.txt > log/4/stdout654 2> log/4/stderr654 valgrind ERROR ==275793== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 654 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind654 ./libtest/libtests lib654 http://127.0.0.1:42621/654 log/4/file654.txt > log/4/stdout654 2> log/4/stderr654 === End of file commands.log === Start of file file654.txt This is data from a file === End of file file654.txt === Start of file http_server.log 01:36:48.910041 ====> Client connect 01:36:48.910233 accept_connection 3 returned 4 01:36:48.910320 accept_connection 3 returned 0 01:36:48.917195 Read 93 bytes 01:36:48.917314 Process 93 bytes request 01:36:48.917417 Got request: GET /verifiedserver HTTP/1.1 01:36:48.917489 Are-we-friendly question received 01:36:48.917621 Wrote request (93 bytes) input to log/4/server.input 01:36:48.917728 Identifying ourselves as friends 01:36:48.917928 Response sent (57 bytes) and written to log/4/server.response 01:36:48.917999 special request received, no persistency 01:36:48.918061 ====> Client disconnect 0 01:37:41.268751 ====> Client connect 01:37:41.268897 accept_connection 3 returned 4 01:37:41.268981 accept_connection 3 returned 0 01:37:42.395444 Read 77 bytes 01:37:42.395660 Process 77 bytes request 01:37:42.395756 Got request: POST /654 HTTP/1.1 01:37:42.395826 Serve test number 654 part 0 01:37:42.396035 - request found to be complete (654) 01:37:42.396232 Found Content-Length: 0 in the request 01:37:42.396405 Wrote request (77 bytes) input to log/4/server.input 01:37:42.396517 Send response test654 section 01:37:42.396773 connection close instruction "swsclose" found in response 01:37:42.396979 Response sent (141 bytes) and written to log/4/server.response 01:37:42.397052 instructed to close connection after server-reply 01:37:42.397114 ====> Client disconnect 0 01:37:44.657857 ====> Client connect 01:37:44.657982 accept_connection 3 returned 4 01:37:44.658059 accept_connection 3 returned 0 01:37:45.152983 Read 200 bytes 01:37:45.153179 Process 200 bytes request 01:37:45.153274 Got request: POST /654 HTTP/1.1 01:37:45.153345 Serve test number 654 part 0 01:37:45.153561 - request found to be complete (654) 01:37:46.761917 Read 456 bytes 01:37:46.762159 Process 656 bytes request [CONTINUED] 01:37:46.762240 - request found to be complete (654) 01:37:46.840943 Read 6 bytes 01:37:46.841150 Process 662 bytes request [CONTINUED] 01:37:46.841218 - request found to be complete (654) 01:37:46.850802 Read 6 bytes 01:37:46.850953 Process 668 bytes request [CONTINUED] 01:37:46.851021 - request found to be complete (654) 01:37:46.854035 Read 6 bytes 01:37:46.854152 Process 674 bytes request [CONTINUED] 01:37:46.854223 - request found to be complete (654) 01:37:46.857297 Read 6 bytes 01:37:46.857395 Process 680 bytes request [CONTINUED] 01:37:46.857459 - request found to be complete (654) 01:37:46.860248 Read 6 bytes 01:37:46.860341 Process 686 bytes request [CONTINUED] 01:37:46.860405 - request found to be complete (654) 01:37:46.863821 Read 6 bytes 01:37:46.863917 Process 692 bytes request [CONTINUED] 01:37:46.863997 - request found to be complete (654) 01:37:46.887931 Read 60 bytes 01:37:46.888127 Process 752 bytes request [CONTINUED] 01:37:46.888199 - request found to be complete (654) 01:37:46.920405 Read 5 bytes 01:37:46.920613 Process 757 bytes request [CONTINUED] 01:37:46.920691 - request found to be complete (654) 01:37:46.920985 Wrote request (757 bytes) input to log/4/server.input 01:37:46.921090 Send response test654 section 01:37:46.921382 connection close instruction "swsclose" found in response 01:37:46.921611 Response sent (141 bytes) and written to log/4/server.response 01:37:46.921694 instructed to close connection after server-reply 01:37:46.921768 ====> Client disconnect 0 === End CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind660 ./libtest/libtests lib597 imap://127.0.0.1:37425/660 > log/5/stdout660 2> log/5/stderr660 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind661 ./libtest/libtests lib661 ftp://127.0.0.1:39881/ > log/2/stdout661 2> log/2/stderr661 of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 54184 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 654 === End of file server.cmd === Start of file server.input POST /654 HTTP/1.1 Host: 127.0.0.1:42621 Accept: */* Content-Length: 0 POST /654 HTTP/1.1 Host: 127.0.0.1:42621 Accept: */* Transfer-Encoding: chunked Content-Type: multipart/form-data; boundary=------------------------mgJq8ck8ogQZK2fwzUfNOP Expect: 100-continue 1c1 --------------------------mgJq8ck8ogQZK2fwzUfNOP Content-Disposition: form-data; name="greeting" Content-Type: application/X-Greeting Content-Transfer-Encoding: base64 X-Test-Number: 654 aGVsbG8= --------------------------mgJq8ck8ogQZK2fwzUfNOP Content-Disposition: form-data; filename="file654.txt" Content-Type: text/plain This is data from a file --------------------------mgJq8ck8ogQZK2fwzUfNOP Content-Disposition: form-data 1 d 1 u 1 m 1 m 1 y 1 36 --------------------------mgJq8ck8ogQZK2fwzUfNOP-- 0 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file server.response === Start of file stderr654 URL: http://127.0.0.1:42621/654 * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 41404 * using HTTP/1.x > POST /654 HTTP/1.1 Host: 127.0.0.1:42621 Accept: */* Content-Length: 0 < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * abort upload * shutting down connection #0 * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 56296 * using HTTP/1.x > POST /654 HTTP/1.1 Host: 127.0.0.1:42621 Accept: */* Transfer-Encoding: chunked Content-Type: multipart/form-data; boundary=------------------------mgJq8ck8ogQZK2fwzUfNOP Expect: 100-continue * Done waiting for 100-continue * upload completely sent off: 557 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * shutting down connection #0 Test ended with result 0 === End of file stderr654 === Start of file stdout654 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file stdout654 === Start of file valgrind654 ==275793== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind654 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/5/server/imap_server.pid" --logfile "log/5/imap_server.log" --logdir "log/5" --portfile "log/5/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 37425 (log/5/server/imap_server.port) RUN: IMAP server is PID 276364 port 37425 * pid imap => 276364 276364 test 0660...[IMAP CONNECT_ONLY option] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind660 ./libtest/libtests lib597 imap://127.0.0.1:37425/660 > log/5/stdout660 2> log/5/stderr660 valgrind ERROR ==276374== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 660 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind660 ./libtest/libtests lib597 imap://127.0.0.1:37425/660 > log/5/stdout660 2> log/5/stderr660 === End of file commands.log === Start of file imap_server.log 01:37:02.091029 IMAP server listens on port IPv4/37425 01:37:02.094238 logged pid 276364 in log/5/server/imap_server.pid 01:37:02.094478 Awaiting input 01:37:47.387507 ====> Client connect 01:37:47.388315 FTPD: Getting commands from log/5/server.cmd 01:37:47.388740 FTPD: run test case number: 660 01:37:47.394506 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 01:37:48.644817 < "A001 CAPABILITY" 01:37:48.650942 > "A001 BAD Command[CR][LF]" 01:37:49.512906 MAIN sockfilt said DISC 01:37:49.514144 ====> Client disconnected 01:37:49.515147 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 01:37:02.689249 Running IPv4 version 01:37:02.696783 Listening on port 37425 01:37:02.697241 Wrote pid 276368 to log/5/server/imap_sockfilt.pid 01:37:02.697508 Wrote port 37425 to log/5/server/imap_server.port 01:37:02.698249 Received PING (on stdin) 01:37:47.995164 ====> Client connect 01:37:48.005804 Received DATA (on stdin) 01:37:48.006171 > 178 bytes data, server => client 01:37:48.006568 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 01:37:48.006684 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 01:37:48.006787 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 01:37:48.006871 'rve\r\n' 01:37:49.252527 < 17 bytes data, client => server 01:37:49.252721 'A001 CAPABILITY\r\n' 01:37:49.261707 Received DATA (on stdin) 01:37:49.261801 > 18 bytes data, server => client 01:37:49.262215 'A001 BAD Command\r\n' 01:37:50.123421 ====> Client disconnect 01:37:50.124580 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 660 === End of file server.cmd === Start of file server.input A001 CAPABILITY === End of file server.input === Start of file stderr660 URL: imap://127.0.0.1:37425/660 * Trying 127.0.0.1:37425... * Established connection to 127.0.0.1 (127.0.0.1 port 37425) from 127.0.0.1 port 38440 < _ _ ____ _ < ___| | | | _ \| | < / __| | | | |_) | | < | (__| |_| | _ {| |___ < \___|\___/|_| \_\_____| < * OK curl IMAP server ready to serve > A001 CAPABILITY < A001 BAD Command * Connection #0 to host 127.0.0.1:37425 left intact * closing connection #0 Test ended with result 0 === End of file stderr660 === Start of file valgrind660 ==276374== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind660 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 666 in state 4 Runner 2 (id 185908) running test 661 in state 4 Runner 3 (id 185910) running test 668 in state 4 Runner 4 (id 185912) running test 669 in state 4 Runner 5 (id 185914) running test 670 in state 4 Runner 6 (id 185916) running test 662 in state 4 Runner 7 (id 185918) running test 663 in state 4 Runner 8 (id 185920) running test 667 in state 4 test 0661...[Avoid redundant CWDs] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind661 ./libtest/libtests lib661 ftp://127.0.0.1:39881/ > log/2/stdout661 2> log/2/stderr661 valgrind ERROR ==276545== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 661 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind661 ./libtest/libtests lib661 ftp://127.0.0.1:39881/ > log/2/stdout661 2> log/2/stderr661 === End of file commands.log === Start of file ftp_server.log 01:37:11.390891 ====> Client connect 01:37:11.391898 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:37:11.400720 < "USER anonymous" 01:37:11.401077 > "331 We are happy you popped in![CR][LF]" 01:37:11.402284 < "PASS ftp@example.com" 01:37:11.403078 > "230 Welcome you silly person[CR][LF]" 01:37:11.403579 < "PWD" 01:37:11.403843 > "257 "/" is current directory[CR][LF]" 01:37:11.406196 < "EPSV" 01:37:11.406411 ====> Passive DATA channel requested by client 01:37:11.406560 DATA sockfilt for passive data channel starting... 01:37:11.444540 DATA sockfilt for passive data channel started (pid 276536) 01:37:11.445692 DATA sockfilt for passive data channel listens on port 37541 01:37:11.446248 > "229 Entering Passive Mode (|||37541|)[CR][LF]" 01:37:11.446414 Client has been notified that DATA conn will be accepted on port 37541 01:37:11.448376 Client connects to port 37541 01:37:11.448576 ====> Client established passive DATA connection on port 37541 01:37:11.451149 < "TYPE I" 01:37:11.451444 > "200 I modify TYPE as you wanted[CR][LF]" 01:37:11.452752 < "SIZE verifiedserver" 01:37:11.453066 > "213 18[CR][LF]" 01:37:11.454423 < "RETR verifiedserver" 01:37:11.456898 > "150 Binary junk (18 bytes).[CR][LF]" 01:37:11.457458 =====> Closing passive DATA connection... 01:37:11.457626 Server disconnects passive DATA connection 01:37:11.461019 Server disconnected passive DATA connection 01:37:11.461195 DATA sockfilt for passive data channel quits (pid 276536) 01:37:11.464368 DATA sockfilt for passive data channel quit (pid 276536) 01:37:11.464537 =====> Closed passive DATA connection 01:37:11.464790 > "226 File transfer complete[CR][LF]" 01:37:11.508663 < "QUIT" 01:37:11.514065 > "221 bye bye baby[CR][LF]" 01:37:11.514293 MAIN sockfilt said DISC 01:37:11.514478 ====> Client disconnected 01:37:11.514740 Awaiting input 01:37:57.007477 ====> Client connect 01:37:57.008443 FTPD: Getting commands from log/2/server.cmd 01:37:57.008793 FTPD: run test case number: 661 01:37:57.009960 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:37:58.017712 < "USER anonymous" 01:37:58.018129 > "331 We are happy you popped in![CR][LF]" 01:37:58.106771 < "PASS ftp@example.com" 01:37:58.107490 > "230 Welcome you silly person[CR][LF]" 01:37:58.179899 < "PWD" 01:37:58.180291 > "257 "/" is current directory[CR][LF]" 01:37:58.359333 < "CWD /folderA" 01:37:58.360043 > "250 CWD command successful.[CR][LF]" 01:37:58.420773 < "EPSV" 01:37:58.421103 ====> Passive DATA channel requested by client 01:37:58.421256 DATA sockfilt for passive data channel starting... 01:37:58.497280 DATA sockfilt for passive data channel started (pid 277791) 01:37:58.498352 DATA sockfilt for passive data channel listens on port 42535 01:37:58.499093 > "229 Entering Passive Mode (|||42535|)[CR][LF]" 01:37:58.499260 Client has been notified that DATA conn will be accepted on port 42535 01:37:58.677719 Client connects to port 42535 01:37:58.678267 ====> Client established passive DATA connection on port 42535 01:37:58.791191 < "TYPE I" 01:37:58.794107 > "200 I modify TYPE as you wanted[CR][LF]" 01:37:58.831762 < "RETR 661" 01:37:58.833716 > "550 661: No such file or directory.[CR][LF]" 01:38:00.161465 < "CWD /folderB" 01:38:00.170782 > "250 CWD command successful.[CR][LF]" 01:38:00.171927 < "EPSV" 01:38:00.173419 DATA sockfilt for passive data channel killed 01:38:00.173599 ====> Passive DATA channel requested by client 01:38:00.173749 DATA sockfilt for passive data channel starting... 01:38:00.214706 DATA sockfilt for passive data channel started (pid 277797) 01:38:00.215863 DATA sockfilt for passive data channel listens on port 43523 01:38:00.216616 > "229 Entering Passive Mode (|||43523|)[CR][LF]" 01:38:00.216789 Client has been notified that DATA conn will be accepted on port 43523 01:38:00.237394 Client connects to port 43523 01:38:00.237781 ====> Client established passive DATA connection on port 43523 01:38:00.261472 < "RETR 661" 01:38:00.262061 > "550 661: No such file or directory.[CR][LF]" 01:38:00.485203 < "QUIT" 01:38:00.490770 > "221 bye bye baby[CR][LF]" 01:38:00.666965 MAIN sockfilt said DISC 01:38:00.667473 ====> Client disconnected 01:38:00.668928 DATA sockfilt for passive data channel killed now 01:38:00.669109 Awaiting input 01:38:01.106776 ====> Client connect 01:38:01.107519 FTPD: Getting commands from log/2/server.cmd 01:38:01.107836 FTPD: run test case number: 661 01:38:01.108756 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:38:01.131692 < "USER anonymous" 01:38:01.134111 > "331 We are happy you popped in![CR][LF]" 01:38:01.136905 < "PASS ftp@example.com" 01:38:01.137192 > "230 Welcome you silly person[CR][LF]" 01:38:01.143033 < "PWD" 01:38:01.143571 > "257 "/" is current directory[CR][LF]" 01:38:01.164368 < "EPSV" 01:38:01.164671 ====> Passive DATA channel requested by client 01:38:01.164819 DATA sockfilt for passive data channel starting... 01:38:01.206220 DATA sockfilt for passive data channel started (pid 277800) 01:38:01.207398 DATA sockfilt for passive data channel listens on port 36913 01:38:01.208134 > "229 Entering Passive Mode (|||36913|)[CR][LF]" 01:38:01.208305 Client has been notified that DATA conn will be accepted on port 36913 01:38:01.220742 Client connects to port 36913 01:38:01.221075 ====> Client established passive DATA connection on port 36913 01:38:01.233978 < "TYPE I" 01:38:01.234307 > "200 I modify TYPE as you wanted[CR][LF]" 01:38:01.237498 < "RETR /folderA/661" 01:38:01.237980 > "550 661: No such file or directory.[CR][LF]" 01:38:01.303831 < "CWD /folderB" 01:38:01.304247 > "250 CWD command successful.[CR][LF]" 01:38:01.309230 < "EPSV" 01:38:01.312234 DATA sockfilt for passive data channel killed 01:38:01.312430 ====> Passive DATA channel requested by client 01:38:01.312575 DATA sockfilt for passive data channel starting... 01:38:01.356337 DATA sockfilt for passive data channel started (pid 277803) 01:38:01.357587 DATA sockfilt for passive data channel listens on port 40939 01:38:01.357920 > "229 Entering Passive Mode (|||40939|)[CR][LF]" 01:38:01.358088 Client has been notified that DATA conn will be accepted on port 40939 01:38:01.365859 Client connects to port 40939 01:38:01.366149 ====> Client established passive DATA connection on port 40939 01:38:01.372300 < "RETR 661" 01:38:01.372848 > "550 661: No such file or directory.[CR][LF]" 01:38:01.406136 < "EPSV" 01:38:01.409485 DATA sockfilt for passive data channel killed 01:38:01.409705 ====> Passive DATA channel requested by client 01:38:01.409857 DATA sockfilt for passive data channel starting... 01:38:01.454626 DATA sockfilt for passive data channel started (pid 277806) 01:38:01.455936 DATA sockfilt for passive data channel listens on port 39457 01:38:01.456261 > "229 Entering Passive Mode (|||39457|)[CR][LF]" 01:38:01.456426 Client has been notified that DATA conn will be accepted on port 39457 01:38:01.464947 Client connects to port 39457 01:38:01.465230 ====> Client established passive DATA connection on port 39457 01:38:01.470399 < "RETR /folderA/661" 01:38:01.470924 > "550 661: No such file or directory.[CR][LF]" 01:38:01.494997 < "QUIT" 01:38:01.495632 > "221 bye bye baby[CR][LF]" 01:38:01.505456 MAIN sockfilt said DISC 01:38:01.505787 ====> Client disconnected 01:38:01.510812 DATA sockfilt for passive data channel killed now 01:38:01.511006 Awaiting input 01:38:01.589808 ====> Client connect 01:38:01.590505 FTPD: Getting commands from log/2/server.cmd 01:38:01.590820 FTPD: run test case number: 661 01:38:01.591229 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:38:01.600242 < "USER anonymous" 01:38:01.600571 > "331 We are happy you popped in![CR][LF]" 01:38:01.603582 < "PASS ftp@example.com" 01:38:01.604116 > "230 Welcome you silly person[CR][LF]" 01:38:01.607455 < "PWD" 01:38:01.607996 > "257 "/" is current directory[CR][LF]" 01:38:01.637908 < "SYST" 01:38:01.640786 > "215 UNIX Type: L8[CR][LF]" 01:38:01.746646 < "QUIT" 01:38:01.747063 > "221 bye bye baby[CR][LF]" 01:38:01.750702 MAIN sockfilt said DISC 01:38:01.750922 ====> Client disconnected 01:38:01.751193 Awaiting input 01:38:01.788092 ====> Client connect 01:38:01.788775 FTPD: Getting commands from log/2/server.cmd 01:38:01.789077 FTPD: run test case number: 661 01:38:01.789477 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:38:01.798741 < "USER anonymous" 01:38:01.799307 > "331 We are happy you popped in![CR][LF]" 01:38:01.802934 < "PASS ftp@example.com" 01:38:01.803207 > "230 Welcome you silly person[CR][LF]" 01:38:01.806548 < "PWD" 01:38:01.807070 > "257 "/" is current directory[CR][LF]" 01:38:01.820769 < "SYST" 01:38:01.821364 > "215 UNIX Type: L8[CR][LF]" 01:38:01.931719 < "SYST" 01:38:01.934104 > "215 UNIX Type: L8[CR][LF]" 01:38:01.962795 < "QUIT" 01:38:01.963135 > "221 bye bye baby[CR][LF]" 01:38:01.964304 MAIN sockfilt said DISC 01:38:01.964483 ====> Client disconnected 01:38:01.964740 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:37:12.001606 ====> Client connect 01:37:12.003231 Received DATA (on stdin) 01:37:12.003314 > 160 bytes data, server => client 01:37:12.003421 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:37:12.003523 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:37:12.003612 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:37:12.010820 < 16 bytes data, client => server 01:37:12.010941 'USER anonymous\r\n' 01:37:12.012376 Received DATA (on stdin) 01:37:12.012448 > 33 bytes data, server => client 01:37:12.012533 '331 We are happy you popped in!\r\n' 01:37:12.012815 < 22 bytes data, client => server 01:37:12.012892 'PASS ftp@example.com\r\n' 01:37:12.013589 Received DATA (on stdin) 01:37:12.013655 > 30 bytes data, server => client 01:37:12.013756 '230 Welcome you silly person\r\n' 01:37:12.013987 < 5 bytes data, client => server 01:37:12.014053 'PWD\r\n' 01:37:12.015173 Received DATA (on stdin) 01:37:12.015246 > 30 bytes data, server => client 01:37:12.015328 '257 "/" is current directory\r\n' 01:37:12.016785 < 6 bytes data, client => server 01:37:12.016854 'EPSV\r\n' 01:37:12.057044 Received DATA (on stdin) 01:37:12.057174 > 39 bytes data, server => client 01:37:12.057725 '229 Entering Passive Mode (|||37541|)\r\n' 01:37:12.060186 < 8 bytes data, client => server 01:37:12.060270 'TYPE I\r\n' 01:37:12.062735 Received DATA (on stdin) 01:37:12.062809 > 33 bytes data, server => client 01:37:12.062894 '200 I modify TYPE as you wanted\r\n' 01:37:12.063349 < 21 bytes data, client => server 01:37:12.063428 'SIZE verifiedserver\r\n' 01:37:12.064350 Received DATA (on stdin) 01:37:12.064418 > 8 bytes data, server => client 01:37:12.064485 '213 18\r\n' 01:37:12.064913 < 21 bytes data, client => server 01:37:12.064990 'RETR verifiedserver\r\n' 01:37:12.065775 Received DATA (on stdin) 01:37:12.065846 > 29 bytes data, server => client 01:37:12.065948 '150 Binary junk (18 bytes).\r\n' 01:37:12.078467 Received DATA (on stdin) 01:37:12.078555 > 28 bytes data, server => client 01:37:12.078638 '226 File transfer complete\r\n' 01:37:12.118930 < 6 bytes data, client => server 01:37:12.119035 'QUIT\r\n' 01:37:12.120039 Received DATA (on stdin) 01:37:12.120109 > 18 bytes data, server => client 01:37:12.120377 '221 bye bye baby\r\n' 01:37:12.120927 ====> Client disconnect 01:37:12.125998 Received ACKD (on stdin) 01:37:57.618036 ====> Client connect 01:37:57.621184 Received DATA (on stdin) 01:37:57.621277 > 160 bytes data, server => client 01:37:57.621383 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:37:57.621478 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:37:57.621563 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:37:58.627464 < 16 bytes data, client => server 01:37:58.627636 'USER anonymous\r\n' 01:37:58.635010 Received DATA (on stdin) 01:37:58.635101 > 33 bytes data, server => client 01:37:58.635198 '331 We are happy you popped in!\r\n' 01:37:58.716651 < 22 bytes data, client => server 01:37:58.716808 'PASS ftp@example.com\r\n' 01:37:58.718129 Received DATA (on stdin) 01:37:58.718205 > 30 bytes data, server => client 01:37:58.718314 '230 Welcome you silly person\r\n' 01:37:58.789959 < 5 bytes data, client => server 01:37:58.790102 'PWD\r\n' 01:37:58.791483 Received DATA (on stdin) 01:37:58.791556 > 30 bytes data, server => client 01:37:58.791639 '257 "/" is current directory\r\n' 01:37:58.969192 < 14 bytes data, client => server 01:37:58.969361 'CWD /folderA\r\n' 01:37:58.970685 Received DATA (on stdin) 01:37:58.970764 > 29 bytes data, server => client 01:37:58.970867 '250 CWD command successful.\r\n' 01:37:59.030710 < 6 bytes data, client => server 01:37:59.030866 'EPSV\r\n' 01:37:59.109625 Received DATA (on stdin) 01:37:59.109762 > 39 bytes data, server => client 01:37:59.109875 '229 Entering Passive Mode (|||42535|)\r\n' 01:37:59.400909 < 8 bytes data, client => server 01:37:59.401120 'TYPE I\r\n' 01:37:59.402551 Received DATA (on stdin) 01:37:59.402628 > 33 bytes data, server => client 01:37:59.405381 '200 I modify TYPE as you wanted\r\n' 01:37:59.441978 < 10 bytes data, client => server 01:37:59.442093 'RETR 661\r\n' 01:37:59.444951 Received DATA (on stdin) 01:37:59.445035 > 37 bytes data, server => client 01:37:59.445121 '550 661: No such file or directory.\r\n' 01:38:00.771289 < 14 bytes data, client => server 01:38:00.771471 'CWD /folderB\r\n' 01:38:00.772824 Received DATA (on stdin) 01:38:00.772898 > 29 bytes data, server => client 01:38:00.777152 '250 CWD command successful.\r\n' 01:38:00.783720 < 6 bytes data, client => server 01:38:00.783803 'EPSV\r\n' 01:38:00.827146 Received DATA (on stdin) 01:38:00.827288 > 39 bytes data, server => client 01:38:00.827404 '229 Entering Passive Mode (|||43523|)\r\n' 01:38:00.873253 < 10 bytes data, client => server 01:38:00.873388 'RETR 661\r\n' 01:38:00.873465 Received DATA (on stdin) 01:38:00.873528 > 37 bytes data, server => client 01:38:00.873614 '550 661: No such file or directory.\r\n' 01:38:01.095058 < 6 bytes data, client => server 01:38:01.095236 'QUIT\r\n' 01:38:01.096552 Received DATA (on stdin) 01:38:01.096625 > 18 bytes data, server => client 01:38:01.102015 '221 bye bye baby\r\n' 01:38:01.277652 ====> Client disconnect 01:38:01.280285 Received ACKD (on stdin) 01:38:01.717505 ====> Client connect 01:38:01.719128 Received DATA (on stdin) 01:38:01.719209 > 160 bytes data, server => client 01:38:01.719338 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:38:01.719437 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:38:01.719525 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:38:01.741697 < 16 bytes data, client => server 01:38:01.741829 'USER anonymous\r\n' 01:38:01.743012 Received DATA (on stdin) 01:38:01.743082 > 33 bytes data, server => client 01:38:01.745053 '331 We are happy you popped in!\r\n' 01:38:01.747495 < 22 bytes data, client => server 01:38:01.747589 'PASS ftp@example.com\r\n' 01:38:01.748132 Received DATA (on stdin) 01:38:01.748212 > 30 bytes data, server => client 01:38:01.748308 '230 Welcome you silly person\r\n' 01:38:01.753647 < 5 bytes data, client => server 01:38:01.753725 'PWD\r\n' 01:38:01.754269 Received DATA (on stdin) 01:38:01.754337 > 30 bytes data, server => client 01:38:01.754436 '257 "/" is current directory\r\n' 01:38:01.774440 < 6 bytes data, client => server 01:38:01.774568 'EPSV\r\n' 01:38:01.818664 Received DATA (on stdin) 01:38:01.818802 > 39 bytes data, server => client 01:38:01.818915 '229 Entering Passive Mode (|||36913|)\r\n' 01:38:01.844221 < 8 bytes data, client => server 01:38:01.844342 'TYPE I\r\n' 01:38:01.845508 Received DATA (on stdin) 01:38:01.845583 > 33 bytes data, server => client 01:38:01.845669 '200 I modify TYPE as you wanted\r\n' 01:38:01.847962 < 19 bytes data, client => server 01:38:01.848042 'RETR /folderA/661\r\n' 01:38:01.850536 Received DATA (on stdin) 01:38:01.850610 > 37 bytes data, server => client 01:38:01.850696 '550 661: No such file or directory.\r\n' 01:38:01.913746 < 14 bytes data, client => server 01:38:01.913908 'CWD /folderB\r\n' 01:38:01.917421 Received DATA (on stdin) 01:38:01.917503 > 29 bytes data, server => client 01:38:01.917587 '250 CWD command successful.\r\n' 01:38:01.919674 < 6 bytes data, client => server 01:38:01.919746 'EPSV\r\n' 01:38:01.969307 Received DATA (on stdin) 01:38:01.969448 > 39 bytes data, server => client 01:38:01.969539 '229 Entering Passive Mode (|||40939|)\r\n' 01:38:01.982507 < 10 bytes data, client => server 01:38:01.982626 'RETR 661\r\n' 01:38:01.984042 Received DATA (on stdin) 01:38:01.984112 > 37 bytes data, server => client 01:38:01.984198 '550 661: No such file or directory.\r\n' 01:38:02.016118 < 6 bytes data, client => server 01:38:02.016257 'EPSV\r\n' 01:38:02.067645 Received DATA (on stdin) 01:38:02.067783 > 39 bytes data, server => client 01:38:02.067873 '229 Entering Passive Mode (|||39457|)\r\n' 01:38:02.082111 < 19 bytes data, client => server 01:38:02.082232 'RETR /folderA/661\r\n' 01:38:02.082305 Received DATA (on stdin) 01:38:02.082367 > 37 bytes data, server => client 01:38:02.082451 '550 661: No such file or directory.\r\n' 01:38:02.105040 < 6 bytes data, client => server 01:38:02.105180 'QUIT\r\n' 01:38:02.106311 Received DATA (on stdin) 01:38:02.106381 > 18 bytes data, server => client 01:38:02.106475 '221 bye bye baby\r\n' 01:38:02.116332 ====> Client disconnect 01:38:02.116651 Received ACKD (on stdin) 01:38:02.200534 ====> Client connect 01:38:02.202446 Received DATA (on stdin) 01:38:02.202521 > 160 bytes data, server => client 01:38:02.202626 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:38:02.202723 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:38:02.202806 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:38:02.210466 < 16 bytes data, client => server 01:38:02.210562 'USER anonymous\r\n' 01:38:02.211802 Received DATA (on stdin) 01:38:02.211874 > 33 bytes data, server => client 01:38:02.211958 '331 We are happy you popped in!\r\n' 01:38:02.214056 < 22 bytes data, client => server 01:38:02.214136 'PASS ftp@example.com\r\n' 01:38:02.214792 Received DATA (on stdin) 01:38:02.214859 > 30 bytes data, server => client 01:38:02.214959 '230 Welcome you silly person\r\n' 01:38:02.217921 < 5 bytes data, client => server 01:38:02.217994 'PWD\r\n' 01:38:02.218686 Received DATA (on stdin) 01:38:02.218757 > 30 bytes data, server => client 01:38:02.218858 '257 "/" is current directory\r\n' 01:38:02.247988 < 6 bytes data, client => server 01:38:02.248125 'SYST\r\n' 01:38:02.249201 Received DATA (on stdin) 01:38:02.249276 > 19 bytes data, server => client 01:38:02.251709 '215 UNIX Type: L8\r\n' 01:38:02.356680 < 6 bytes data, client => server 01:38:02.356874 'QUIT\r\n' 01:38:02.358261 Received DATA (on stdin) 01:38:02.358348 > 18 bytes data, server => client 01:38:02.358426 '221 bye bye baby\r\n' 01:38:02.359930 ====> Client disconnect 01:38:02.362354 Received ACKD (on stdin) 01:38:02.398817 ====> Client connect 01:38:02.405004 Received DATA (on stdin) 01:38:02.405088 > 160 bytes data, server => client 01:38:02.405188 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:38:02.405284 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:38:02.405368 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:38:02.408992 < 16 bytes data, client => server 01:38:02.409073 'USER anonymous\r\n' 01:38:02.409999 Received DATA (on stdin) 01:38:02.410066 > 33 bytes data, server => client 01:38:02.410166 '331 We are happy you popped in!\r\n' 01:38:02.413395 < 22 bytes data, client => server 01:38:02.413481 'PASS ftp@example.com\r\n' 01:38:02.414389 Received DATA (on stdin) 01:38:02.414456 > 30 bytes data, server => client 01:38:02.414535 '230 Welcome you silly person\r\n' 01:38:02.417047 < 5 bytes data, client => server 01:38:02.417117 'PWD\r\n' 01:38:02.417771 Received DATA (on stdin) 01:38:02.417837 > 30 bytes data, server => client 01:38:02.417936 '257 "/" is current directory\r\n' 01:38:02.430952 < 6 bytes data, client => server 01:38:02.431068 'SYST\r\n' 01:38:02.432044 Received DATA (on stdin) 01:38:02.432116 > 19 bytes data, server => client 01:38:02.432211 '215 UNIX Type: L8\r\n' 01:38:02.541635 < 6 bytes data, client => server 01:38:02.541803 'SYST\r\n' 01:38:02.543043 Received DATA (on stdin) 01:38:02.543113 > 19 bytes data, server => client 01:38:02.545043 '215 UNIX Type: L8\r\n' 01:38:02.573110 < 6 bytes data, client => server 01:38:02.573244 'QUIT\r\n' 01:38:02.574084 Received DATA (on stdin) 01:38:02.574156 > 18 bytes data, server => client 01:38:02.574230 '221 bye bye baby\r\n' 01:38:02.575198 ====> Client disconnect 01:38:02.575471 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:37:11.047409 Running IPv4 version 01:37:11.054050 Listening on port 37541 01:37:11.054454 Wrote pid 276536 to log/2/server/ftp_sockdata.pid 01:37:11.055127 Received PING (on stdin) 01:37:11.056125 Received PORT (on stdin) 01:37:11.059321 ====> Client connect 01:37:11.068897 Received DATA (on stdin) 01:37:11.069199 > 18 bytes data, server => client 01:37:11.069567 'WE ROOLZ: 202189\r\n' 01:37:11.071785 Received DISC (on stdin) 01:37:11.071910 ====> Client forcibly disconnected 01:37:11.072493 Received QUIT (on stdin) 01:37:11.072569 quits 01:37:11.073062 ============> sockfilt quits 01:37:58.095978 Running IPv4 version 01:37:58.106708 Listening on port 42535 01:37:58.107195 Wrote pid 277791 to log/2/server/ftp_sockdata.pid 01:37:58.107958 Received PING (on stdin) 01:37:58.108729 Received PORT (on stdin) 01:37:58.288445 ====> Client connect 01:37:58.651863 ====> Client disconnect 01:38:00.816660 Running IPv4 version 01:38:00.824103 Listening on port 43523 01:38:00.824581 Wrote pid 277797 to log/2/server/ftp_sockdata.pid 01:38:00.825378 Received PING (on stdin) 01:38:00.826167 Received PORT (on stdin) 01:38:00.844932 ====> Client connect 01:38:00.891801 ====> Client disconnect 01:38:01.808004 Running IPv4 version 01:38:01.815472 Listening on port 36913 01:38:01.815966 Wrote pid 277800 to log/2/server/ftp_sockdata.pid 01:38:01.816698 Received PING (on stdin) 01:38:01.817700 Received PORT (on stdin) 01:38:01.831499 ====> Client connect 01:38:01.861781 ====> Client disconnect 01:38:01.958273 Running IPv4 version 01:38:01.965778 Listening on port 40939 01:38:01.966270 Wrote pid 277803 to log/2/server/ftp_sockdata.pid 01:38:01.967021 Received PING (on stdin) 01:38:01.967946 Received PORT (on stdin) 01:38:01.976649 ====> Client connect 01:38:01.989039 ====> Client disconnect 01:38:01.056526 Running IPv4 version 01:38:01.064013 Listening on port 39457 01:38:01.064505 Wrote pid 277806 to log/2/server/ftp_sockdata.pid 01:38:01.065273 Received PING (on stdin) 01:38:01.066285 Received PORT (on stdin) 01:38:01.075751 ====> Client connect 01:38:01.086441 ====> Client disconnect === End of file ftp_sockdata.log === Start of file server.cmd Testnum 661 === End oCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind662 ../src/curl -q --output log/6/curl662.out --include --trace-ascii log/6/trace662 --trace-time http://example.com/please/gimme/662 -L -x http://127.0.0.1:38277 > log/6/stdout662 2> log/6/stderr662 f file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD CWD /folderA EPSV TYPE I RETR 661 CWD /folderB EPSV RETR 661 QUIT USER anonymous PASS ftp@example.com PWD EPSV TYPE I RETR /folderA/661 CWD /folderB EPSV RETR 661 EPSV RETR /folderA/661 QUIT USER anonymous PASS ftp@example.com PWD SYST QUIT USER anonymous PASS ftp@example.com PWD SYST SYST QUIT === End of file server.input === Start of file stderr661 URL: ftp://127.0.0.1:39881/ * Trying 127.0.0.1:39881... * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 53396 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' > CWD /folderA < 250 CWD command successful. > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||42535|) * Connecting to 127.0.0.1 (127.0.0.1) port 42535 * Trying 127.0.0.1:42535... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 42535) from 127.0.0.1 port 57660 > TYPE I < 200 I modify TYPE as you wanted > RETR 661 < 550 661: No such file or directory. * RETR response: 550 * Remembering we are in dir "/folderA/" * Connection #0 to host 127.0.0.1:39881 left intact * Reusing existing ftp: connection with host 127.0.0.1 > CWD /folderB < 250 CWD command successful. > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||43523|) * Connecting to 127.0.0.1 (127.0.0.1) port 43523 * Trying 127.0.0.1:43523... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 43523) from 127.0.0.1 port 43394 > RETR 661 < 550 661: No such file or directory. * RETR response: 550 * Remembering we are in dir "/folderB/" * Connection #0 to host 127.0.0.1:39881 left intact * Trying 127.0.0.1:39881... * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 53400 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||36913|) * Connecting to 127.0.0.1 (127.0.0.1) port 36913 * Trying 127.0.0.1:36913... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 36913) from 127.0.0.1 port 48556 > TYPE I < 200 I modify TYPE as you wanted > RETR /folderA/661 < 550 661: No such file or directory. * RETR response: 550 * Connection #0 to host 127.0.0.1:39881 left intact * Reusing existing ftp: connection with host 127.0.0.1 > CWD /folderB < 250 CWD command successful. > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||40939|) * Connecting to 127.0.0.1 (127.0.0.1) port 40939 * Trying 127.0.0.1:40939... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 40939) from 127.0.0.1 port 48796 > RETR 661 < 550 661: No such file or directory. * RETR response: 550 * Remembering we are in dir "/folderB/" * Connection #0 to host 127.0.0.1:39881 left intact * Reusing existing ftp: connection with host 127.0.0.1 > EPSV * Connect data stream passively < 229 Entering Passive Mode (|||39457|) * Connecting to 127.0.0.1 (127.0.0.1) port 39457 * Trying 127.0.0.1:39457... * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 39457) from 127.0.0.1 port 58002 > RETR /folderA/661 < 550 661: No such file or directory. * RETR response: 550 * Remembering we are in dir "/folderB/" * Connection #0 to host 127.0.0.1:39881 left intact * Trying 127.0.0.1:39881... * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 53410 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' * Request has same path as previous transfer > SYST < 215 UNIX Type: L8 * Remembering we are in dir "" * Connection #0 to host 127.0.0.1:39881 left intact * Trying 127.0.0.1:39881... * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 53416 < 220- _ _ ____ _ < 220- ___| | | | _ \| | < 220- / __| | | | |_) | | < 220- | (__| |_| | _ {| |___ < 220 \___|\___/|_| \_\_____| > USER anonymous < 331 We are happy you popped in > PASS ftp@example.com < 230 Welcome you silly person > PWD < 257 "/" is current directory * Entry path is '/' * Request has same path as previous transfer > SYST < 215 UNIX Type: L8 * Remembering we are in dir "" * Connection #0 to host 127.0.0.1:39881 left intact * Reusing existing ftp: connection with host 127.0.0.1 * Request has same path as previous transfer > SYST < 215 UNIX Type: L8 * Remembering we are in dir "" * Connection #0 to host 127.0.0.1:39881 left intact Test ended with result 0 === End of file stderr661 === Start of file valgrind661 ==276545== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind661 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 666 in state 4 Runner 2 (id 185908) running test 671 in state 4 Runner 3 (id 185910) running test 668 in state 4 Runner 4 (id 185912) running test 669 in state 4 Runner 5 (id 185914) running test 670 in state 4 Runner 6 (id 185916) running test 662 in state 4 Runner 7 (id 185918) running test 663 in state 4 Runner 8 (id 185920) running test 667 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 666 in state 4 Runner 2 (id 185908) running test 671 in state 4 Runner 3 (id 185910) running test 668 in state 4 Runner 4 (id 185912) running test 669 in state 4 Runner 5 (id 185914) running test 670 in state 4 Runner 6 (id 185916) running test 662 in state 4 Runner 7 (id 185918) running test 663 in state 4 Runner 8 (id 185920) running test 667 in state 4 test 0662...[HTTP redirect with whitespace in absolute Location: URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind662 ../src/curl -q --output log/6/curl662.out --include --trace-ascii log/6/trace662 --trace-time http://example.com/please/gimme/662 -L -x http://127.0.0.1:38277 > log/6/stdout662 2> log/6/stderr662 valgrind ERROR ==276755== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 662 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind662 ../src/curl -q --output log/6/curl662.out --include --trace-ascii log/6/trace662 --trace-time http://example.com/please/gimme/662 -L -x http://127.0.0.1:38277 > log/6/stdout662 2> log/6/stderr662 === End of file commands.log === Start of file curl662.out HTTP/1.1 302 OK Location: http://example.net/tes t case=/6620002 Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 0 HTTP/1.1 200 OK Location: this should be ignored Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 5 body === End of file curl662.out === Start of file http_server.log 01:37:40.014902 ====> Client connect 01:37:40.015123 accept_connection 3 returned 4 01:37:40.015207 accept_connection 3 returned 0 01:37:40.025068 Read 93 bytes 01:37:40.025232 Process 93 bytes request 01:37:40.025324 Got request: GET /verifiedserver HCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind663 ../src/curl -q --output log/7/curl663.out --include --trace-ascii log/7/trace663 --trace-time http://example.com/please/../gimme/663?foobar#hello -L -x http://127.0.0.1:34897 > log/7/stdout663 2> log/7/stderr663 TTP/1.1 01:37:40.025390 Are-we-friendly question received 01:37:40.025537 Wrote request (93 bytes) input to log/6/server.input 01:37:40.025646 Identifying ourselves as friends 01:37:40.025835 Response sent (57 bytes) and written to log/6/server.response 01:37:40.025899 special request received, no persistency 01:37:40.025956 ====> Client disconnect 0 01:38:27.528054 ====> Client connect 01:38:27.528201 accept_connection 3 returned 4 01:38:27.528293 accept_connection 3 returned 0 01:38:28.651454 Read 139 bytes 01:38:28.651672 Process 139 bytes request 01:38:28.651778 Got request: GET http://example.com/please/gimme/662 HTTP/1.1 01:38:28.651858 Serve test number 662 part 0 01:38:28.652073 - request found to be complete (662) 01:38:28.652362 Wrote request (139 bytes) input to log/6/server.input 01:38:28.652487 Send response test662 section 01:38:28.652822 Response sent (125 bytes) and written to log/6/server.response 01:38:28.652892 => persistent connection request ended, awaits new request 01:38:30.874183 Read 146 bytes 01:38:30.874382 Process 146 bytes request 01:38:30.874476 Got request: GET http://example.net/tes%20t%20case=/6620002 HTTP/1.1 01:38:30.874546 Serve test number 662 part 2 01:38:30.874728 - request found to be complete (662) 01:38:30.874970 Wrote request (146 bytes) input to log/6/server.input 01:38:30.875070 Send response test662 section 01:38:30.875463 Response sent (114 bytes) and written to log/6/server.response 01:38:30.875536 => persistent connection request ended, awaits new request 01:38:32.047179 Connection closed by client 01:38:32.047384 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 38562 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 662 === End of file server.cmd === Start of file server.input GET http://example.com/please/gimme/662 HTTP/1.1 Host: example.com User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://example.net/tes%20t%20case=/6620002 HTTP/1.1 Host: example.net User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 302 OK Location: http://example.net/tes t case=/6620002 Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 0 HTTP/1.1 200 OK Location: this should be ignored Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 5 body === End of file server.response === Start of file stderr662 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 5 0 5 0 0 0 0 --:--:-- 0:00:06 --:--:-- 19 100 5 0 5 0 0 0 0 --:--:-- 0:00:06 --:--:-- 13 === End of file stderr662 === Start of file trace662 01:38:27.595460 * Trying 127.0.0.1:38277... 01:38:28.503663 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 41134 01:38:28.642350 * using HTTP/1.x 01:38:29.080224 => Send header, 139 bytes (0x8b) 0000: GET http://example.com/please/gimme/662 HTTP/1.1 0032: Host: example.com 0045: User-Agent: curl/8.17.0 005e: Accept: */* 006b: Proxy-Connection: Keep-Alive 0089: 01:38:29.425044 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 302 OK 01:38:29.813264 <= Recv header, 50 bytes (0x32) 0000: Location: http://example.net/tes t case=/6620002 01:38:29.904234 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:38:29.950458 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 0 01:38:30.038307 * Ignoring the response-body 01:38:30.058425 * setting size while ignoring 01:38:30.074455 <= Recv header, 2 bytes (0x2) 0000: 01:38:30.609071 * Connection #0 to host 127.0.0.1:38277 left intact 01:38:30.736702 * Issue another request to this URL: 'http://example.net/tes%20t%20case=/6620002' 01:38:31.182771 * Reusing existing http: connection with proxy 127.0.0.1 01:38:31.266802 => Send header, 146 bytes (0x92) 0000: GET http://example.net/tes%20t%20case=/6620002 HTTP/1.1 0039: Host: example.net 004c: User-Agent: curl/8.17.0 0065: Accept: */* 0072: Proxy-Connection: Keep-Alive 0090: 01:38:31.318712 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:38:31.330196 <= Recv header, 34 bytes (0x22) 0000: Location: this should be ignored 01:38:31.338359 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:38:31.345976 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 5 01:38:31.362314 <= Recv header, 2 bytes (0x2) 0000: 01:38:31.388194 <= Recv data, 5 bytes (0x5) 0000: body. 01:38:31.609972 * Connection #0 to host 127.0.0.1:38277 left intact === End of file trace662 === Start of file valgrind662 ==276755== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind662 test 0663...[HTTP redirect with dotdots and whitespaces in absolute Location: URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind663 ../src/curl -q --output log/7/curl663.out --include --trace-ascii log/7/trace663 --trace-time http://example.com/please/../gimme/663?foobar#hello -L -x http://127.0.0.1:34897 > log/7/stdout663 2> log/7/stderr663 valgrind ERROR ==276905== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 663 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind663 ../src/curl -q --output log/7/curl663.out --include --trace-ascii log/7/trace663 --trace-time http://example.com/please/../gimme/663?foobar#hello -L -x http://127.0.0.1:34897 > log/7/stdout663 2> log/7/stderr663 === End of file commands.log === Start of file curl663.out HTTP/1.1 302 OK Location: http://example.net/there/it/is/../../tes t case=/6630002? yes no Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 0 HTTP/1.1 200 OK Location: this should be ignored Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 5 body === End of file curl663.out === Start of file http_server.log 01:37:42.265305 ====> Client connect 01:37:42.265479 accept_connection 3 returned 4 01:37:42.265554 accept_connection 3 returned 0 01:37:42.272858 Read 93 bytes 01:37:42.272992 Process 93 bytes request 01:37:42.273085 Got request: GET /verifiedserver HTTP/1.1 01:37:42.273154 Are-we-friendly question received 01:37:42.273280 Wrote request (93 bytes) input to log/7/server.input 01:37:42.273378 Identifying ourselves as friends 01:37:42.273543 Response sent (57 bytes) and written to log/7/server.response 01:37:42.273608 special request received, no persistency 01:37:42.273664 ====> Client disconnect 0 01:38:29.730319 ====> Client connect 01:38:29.730469 accept_connection 3 returned 4 01:38:29.730552 accept_connection 3 returned 0 01:38:30.875620 Read 139 bytes 01:38:30.875779 Process 139 bytes request 01:38:30.875879 Got request: GET http://example.com/giCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind666 ./libtest/libtests lib666 http://127.0.0.1:40641/666 > log/1/stdout666 2> log/1/stderr666 mme/663?foobar HTTP/1.1 01:38:30.875958 Serve test number 663 part 0 01:38:30.876178 - request found to be complete (663) 01:38:30.876472 Wrote request (139 bytes) input to log/7/server.input 01:38:30.876590 Send response test663 section 01:38:30.876966 Response sent (151 bytes) and written to log/7/server.response 01:38:30.877041 => persistent connection request ended, awaits new request 01:38:33.204362 Read 160 bytes 01:38:33.204584 Process 160 bytes request 01:38:33.204689 Got request: GET http://example.net/there/tes%20t%20case=/6630002?+yes+no HTTP/1.1 01:38:33.204770 Serve test number 663 part 2 01:38:33.205008 - request found to be complete (663) 01:38:33.205256 Wrote request (160 bytes) input to log/7/server.input 01:38:33.205359 Send response test663 section 01:38:33.205766 Response sent (114 bytes) and written to log/7/server.response 01:38:33.205841 => persistent connection request ended, awaits new request 01:38:34.312782 Connection closed by client 01:38:34.312976 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 39520 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 663 === End of file server.cmd === Start of file server.input GET http://example.com/gimme/663?foobar HTTP/1.1 Host: example.com User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive GET http://example.net/there/tes%20t%20case=/6630002?+yes+no HTTP/1.1 Host: example.net User-Agent: curl/8.17.0 Accept: */* Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 302 OK Location: http://example.net/there/it/is/../../tes t case=/6630002? yes no Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 0 HTTP/1.1 200 OK Location: this should be ignored Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 5 body === End of file server.response === Start of file stderr663 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 5 0 5 0 0 0 0 --:--:-- 0:00:06 --:--:-- 14 === End of file stderr663 === Start of file trace663 01:38:29.778390 * Trying 127.0.0.1:34897... 01:38:30.707590 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 41942 01:38:30.844495 * using HTTP/1.x 01:38:31.306335 => Send header, 139 bytes (0x8b) 0000: GET http://example.com/gimme/663?foobar HTTP/1.1 0032: Host: example.com 0045: User-Agent: curl/8.17.0 005e: Accept: */* 006b: Proxy-Connection: Keep-Alive 0089: 01:38:31.679897 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 302 OK 01:38:32.085702 <= Recv header, 76 bytes (0x4c) 0000: Location: http://example.net/there/it/is/../../tes t case=/66300 0040: 02? yes no 01:38:32.184428 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:38:32.229400 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 0 01:38:32.313943 * Ignoring the response-body 01:38:32.331906 * setting size while ignoring 01:38:32.347923 <= Recv header, 2 bytes (0x2) 0000: 01:38:32.878190 * Connection #0 to host 127.0.0.1:34897 left intact 01:38:33.036628 * Issue another request to this URL: 'http://example.net/there/tes%20t%20case=/6630002?+yes+no' 01:38:33.501661 * Reusing existing http: connection with proxy 127.0.0.1 01:38:33.597172 => Send header, 160 bytes (0xa0) 0000: GET http://example.net/there/tes%20t%20case=/6630002?+yes+no HTT 0040: P/1.1 0047: Host: example.net 005a: User-Agent: curl/8.17.0 0073: Accept: */* 0080: Proxy-Connection: Keep-Alive 009e: 01:38:33.640158 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:38:33.650793 <= Recv header, 34 bytes (0x22) 0000: Location: this should be ignored 01:38:33.658515 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:38:33.665425 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 5 01:38:33.680015 <= Recv header, 2 bytes (0x2) 0000: 01:38:33.704232 <= Recv data, 5 bytes (0x5) 0000: body. 01:38:33.901742 * Connection #0 to host 127.0.0.1:34897 left intact === End of file trace663 === Start of file valgrind663 ==276905== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind663 test 0666...[HTTP mime post with binary-encoded huge data contents] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind666 ./libtest/libtests lib666 http://127.0.0.1:40641/666 > log/1/stdout666 2> log/1/stderr666 valgrind ERROR ==277097== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 666 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind666 ./libtest/libtests lib666 http://127.0.0.1:40641/666 > log/1/stdout666 2> log/1/stderr666 === End of file commands.log === Start of file http_server.log 01:37:47.104983 ====> Client connect 01:37:47.105148 accept_connection 3 returned 4 01:37:47.105219 accept_connection 3 returned 0 01:37:47.111601 Read 93 bytes 01:37:47.111707 Process 93 bytes request 01:37:47.111795 Got request: GET /verifiedserver HTTP/1.1 01:37:47.111853 Are-we-friendly question received 01:37:47.111958 Wrote request (93 bytes) input to log/1/server.input 01:37:47.112039 Identifying ourselves as friends 01:37:47.112204 Response sent (57 bytes) and written to log/1/server.response 01:37:47.112261 special request received, no persistency 01:37:47.112309 ====> Client disconnect 0 01:38:39.590824 ====> Client connect 01:38:39.590990 accept_connection 3 returned 4 01:38:39.591081 accept_connection 3 returned 0 01:38:41.183881 Read 16411 bytes 01:38:41.184108 Process 16411 bytes request 01:38:41.184232 Got request: POST /666 HTTP/1.1 01:38:41.184315 Serve test number 666 part 0 01:38:41.184859 - request found to be complete (666) 01:38:41.185294 Found Content-Length: 17237 in the request 01:38:41.498335 Read 999 bytes 01:38:41.498553 Process 17410 bytes request [CONTINUED] 01:38:41.498630 - request found to be complete (666) 01:38:41.499391 Wrote request (17410 bytes) input to log/1/server.input 01:38:41.499494 Send response test666 section 01:38:41.499949 connection close instruction "swsclose" found in response 01:38:41.500158 Response sent (113 bytes) and written to log/1/server.response 01:38:41.500232 instructed to close connection after server-reply 01:38:41.500299 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 60620 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 666 === End of file server.cmd === Start of file server.input POST /666 HTTP/1.1 Host: 127.0.0.1:40641 Accept: */* Content-Length: 17237 Content-Type: multipart/form-data; boundary=------------------------zH6oxchkIcbcdyzRLocoUN --------------------------zH6oxchkIcbcdyzRLocoUN Content-Disposition: form-data; name="upfile"; filename="myfile.txt" Content-Type: text/plain Content-Transfer-Encoding: binary ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX ZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVW YZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV XYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTU WXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRST VWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRS UVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQR TUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQ STUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOP RSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO QRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMN PQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLM OPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL NOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJK MNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJ LMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI KLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGH JKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFG IJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF HIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDE GHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCD FGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABC EFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZAB DEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZA CDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ BCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXY ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX ZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVW YZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV XYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTU WXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRST VWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRS UVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQR TUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQ STUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOP RSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO QRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMN PQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLM OPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL NOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJK MNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJ LMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI KLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGH JKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFG IJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF HIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDE GHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCD FGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABC EFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZAB DEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZA CDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ BCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXY ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX ZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVW YZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV XYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTU WXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRST VWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRS UVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQR TUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQ STUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOP RSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO QRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMN PQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLM OPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL NOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJK MNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJ LMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI KLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGH JKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFG IJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF HIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDE GHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCD FGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABC EFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZAB DEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZA CDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ BCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXY ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX ZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVW YZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV XYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTU WXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRST VWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRS UVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQR TUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQ STUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOP RSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO QRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMN PQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLM OPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL NOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJK MNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJ LMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI KLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGH JKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFG IJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF HIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDE GHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCD FGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABC EFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZAB DEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZA CDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ BCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXY ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX ZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVW YZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV XYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTU WXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRST VWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRS UVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQR TUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQ STUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOP RSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO QRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMN PQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLM OPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL NOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJK MNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJ LMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI KLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGH JKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFG IJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF HIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDE GHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCD FGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABC EFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZAB DEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZA CDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ BCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXY ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX ZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVW YZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV XYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTU WXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRST VWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRS UVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQR TUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQ STUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOP RSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO QRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMN PQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLM OPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL NOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJK MNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJ LMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI KLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGH JKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFG IJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF HIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDE GHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCD FGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABC EFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZAB DEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZA CDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ BCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXY ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX ZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVW YZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV XYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTU WXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRST VWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRS UVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQR TUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQ STUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOP RSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO QRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMN PQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLM OPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL NOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJK MNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJ LMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI KLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGH JKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFG IJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF HIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDE GHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCD FGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABC EFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZAB DEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZA CDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ BCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXY ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX ZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVW YZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV XYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTU WXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRST VWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRS UVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQR TUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQ STUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOP RSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO QRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMN PQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLM OPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL NOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJK MNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJ LMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI KLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGH JKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFG IJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF HIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDE GHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind667 ./libtest/libtests lib667 http://127.0.0.1:39461/667 > log/8/stdout667 2> log/8/stderr667 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind668 ./libtest/libtests lib668 http://127.0.0.1:46853/668 log/3/file668.txt > log/3/stdout668 2> log/3/stderr668 HIJKLMNOPQRSTUVWXYZABCD FGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABC EFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZAB DEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZA CDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ BCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXY ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX ZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVW YZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV XYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTU WXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRST VWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRS UVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQR TUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQ STUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOP RSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO QRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMN PQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLM OPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV --------------------------zH6oxchkIcbcdyzRLocoUN-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 3 OK === End of file server.response === Start of file stderr666 URL: http://127.0.0.1:40641/666 * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 55040 * using HTTP/1.x > POST /666 HTTP/1.1 Host: 127.0.0.1:40641 Accept: */* Content-Length: 17237 Content-Type: multipart/form-data; boundary=------------------------zH6oxchkIcbcdyzRLocoUN * upload completely sent off: 17237 bytes < HTTP/1.1 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Content-Length: 3 < * Connection #0 to host 127.0.0.1:40641 left intact Test ended with result 0 === End of file stderr666 === Start of file stdout666 HTTP/1.1 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Length: 3 OK === End of file stdout666 === Start of file valgrind666 ==277097== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind666 test 0667...[HTTP chunked mimepost using single-byte read callback with encoder] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind667 ./libtest/libtests lib667 http://127.0.0.1:39461/667 > log/8/stdout667 2> log/8/stderr667 valgrind ERROR ==277192== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 667 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind667 ./libtest/libtests lib667 http://127.0.0.1:39461/667 > log/8/stdout667 2> log/8/stderr667 === End of file commands.log === Start of file http_server.log 01:37:47.934735 ====> Client connect 01:37:47.934897 accept_connection 3 returned 4 01:37:47.934969 accept_connection 3 returned 0 01:37:47.942445 Read 93 bytes 01:37:47.942544 Process 93 bytes request 01:37:47.942628 Got request: GET /verifiedserver HTTP/1.1 01:37:47.942686 Are-we-friendly question received 01:37:47.942793 Wrote request (93 bytes) input to log/8/server.input 01:37:47.942876 Identifying ourselves as friends 01:37:47.943020 Response sent (57 bytes) and written to log/8/server.response 01:37:47.943078 special request received, no persistency 01:37:47.943128 ====> Client disconnect 0 01:38:39.974287 ====> Client connect 01:38:39.974440 accept_connection 3 returned 4 01:38:39.974531 accept_connection 3 returned 0 01:38:41.367410 Read 200 bytes 01:38:41.367618 Process 200 bytes request 01:38:41.367715 Got request: POST /667 HTTP/1.1 01:38:41.367791 Serve test number 667 part 0 01:38:41.368007 - request found to be complete (667) 01:38:43.002163 Read 139 bytes 01:38:43.002374 Process 339 bytes request [CONTINUED] 01:38:43.002437 - request found to be complete (667) 01:38:43.104493 Read 9 bytes 01:38:43.104691 Process 348 bytes request [CONTINUED] 01:38:43.104754 - request found to be complete (667) 01:38:43.157247 Read 64 bytes 01:38:43.157446 Process 412 bytes request [CONTINUED] 01:38:43.157510 - request found to be complete (667) 01:38:43.188736 Read 5 bytes 01:38:43.188901 Process 417 bytes request [CONTINUED] 01:38:43.188965 - request found to be complete (667) 01:38:43.189235 Wrote request (417 bytes) input to log/8/server.input 01:38:43.189340 Send response test667 section 01:38:43.189555 connection close instruction "swsclose" found in response 01:38:43.189709 Response sent (141 bytes) and written to log/8/server.response 01:38:43.189771 instructed to close connection after server-reply 01:38:43.189827 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 53796 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 667 === End of file server.cmd === Start of file server.input POST /667 HTTP/1.1 Host: 127.0.0.1:39461 Accept: */* Transfer-Encoding: chunked Content-Type: multipart/form-data; boundary=------------------------RQ1hdiyIVl11ImKsqppNkG Expect: 100-continue 85 --------------------------RQ1hdiyIVl11ImKsqppNkG Content-Disposition: form-data; name="field" Content-Transfer-Encoding: base64 4 ZHVt 3a bXk= --------------------------RQ1hdiyIVl11ImKsqppNkG-- 0 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file server.response === Start of file stderr667 URL: http://127.0.0.1:39461/667 * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 33448 * using HTTP/1.x > POST /667 HTTP/1.1 Host: 127.0.0.1:39461 Accept: */* Transfer-Encoding: chunked Content-Type: multipart/form-data; boundary=------------------------RQ1hdiyIVl11ImKsqppNkG Expect: 100-continue * Done waiting for 100-continue * upload completely sent off: 217 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * shutting down connection #0 Test ended with result 0 === End of file stderr667 === Start of file stdout667 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file stdout667 === Start of file valgrind667 ==277192== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind667 test 0668...[HTTP mimepost early end of data detection] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind668 ./libtest/libtests lib668 http://127.0.0.1:46853/668 log/3/file668.txt > log/3/stdout668 2> log/3/stderr668 valgrind ERROR ==277370== error calling PR_SET_PTRACER, vgCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind669 ../src/curl -q --output log/4/curl669.out --include --trace-ascii log/4/trace669 --trace-time http://127.0.0.1:42621/we/want/669 -H 'Content-type: multipart/form-data; charset=utf-8' -F name=daniel -F tool=curl > log/4/stdout669 2> log/4/stderr669 db might block == Contents of files in the log/3/ dir after test 668 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind668 ./libtest/libtests lib668 http://127.0.0.1:46853/668 log/3/file668.txt > log/3/stdout668 2> log/3/stderr668 === End of file commands.log === Start of file file668.txt This is data from a file === End of file file668.txt === Start of file http_server.log 01:37:49.730853 ====> Client connect 01:37:49.731034 accept_connection 3 returned 4 01:37:49.731112 accept_connection 3 returned 0 01:37:49.738774 Read 93 bytes 01:37:49.738914 Process 93 bytes request 01:37:49.739002 Got request: GET /verifiedserver HTTP/1.1 01:37:49.739067 Are-we-friendly question received 01:37:49.739190 Wrote request (93 bytes) input to log/3/server.input 01:37:49.739286 Identifying ourselves as friends 01:37:49.739439 Response sent (57 bytes) and written to log/3/server.response 01:37:49.739501 special request received, no persistency 01:37:49.739556 ====> Client disconnect 0 01:38:41.676768 ====> Client connect 01:38:41.676918 accept_connection 3 returned 4 01:38:41.676998 accept_connection 3 returned 0 01:38:43.005382 Read 200 bytes 01:38:43.005552 Process 200 bytes request 01:38:43.005645 Got request: POST /668 HTTP/1.1 01:38:43.005714 Serve test number 668 part 0 01:38:43.005916 - request found to be complete (668) 01:38:44.613205 Read 211 bytes 01:38:44.613386 Process 411 bytes request [CONTINUED] 01:38:44.613448 - request found to be complete (668) 01:38:44.685660 Read 10 bytes 01:38:44.685857 Process 421 bytes request [CONTINUED] 01:38:44.685924 - request found to be complete (668) 01:38:44.711597 Read 157 bytes 01:38:44.711771 Process 578 bytes request [CONTINUED] 01:38:44.711840 - request found to be complete (668) 01:38:44.796453 Read 85 bytes 01:38:44.796643 Process 663 bytes request [CONTINUED] 01:38:44.796713 - request found to be complete (668) 01:38:44.831417 Read 5 bytes 01:38:44.831625 Process 668 bytes request [CONTINUED] 01:38:44.831697 - request found to be complete (668) 01:38:44.832002 Wrote request (668 bytes) input to log/3/server.input 01:38:44.832117 Send response test668 section 01:38:44.832355 connection close instruction "swsclose" found in response 01:38:44.832513 Response sent (141 bytes) and written to log/3/server.response 01:38:44.832575 instructed to close connection after server-reply 01:38:44.832636 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 60500 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 668 === End of file server.cmd === Start of file server.input POST /668 HTTP/1.1 Host: 127.0.0.1:46853 Accept: */* Transfer-Encoding: chunked Content-Type: multipart/form-data; boundary=------------------------H67WrwMkweblA9HiLZP4lI Expect: 100-continue cd --------------------------H67WrwMkweblA9HiLZP4lI Content-Disposition: form-data; name="field1" dummy --------------------------H67WrwMkweblA9HiLZP4lI Content-Disposition: form-data; name="field2" 5 dummy 97 --------------------------H67WrwMkweblA9HiLZP4lI Content-Disposition: form-data; name="field3"; filename="file668.txt" Content-Type: text/plain 4f This is data from a file --------------------------H67WrwMkweblA9HiLZP4lI-- 0 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:4f:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file server.response === Start of file stderr668 URL: http://127.0.0.1:46853/668 * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 38424 * using HTTP/1.x > POST /668 HTTP/1.1 Host: 127.0.0.1:46853 Accept: */* Transfer-Encoding: chunked Content-Type: multipart/form-data; boundary=------------------------H67WrwMkweblA9HiLZP4lI Expect: 100-continue * Done waiting for 100-continue * upload completely sent off: 468 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:4f:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * shutting down connection #0 Test ended with result 0 === End of file stderr668 === Start of file stdout668 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:4f:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file stdout668 === Start of file valgrind668 ==277370== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind668 test 0669...[HTTP custom Content-Type with parameter] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind669 ../src/curl -q --output log/4/curl669.out --include --trace-ascii log/4/trace669 --trace-time http://127.0.0.1:42621/we/want/669 -H 'Content-type: multipart/form-data; charset=utf-8' -F name=daniel -F tool=curl > log/4/stdout669 2> log/4/stderr669 valgrind ERROR ==277500== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 669 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind669 ../src/curl -q --output log/4/curl669.out --include --trace-ascii log/4/trace669 --trace-time http://127.0.0.1:42621/we/want/669 -H 'Content-type: multipart/form-data; charset=utf-8' -F name=daniel -F tool=curl > log/4/stdout669 2> log/4/stderr669 === End of file commands.log === Start of file curl669.out HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file curl669.out === Start of file http_server.log 01:37:52.042956 ====> Client connect 01:37:52.043140 accept_connection 3 returned 4 01:37:52.043227 accept_connection 3 returned 0 01:37:52.055039 Read 93 bytes 01:37:52.055185 Process 93 bytes request 01:37:52.055282 Got request: GET /verifiedserver HTTP/1.1 01:37:52.055348 Are-we-friendly question received 01:37:52.055486 Wrote request (93 bytes) input to log/4/server.input 01:37:52.055585 Identifying ourselves as friends 01:37:52.055789 Response sent (57 bytes) and written to log/4/server.response 01:37:52.055856 special request received, no persistency 01:37:52.055916 ====> Client disconnect 0 01:38:46.203410 ====> Client connect 01:38:46.203554 accept_connection 3 returned 4 01:38:46.203628 accept_connection 3 returned 0 01:38:47.811608 Read 479 bytes 01:38:47.811833 Process 479 bytes request 01:38:47.811929 Got request: POST /we/want/669 HTTP/1.1 01:38:47.812004 Serve test number 669 part 0 01:38:47.812193 - request found to be complete (669) 01:38:47.812349 Found Content-Length: 260 in the request 01:38:47.812528 Wrote request (479 bytes) input to log/4/server.input 01:38:47.812639 Send response test669 section 01:38:47.812849 connection close instruction "swsclose" found in response 01:38:47.813055 Response sent (98 bytes) and written to log/4/server.response 01:38:47.813121 instructed to close connection after server-reply 01:38:47.813182 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 56298 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind670 ./libtest/libtests lib670 http://127.0.0.1:46263/670 > log/5/stdout670 2> log/5/stderr670 1:42621 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 669 === End of file server.cmd === Start of file server.input POST /we/want/669 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* Content-Length: 260 Content-Type: multipart/form-data; charset=utf-8; boundary=------------------------MbpzQqfhVjV3X7BY9voEux --------------------------MbpzQqfhVjV3X7BY9voEux Content-Disposition: form-data; name="name" daniel --------------------------MbpzQqfhVjV3X7BY9voEux Content-Disposition: form-data; name="tool" curl --------------------------MbpzQqfhVjV3X7BY9voEux-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file server.response === Start of file stderr669 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 260 0 0 100 260 0 63 0:00:04 0:00:04 --:--:-- 90 100 271 0 11 100 260 2 52 0:00:05 0:00:04 0:00:01 71 100 271 0 11 100 260 2 50 0:00:05 0:00:05 --:--:-- 69 === End of file stderr669 === Start of file trace669 01:38:45.269252 * Trying 127.0.0.1:42621... 01:38:46.157190 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 49074 01:38:46.279589 * using HTTP/1.x 01:38:47.242411 => Send header, 219 bytes (0xdb) 0000: POST /we/want/669 HTTP/1.1 001c: Host: 127.0.0.1:42621 0033: User-Agent: curl/8.17.0 004c: Accept: */* 0059: Content-Length: 260 006e: Content-Type: multipart/form-data; charset=utf-8; boundary=----- 00ae: -------------------MbpzQqfhVjV3X7BY9voEux 00d9: 01:38:47.362272 => Send data, 260 bytes (0x104) 0000: --------------------------MbpzQqfhVjV3X7BY9voEux 0032: Content-Disposition: form-data; name="name" 005f: 0061: daniel 0069: --------------------------MbpzQqfhVjV3X7BY9voEux 009b: Content-Disposition: form-data; name="tool" 00c8: 00ca: curl 00d0: --------------------------MbpzQqfhVjV3X7BY9voEux-- 01:38:47.468228 * upload completely sent off: 260 bytes 01:38:47.706465 * HTTP 1.0, assume close after body 01:38:47.724033 <= Recv header, 25 bytes (0x19) 0000: HTTP/1.0 200 OK swsclose. 01:38:48.051032 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:38:48.144815 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:38:48.216618 <= Recv header, 1 bytes (0x1) 0000: . 01:38:48.263658 <= Recv data, 11 bytes (0xb) 0000: blablabla.. 01:38:48.368363 <= Recv data, 0 bytes (0x0) 01:38:48.830223 * shutting down connection #0 === End of file trace669 === Start of file valgrind669 ==277500== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind669 test 0670...[Request pause from mime read callback: multi] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind670 ./libtest/libtests lib670 http://127.0.0.1:46263/670 > log/5/stdout670 2> log/5/stderr670 valgrind ERROR ==277678== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 670 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind670 ./libtest/libtests lib670 http://127.0.0.1:46263/670 > log/5/stdout670 2> log/5/stderr670 === End of file commands.log === Start of file http_server.log 01:37:54.048814 ====> Client connect 01:37:54.049001 accept_connection 3 returned 4 01:37:54.049081 accept_connection 3 returned 0 01:37:54.055877 Read 93 bytes 01:37:54.056012 Process 93 bytes request 01:37:54.056105 Got request: GET /verifiedserver HTTP/1.1 01:37:54.056174 Are-we-friendly question received 01:37:54.056297 Wrote request (93 bytes) input to log/5/server.input 01:37:54.056394 Identifying ourselves as friends 01:37:54.056576 Response sent (57 bytes) and written to log/5/server.response 01:37:54.056644 special request received, no persistency 01:37:54.056710 ====> Client disconnect 0 01:38:44.872577 ====> Client connect 01:38:44.872726 accept_connection 3 returned 4 01:38:44.872805 accept_connection 3 returned 0 01:38:46.306729 Read 270 bytes 01:38:46.306953 Process 270 bytes request 01:38:46.307053 Got request: POST /670 HTTP/1.1 01:38:46.307125 Serve test number 670 part 0 01:38:46.307318 - request found to be complete (670) 01:38:46.307509 Found Content-Length: 154 in the request 01:38:50.929764 Read 55 bytes 01:38:50.929983 Process 325 bytes request [CONTINUED] 01:38:50.930060 - request found to be complete (670) 01:38:50.930405 Wrote request (325 bytes) input to log/5/server.input 01:38:50.930524 Send response test670 section 01:38:50.930785 connection close instruction "swsclose" found in response 01:38:50.931011 Response sent (141 bytes) and written to log/5/server.response 01:38:50.931087 instructed to close connection after server-reply 01:38:50.931157 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 36702 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 670 === End of file server.cmd === Start of file server.input POST /670 HTTP/1.1 Host: 127.0.0.1:46263 Accept: */* Content-Length: 154 Content-Type: multipart/form-data; boundary=------------------------WjCwaqbsSLAxJIG7J3IGsX --------------------------WjCwaqbsSLAxJIG7J3IGsX Content-Disposition: form-data; name="field" AB --------------------------WjCwaqbsSLAxJIG7J3IGsX-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file server.response === Start of file stderr670 URL: http://127.0.0.1:46263/670 * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 45962 * using HTTP/1.x > POST /670 HTTP/1.1 Host: 127.0.0.1:46263 Accept: */* Content-Length: 154 Content-Type: multipart/form-data; boundary=------------------------WjCwaqbsSLAxJIG7J3IGsX * upload completely sent off: 154 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * shutting down connection #0 Test ended with result 0 === End of file stderr670 === Start of file stdout670 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file stdout670 === Start of file valgrind670 ==277678== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind670 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 674 in state 4 Runner 2 (id 185908) running test 671 in state 4 Runner 3CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind671 ./libtest/libtests lib670 http://127.0.0.1:39863/671 > log/2/stdout671 2> log/2/stderr671 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind674 ./libtest/libtests lib674 http://127.0.0.1:40641/674 > log/1/stdout674 2> log/1/stderr674 (id 185910) running test 676 in state 4 Runner 4 (id 185912) running test 677 in state 4 Runner 5 (id 185914) running test 679 in state 4 Runner 6 (id 185916) running test 672 in state 4 Runner 7 (id 185918) running test 673 in state 4 Runner 8 (id 185920) running test 675 in state 4 test 0671...[Request pause from mime read callback: easy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind671 ./libtest/libtests lib670 http://127.0.0.1:39863/671 > log/2/stdout671 2> log/2/stderr671 valgrind ERROR ==277867== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 671 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind671 ./libtest/libtests lib670 http://127.0.0.1:39863/671 > log/2/stdout671 2> log/2/stderr671 === End of file commands.log === Start of file http_server.log 01:38:06.408379 ====> Client connect 01:38:06.408537 accept_connection 3 returned 4 01:38:06.408614 accept_connection 3 returned 0 01:38:06.414586 Read 93 bytes 01:38:06.414670 Process 93 bytes request 01:38:06.414760 Got request: GET /verifiedserver HTTP/1.1 01:38:06.414826 Are-we-friendly question received 01:38:06.414932 Wrote request (93 bytes) input to log/2/server.input 01:38:06.415028 Identifying ourselves as friends 01:38:06.415208 Response sent (57 bytes) and written to log/2/server.response 01:38:06.415272 special request received, no persistency 01:38:06.415329 ====> Client disconnect 0 01:38:58.315124 ====> Client connect 01:38:58.315263 accept_connection 3 returned 4 01:38:58.315341 accept_connection 3 returned 0 01:38:59.747564 Read 270 bytes 01:38:59.747767 Process 270 bytes request 01:38:59.747861 Got request: POST /671 HTTP/1.1 01:38:59.747931 Serve test number 671 part 0 01:38:59.748114 - request found to be complete (671) 01:38:59.748278 Found Content-Length: 154 in the request 01:39:05.353570 Read 55 bytes 01:39:05.353773 Process 325 bytes request [CONTINUED] 01:39:05.353837 - request found to be complete (671) 01:39:05.354125 Wrote request (325 bytes) input to log/2/server.input 01:39:05.354229 Send response test671 section 01:39:05.354437 connection close instruction "swsclose" found in response 01:39:05.354628 Response sent (141 bytes) and written to log/2/server.response 01:39:05.354690 instructed to close connection after server-reply 01:39:05.354745 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 43416 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 671 === End of file server.cmd === Start of file server.input POST /671 HTTP/1.1 Host: 127.0.0.1:39863 Accept: */* Content-Length: 154 Content-Type: multipart/form-data; boundary=------------------------uqvX4zgEmuE35rM0Yi3Jly --------------------------uqvX4zgEmuE35rM0Yi3Jly Content-Disposition: form-data; name="field" AB --------------------------uqvX4zgEmuE35rM0Yi3Jly-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file server.response === Start of file stderr671 URL: http://127.0.0.1:39863/671 * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 51090 * using HTTP/1.x > POST /671 HTTP/1.1 Host: 127.0.0.1:39863 Accept: */* Content-Length: 154 Content-Type: multipart/form-data; boundary=------------------------uqvX4zgEmuE35rM0Yi3Jly * upload completely sent off: 154 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * shutting down connection #0 Test ended with result 0 === End of file stderr671 === Start of file stdout671 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file stdout671 === Start of file valgrind671 ==277867== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind671 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 674 in state 4 Runner 2 (id 185908) running test 680 in state 4 Runner 3 (id 185910) running test 676 in state 4 Runner 4 (id 185912) running test 677 in state 4 Runner 5 (id 185914) running test 679 in state 4 Runner 6 (id 185916) running test 672 in state 4 Runner 7 (id 185918) running test 673 in state 4 Runner 8 (id 185920) running test 675 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 674 in state 4 Runner 2 (id 185908) running test 680 in state 4 Runner 3 (id 185910) running test 676 in state 4 Runner 4 (id 185912) running test 677 in state 4 Runner 5 (id 185914) running test 679 in state 4 Runner 6 (id 185916) running test 672 in state 4 Runner 7 (id 185918) running test 673 in state 4 Runner 8 (id 185920) running test 675 in state 4 test 0674...[Set CURLOPT_CURLU and dupe the handle] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind674 ./libtest/libtests lib674 http://127.0.0.1:40641/674 > log/1/stdout674 2> log/1/stderr674 valgrind ERROR ==278380== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 674 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind674 ./libtest/libtests lib674 http://127.0.0.1:40641/674 > log/1/stdout674 2> log/1/stderr674 === End of file commands.log === Start of file http_server.log 01:38:48.315053 ====> Client connect 01:38:48.315219 accept_connection 3 returned 4 01:38:48.315300 accept_connection 3 returned 0 01:38:48.321120 Read 93 bytes 01:38:48.321233 Process 93 bytes request 01:38:48.321323 Got request: GET /verifiedserver HTTP/1.1 01:38:48.321386 Are-we-friendly question received 01:38:48.321505 Wrote request (93 bytes) input to log/1/server.input 01:38:48.321620 Identifying ourselves as friends 01:38:48.321821 Response sent (57 bytes) and written to log/1/server.response 01:38:48.321892 special request received, no persistency 01:38:48.321954 ====> Client disconnect 0 01:39:31.765963 ====> Client connect 01:39:31.766111 accept_connection 3 returned 4 01:39:31.766199 accept_connection 3 returned 0 01:39:32.549439 Read 57 bytes 01:39:32.549657 Process 57 bytes request 01:39:32.549762 Got request: GET /674 HTTP/1.1 01:39:32.549843 Serve test number 674 part 0 01:39:32.550025 - request found to be complete (674) 01:39:32.550266 Wrote request (57 bytes) input to log/1/server.input 01:39:32.550378 Send response test674 section 01:39:32.550798 Response sent (256 bytes) and written to log/1/server.response 01:39:32.550864 => persistent connection request ended, awaits new request 01:39:33.878179 Connection closed by client 01:39:33.878373 ====> Client disconnect 0 01:39:34.460384 ====> Client connect 01:39:34.460512 accept_connection 3 returned CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind672 ./libtest/libtests lib670 http://127.0.0.1:38277/672 > log/6/stdout672 2> log/6/stderr672 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind677 ./libtest/libtests lib677 imap://127.0.0.1:33289/677 > log/4/stdout677 2> log/4/stderr677 4 01:39:34.460590 accept_connection 3 returned 0 01:39:34.513810 Read 57 bytes 01:39:34.513988 Process 57 bytes request 01:39:34.514084 Got request: GET /674 HTTP/1.1 01:39:34.514156 Serve test number 674 part 0 01:39:34.514323 - request found to be complete (674) 01:39:34.514510 Wrote request (57 bytes) input to log/1/server.input 01:39:34.514599 Send response test674 section 01:39:34.515052 Response sent (256 bytes) and written to log/1/server.response 01:39:34.515124 => persistent connection request ended, awaits new request 01:39:34.618445 Connection closed by client 01:39:34.618629 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 41514 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 674 === End of file server.cmd === Start of file server.input GET /674 HTTP/1.1 Host: 127.0.0.1:40641 Accept: */* GET /674 HTTP/1.1 Host: 127.0.0.1:40641 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr674 URL: http://127.0.0.1:40641/674 * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 32790 * using HTTP/1.x > GET /674 HTTP/1.1 Host: 127.0.0.1:40641 Accept: */* < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT < ETag: "21025-dc7-39462498" < Accept-Ranges: bytes < Content-Length: 6 < Connection: close < Content-Type: text/html < Funny-head: yesyes < * we are done reading and this is set to close, stop send * abort upload * shutting down connection #0 * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 53658 * using HTTP/1.x > GET /674 HTTP/1.1 Host: 127.0.0.1:40641 Accept: */* < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT < ETag: "21025-dc7-39462498" < Accept-Ranges: bytes < Content-Length: 6 < Connection: close < Content-Type: text/html < Funny-head: yesyes < * we are done reading and this is set to close, stop send * abort upload * shutting down connection #0 Test ended with result 0 === End of file stderr674 === Start of file stdout674 -foo- -foo- === End of file stdout674 === Start of file valgrind674 ==278380== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind674 test 0672...[Request pause from form read callback: multi] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind672 ./libtest/libtests lib670 http://127.0.0.1:38277/672 > log/6/stdout672 2> log/6/stderr672 valgrind ERROR ==278077== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 672 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind672 ./libtest/libtests lib670 http://127.0.0.1:38277/672 > log/6/stdout672 2> log/6/stderr672 === End of file commands.log === Start of file http_server.log 01:38:35.494679 ====> Client connect 01:38:35.494842 accept_connection 3 returned 4 01:38:35.494935 accept_connection 3 returned 0 01:38:35.502341 Read 93 bytes 01:38:35.502509 Process 93 bytes request 01:38:35.502607 Got request: GET /verifiedserver HTTP/1.1 01:38:35.502676 Are-we-friendly question received 01:38:35.502814 Wrote request (93 bytes) input to log/6/server.input 01:38:35.502921 Identifying ourselves as friends 01:38:35.503090 Response sent (57 bytes) and written to log/6/server.response 01:38:35.503154 special request received, no persistency 01:38:35.503213 ====> Client disconnect 0 01:39:20.331420 ====> Client connect 01:39:20.331576 accept_connection 3 returned 4 01:39:20.331651 accept_connection 3 returned 0 01:39:27.854476 Read 270 bytes 01:39:27.854685 Process 270 bytes request 01:39:27.854784 Got request: POST /672 HTTP/1.1 01:39:27.854892 Serve test number 672 part 0 01:39:27.855089 - request found to be complete (672) 01:39:27.855260 Found Content-Length: 154 in the request 01:39:32.940999 Read 55 bytes 01:39:32.941212 Process 325 bytes request [CONTINUED] 01:39:32.941283 - request found to be complete (672) 01:39:32.941589 Wrote request (325 bytes) input to log/6/server.input 01:39:32.941698 Send response test672 section 01:39:32.941924 connection close instruction "swsclose" found in response 01:39:32.942133 Response sent (141 bytes) and written to log/6/server.response 01:39:32.942204 instructed to close connection after server-reply 01:39:32.942267 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 34598 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 672 === End of file server.cmd === Start of file server.input POST /672 HTTP/1.1 Host: 127.0.0.1:38277 Accept: */* Content-Length: 154 Content-Type: multipart/form-data; boundary=------------------------HaoYgY86ilO5PGJsNOIdpw --------------------------HaoYgY86ilO5PGJsNOIdpw Content-Disposition: form-data; name="field" AB --------------------------HaoYgY86ilO5PGJsNOIdpw-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file server.response === Start of file stderr672 URL: http://127.0.0.1:38277/672 * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 52410 * using HTTP/1.x > POST /672 HTTP/1.1 Host: 127.0.0.1:38277 Accept: */* Content-Length: 154 Content-Type: multipart/form-data; boundary=------------------------HaoYgY86ilO5PGJsNOIdpw * upload completely sent off: 154 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * shutting down connection #0 Test ended with result 0 === End of file stderr672 === Start of file stdout672 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file stdout672 === Start of file valgrind672 ==278077== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind672 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/teCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind673 ./libtest/libtests lib670 http://127.0.0.1:34897/673 > log/7/stdout673 2> log/7/stderr673 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind675 ../src/curl -q --output log/8/curl675.out --include --trace-ascii log/8/trace675 --trace-time http://user1:foo1@127.0.0.1:39461/user1/675 http://user2:foo2@127.0.0.1:39461/user2/675 > log/8/stdout675 2> log/8/stderr675 sts /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/4/server/imap_server.pid" --logfile "log/4/imap_server.log" --logdir "log/4" --portfile "log/4/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 33289 (log/4/server/imap_server.port) RUN: IMAP server is PID 278683 port 33289 * pid imap => 278683 278683 test 0677...[IMAP with CONNECT_ONLY, custom command then exit] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind677 ./libtest/libtests lib677 imap://127.0.0.1:33289/677 > log/4/stdout677 2> log/4/stderr677 677: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 0 == Contents of files in the log/4/ dir after test 677 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind677 ./libtest/libtests lib677 imap://127.0.0.1:33289/677 > log/4/stdout677 2> log/4/stderr677 === End of file commands.log === Start of file imap_server.log 01:38:53.673157 IMAP server listens on port IPv4/33289 01:38:53.676743 logged pid 278683 in log/4/server/imap_server.pid 01:38:53.676980 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 01:38:53.270943 Running IPv4 version 01:38:53.278800 Listening on port 33289 01:38:53.279253 Wrote pid 278780 to log/4/server/imap_sockfilt.pid 01:38:53.279517 Wrote port 33289 to log/4/server/imap_server.port 01:38:53.280258 Received PING (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 677 === End of file server.cmd === Start of file stderr677 URL: imap://127.0.0.1:33289/677 Test ended with result 0 === End of file stderr677 === Start of file valgrind677 ==278805== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind677 test 0673...[Request pause from form read callback: easy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind673 ./libtest/libtests lib670 http://127.0.0.1:34897/673 > log/7/stdout673 2> log/7/stderr673 valgrind ERROR ==278221== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 673 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind673 ./libtest/libtests lib670 http://127.0.0.1:34897/673 > log/7/stdout673 2> log/7/stderr673 === End of file commands.log === Start of file http_server.log 01:38:37.711829 ====> Client connect 01:38:37.711990 accept_connection 3 returned 4 01:38:37.712067 accept_connection 3 returned 0 01:38:37.719557 Read 93 bytes 01:38:37.719723 Process 93 bytes request 01:38:37.719816 Got request: GET /verifiedserver HTTP/1.1 01:38:37.719881 Are-we-friendly question received 01:38:37.720010 Wrote request (93 bytes) input to log/7/server.input 01:38:37.720107 Identifying ourselves as friends 01:38:37.720262 Response sent (57 bytes) and written to log/7/server.response 01:38:37.720322 special request received, no persistency 01:38:37.720376 ====> Client disconnect 0 01:39:22.241746 ====> Client connect 01:39:22.241884 accept_connection 3 returned 4 01:39:22.241964 accept_connection 3 returned 0 01:39:29.672760 Read 270 bytes 01:39:29.672957 Process 270 bytes request 01:39:29.673060 Got request: POST /673 HTTP/1.1 01:39:29.673139 Serve test number 673 part 0 01:39:29.673327 - request found to be complete (673) 01:39:29.673494 Found Content-Length: 154 in the request 01:39:35.249243 Read 55 bytes 01:39:35.249447 Process 325 bytes request [CONTINUED] 01:39:35.249516 - request found to be complete (673) 01:39:35.249817 Wrote request (325 bytes) input to log/7/server.input 01:39:35.249930 Send response test673 section 01:39:35.250145 connection close instruction "swsclose" found in response 01:39:35.250317 Response sent (141 bytes) and written to log/7/server.response 01:39:35.250387 instructed to close connection after server-reply 01:39:35.250452 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 57112 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 673 === End of file server.cmd === Start of file server.input POST /673 HTTP/1.1 Host: 127.0.0.1:34897 Accept: */* Content-Length: 154 Content-Type: multipart/form-data; boundary=------------------------6JqI50v5BWEHdAGkeHQYTX --------------------------6JqI50v5BWEHdAGkeHQYTX Content-Disposition: form-data; name="field" AB --------------------------6JqI50v5BWEHdAGkeHQYTX-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file server.response === Start of file stderr673 URL: http://127.0.0.1:34897/673 * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 56660 * using HTTP/1.x > POST /673 HTTP/1.1 Host: 127.0.0.1:34897 Accept: */* Content-Length: 154 Content-Type: multipart/form-data; boundary=------------------------6JqI50v5BWEHdAGkeHQYTX * upload completely sent off: 154 bytes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake swsclose < Connection: close < Content-Type: text/html < * shutting down connection #0 Test ended with result 0 === End of file stderr673 === Start of file stdout673 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello === End of file stdout673 === Start of file valgrind673 ==278221== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind673 test 0675...[HTTP connection reuse and different credentials] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind675 ../src/curl -q --output log/8/curl675.out --include --trace-ascii log/8/trace675 --trace-time http://user1:foo1@127.0.0.1:39461/user1/675 http://user2:foo2@127.0.0.1:39461/user2/675 > log/8/stdout675 2> log/8/stderr675 valgrind ERROR ==278527== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 675 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind675 ../src/curl -q --output log/8/curl675.out --include --trace-ascii log/8/trace675 --trace-time http://user1:foo1@127.0.0.1:39461/user1/675 http://user2:foo2@127.0.0.1:39461/user2/675 > log/8/stdout675 2> log/8/stderr675 === End of file commands.log === Start of file curl675.out HTTP/1.1 200 OK swsclose Date: Thu, 09 Nov 2010 14:49:00 GMT Content-Type: text/html Content-Length: 26 the content would go here === End of file curl675.out === Start of file http_server.log 01:38:49.600732 ====> Client connect 01:38:49.600897 accept_connection 3 returned 4 01:38:49.600985 accept_connection 3 returned 0 01:38:49.610093 Read 93 bytes 01:38:49.610200 Process 93 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind676 ./libtest/libtests lib676 http://127.0.0.1:46853/we/want/676 log/3/cookies676 > log/3/stdout676 2> log/3/stderr676 bytes request 01:38:49.610300 Got request: GET /verifiedserver HTTP/1.1 01:38:49.610377 Are-we-friendly question received 01:38:49.610505 Wrote request (93 bytes) input to log/8/server.input 01:38:49.610609 Identifying ourselves as friends 01:38:49.610790 Response sent (57 bytes) and written to log/8/server.response 01:38:49.610863 special request received, no persistency 01:38:49.610930 ====> Client disconnect 0 01:39:35.926068 ====> Client connect 01:39:35.926209 accept_connection 3 returned 4 01:39:35.926287 accept_connection 3 returned 0 01:39:37.013661 Read 127 bytes 01:39:37.013859 Process 127 bytes request 01:39:37.013956 Got request: GET /user1/675 HTTP/1.1 01:39:37.014032 Serve test number 675 part 0 01:39:37.014212 - request found to be complete (675) 01:39:37.014520 Wrote request (127 bytes) input to log/8/server.input 01:39:37.014628 Send response test675 section 01:39:37.014842 connection close instruction "swsclose" found in response 01:39:37.015043 Response sent (136 bytes) and written to log/8/server.response 01:39:37.015110 instructed to close connection after server-reply 01:39:37.015169 ====> Client disconnect 0 01:39:40.137998 ====> Client connect 01:39:40.138142 accept_connection 3 returned 4 01:39:40.138234 accept_connection 3 returned 0 01:39:40.201050 Read 127 bytes 01:39:40.201226 Process 127 bytes request 01:39:40.201331 Got request: GET /user2/675 HTTP/1.1 01:39:40.201410 Serve test number 675 part 0 01:39:40.201611 - request found to be complete (675) 01:39:40.201834 Wrote request (127 bytes) input to log/8/server.input 01:39:40.201937 Send response test675 section 01:39:40.202171 connection close instruction "swsclose" found in response 01:39:40.202379 Response sent (136 bytes) and written to log/8/server.response 01:39:40.202451 instructed to close connection after server-reply 01:39:40.202522 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 40014 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 675 === End of file server.cmd === Start of file server.input GET /user1/675 HTTP/1.1 Host: 127.0.0.1:39461 Authorization: Basic dXNlcjE6Zm9vMQ== User-Agent: curl/8.17.0 Accept: */* GET /user2/675 HTTP/1.1 Host: 127.0.0.1:39461 Authorization: Basic dXNlcjI6Zm9vMg== User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK swsclose Date: Thu, 09 Nov 2010 14:49:00 GMT Content-Type: text/html Content-Length: 26 the content would go here HTTP/1.1 200 OK swsclose Date: Thu, 09 Nov 2010 14:49:00 GMT Content-Type: text/html Content-Length: 26 the content would go here === End of file server.response === Start of file stderr675 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 7 100 26 100 26 0 0 5 0 0:00:05 0:00:04 0:00:01 7 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 26 100 26 0 0 26 0 0:00:01 --:--:-- 0:00:01 114 === End of file stderr675 === Start of file stdout675 HTTP/1.1 200 OK swsclose Date: Thu, 09 Nov 2010 14:49:00 GMT Content-Type: text/html Content-Length: 26 the content would go here === End of file stdout675 === Start of file trace675 01:39:35.984019 * Trying 127.0.0.1:39461... 01:39:36.883746 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 49030 01:39:37.007427 * using HTTP/1.x 01:39:37.144558 * Server auth using Basic with user 'user1' 01:39:37.442234 => Send header, 127 bytes (0x7f) 0000: GET /user1/675 HTTP/1.1 0019: Host: 127.0.0.1:39461 0030: Authorization: Basic dXNlcjE6Zm9vMQ== 0057: User-Agent: curl/8.17.0 0070: Accept: */* 007d: 01:39:37.800407 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 200 OK swsclose 01:39:38.118343 <= Recv header, 37 bytes (0x25) 0000: Date: Thu, 09 Nov 2010 14:49:00 GMT 01:39:38.262139 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:39:38.300955 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 01:39:38.384279 <= Recv header, 2 bytes (0x2) 0000: 01:39:38.444074 <= Recv data, 26 bytes (0x1a) 0000: the content would go here. 01:39:38.993364 * Connection #0 to host 127.0.0.1:39461 left intact 01:39:39.858169 * Connection 0 seems to be dead 01:39:39.951695 * shutting down connection #0 01:39:40.462070 * Hostname 127.0.0.1 was found in DNS cache 01:39:40.521133 * Trying 127.0.0.1:39461... 01:39:40.554915 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 49046 01:39:40.562164 * using HTTP/1.x 01:39:40.573952 * Server auth using Basic with user 'user2' 01:39:40.592106 => Send header, 127 bytes (0x7f) 0000: GET /user2/675 HTTP/1.1 0019: Host: 127.0.0.1:39461 0030: Authorization: Basic dXNlcjI6Zm9vMg== 0057: User-Agent: curl/8.17.0 0070: Accept: */* 007d: 01:39:40.630771 <= Recv header, 26 bytes (0x1a) 0000: HTTP/1.1 200 OK swsclose 01:39:40.645329 <= Recv header, 37 bytes (0x25) 0000: Date: Thu, 09 Nov 2010 14:49:00 GMT 01:39:40.657584 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:39:40.663760 <= Recv header, 20 bytes (0x14) 0000: Content-Length: 26 01:39:40.673631 <= Recv header, 2 bytes (0x2) 0000: 01:39:40.679440 <= Recv data, 26 bytes (0x1a) 0000: the content would go here. 01:39:40.728002 * Connection #1 to host 127.0.0.1:39461 left intact === End of file trace675 === Start of file valgrind675 ==278527== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind675 test 0676...[verify setting CURLOPT_COOKIEFILE to NULL again] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind676 ./libtest/libtests lib676 http://127.0.0.1:46853/we/want/676 log/3/cookies676 > log/3/stdout676 2> log/3/stderr676 valgrind ERROR ==278680== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 676 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind676 ./libtest/libtests lib676 http://127.0.0.1:46853/we/want/676 log/3/cookies676 > log/3/stdout676 2> log/3/stderr676 === End of file commands.log === Start of file cookies676 127.0.0.1 TRUE /we/want/ FALSE 22118138987 proven yes === End of file cookies676 === Start of file http_server.log 01:38:51.440303 ====> Client connect 01:38:51.440460 accept_connection 3 returned 4 01:38:51.440532 accept_connection 3 returned 0 01:38:51.447449 Read 93 bytes 01:38:51.447586 Process 93 bytes request 01:38:51.447670 Got request: GET /verifiedserver HTTP/1.1 01:38:51.447730 Are-we-friendly question received 01:38:51.447847 Wrote request (93 bytes) input to log/3/server.input 01:38:51.447939 Identifying ourselves as friends 01:38:51.448085 Response sent (57 bytes) and written to log/3/server.response 01:38:51.448142 sCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind679 ../src/curl -q --output log/5/curl679.out --include --trace-ascii log/5/trace679 --trace-time --netrc-optional --netrc-file log/5/netrc679 http://127.0.0.1:46263/ > log/5/stdout679 2> log/5/stderr679 pecial request received, no persistency 01:38:51.448192 ====> Client disconnect 0 01:39:37.309423 ====> Client connect 01:39:37.309571 accept_connection 3 returned 4 01:39:37.309657 accept_connection 3 returned 0 01:39:38.402264 Read 128 bytes 01:39:38.402455 Process 128 bytes request 01:39:38.402553 Got request: GET /we/want/676 HTTP/1.1 01:39:38.402628 Serve test number 676 part 0 01:39:38.402822 - request found to be complete (676) 01:39:38.403091 Wrote request (128 bytes) input to log/3/server.input 01:39:38.403209 Send response test676 section 01:39:38.403539 Response sent (125 bytes) and written to log/3/server.response 01:39:38.403602 => persistent connection request ended, awaits new request 01:39:40.161994 Connection closed by client 01:39:40.162162 ====> Client disconnect 0 01:39:40.794519 ====> Client connect 01:39:40.794675 accept_connection 3 returned 4 01:39:40.794765 accept_connection 3 returned 0 01:39:40.861497 Read 108 bytes 01:39:40.861715 Process 108 bytes request 01:39:40.861827 Got request: GET /we/want/676 HTTP/1.1 01:39:40.861914 Serve test number 676 part 0 01:39:40.862151 - request found to be complete (676) 01:39:40.862424 Wrote request (108 bytes) input to log/3/server.input 01:39:40.862537 Send response test676 section 01:39:40.863002 Response sent (125 bytes) and written to log/3/server.response 01:39:40.863085 => persistent connection request ended, awaits new request 01:39:40.994664 Connection closed by client 01:39:40.994903 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 35012 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 676 === End of file server.cmd === Start of file server.input GET /we/want/676 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: the-moo agent next generation Accept: */* Cookie: proven=yes GET /we/want/676 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: the-moo agent next generation Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Connection: close Content-Type: text/html -foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Connection: close Content-Type: text/html -foo- === End of file server.response === Start of file stderr676 URL: http://127.0.0.1:46853/we/want/676 * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 53498 * using HTTP/1.x > GET /we/want/676 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: the-moo agent next generation Accept: */* Cookie: proven=yes < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Content-Length: 6 < Connection: close < Content-Type: text/html < * we are done reading and this is set to close, stop send * abort upload * shutting down connection #0 * Hostname 127.0.0.1 was found in DNS cache * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 53510 * using HTTP/1.x > GET /we/want/676 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: the-moo agent next generation Accept: */* < HTTP/1.1 200 OK < Date: Tue, 09 Nov 2010 14:49:00 GMT < Content-Length: 6 < Connection: close < Content-Type: text/html < * we are done reading and this is set to close, stop send * abort upload * shutting down connection #1 Test ended with result 0 === End of file stderr676 === Start of file stdout676 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Connection: close Content-Type: text/html -foo- HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Connection: close Content-Type: text/html -foo- === End of file stdout676 === Start of file valgrind676 ==278680== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind676 test 0679...[netrc with quoted password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind679 ../src/curl -q --output log/5/curl679.out --include --trace-ascii log/5/trace679 --trace-time --netrc-optional --netrc-file log/5/netrc679 http://127.0.0.1:46263/ > log/5/stdout679 2> log/5/stderr679 valgrind ERROR ==278958== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 679 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind679 ../src/curl -q --output log/5/curl679.out --include --trace-ascii log/5/trace679 --trace-time --netrc-optional --netrc-file log/5/netrc679 http://127.0.0.1:46263/ > log/5/stdout679 2> log/5/stderr679 === End of file commands.log === Start of file curl679.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl679.out === Start of file http_server.log 01:38:57.510474 ====> Client connect 01:38:57.510635 accept_connection 3 returned 4 01:38:57.510712 accept_connection 3 returned 0 01:38:57.517695 Read 93 bytes 01:38:57.517798 Process 93 bytes request 01:38:57.517886 Got request: GET /verifiedserver HTTP/1.1 01:38:57.517951 Are-we-friendly question received 01:38:57.518061 Wrote request (93 bytes) input to log/5/server.input 01:38:57.518147 Identifying ourselves as friends 01:38:57.518311 Response sent (57 bytes) and written to log/5/server.response 01:38:57.518378 special request received, no persistency 01:38:57.518436 ====> Client disconnect 0 01:39:43.688739 ====> Client connect 01:39:43.688953 accept_connection 3 returned 4 01:39:43.689031 accept_connection 3 returned 0 01:39:44.815881 Read 138 bytes 01:39:44.816115 Process 138 bytes request 01:39:44.816221 Got request: GET / HTTP/1.1 01:39:44.816401 No test number in path 01:39:44.816566 [log/5/server.cmd] cmdfile says testnum 679 01:39:44.816760 - request found to be complete (679) 01:39:44.817045 Wrote request (138 bytes) input to log/5/server.input 01:39:44.817156 Send response test679 section 01:39:44.817588 Response sent (256 bytes) and written to log/5/server.response 01:39:44.817659 => persistent connection request ended, awaits new request 01:39:46.896951 Connection closed by client 01:39:46.897145 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 40048 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file netrc679 machine 127.0.0.1 login user1 password "with spaces and \"\n\r\t\a" === End of file netrc679 === Start of file server.cmd Testnum 679 === End of file server.cmd === Start of file server.input GET / HTTP/1.1 Host: 127.0.0.1:46263 Authorization: Basic dXNlcjE6d2l0aCBzcGFjZXMgYW5kICIKDQlh User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Date: TuCMD (6656): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind680 ../src/curl -q --output log/2/curl680.out --include --trace-ascii log/2/trace680 --trace-time --netrc --netrc-file log/2/netrc680 http://user1@http.example/ > log/2/stdout680 2> log/2/stderr680 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind681 ../src/curl -q --trace-ascii log/1/trace681 --trace-time --remote-name-all --no-remote-name --output-dir log http://127.0.0.1:40641/681 > log/1/stdout681 2> log/1/stderr681 e, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr679 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr679 === Start of file trace679 01:39:43.692279 * Trying 127.0.0.1:46263... 01:39:44.679825 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 32874 01:39:44.804889 * using HTTP/1.x 01:39:44.946634 * Server auth using Basic with user 'user1' 01:39:45.243447 => Send header, 138 bytes (0x8a) 0000: GET / HTTP/1.1 0010: Host: 127.0.0.1:46263 0027: Authorization: Basic dXNlcjE6d2l0aCBzcGFjZXMgYW5kICIKDQlh 0062: User-Agent: curl/8.17.0 007b: Accept: */* 0088: 01:39:45.624805 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:39:45.950031 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:39:46.080042 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:39:46.109106 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:39:46.117742 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:39:46.125910 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:39:46.158537 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:39:46.216293 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:39:46.252807 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:39:46.257787 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:39:46.357432 <= Recv header, 1 bytes (0x1) 0000: . 01:39:46.452502 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:39:46.558996 * we are done reading and this is set to close, stop send 01:39:46.599086 * abort upload 01:39:47.083819 * shutting down connection #0 === End of file trace679 === Start of file valgrind679 ==278958== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind679 test 0680...[netrc with quoted password but missing end quote] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind680 ../src/curl -q --output log/2/curl680.out --include --trace-ascii log/2/trace680 --trace-time --netrc --netrc-file log/2/netrc680 http://user1@http.example/ > log/2/stdout680 2> log/2/stderr680 valgrind ERROR ==279106== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 680 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind680 ../src/curl -q --output log/2/curl680.out --include --trace-ascii log/2/trace680 --trace-time --netrc --netrc-file log/2/netrc680 http://user1@http.example/ > log/2/stdout680 2> log/2/stderr680 === End of file commands.log === Start of file netrc680 machine 127.0.0.1 login user1 password "with spaces and \"\n\r\t\a === End of file netrc680 === Start of file server.cmd Testnum 680 === End of file server.cmd === Start of file stderr680 curl: (26) .netrc error: syntax error === End of file stderr680 === Start of file trace680 01:39:55.703245 * .netrc error: syntax error 01:39:56.055678 * closing connection #-1 === End of file trace680 === Start of file valgrind680 ==279106== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind680 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 681 in state 4 Runner 2 (id 185908) running test 690 in state 4 Runner 3 (id 185910) running test 686 in state 4 Runner 4 (id 185912) running test 683 in state 4 Runner 5 (id 185914) running test 689 in state 4 Runner 6 (id 185916) running test 682 in state 4 Runner 7 (id 185918) running test 684 in state 4 Runner 8 (id 185920) running test 685 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 681 in state 4 Runner 2 (id 185908) running test 690 in state 4 Runner 3 (id 185910) running test 686 in state 4 Runner 4 (id 185912) running test 683 in state 4 Runner 5 (id 185914) running test 689 in state 4 Runner 6 (id 185916) running test 682 in state 4 Runner 7 (id 185918) running test 684 in state 4 Runner 8 (id 185920) running test 685 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 681 in state 4 Runner 2 (id 185908) running test 690 in state 4 Runner 3 (id 185910) running test 686 in state 4 Runner 4 (id 185912) running test 683 in state 4 Runner 5 (id 185914) running test 689 in state 4 Runner 6 (id 185916) running test 682 in state 4 Runner 7 (id 185918) running test 684 in state 4 Runner 8 (id 185920) running test 685 in state 4 test 0681...[--remote-name-all with --no-remote-name] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind681 ../src/curl -q --trace-ascii log/1/trace681 --trace-time --remote-name-all --no-remote-name --output-dir log http://127.0.0.1:40641/681 > log/1/stdout681 2> log/1/stderr681 valgrind ERROR ==279330== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 681 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind681 ../src/curl -q --trace-ascii log/1/trace681 --trace-time --remote-name-all --no-remote-name --output-dir log http://127.0.0.1:40641/681 > log/1/stdout681 2> log/1/stderr681 === End of file commands.log === Start of file http_server.log 01:39:39.044925 ====> Client connect 01:39:39.045091 accept_connection 3 returned 4 01:39:39.045166 accept_connection 3 returned 0 01:39:39.051553 Read 93 bytes 01:39:39.051655 Process 93 bytes request 01:39:39.051744 Got request: GET /verifiedserver HTTP/1.1 01:39:39.051807 Are-we-friendly question received 01:39:39.051924 Wrote request (93 bytes) input to log/1/server.input 01:39:39.052015 Identifying ourselves as friends 01:39:39.052196 Response sent (57 bytes) and written to log/1/server.response 01:39:39.052261 special request received, no persistency 01:39:39.052317 ====> Client disconnect 0 01:40:26.528105 ====> Client connect 01:40:26.528243 accept_connection 3 returned 4 01:40:26.528323 accept_connection 3 returned 0 01:40:27.542718 Read 82 bytes 01:40:27.542915 Process 82 bytes request 01:40:27.543011 Got request: GET /681 HTTP/1.1 01:40:27.543083 Serve test number 681 part 0 01:40:27.543255 - request found to be complete (681) 01:40:27.543522 Wrote request (82 bytes) input to log/1/server.input 01:40:27.543642 Send response test681 section 01:40:27.543981 Response sent (114 bytes) and written to log/1/server.response 01:40:27.544049 => persistent connection request ended, awaits new request 01:40:29.347765 Connection closed by client 01:40:29.348002 ====> Client disconnect 0 === End of file http_server.log === Start of file httCMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind686 ../src/curl -q --output log/3/curl686.out --include --trace-ascii log/3/trace686 --trace-time htdhdhdtp://localhost --next > log/3/stdout686 2> log/3/stderr686 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind682 ../src/curl -q --output log/6/curl682.out --include --trace-ascii log/6/trace682 --trace-time --netrc-optional --netrc-file log/6/netrc682 http://user1@127.0.0.1:38277/ > log/6/stdout682 2> log/6/stderr682 p_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 53660 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 681 === End of file server.cmd === Start of file server.input GET /681 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Content-Length: 6 Connection: close Funny-head: yesyes -foo- === End of file server.response === Start of file stderr681 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr681 === Start of file stdout681 -foo- === End of file stdout681 === Start of file trace681 01:40:25.604834 * Trying 127.0.0.1:40641... 01:40:26.510060 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 57210 01:40:26.636571 * using HTTP/1.x 01:40:26.968940 => Send header, 82 bytes (0x52) 0000: GET /681 HTTP/1.1 0013: Host: 127.0.0.1:40641 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:40:27.292245 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:40:27.525864 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:40:27.626453 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:40:27.693082 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:40:27.699564 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:40:27.779923 <= Recv header, 1 bytes (0x1) 0000: . 01:40:27.836039 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:40:28.003461 * we are done reading and this is set to close, stop send 01:40:28.038100 * abort upload 01:40:28.534993 * shutting down connection #0 === End of file trace681 === Start of file valgrind681 ==279330== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind681 test 0686...[verify return code for missing URL after --next] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind686 ../src/curl -q --output log/3/curl686.out --include --trace-ascii log/3/trace686 --trace-time htdhdhdtp://localhost --next > log/3/stdout686 2> log/3/stderr686 valgrind ERROR ==280038== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 686 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind686 ../src/curl -q --output log/3/curl686.out --include --trace-ascii log/3/trace686 --trace-time htdhdhdtp://localhost --next > log/3/stdout686 2> log/3/stderr686 === End of file commands.log === Start of file server.cmd Testnum 686 === End of file server.cmd === Start of file stderr686 curl: (1) Protocol "htdhdhdtp" not supported curl: (2) no URL specified curl: try 'curl --help' for more information === End of file stderr686 === Start of file trace686 01:40:30.016447 * Protocol "htdhdhdtp" not supported 01:40:30.420017 * closing connection #-1 === End of file trace686 === Start of file valgrind686 ==280038== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind686 test 0682...[netrc with multiple logins - pick first] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind682 ../src/curl -q --output log/6/curl682.out --include --trace-ascii log/6/trace682 --trace-time --netrc-optional --netrc-file log/6/netrc682 http://user1@127.0.0.1:38277/ > log/6/stdout682 2> log/6/stderr682 valgrind ERROR ==279517== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 682 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind682 ../src/curl -q --output log/6/curl682.out --include --trace-ascii log/6/trace682 --trace-time --netrc-optional --netrc-file log/6/netrc682 http://user1@127.0.0.1:38277/ > log/6/stdout682 2> log/6/stderr682 === End of file commands.log === Start of file curl682.out HTTP/1.1 200 OK Date: Fri, 05 Aug 2022 10:09:00 GMT Server: test-server/fake Content-Type: text/plain Content-Length: 6 Connection: close -foo- === End of file curl682.out === Start of file http_server.log 01:39:39.653265 ====> Client connect 01:39:39.653435 accept_connection 3 returned 4 01:39:39.653512 accept_connection 3 returned 0 01:39:39.660963 Read 93 bytes 01:39:39.661075 Process 93 bytes request 01:39:39.661167 Got request: GET /verifiedserver HTTP/1.1 01:39:39.661237 Are-we-friendly question received 01:39:39.661359 Wrote request (93 bytes) input to log/6/server.input 01:39:39.661465 Identifying ourselves as friends 01:39:39.661647 Response sent (57 bytes) and written to log/6/server.response 01:39:39.661718 special request received, no persistency 01:39:39.661780 ====> Client disconnect 0 01:40:27.321076 ====> Client connect 01:40:27.321224 accept_connection 3 returned 4 01:40:27.321306 accept_connection 3 returned 0 01:40:28.418189 Read 122 bytes 01:40:28.418403 Process 122 bytes request 01:40:28.418505 Got request: GET / HTTP/1.1 01:40:28.418582 No test number in path 01:40:28.418706 [log/6/server.cmd] cmdfile says testnum 682 01:40:28.418889 - request found to be complete (682) 01:40:28.419148 Wrote request (122 bytes) input to log/6/server.input 01:40:28.419267 Send response test682 section 01:40:28.421384 Response sent (145 bytes) and written to log/6/server.response 01:40:28.421464 => persistent connection request ended, awaits new request 01:40:30.388086 Connection closed by client 01:40:30.388297 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 57238 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file netrc682 machine 127.0.0.1 login user1 password passwd1 machine 127.0.0.1 login user2 password passwd2 === End of file netrc682 === Start of file server.cmd Testnum 682 === End of file server.cmd === Start of file server.input GET / HTTP/1.1 Host: 127.0.0.1:38277 Authorization: Basic dXNlcjE6cGFzc3dkMQ== User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Date: Fri, 05 Aug 2022 10:09:00 GMT Server: test-server/fake Content-Type: text/plain Content-Length: 6 Connection: close -foo- === End of file server.response === Start of file stderr682 % Total % Received % Xferd Average Speed Time CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind683 ../src/curl -q --output log/4/curl683.out --include --trace-ascii log/4/trace683 --trace-time --netrc-optional --netrc-file log/4/netrc683 http://user2@127.0.0.1:42621/ > log/4/stdout683 2> log/4/stderr683 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind684 ../src/curl -q --output log/7/curl684.out --include --trace-ascii log/7/trace684 --trace-time --netrc-optional --netrc-file log/7/netrc684 http://127.0.0.1:34897/ > log/7/stdout684 2> log/7/stderr684 Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr682 === Start of file trace682 01:40:27.390158 * Trying 127.0.0.1:38277... 01:40:28.283403 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 56928 01:40:28.405851 * using HTTP/1.x 01:40:28.543940 * Server auth using Basic with user 'user1' 01:40:28.848412 => Send header, 122 bytes (0x7a) 0000: GET / HTTP/1.1 0010: Host: 127.0.0.1:38277 0027: Authorization: Basic dXNlcjE6cGFzc3dkMQ== 0052: User-Agent: curl/8.17.0 006b: Accept: */* 0078: 01:40:29.206283 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:40:29.537751 <= Recv header, 36 bytes (0x24) 0000: Date: Fri, 05 Aug 2022 10:09:00 GMT. 01:40:29.641175 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:40:29.711497 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/plain. 01:40:29.739681 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:40:29.787662 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:40:29.876029 <= Recv header, 1 bytes (0x1) 0000: . 01:40:29.936476 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:40:30.046880 * we are done reading and this is set to close, stop send 01:40:30.079800 * abort upload 01:40:30.576871 * shutting down connection #0 === End of file trace682 === Start of file valgrind682 ==279517== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind682 test 0683...[netrc with multiple logins - pick second] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind683 ../src/curl -q --output log/4/curl683.out --include --trace-ascii log/4/trace683 --trace-time --netrc-optional --netrc-file log/4/netrc683 http://user2@127.0.0.1:42621/ > log/4/stdout683 2> log/4/stderr683 valgrind ERROR ==279554== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 683 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind683 ../src/curl -q --output log/4/curl683.out --include --trace-ascii log/4/trace683 --trace-time --netrc-optional --netrc-file log/4/netrc683 http://user2@127.0.0.1:42621/ > log/4/stdout683 2> log/4/stderr683 === End of file commands.log === Start of file curl683.out HTTP/1.1 200 OK Date: Fri, 05 Aug 2022 10:09:00 GMT Server: test-server/fake Content-Type: text/plain Content-Length: 6 Connection: close -foo- === End of file curl683.out === Start of file http_server.log 01:39:41.138797 ====> Client connect 01:39:41.138966 accept_connection 3 returned 4 01:39:41.139047 accept_connection 3 returned 0 01:39:41.145504 Read 93 bytes 01:39:41.145608 Process 93 bytes request 01:39:41.145707 Got request: GET /verifiedserver HTTP/1.1 01:39:41.145778 Are-we-friendly question received 01:39:41.145905 Wrote request (93 bytes) input to log/4/server.input 01:39:41.146013 Identifying ourselves as friends 01:39:41.146213 Response sent (57 bytes) and written to log/4/server.response 01:39:41.146284 special request received, no persistency 01:39:41.146348 ====> Client disconnect 0 01:40:29.169041 ====> Client connect 01:40:29.169188 accept_connection 3 returned 4 01:40:29.169269 accept_connection 3 returned 0 01:40:30.277704 Read 122 bytes 01:40:30.277922 Process 122 bytes request 01:40:30.278031 Got request: GET / HTTP/1.1 01:40:30.278108 No test number in path 01:40:30.278219 [log/4/server.cmd] cmdfile says testnum 683 01:40:30.278400 - request found to be complete (683) 01:40:30.278661 Wrote request (122 bytes) input to log/4/server.input 01:40:30.278766 Send response test683 section 01:40:30.279123 Response sent (145 bytes) and written to log/4/server.response 01:40:30.279197 => persistent connection request ended, awaits new request 01:40:32.236290 Connection closed by client 01:40:32.236516 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 34566 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file netrc683 machine 127.0.0.1 login user1 password passwd1 machine 127.0.0.1 login user2 password passwd2 === End of file netrc683 === Start of file server.cmd Testnum 683 === End of file server.cmd === Start of file server.input GET / HTTP/1.1 Host: 127.0.0.1:42621 Authorization: Basic dXNlcjI6cGFzc3dkMg== User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Fri, 05 Aug 2022 10:09:00 GMT Server: test-server/fake Content-Type: text/plain Content-Length: 6 Connection: close -foo- === End of file server.response === Start of file stderr683 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr683 === Start of file trace683 01:40:28.236609 * Trying 127.0.0.1:42621... 01:40:29.139696 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 33980 01:40:29.266665 * using HTTP/1.x 01:40:29.407132 * Server auth using Basic with user 'user2' 01:40:29.705747 => Send header, 122 bytes (0x7a) 0000: GET / HTTP/1.1 0010: Host: 127.0.0.1:42621 0027: Authorization: Basic dXNlcjI6cGFzc3dkMg== 0052: User-Agent: curl/8.17.0 006b: Accept: */* 0078: 01:40:30.070271 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:40:30.391707 <= Recv header, 36 bytes (0x24) 0000: Date: Fri, 05 Aug 2022 10:09:00 GMT. 01:40:30.496415 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:40:30.563950 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/plain. 01:40:30.592217 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:40:30.639117 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:40:30.724700 <= Recv header, 1 bytes (0x1) 0000: . 01:40:30.783503 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:40:30.893436 * we are done reading and this is set to close, stop send 01:40:30.924276 * abort upload 01:40:31.421244 * shutting down connection #0 === End of file trace683 === Start of file valgrind683 ==279554== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind683 test 0684...[netrc with no login] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind684 ../src/curl -q --output log/7/curl684.out --include --trace-ascii log/7/trace684 --trace-time --netrc-optional --netrc-file log/7/netrc684 http://127.0.0.1:34897/ > log/7/stdout684 2> log/7/stderr684 valgrind ERROR ==279802== CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind685 ../src/curl -q --output log/8/curl685.out --include --trace-ascii log/8/trace685 --trace-time --netrc-optional --netrc-file log/8/netrc685 http://user@127.0.0.1:39461/ > log/8/stdout685 2> log/8/stderr685 error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 684 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind684 ../src/curl -q --output log/7/curl684.out --include --trace-ascii log/7/trace684 --trace-time --netrc-optional --netrc-file log/7/netrc684 http://127.0.0.1:34897/ > log/7/stdout684 2> log/7/stderr684 === End of file commands.log === Start of file curl684.out HTTP/1.1 200 OK Date: Fri, 05 Aug 2022 10:09:00 GMT Server: test-server/fake Content-Type: text/plain Content-Length: 6 Connection: close -foo- === End of file curl684.out === Start of file http_server.log 01:39:42.192009 ====> Client connect 01:39:42.192184 accept_connection 3 returned 4 01:39:42.192266 accept_connection 3 returned 0 01:39:42.201492 Read 93 bytes 01:39:42.201630 Process 93 bytes request 01:39:42.201725 Got request: GET /verifiedserver HTTP/1.1 01:39:42.201795 Are-we-friendly question received 01:39:42.201923 Wrote request (93 bytes) input to log/7/server.input 01:39:42.202029 Identifying ourselves as friends 01:39:42.202218 Response sent (57 bytes) and written to log/7/server.response 01:39:42.202286 special request received, no persistency 01:39:42.202347 ====> Client disconnect 0 01:40:29.623486 ====> Client connect 01:40:29.623626 accept_connection 3 returned 4 01:40:29.623699 accept_connection 3 returned 0 01:40:30.737885 Read 118 bytes 01:40:30.738090 Process 118 bytes request 01:40:30.738187 Got request: GET / HTTP/1.1 01:40:30.738353 No test number in path 01:40:30.738505 [log/7/server.cmd] cmdfile says testnum 684 01:40:30.738689 - request found to be complete (684) 01:40:30.738934 Wrote request (118 bytes) input to log/7/server.input 01:40:30.739043 Send response test684 section 01:40:30.739389 Response sent (145 bytes) and written to log/7/server.response 01:40:30.739456 => persistent connection request ended, awaits new request 01:40:32.728963 Connection closed by client 01:40:32.729162 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 44438 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file netrc684 machine 127.0.0.1 password 5up3r53cr37 === End of file netrc684 === Start of file server.cmd Testnum 684 === End of file server.cmd === Start of file server.input GET / HTTP/1.1 Host: 127.0.0.1:34897 Authorization: Basic OjV1cDNyNTNjcjM3 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Fri, 05 Aug 2022 10:09:00 GMT Server: test-server/fake Content-Type: text/plain Content-Length: 6 Connection: close -foo- === End of file server.response === Start of file stderr684 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr684 === Start of file trace684 01:40:29.680203 * Trying 127.0.0.1:34897... 01:40:30.593500 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 52108 01:40:30.728529 * using HTTP/1.x 01:40:30.861403 * Server auth using Basic with user '' 01:40:31.167868 => Send header, 118 bytes (0x76) 0000: GET / HTTP/1.1 0010: Host: 127.0.0.1:34897 0027: Authorization: Basic OjV1cDNyNTNjcjM3 004e: User-Agent: curl/8.17.0 0067: Accept: */* 0074: 01:40:31.508439 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:40:31.827498 <= Recv header, 36 bytes (0x24) 0000: Date: Fri, 05 Aug 2022 10:09:00 GMT. 01:40:31.941755 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:40:32.017087 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/plain. 01:40:32.046740 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:40:32.090151 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:40:32.189771 <= Recv header, 1 bytes (0x1) 0000: . 01:40:32.251804 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:40:32.368857 * we are done reading and this is set to close, stop send 01:40:32.398764 * abort upload 01:40:32.898238 * shutting down connection #0 === End of file trace684 === Start of file valgrind684 ==279802== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind684 test 0685...[netrc with no login - provided user] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind685 ../src/curl -q --output log/8/curl685.out --include --trace-ascii log/8/trace685 --trace-time --netrc-optional --netrc-file log/8/netrc685 http://user@127.0.0.1:39461/ > log/8/stdout685 2> log/8/stderr685 valgrind ERROR ==279961== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 685 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind685 ../src/curl -q --output log/8/curl685.out --include --trace-ascii log/8/trace685 --trace-time --netrc-optional --netrc-file log/8/netrc685 http://user@127.0.0.1:39461/ > log/8/stdout685 2> log/8/stderr685 === End of file commands.log === Start of file curl685.out HTTP/1.1 200 OK Date: Fri, 05 Aug 2022 10:09:00 GMT Server: test-server/fake Content-Type: text/plain Content-Length: 6 Connection: close -foo- === End of file curl685.out === Start of file http_server.log 01:39:43.854220 ====> Client connect 01:39:43.854375 accept_connection 3 returned 4 01:39:43.854443 accept_connection 3 returned 0 01:39:43.863536 Read 93 bytes 01:39:43.863667 Process 93 bytes request 01:39:43.863757 Got request: GET /verifiedserver HTTP/1.1 01:39:43.863818 Are-we-friendly question received 01:39:43.863936 Wrote request (93 bytes) input to log/8/server.input 01:39:43.864031 Identifying ourselves as friends 01:39:43.864223 Response sent (57 bytes) and written to log/8/server.response 01:39:43.864282 special request received, no persistency 01:39:43.864332 ====> Client disconnect 0 01:40:31.341086 ====> Client connect 01:40:31.341225 accept_connection 3 returned 4 01:40:31.341302 accept_connection 3 returned 0 01:40:32.505066 Read 126 bytes 01:40:32.505277 Process 126 bytes request 01:40:32.505373 Got request: GET / HTTP/1.1 01:40:32.505449 No test number in path 01:40:32.505564 [log/8/server.cmd] cmdfile says testnum 685 01:40:32.505740 - request found to be complete (685) 01:40:32.505988 Wrote request (126 bytes) input to log/8/server.input 01:40:32.506097 Send response test685 section 01:40:32.506471 Response sent (145 bytes) and written to log/8/server.response 01:40:32.506538 => persistent connection request ended, awaits new request 01:40:34.659164 Connection closed by client 01:40:34.659354 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 49284 * using HTTP/1.x > GET /verifiedserver CMD (21760): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind689 ./libtest/libtests lib567 rtsp://127.0.0.1:35317/689 > log/5/stdout689 2> log/5/stderr689 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind690 ../src/curl -q --include --trace-ascii log/2/trace690 --trace-time http://127.0.0.1:39863/ -O --output-dir log/2 > log/2/stdout690 2> log/2/stderr690 HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file netrc685 machine 127.0.0.1 password 5up3r53cr37 === End of file netrc685 === Start of file server.cmd Testnum 685 === End of file server.cmd === Start of file server.input GET / HTTP/1.1 Host: 127.0.0.1:39461 Authorization: Basic dXNlcjo1dXAzcjUzY3IzNw== User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK Date: Fri, 05 Aug 2022 10:09:00 GMT Server: test-server/fake Content-Type: text/plain Content-Length: 6 Connection: close -foo- === End of file server.response === Start of file stderr685 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr685 === Start of file trace685 01:40:31.404455 * Trying 127.0.0.1:39461... 01:40:32.347234 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 38412 01:40:32.497419 * using HTTP/1.x 01:40:32.635964 * Server auth using Basic with user 'user' 01:40:32.933185 => Send header, 126 bytes (0x7e) 0000: GET / HTTP/1.1 0010: Host: 127.0.0.1:39461 0027: Authorization: Basic dXNlcjo1dXAzcjUzY3IzNw== 0056: User-Agent: curl/8.17.0 006f: Accept: */* 007c: 01:40:33.295220 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:40:33.627222 <= Recv header, 36 bytes (0x24) 0000: Date: Fri, 05 Aug 2022 10:09:00 GMT. 01:40:33.739305 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:40:33.825026 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/plain. 01:40:33.854588 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:40:33.904150 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:40:33.990974 <= Recv header, 1 bytes (0x1) 0000: . 01:40:34.066099 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:40:34.219778 * we are done reading and this is set to close, stop send 01:40:34.257389 * abort upload 01:40:34.808478 * shutting down connection #0 === End of file trace685 === Start of file valgrind685 ==279961== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind685 test 0689...[fuzzing crash issue #12701] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind689 ./libtest/libtests lib567 rtsp://127.0.0.1:35317/689 > log/5/stdout689 2> log/5/stderr689 valgrind ERROR ==280252== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 689 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind689 ./libtest/libtests lib567 rtsp://127.0.0.1:35317/689 > log/5/stdout689 2> log/5/stderr689 === End of file commands.log === Start of file rtsp_server.log 01:39:50.644898 ====> Client connect 01:39:50.649295 Read 93 bytes 01:39:50.649417 rtspd_ProcessRequest() called with testno -7 and line [GET /verifiedserver HTTP/1.1 Host: 127.0.0.1:35317 User-Agent: curl/8.17.0 Accept: */* ] 01:39:50.649620 Got request: GET /verifiedserver HTTP/1.1 01:39:50.649826 Are-we-friendly question received 01:39:50.649970 Wrote request (93 bytes) input to log/5/server.input 01:39:50.650057 Send response number -2 part 0 01:39:50.650150 Identifying ourselves as friends 01:39:50.650427 Sent off 69 bytes 01:39:50.650510 Response sent (69 bytes) and written to log/5/server.response 01:39:50.650596 special request received, no persistency 01:39:50.650664 ====> Client disconnect 01:40:35.423419 ====> Client connect 01:40:36.526866 Read 95 bytes 01:40:36.527107 rtspd_ProcessRequest() called with testno -7 and line [OPTIONS rtsp://127.0.0.1:35317/689 RTSP/1.0 CSeq: 1 User-Agent: test567 Test-Number: 567 ] 01:40:36.527220 Got request: OPTIONS rtsp://127.0.0.1:35317/689 RTSP/1.0 01:40:36.527332 Requested test number 689 part 0 01:40:36.527551 rtspd_ProcessRequest found a complete request 01:40:36.527793 Wrote request (95 bytes) input to log/5/server.input 01:40:36.527929 Send response number 689 part 0 01:40:36.528193 Sent off 40 bytes 01:40:36.528281 Response sent (40 bytes) and written to log/5/server.response 01:40:36.528347 => persistent connection request ended, awaits new request 01:40:38.083383 Connection closed by client 01:40:38.083634 ====> Client disconnect === End of file rtsp_server.log === Start of file rtsp_verify.log * Trying 127.0.0.1:35317... * Established connection to 127.0.0.1 (127.0.0.1 port 35317) from 127.0.0.1 port 50092 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35317 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 30 < { [30 bytes data] * Connection #0 to host 127.0.0.1:35317 left intact === End of file rtsp_verify.log === Start of file rtsp_verify.out RTSP_SERVER WE ROOLZ: 269818 === End of file rtsp_verify.out === Start of file server.cmd Testnum 689 === End of file server.cmd === Start of file server.input OPTIONS rtsp://127.0.0.1:35317/689 RTSP/1.0 CSeq: 1 User-Agent: test567 Test-Number: 567 === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 30 RTSP_SERVER WE ROOLZ: 269818 RTSP/1.0 786 RTSP/ === End of file server.response === Start of file stderr689 URL: rtsp://127.0.0.1:35317/689 * Trying 127.0.0.1:35317... * Established connection to 127.0.0.1 (127.0.0.1 port 35317) from 127.0.0.1 port 51260 > OPTIONS rtsp://127.0.0.1:35317/689 RTSP/1.0 CSeq: 1 User-Agent: test567 Test-Number: 567 < RTSP/1.0 786 < * we are done reading and this is set to close, stop send * abort upload * The CSeq of this request 1 did not match the response 0 * shutting down connection #0 Test ended with result 85 === End of file stderr689 === Start of file stdout689 RTSP/1.0 786 === End of file stdout689 === Start of file valgrind689 ==280252== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind689 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 691 in state 4 Runner 2 (id 185908) running test 690 in state 4 Runner 3 (id 185910) running test 692 in state 4 Runner 4 (id 185912) running test 694 in state 4 Runner 5 (id 185914) running test 697 in state 4 Runner 6 (id 185916) running test 693 in state 4 Runner 7 (id 185918) running test 695 in state 4 Runner 8 (id 185920) running test 696 in state 4 test 0690...[-O with URL without path using trailing slash] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind690 ../src/curl -q --include --trace-ascii log/2/trace690 --trace-time http://127.0.0.1:39863/ -O --output-dir log/2 > log/2/stdout690 2> log/2/stderr690 valgrind ERROR ==280402== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 690 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --numCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind691 ../src/curl -q --include --trace-ascii log/1/trace691 --trace-time http://127.0.0.1:40641/path/to/here/ -O --output-dir log/1 > log/1/stdout691 2> log/1/stderr691 -callers=16 --log-file=log/2/valgrind690 ../src/curl -q --include --trace-ascii log/2/trace690 --trace-time http://127.0.0.1:39863/ -O --output-dir log/2 > log/2/stdout690 2> log/2/stderr690 === End of file commands.log === Start of file curl_response HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl_response === Start of file http_server.log 01:40:00.420379 ====> Client connect 01:40:00.420533 accept_connection 3 returned 4 01:40:00.420606 accept_connection 3 returned 0 01:40:00.426994 Read 93 bytes 01:40:00.427073 Process 93 bytes request 01:40:00.427157 Got request: GET /verifiedserver HTTP/1.1 01:40:00.427217 Are-we-friendly question received 01:40:00.427319 Wrote request (93 bytes) input to log/2/server.input 01:40:00.427405 Identifying ourselves as friends 01:40:00.427571 Response sent (57 bytes) and written to log/2/server.response 01:40:00.427630 special request received, no persistency 01:40:00.427681 ====> Client disconnect 0 01:40:48.060509 ====> Client connect 01:40:48.060655 accept_connection 3 returned 4 01:40:48.060732 accept_connection 3 returned 0 01:40:49.009459 Read 79 bytes 01:40:49.009677 Process 79 bytes request 01:40:49.009771 Got request: GET / HTTP/1.1 01:40:49.009875 No test number in path 01:40:49.009986 [log/2/server.cmd] cmdfile says testnum 690 01:40:49.010170 - request found to be complete (690) 01:40:49.010421 Wrote request (79 bytes) input to log/2/server.input 01:40:49.010525 Send response test690 section 01:40:49.010939 Response sent (267 bytes) and written to log/2/server.response 01:40:49.011009 => persistent connection request ended, awaits new request 01:40:50.829522 Connection closed by client 01:40:50.829710 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 34590 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 690 === End of file server.cmd === Start of file server.input GET / HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr690 Warning: No remote file name, uses "curl_response" % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 2 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr690 === Start of file trace690 01:40:47.143752 * Trying 127.0.0.1:39863... 01:40:47.996565 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 49168 01:40:48.101635 * using HTTP/1.x 01:40:48.434981 => Send header, 79 bytes (0x4f) 0000: GET / HTTP/1.1 0010: Host: 127.0.0.1:39863 0027: User-Agent: curl/8.17.0 0040: Accept: */* 004d: 01:40:48.765308 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:40:49.044795 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:40:49.139322 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:40:49.162552 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:40:49.169390 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:40:49.175596 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:40:49.204416 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:40:49.260694 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:40:49.293538 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:40:49.298021 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:40:49.376053 <= Recv header, 2 bytes (0x2) 0000: 01:40:49.431736 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:40:49.537299 * we are done reading and this is set to close, stop send 01:40:49.566049 * abort upload 01:40:50.027352 * shutting down connection #0 === End of file trace690 === Start of file valgrind690 ==280402== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind690 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 691 in state 4 Runner 2 (id 185908) running test 698 in state 4 Runner 3 (id 185910) running test 692 in state 4 Runner 4 (id 185912) running test 694 in state 4 Runner 5 (id 185914) running test 697 in state 4 Runner 6 (id 185916) running test 693 in state 4 Runner 7 (id 185918) running test 695 in state 4 Runner 8 (id 185920) running test 696 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 691 in state 4 Runner 2 (id 185908) running test 698 in state 4 Runner 3 (id 185910) running test 692 in state 4 Runner 4 (id 185912) running test 694 in state 4 Runner 5 (id 185914) running test 697 in state 4 Runner 6 (id 185916) running test 693 in state 4 Runner 7 (id 185918) running test 695 in state 4 Runner 8 (id 185920) running test 696 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 691 in state 4 Runner 2 (id 185908) running test 698 in state 4 Runner 3 (id 185910) running test 692 in state 4 Runner 4 (id 185912) running test 694 in state 4 Runner 5 (id 185914) running test 697 in state 4 Runner 6 (id 185916) running test 693 in state 4 Runner 7 (id 185918) running test 695 in state 4 Runner 8 (id 185920) running test 696 in state 4 test 0691...[-O with URL with path using trailing slash] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind691 ../src/curl -q --include --trace-ascii log/1/trace691 --trace-time http://127.0.0.1:40641/path/to/here/ -O --output-dir log/1 > log/1/stdout691 2> log/1/stderr691 valgrind ERROR ==280633== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 691 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind691 ../src/curl -q --include --trace-ascii log/1/trace691 --trace-time http://127.0.0.1:40641/path/to/here/ -O --output-dir log/1 > log/1/stdout691 2> log/1/stderr691 === End of file commands.log === Start of file here HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file here === Start of fileCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind693 ../src/curl -q --output log/6/curl693.out --include --trace-ascii log/6/trace693 --trace-time http://127.0.0.1:38277/693 --etag-save log/6/moo/boo/etag693 --create-dirs > log/6/stdout693 2> log/6/stderr693 http_server.log 01:40:33.333068 ====> Client connect 01:40:33.333240 accept_connection 3 returned 4 01:40:33.333326 accept_connection 3 returned 0 01:40:33.340265 Read 93 bytes 01:40:33.340410 Process 93 bytes request 01:40:33.340512 Got request: GET /verifiedserver HTTP/1.1 01:40:33.340588 Are-we-friendly question received 01:40:33.340728 Wrote request (93 bytes) input to log/1/server.input 01:40:33.340843 Identifying ourselves as friends 01:40:33.341051 Response sent (57 bytes) and written to log/1/server.response 01:40:33.341120 special request received, no persistency 01:40:33.341184 ====> Client disconnect 0 01:41:20.787026 ====> Client connect 01:41:20.787162 accept_connection 3 returned 4 01:41:20.787236 accept_connection 3 returned 0 01:41:21.815195 Read 92 bytes 01:41:21.815406 Process 92 bytes request 01:41:21.815499 Got request: GET /path/to/here/ HTTP/1.1 01:41:21.815667 No test number in path 01:41:21.815804 [log/1/server.cmd] cmdfile says testnum 691 01:41:21.815988 - request found to be complete (691) 01:41:21.816246 Wrote request (92 bytes) input to log/1/server.input 01:41:21.816354 Send response test691 section 01:41:21.816789 Response sent (267 bytes) and written to log/1/server.response 01:41:21.816858 => persistent connection request ended, awaits new request 01:41:23.832667 Connection closed by client 01:41:23.832856 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 52714 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 691 === End of file server.cmd === Start of file server.input GET /path/to/here/ HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr691 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr691 === Start of file trace691 01:41:19.836205 * Trying 127.0.0.1:40641... 01:41:20.756277 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 50088 01:41:20.891880 * using HTTP/1.x 01:41:21.243452 => Send header, 92 bytes (0x5c) 0000: GET /path/to/here/ HTTP/1.1 001d: Host: 127.0.0.1:40641 0034: User-Agent: curl/8.17.0 004d: Accept: */* 005a: 01:41:21.633664 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:41:21.947731 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:41:22.048601 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:41:22.076511 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:41:22.085569 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:41:22.093313 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:41:22.127270 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:41:22.185245 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:41:22.221659 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:41:22.226591 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:41:22.311605 <= Recv header, 2 bytes (0x2) 0000: 01:41:22.372077 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:41:22.484516 * we are done reading and this is set to close, stop send 01:41:22.516136 * abort upload 01:41:23.017684 * shutting down connection #0 === End of file trace691 === Start of file valgrind691 ==280633== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind691 test 0693...[--etag-save with --create-dirs] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind693 ../src/curl -q --output log/6/curl693.out --include --trace-ascii log/6/trace693 --trace-time http://127.0.0.1:38277/693 --etag-save log/6/moo/boo/etag693 --create-dirs > log/6/stdout693 2> log/6/stderr693 valgrind ERROR ==280849== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 693 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind693 ../src/curl -q --output log/6/curl693.out --include --trace-ascii log/6/trace693 --trace-time http://127.0.0.1:38277/693 --etag-save log/6/moo/boo/etag693 --create-dirs > log/6/stdout693 2> log/6/stderr693 === End of file commands.log === Start of file curl693.out HTTP/1.1 200 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Trailer: chunky-trailer Connection: mooo ETag: W/"asdf" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccc chunky-trailer: header data === End of file curl693.out === Start of file http_server.log 01:40:34.501412 ====> Client connect 01:40:34.501600 accept_connection 3 returned 4 01:40:34.501680 accept_connection 3 returned 0 01:40:34.509647 Read 93 bytes 01:40:34.509854 Process 93 bytes request 01:40:34.509954 Got request: GET /verifiedserver HTTP/1.1 01:40:34.510023 Are-we-friendly question received 01:40:34.510176 Wrote request (93 bytes) input to log/6/server.input 01:40:34.510290 Identifying ourselves as friends 01:40:34.510480 Response sent (57 bytes) and written to log/6/server.response 01:40:34.510552 special request received, no persistency 01:40:34.510616 ====> Client disconnect 0 01:41:21.787086 ====> Client connect 01:41:21.787232 accept_connection 3 returned 4 01:41:21.787313 accept_connection 3 returned 0 01:41:22.823305 Read 82 bytes 01:41:22.823513 Process 82 bytes request 01:41:22.823610 Got request: GET /693 HTTP/1.1 01:41:22.823687 Serve test number 693 part 0 01:41:22.823868 - request found to be complete (693) 01:41:22.824137 Wrote request (82 bytes) input to log/6/server.input 01:41:22.824250 Send response test693 section 01:41:22.824649 Response sent (358 bytes) and written to log/6/server.response 01:41:22.824727 => persistent connection request ended, awaits new request 01:41:25.585214 Connection closed by client 01:41:25.585420 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 54432 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind692 ../src/curl -q --trace-ascii log/3/trace692 --trace-time http://127.0.0.1:46853/ -JO --output-dir log/3 > log/3/stdout692 2> log/3/stderr692 md Testnum 693 === End of file server.cmd === Start of file server.input GET /693 HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 funky chunky Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Trailer: chunky-trailer Connection: mooo ETag: W/"asdf" 40 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 30 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 21;heresatest=moooo cccccccccccccccccccccccccccccccc 0 chunky-trailer: header data === End of file server.response === Start of file stderr693 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 145 0 145 0 0 29 0 --:--:-- 0:00:04 --:--:-- 41 100 145 0 145 0 0 29 0 --:--:-- 0:00:04 --:--:-- 39 === End of file stderr693 === Start of file trace693 01:41:21.850127 * Trying 127.0.0.1:38277... 01:41:22.766659 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 43424 01:41:22.901342 * using HTTP/1.x 01:41:23.253669 => Send header, 82 bytes (0x52) 0000: GET /693 HTTP/1.1 0013: Host: 127.0.0.1:38277 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:41:23.612383 <= Recv header, 28 bytes (0x1c) 0000: HTTP/1.1 200 funky chunky 01:41:23.935606 <= Recv header, 34 bytes (0x22) 0000: Server: fakeit/0.9 fakeitbad/1.0 01:41:24.113816 <= Recv header, 28 bytes (0x1c) 0000: Transfer-Encoding: chunked 01:41:24.146534 <= Recv header, 25 bytes (0x19) 0000: Trailer: chunky-trailer 01:41:24.204259 <= Recv header, 18 bytes (0x12) 0000: Connection: mooo 01:41:24.209428 <= Recv header, 16 bytes (0x10) 0000: ETag: W/"asdf" 01:41:24.338094 <= Recv header, 2 bytes (0x2) 0000: 01:41:24.396841 <= Recv data, 207 bytes (0xcf) 0000: 40.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0040: aaa.30.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.21;heres 0080: atest=moooo.cccccccccccccccccccccccccccccccc..0.chunky-trailer: 00c0: header data 00cd: 01:41:25.111892 * Connection #0 to host 127.0.0.1:38277 left intact === End of file trace693 === Start of file valgrind693 ==280849== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind693 test 0692...[-JO with URL without path using trailing slash] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind692 ../src/curl -q --trace-ascii log/3/trace692 --trace-time http://127.0.0.1:46853/ -JO --output-dir log/3 > log/3/stdout692 2> log/3/stderr692 valgrind ERROR ==280830== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 692 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind692 ../src/curl -q --trace-ascii log/3/trace692 --trace-time http://127.0.0.1:46853/ -JO --output-dir log/3 > log/3/stdout692 2> log/3/stderr692 === End of file commands.log === Start of file curl_response -foo- === End of file curl_response === Start of file http_server.log 01:40:34.328894 ====> Client connect 01:40:34.329084 accept_connection 3 returned 4 01:40:34.329168 accept_connection 3 returned 0 01:40:34.336580 Read 93 bytes 01:40:34.336703 Process 93 bytes request 01:40:34.336798 Got request: GET /verifiedserver HTTP/1.1 01:40:34.336862 Are-we-friendly question received 01:40:34.336980 Wrote request (93 bytes) input to log/3/server.input 01:40:34.337080 Identifying ourselves as friends 01:40:34.337241 Response sent (57 bytes) and written to log/3/server.response 01:40:34.337307 special request received, no persistency 01:40:34.337373 ====> Client disconnect 0 01:41:22.261933 ====> Client connect 01:41:22.262083 accept_connection 3 returned 4 01:41:22.262174 accept_connection 3 returned 0 01:41:23.286411 Read 79 bytes 01:41:23.286626 Process 79 bytes request 01:41:23.286720 Got request: GET / HTTP/1.1 01:41:23.286789 No test number in path 01:41:23.286902 [log/3/server.cmd] cmdfile says testnum 692 01:41:23.287084 - request found to be complete (692) 01:41:23.287324 Wrote request (79 bytes) input to log/3/server.input 01:41:23.287429 Send response test692 section 01:41:23.287792 Response sent (267 bytes) and written to log/3/server.response 01:41:23.287863 => persistent connection request ended, awaits new request 01:41:25.257612 Connection closed by client 01:41:25.257812 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 41180 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 692 === End of file server.cmd === Start of file server.input GET / HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr692 Warning: No remote file name, uses "curl_response" % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr692 === Start of file trace692 01:41:22.318093 * Trying 127.0.0.1:46853... 01:41:23.238670 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 57436 01:41:23.365163 * using HTTP/1.x 01:41:23.717292 => Send header, 79 bytes (0x4f) 0000: GET / HTTP/1.1 0010: Host: 127.0.0.1:46853 0027: User-Agent: curl/8.17.0 0040: Accept: */* 004d: 01:41:24.079723 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:41:24.311981 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:41:24.402875 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:41:24.427742 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:41:24.435893 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:41:24.443202 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:41:24.474986 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:41:24.534781 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:41:24.572171 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:41:24.577255 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:41:24.659025 <= Recv header, 2 bytes (0x2) 0000: 01:41:24.717887 <= CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind696 ./libtest/libtests lib556 http://127.0.0.1:39461 > log/8/stdout696 2> log/8/stderr696 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind694 ./libtest/libtests lib694 http://127.0.0.1:42621/path/mine http://127.0.0.1:42621/path/6940010 > log/4/stdout694 2> log/4/stderr694 Recv data, 6 bytes (0x6) 0000: -foo-. 01:41:24.898881 * we are done reading and this is set to close, stop send 01:41:24.929798 * abort upload 01:41:25.427368 * shutting down connection #0 === End of file trace692 === Start of file valgrind692 ==280830== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind692 test 0696...[CONNECT_ONLY and doing a second curl_easy_perform] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind696 ./libtest/libtests lib556 http://127.0.0.1:39461 > log/8/stdout696 2> log/8/stderr696 valgrind ERROR ==281380== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 696 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind696 ./libtest/libtests lib556 http://127.0.0.1:39461 > log/8/stdout696 2> log/8/stderr696 === End of file commands.log === Start of file http_server.log 01:40:38.936740 ====> Client connect 01:40:38.936903 accept_connection 3 returned 4 01:40:38.936989 accept_connection 3 returned 0 01:40:38.943751 Read 93 bytes 01:40:38.943867 Process 93 bytes request 01:40:38.943954 Got request: GET /verifiedserver HTTP/1.1 01:40:38.944019 Are-we-friendly question received 01:40:38.944132 Wrote request (93 bytes) input to log/8/server.input 01:40:38.944228 Identifying ourselves as friends 01:40:38.944416 Response sent (57 bytes) and written to log/8/server.response 01:40:38.944478 special request received, no persistency 01:40:38.944532 ====> Client disconnect 0 01:41:23.137563 ====> Client connect 01:41:23.137703 accept_connection 3 returned 4 01:41:23.137781 accept_connection 3 returned 0 01:41:24.413054 Read 34 bytes 01:41:24.413249 Process 34 bytes request 01:41:24.413342 Got request: GET /696 HTTP/1.1 01:41:24.413411 Serve test number 696 part 0 01:41:24.413588 - request found to be complete (696) 01:41:24.413830 Wrote request (34 bytes) input to log/8/server.input 01:41:24.413936 Send response test696 section 01:41:24.414149 connection close instruction "swsclose" found in response 01:41:24.414315 Response sent (144 bytes) and written to log/8/server.response 01:41:24.414381 instructed to close connection after server-reply 01:41:24.414444 ====> Client disconnect 0 01:41:25.051010 ====> Client connect 01:41:25.051140 accept_connection 3 returned 4 01:41:25.051218 accept_connection 3 returned 0 01:41:25.121636 Read 34 bytes 01:41:25.121839 Process 34 bytes request 01:41:25.121946 Got request: GET /696 HTTP/1.1 01:41:25.122028 Serve test number 696 part 0 01:41:25.122237 - request found to be complete (696) 01:41:25.122458 Wrote request (34 bytes) input to log/8/server.input 01:41:25.122554 Send response test696 section 01:41:25.122806 connection close instruction "swsclose" found in response 01:41:25.122989 Response sent (144 bytes) and written to log/8/server.response 01:41:25.123065 instructed to close connection after server-reply 01:41:25.123135 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 49242 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 696 === End of file server.cmd === Start of file server.input GET /696 HTTP/1.1 Host: ninja GET /696 HTTP/1.1 Host: ninja === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK swsclose Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT Content-Length: 6 Connection: close -foo- HTTP/1.1 200 OK swsclose Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT Content-Length: 6 Connection: close -foo- === End of file server.response === Start of file stderr696 URL: http://127.0.0.1:39461 * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 44104 * Connection #0 to host 127.0.0.1:39461 left intact * closing connection #0 * Hostname 127.0.0.1 was found in DNS cache * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 44116 * Connection #1 to host 127.0.0.1:39461 left intact Test ended with result 0 === End of file stderr696 === Start of file stdout696 HTTP/1.1 200 OK swsclose Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT Content-Length: 6 Connection: close -foo- HTTP/1.1 200 OK swsclose Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT Content-Length: 6 Connection: close -foo- === End of file stdout696 === Start of file valgrind696 ==281380== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind696 test 0694...[HTTP with NTLM twice, verify CURLINFO_HTTPAUTH_USED] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind694 ./libtest/libtests lib694 http://127.0.0.1:42621/path/mine http://127.0.0.1:42621/path/6940010 > log/4/stdout694 2> log/4/stderr694 valgrind ERROR ==281058== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 694 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind694 ./libtest/libtests lib694 http://127.0.0.1:42621/path/mine http://127.0.0.1:42621/path/6940010 > log/4/stdout694 2> log/4/stderr694 === End of file commands.log === Start of file http_server.log 01:40:36.464156 ====> Client connect 01:40:36.464354 accept_connection 3 returned 4 01:40:36.464437 accept_connection 3 returned 0 01:40:36.471704 Read 93 bytes 01:40:36.471874 Process 93 bytes request 01:40:36.471967 Got request: GET /verifiedserver HTTP/1.1 01:40:36.472033 Are-we-friendly question received 01:40:36.472168 Wrote request (93 bytes) input to log/4/server.input 01:40:36.472269 Identifying ourselves as friends 01:40:36.472454 Response sent (57 bytes) and written to log/4/server.response 01:40:36.472517 special request received, no persistency 01:40:36.472572 ====> Client disconnect 0 01:41:21.716115 ====> Client connect 01:41:21.716255 accept_connection 3 returned 4 01:41:21.716334 accept_connection 3 returned 0 01:41:22.710466 Read 63 bytes 01:41:22.710667 Process 63 bytes request 01:41:22.710764 Got request: GET /path/mine HTTP/1.1 01:41:22.710837 No test number in path 01:41:22.710949 [log/4/server.cmd] cmdfile says testnum 694 01:41:22.711195 - request found to be complete (694) 01:41:22.711567 Wrote request (63 bytes) input to log/4/server.input 01:41:22.711677 Send response test694 section 01:41:22.712130 Response sent (225 bytes) and written to log/4/server.response 01:41:22.712196 => persistent connection request ended, awaits new request 01:41:24.805153 Read 129 bytes 01:41:24.805358 Process 129 bytes request 01:41:24.805456 Got request: GET /path/mine HTTP/1.1 01:41:24.805528 No test number in path 01:41:24.805628 [log/4/server.cmd] cmdfile says testnum 694 01:41:24.805894 - request found to be complete (694) 01:41:24.806193 Received NTLM type-1, sending back data 1001 01:41:24.806304 Wrote request (129 bytes) input to log/4/server.input 01:41:24.806393 Send response test694 section 01:41:24.806935 Response sent (334 bytes) and written to log/4/server.response 0CMD (6656): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind697 ../src/curl -q --output log/5/curl697.out --include --trace-ascii log/5/trace697 --trace-time --netrc --netrc-file log/5/netrc697 http://user1@http.example/ > log/5/stdout697 2> log/5/stderr697 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind695 ./libtest/libtests lib695 http://127.0.0.1:34897/we/want/695 > log/7/stdout695 2> log/7/stderr695 1:41:24.807006 => persistent connection request ended, awaits new request 01:41:25.915360 Read 253 bytes 01:41:25.915554 Process 253 bytes request 01:41:25.915650 Got request: GET /path/mine HTTP/1.1 01:41:25.915719 No test number in path 01:41:25.915822 [log/4/server.cmd] cmdfile says testnum 694 01:41:25.916064 - request found to be complete (694) 01:41:25.916310 Received NTLM type-3, sending back data 1002 01:41:25.916431 Wrote request (253 bytes) input to log/4/server.input 01:41:25.916519 Send response test694 section 01:41:25.916989 Response sent (166 bytes) and written to log/4/server.response 01:41:25.917056 => persistent connection request ended, awaits new request 01:41:26.297945 Read 66 bytes 01:41:26.298134 Process 66 bytes request 01:41:26.298239 Got request: GET /path/6940010 HTTP/1.1 01:41:26.298315 Serve test number 694 part 10 01:41:26.298580 - request found to be complete (694) 01:41:26.298857 Wrote request (66 bytes) input to log/4/server.input 01:41:26.298956 Send response test694 section 01:41:26.299421 Response sent (120 bytes) and written to log/4/server.response 01:41:26.299496 => persistent connection request ended, awaits new request 01:41:26.665083 Connection closed by client 01:41:26.665295 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 34610 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 694 === End of file server.cmd === Start of file server.input GET /path/mine HTTP/1.1 Host: 127.0.0.1:42621 Accept: */* GET /path/mine HTTP/1.1 Host: 127.0.0.1:42621 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= Accept: */* GET /path/mine HTTP/1.1 Host: 127.0.0.1:42621 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAAAgACAHAAAAALAAsAcgAAAAAAAAAAAAAAhoIBAAQt1KW5CgG4YdWWcfXyfXBz1ZMCzYp37xYjBiAizmw58O6eQS7yR66eqYGWeSwl9W1lV09SS1NUQVRJT04= Accept: */* GET /path/6940010 HTTP/1.1 Host: 127.0.0.1:42621 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 401 Authorization Required Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Negotiate WWW-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 This is not the real page HTTP/1.1 401 Authorization Required WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 34 Hey you, authenticate or go away HTTP/1.1 200 Things are fine Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. HTTP/1.1 200 Things are fine Content-Type: yeah/maybe Content-Length: 42 Contents of that second request. Differn. === End of file server.response === Start of file stderr694 URL: http://127.0.0.1:42621/path/mine * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 59652 * using HTTP/1.x > GET /path/mine HTTP/1.1 Host: 127.0.0.1:42621 Accept: */* < HTTP/1.1 401 Authorization Required < Server: Apache/1.3.27 (Darwin) PHP/4.1.2 < WWW-Authenticate: Negotiate < WWW-Authenticate: NTLM < Content-Type: text/html; charset=iso-8859-1 < Content-Length: 26 * Ignoring the response-body * setting size while ignoring < * Connection #0 to host 127.0.0.1:42621 left intact * Issue another request to this URL: 'http://127.0.0.1:42621/path/mine' * Reusing existing http: connection with host 127.0.0.1 * Server auth using NTLM with user 'me' > GET /path/mine HTTP/1.1 Host: 127.0.0.1:42621 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= Accept: */* < HTTP/1.1 401 Authorization Required < WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== < Content-Length: 34 * Ignoring the response-body * setting size while ignoring < * Connection #0 to host 127.0.0.1:42621 left intact * Issue another request to this URL: 'http://127.0.0.1:42621/path/mine' * Reusing existing http: connection with host 127.0.0.1 * Server auth using NTLM with user 'me' > GET /path/mine HTTP/1.1 Host: 127.0.0.1:42621 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAAAgACAHAAAAALAAsAcgAAAAAAAAAAAAAAhoIBAAQt1KW5CgG4YdWWcfXyfXBz1ZMCzYp37xYjBiAizmw58O6eQS7yR66eqYGWeSwl9W1lV09SS1NUQVRJT04= Accept: */* < HTTP/1.1 200 Things are fine < Server: Microsoft-IIS/5.0 < Content-Type: text/html; charset=iso-8859-1 < Content-Length: 42 < * Connection #0 to host 127.0.0.1:42621 left intact * Reusing existing http: connection with host 127.0.0.1 * Server auth using NTLM with user 'me' > GET /path/6940010 HTTP/1.1 Host: 127.0.0.1:42621 Accept: */* < HTTP/1.1 200 Things are fine < Content-Type: yeah/maybe < Content-Length: 42 < * Connection #0 to host 127.0.0.1:42621 left intact Test ended with result 0 === End of file stderr694 === Start of file stdout694 HTTP/1.1 401 Authorization Required Server: Apache/1.3.27 (Darwin) PHP/4.1.2 WWW-Authenticate: Negotiate WWW-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Content-Length: 26 HTTP/1.1 401 Authorization Required WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 34 HTTP/1.1 200 Things are fine Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. HTTP/1.1 200 Things are fine Content-Type: yeah/maybe Content-Length: 42 Contents of that second request. Differn. === End of file stdout694 === Start of file valgrind694 ==281058== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind694 test 0697...[netrc with missing netrc file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind697 ../src/curl -q --output log/5/curl697.out --include --trace-ascii log/5/trace697 --trace-time --netrc --netrc-file log/5/netrc697 http://user1@http.example/ > log/5/stdout697 2> log/5/stderr697 valgrind ERROR ==281496== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 697 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind697 ../src/curl -q --output log/5/curl697.out --include --trace-ascii log/5/trace697 --trace-time --netrc --netrc-file log/5/netrc697 http://user1@http.example/ > log/5/stdout697 2> log/5/stderr697 === End of file commands.log === Start of file server.cmd Testnum 697 === End of file server.cmd === Start of file stderr697 curl: (26) .netrc error: no such file === End of file stderr697 === Start of file trace697 01:41:27.847834 * .netrc error: no such file 01:41:28.264440 * closing connection #-1 === End of file trace697 === Start of file valgrind697 ==281496== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind697 test 0695...[MIME parts reuse as a child part] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind698 ../src/curl -q --output log/2/curl698.out --include --trace-ascii log/2/trace698 --trace-time ftp://127.0.0.1:39881/698 --ftp-account "one count" ftp://127.0.0.1:39881/698 > log/2/stdout698 2> log/2/stderr698 ck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind695 ./libtest/libtests lib695 http://127.0.0.1:34897/we/want/695 > log/7/stdout695 2> log/7/stderr695 valgrind ERROR ==281222== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 695 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind695 ./libtest/libtests lib695 http://127.0.0.1:34897/we/want/695 > log/7/stdout695 2> log/7/stderr695 === End of file commands.log === Start of file http_server.log 01:40:37.031511 ====> Client connect 01:40:37.031687 accept_connection 3 returned 4 01:40:37.031763 accept_connection 3 returned 0 01:40:37.038802 Read 93 bytes 01:40:37.038912 Process 93 bytes request 01:40:37.039004 Got request: GET /verifiedserver HTTP/1.1 01:40:37.039072 Are-we-friendly question received 01:40:37.039196 Wrote request (93 bytes) input to log/7/server.input 01:40:37.039298 Identifying ourselves as friends 01:40:37.039480 Response sent (57 bytes) and written to log/7/server.response 01:40:37.039552 special request received, no persistency 01:40:37.039611 ====> Client disconnect 0 01:41:28.104512 ====> Client connect 01:41:28.104665 accept_connection 3 returned 4 01:41:28.104739 accept_connection 3 returned 0 01:41:29.608778 Read 375 bytes 01:41:29.608997 Process 375 bytes request 01:41:29.609097 Got request: POST /we/want/695 HTTP/1.1 01:41:29.609169 Serve test number 695 part 0 01:41:29.609366 - request found to be complete (695) 01:41:29.609538 Found Content-Length: 196 in the request 01:41:29.609699 Wrote request (375 bytes) input to log/7/server.input 01:41:29.609801 Send response test695 section 01:41:29.610028 connection close instruction "swsclose" found in response 01:41:29.610200 Response sent (98 bytes) and written to log/7/server.response 01:41:29.610269 instructed to close connection after server-reply 01:41:29.610329 ====> Client disconnect 0 01:41:31.872688 ====> Client connect 01:41:31.872841 accept_connection 3 returned 4 01:41:31.872930 accept_connection 3 returned 0 01:41:32.025890 Read 602 bytes 01:41:32.026114 Process 602 bytes request 01:41:32.026227 Got request: POST /we/want/695 HTTP/1.1 01:41:32.026310 Serve test number 695 part 0 01:41:32.026527 - request found to be complete (695) 01:41:32.026718 Found Content-Length: 423 in the request 01:41:32.026853 Wrote request (602 bytes) input to log/7/server.input 01:41:32.026958 Send response test695 section 01:41:32.027212 connection close instruction "swsclose" found in response 01:41:32.027369 Response sent (98 bytes) and written to log/7/server.response 01:41:32.027442 instructed to close connection after server-reply 01:41:32.027508 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 38232 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 695 === End of file server.cmd === Start of file server.input POST /we/want/695 HTTP/1.1 Host: 127.0.0.1:34897 Accept: */* Content-Length: 196 Content-Type: multipart/form-data; boundary=------------------------mvfb8VO476rtElsrMZPt24 --------------------------mvfb8VO476rtElsrMZPt24 Content-Disposition: form-data; name="data" Content-Type: text/html hello --------------------------mvfb8VO476rtElsrMZPt24-- POST /we/want/695 HTTP/1.1 Host: 127.0.0.1:34897 Accept: */* Content-Length: 423 Content-Type: multipart/form-data; boundary=------------------------9aNjI135ZZB90VSAnE77SU --------------------------9aNjI135ZZB90VSAnE77SU Content-Disposition: form-data Content-Type: multipart/mixed; boundary=------------------------mvfb8VO476rtElsrMZPt24 --------------------------mvfb8VO476rtElsrMZPt24 Content-Disposition: attachment; name="data" Content-Type: text/html hello --------------------------mvfb8VO476rtElsrMZPt24-- --------------------------9aNjI135ZZB90VSAnE77SU-- === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla HTTP/1.0 200 OK swsclose Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake blablabla === End of file server.response === Start of file stderr695 URL: http://127.0.0.1:34897/we/want/695 * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 53018 * using HTTP/1.x > POST /we/want/695 HTTP/1.1 Host: 127.0.0.1:34897 Accept: */* Content-Length: 196 Content-Type: multipart/form-data; boundary=------------------------mvfb8VO476rtElsrMZPt24 * upload completely sent off: 196 bytes * HTTP 1.0, assume close after body < HTTP/1.0 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < * shutting down connection #0 * Hostname 127.0.0.1 was found in DNS cache * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 53020 * using HTTP/1.x > POST /we/want/695 HTTP/1.1 Host: 127.0.0.1:34897 Accept: */* Content-Length: 423 Content-Type: multipart/form-data; boundary=------------------------9aNjI135ZZB90VSAnE77SU * upload completely sent off: 423 bytes * HTTP 1.0, assume close after body < HTTP/1.0 200 OK swsclose < Date: Tue, 09 Nov 2010 14:49:00 GMT < Server: test-server/fake < * shutting down connection #1 Test ended with result 0 === End of file stderr695 === Start of file valgrind695 ==281222== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind695 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 699 in state 4 Runner 2 (id 185908) running test 698 in state 4 Runner 3 (id 185910) running test 701 in state 4 Runner 4 (id 185912) running test 703 in state 4 Runner 5 (id 185914) running test 704 in state 4 Runner 6 (id 185916) running test 700 in state 4 Runner 7 (id 185918) running test 705 in state 4 Runner 8 (id 185920) running test 702 in state 4 test 0698...[FTP with ACCT and connection reuse] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind698 ../src/curl -q --output log/2/curl698.out --include --trace-ascii log/2/trace698 --trace-time ftp://127.0.0.1:39881/698 --ftp-account "one count" ftp://127.0.0.1:39881/698 > log/2/stdout698 2> log/2/stderr698 valgrind ERROR ==281664== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 698 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind698 ../src/curl -q --output log/2/curl698.out --include --trace-ascii log/2/trace698 --trace-time ftp://127.0.0.1:39881/698 --ftp-account "one count" ftp://127.0.0.1:39881/698 > log/2/stdout698 2> log/2/stderr698 === End of file commands.log === Start of file curl698.out data to see that FTP works so does it? === End of file curl698.out === Start of file ftp_server.log 01:40:53.904098 ====> Client connect 01:40:53.905044 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:40:53.909641 < "USER anonymous" 01:40:53.909912 > "331 We are happy you popped in![CR][LF]" 01:40:53.910919 < "PASS ftp@example.com" 01:40:53.914511 > "230 Welcome you silly person[CR][LF]" 01:40:53.915036 < "PWD" 01:40:53.915292 > "257 "/" is current directory[CR][LF]" 01:40:53.917708 < "EPSV" 01:40:53.917933 ====> Passive DATA channel requested by client 01:40:53.918078 DATA sockfilt for passive data channel starting... 01:40:53.954754 DATA sockfilt for passive data channel started (pid 281658) 01:40:53.955882 DATA sockfilt for passive data channel listens on port 41947 01:40:53.956571 > "229 Entering Passive Mode (|||41947|)[CR][LF]" 01:40:53.956730 Client has been notified that DATA conn will be accepted on port 41947 01:40:53.959378 Client connects to port 41947 01:40:53.959571 ====> Client established passive DATA connection on port 41947 01:40:53.960144 < "TYPE I" 01:40:53.960645 > "200 I modify TYPE as you wanted[CR][LF]" 01:40:53.961539 < "SIZE verifiedserver" 01:40:53.961829 > "213 18[CR][LF]" 01:40:53.963121 < "RETR verifiedserver" 01:40:53.965321 > "150 Binary junk (18 bytes).[CR][LF]" 01:40:53.966212 =====> Closing passive DATA connection... 01:40:53.966365 Server disconnects passive DATA connection 01:40:53.967245 Server disconnected passive DATA connection 01:40:53.967410 DATA sockfilt for passive data channel quits (pid 281658) 01:40:53.974296 DATA sockfilt for passive data channel quit (pid 281658) 01:40:53.974458 =====> Closed passive DATA connection 01:40:53.974694 > "226 File transfer complete[CR][LF]" 01:40:54.011321 < "QUIT" 01:40:54.011639 > "221 bye bye baby[CR][LF]" 01:40:54.012689 MAIN sockfilt said DISC 01:40:54.012863 ====> Client disconnected 01:40:54.013106 Awaiting input 01:41:41.594742 ====> Client connect 01:41:41.595483 FTPD: Getting commands from log/2/server.cmd 01:41:41.596271 FTPD: set custom reply for PASS command 01:41:41.596680 FTPD: set custom reply for ACCT command 01:41:41.596927 FTPD: run test case number: 698 01:41:41.601333 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:41:42.849463 < "USER anonymous" 01:41:42.849889 > "331 We are happy you popped in![CR][LF]" 01:41:42.962458 < "PASS ftp@example.com" 01:41:42.963181 > "332 please provide account name[CR][LF]" 01:41:43.052504 < "ACCT one count" 01:41:43.053187 > "230 thank you[CR][LF]" 01:41:43.083330 < "PWD" 01:41:43.084004 > "257 "/" is current directory[CR][LF]" 01:41:43.275222 < "EPSV" 01:41:43.275551 ====> Passive DATA channel requested by client 01:41:43.275706 DATA sockfilt for passive data channel starting... 01:41:43.361886 DATA sockfilt for passive data channel started (pid 282894) 01:41:43.363476 DATA sockfilt for passive data channel listens on port 33309 01:41:43.363856 > "229 Entering Passive Mode (|||33309|)[CR][LF]" 01:41:43.364046 Client has been notified that DATA conn will be accepted on port 33309 01:41:43.560745 Client connects to port 33309 01:41:43.561321 ====> Client established passive DATA connection on port 33309 01:41:43.665796 < "TYPE I" 01:41:43.666227 > "200 I modify TYPE as you wanted[CR][LF]" 01:41:43.718228 < "SIZE 698" 01:41:43.724012 > "213 51[CR][LF]" 01:41:43.799591 < "RETR 698" 01:41:43.800763 > "150 Binary data connection for 698 () (51 bytes).[CR][LF]" 01:41:43.801474 =====> Closing passive DATA connection... 01:41:43.801652 Server disconnects passive DATA connection 01:41:43.807342 Server disconnected passive DATA connection 01:41:43.807530 DATA sockfilt for passive data channel quits (pid 282894) 01:41:43.813714 DATA sockfilt for passive data channel quit (pid 282894) 01:41:43.813894 =====> Closed passive DATA connection 01:41:43.814163 > "226 File transfer complete[CR][LF]" 01:41:46.131895 < "EPSV" 01:41:46.132242 ====> Passive DATA channel requested by client 01:41:46.132384 DATA sockfilt for passive data channel starting... 01:41:46.179582 DATA sockfilt for passive data channel started (pid 282897) 01:41:46.180638 DATA sockfilt for passive data channel listens on port 46021 01:41:46.180945 > "229 Entering Passive Mode (|||46021|)[CR][LF]" 01:41:46.181103 Client has been notified that DATA conn will be accepted on port 46021 01:41:46.204006 Client connects to port 46021 01:41:46.204249 ====> Client established passive DATA connection on port 46021 01:41:46.231256 < "SIZE 698" 01:41:46.231800 > "213 51[CR][LF]" 01:41:46.239658 < "RETR 698" 01:41:46.240091 > "150 Binary data connection for 698 () (51 bytes).[CR][LF]" 01:41:46.240710 =====> Closing passive DATA connection... 01:41:46.240868 Server disconnects passive DATA connection 01:41:46.247336 Server disconnected passive DATA connection 01:41:46.247502 DATA sockfilt for passive data channel quits (pid 282897) 01:41:46.253466 DATA sockfilt for passive data channel quit (pid 282897) 01:41:46.253617 =====> Closed passive DATA connection 01:41:46.253860 > "226 File transfer complete[CR][LF]" 01:41:46.523081 < "QUIT" 01:41:46.523489 > "221 bye bye baby[CR][LF]" 01:41:46.636468 MAIN sockfilt said DISC 01:41:46.636830 ====> Client disconnected 01:41:46.637104 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:40:54.511334 ====> Client connect 01:40:54.515908 Received DATA (on stdin) 01:40:54.515984 > 160 bytes data, server => client 01:40:54.516082 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:40:54.516174 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:40:54.516253 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:40:54.519577 < 16 bytes data, client => server 01:40:54.519654 'USER anonymous\r\n' 01:40:54.520752 Received DATA (on stdin) 01:40:54.520816 > 33 bytes data, server => client 01:40:54.520893 '331 We are happy you popped in!\r\n' 01:40:54.521115 < 22 bytes data, client => server 01:40:54.521186 'PASS ftp@example.com\r\n' 01:40:54.521775 Received DATA (on stdin) 01:40:54.521841 > 30 bytes data, server => client 01:40:54.524685 '230 Welcome you silly person\r\n' 01:40:54.524916 < 5 bytes data, client => server 01:40:54.524981 'PWD\r\n' 01:40:54.526124 Received DATA (on stdin) 01:40:54.526188 > 30 bytes data, server => client 01:40:54.526265 '257 "/" is current directory\r\n' 01:40:54.527945 < 6 bytes data, client => server 01:40:54.528026 'EPSV\r\n' 01:40:54.566782 Received DATA (on stdin) 01:40:54.566912 > 39 bytes data, server => client 01:40:54.567017 '229 Entering Passive Mode (|||41947|)\r\n' 01:40:54.569875 < 8 bytes data, client => server 01:40:54.569944 'TYPE I\r\n' 01:40:54.571009 Received DATA (on stdin) 01:40:54.571072 > 33 bytes data, server => client 01:40:54.571168 '200 I modify TYPE as you wanted\r\n' 01:40:54.571734 < 21 bytes data, client => server 01:40:54.571810 'SIZE verifiedserver\r\n' 01:40:54.572757 Received DATA (on stdin) 01:40:54.572820 > 8 bytes data, server => client 01:40:54.572881 '213 18\r\n' 01:40:54.573267 < 21 bytes data, client => server 01:40:54.573337 'RETR verifiedserver\r\n' 01:40:54.574010 Received DATA (on stdin) 01:40:54.574072 > 29 bytes data, server => client 01:40:54.574164 '150 Binary junk (18 bytes).\r\n' 01:40:54.585525 Received DATA (on stdin) 01:40:54.585596 > 28 bytes data, server => client 01:40:54.585671 '226 File transfer complete\r\n' 01:40:54.621212 < 6 bytes data, client => server 01:40:54.621313 'QUIT\r\n' 01:40:54.622484 Received DATA (on stdin) 01:40:54.622549 > 18 bytes data, server => client 01:40:54.622617 '221 bye bye baby\r\n' 01:40:54.623251 ====> Client disconnect 01:40:54.623916 Received ACKD (on stdin) 01:41:42.204987 ====> Client connect 01:41:42.211216 Received DATA (on stdin) 01:41:42.211324 > 160 bytes data, server => client 01:41:42.211460 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:41:42.211564 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:41:42.211657 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:41:43.458723 < 16 bytes data, client => server 01:41:43.458908 'USER anonymous\r\n' 01:41:43.464551 Received DATA (on stdin) 01:41:43.464640 > 33 bytes data, server => client 01:41:43.464729 '331 We are happy you popped in!\r\n' 01:41:43.571905 < 22 bytes data, client => server 01:41:43.572062 'PASS ftp@example.com\r\n' 01:41:43.573371 Received DATA (on stdin) 01:41:43.573447 > 33 bytes data, server => client 01:41:43.573558 '332 please provide account name\r\n' 01:41:43.661981 < 16 bytes data, client => server 01:41:43.662140 'ACCT one count\r\n' 01:41:43.663400 Received DATA (on stdin) 01:41:43.663477 > 15 bytes data, server => client 01:41:43.663572 '230 thank you\r\n' 01:41:43.693191 < 5 bytes data, client => server 01:41:43.693287 'PWD\r\n' 01:41:43.694186 Received DATA (on stdin) 01:41:43.694260 > 30 bytes data, server => client 01:41:43.694366 '257 "/" is current directory\r\n' 01:41:43.884692 < 6 bytes data, client => server 01:41:43.884858 'EPSV\r\n' 01:41:43.974342 Received DATA (on stdin) 01:41:43.974486 > 39 bytes data, server => client 01:41:43.974598 '229 Entering Passive Mode (|||33309|)\r\n' 01:41:44.275441 < 8 bytes data, client => server 01:41:44.275638 'TYPE I\r\n' 01:41:44.276714 Received DATA (on stdin) 01:41:44.276789 > 33 bytes data, server => client 01:41:44.276875 '200 I modify TYPE as you wanted\r\n' 01:41:44.327913 < 10 bytes data, client => server 01:41:44.328093 'SIZE 698\r\n' 01:41:44.331162 Received DATA (on stdin) 01:41:44.331252 > 8 bytes data, server => client 01:41:44.331320 '213 51\r\n' 01:41:44.409444 < 10 bytes data, client => server 01:41:44.409578 'RETR 698\r\n' 01:41:44.411260 Received DATA (on stdin) 01:41:44.411331 > 51 bytes data, server => client 01:41:44.411422 '150 Binary data connection for 698 () (51 bytes).\r\n' 01:41:44.424671 Received DATA (on stdin) 01:41:44.424741 > 28 bytes data, server => client 01:41:44.424816 '226 File transfer complete\r\n' 01:41:46.741547 < 6 bytes data, client => server 01:41:46.741707 'EPSV\r\n' 01:41:46.791439 Received DATA (on stdin) 01:41:46.791572 > 39 bytes data, server => client 01:41:46.791657 '229 Entering Passive Mode (|||46021|)\r\n' 01:41:46.841230 < 10 bytes data, client => server 01:41:46.841347 'SIZE 698\r\n' 01:41:46.842302 Received DATA (on stdin) 01:41:46.842365 > 8 bytes data, server => client 01:41:46.842427 '213 51\r\n' 01:41:46.849717 < 10 bytes data, client => server 01:41:46.849784 'RETR 698\r\n' 01:41:46.852900 Received DATA (on stdin) 01:41:46.852967 > 51 bytes data, server => client 01:41:46.853056 '150 Binary data connection for 698 () (51 bytes).\r\n' 01:41:46.864613 Received DATA (on stdin) 01:41:46.864687 > 28 bytes data, server => client 01:41:46.864762 '226 File transfer complete\r\n' 01:41:47.132557 < 6 bytes data, client => server 01:41:47.132721 'QUIT\r\n' 01:41:47.134234 Received DATA (on stdin) 01:41:47.134301 > 18 bytes data, server => client 01:41:47.134369 '221 bye bye baby\r\n' 01:41:47.246777 ====> Client disconnect 01:41:47.247819 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:40:53.557197 Running IPv4 version 01:40:53.564025 Listening on port 41947 01:40:53.564432 Wrote pid 281658 to log/2/server/ftp_sockdata.pid 01:40:53.565123 Received PING (on stdin) 01:40:53.565958 Received PORT (on stdin) 01:40:53.569732 ====> Client connect 01:40:53.576191 Received DATA (on stdin) 01:40:53.576449 > 18 bytes data, server => client 01:40:53.577398 'WE ROOLZ: 202189\r\n' 01:40:53.577616 Received DISC (on stdin) 01:40:53.577724 ====> Client forcibly disconnected 01:40:53.578217 Received QUIT (on stdin) 01:40:53.578290 quits 01:40:53.578722 ============> sockfilt quits 01:41:43.952921 Running IPv4 version 01:41:43.967371 Listening on port 33309 01:41:43.971240 Wrote pid 282894 to log/2/server/ftp_sockdata.pid 01:41:43.972070 Received PING (on stdin) 01:41:43.972955 Received PORT (on stdin) 01:41:44.167996 ====> Client connect 01:41:44.411576 Received DATA (on stdin) 01:41:44.412012 > 5 bytes data, server => client 01:41:44.412417 'data\n' 01:41:44.412686 Received DATA (on stdin) 01:41:44.412753 > 7 bytes data, server => client 01:41:44.412821 ' to\n' 01:41:44.412914 Received DATA (on stdin) 01:41:44.412978 > 10 bytes data, server => client 01:41:44.413047 ' see\n' 01:41:44.413136 Received DATA (on stdin) 01:41:44.413200 > 9 bytes data, server => client 01:41:44.413268 'that FTP\n' 01:41:44.413347 Received DATA (on stdin) 01:41:44.413410 > 6 bytes data, server => client 01:41:44.413475 'works\n' 01:41:44.413553 Received DATA (on stdin) 01:41:44.413615 > 14 bytes data, server => client 01:41:44.413684 ' so does it?\n' 01:41:44.413761 Received DISC (on stdin) 01:41:44.413875 ====> Client forcibly disconnected 01:41:44.421206 Received QUIT (on stdin) 01:41:44.421291 quits 01:41:44.421796 ============> sockfilt quits 01:41:46.781811 Running IPv4 version 01:41:46.788721 Listening on port 46021 01:41:46.789170 Wrote pid 282897 to log/2/server/ftp_sockdata.pid 01:41:46.789863 Received PING (on stdin) 01:41:46.790619 Received PORT (on stdin) 01:41:46.813164 ====> Client connect 01:41:46.850860 Received DATA (on stdin) 01:41:46.851193 > 5 bytes data, server => client 01:41:46.851521 'data\n' 01:41:46.851767 Received DATA (on stdin) 01:41:46.851831 > 7 bytes data, server => client 01:41:46.851895 ' to\n' 01:41:46.851984 Received DATA (on stdin) 01:41:46.852045 > 10 bytes data, server => client 01:41:46.852111 ' see\n' 01:41:46.852199 Received DATA (on stdin) 01:41:46.852260 > 9 bytes data, server => client 01:41:46.852325 'that FTP\n' 01:41:46.852401 Received DATA (on stdin) 01:41:46.852461 > 6 bytes data, server => client 01:41:46.852523 'works\n' 01:41:46.852599 Received DATA (on stdin) 01:41:46.852659 > 14 bytes data, server => client 01:41:46.852726 ' so does it?\n' 01:41:46.852804 Received DISC (on stdin) 01:41:46.852912 ====> Client forcibly disconnected 01:41:46.861200 Received QUIT (on stdin) 01:41:46.861299 quits 01:41:46.861778 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASS 332 please provide account name REPLY ACCT 230 thank you Testnum 698 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com ACCT one count PWD EPSV TYPE I SIZE 698 RETR 698 EPSV SIZE 698 RETR 698 QUIT === End of file server.input === Start of file stderr698 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 51 100 51 0 0 10 0 0:00:05 0:00:04 0:00:01 13 100 51 100 51 0 0 9 0 0:00:05 0:00:05 --:--:-- 12 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 51 100 51 0 0 77 0 --:--:-- --:--:-- --:--:-- 199 === End of file stderr698 === Start of file stdout698 data to see that FTP works so does it? === End of file stdout698 === Start of file trace698 01:41:41.289191 * Trying 127.0.0.1:39881... 01:41:42.163551 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 34646 01:41:42.399699 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:41:42.733707 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:41:42.759030 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:41:42.763991 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:41:42.768574 <= Recv header, 32 bytes (CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind699 ../src/curl -q --output log/1/curl699.out --include --trace-ascii log/1/trace699 --trace-time http://127.0.0.1:40641/699 -K log/1/cmd > log/1/stdout699 2> log/1/stderr699 0x20) 0000: 220 \___|\___/|_| \_\_____| 01:41:42.868348 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:41:42.940877 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:41:42.962640 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:41:43.033355 <= Recv header, 33 bytes (0x21) 0000: 332 please provide account name 01:41:43.051481 => Send header, 16 bytes (0x10) 0000: ACCT one count 01:41:43.066292 <= Recv header, 15 bytes (0xf) 0000: 230 thank you 01:41:43.082700 => Send header, 5 bytes (0x5) 0000: PWD 01:41:43.091147 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:41:43.125307 * Entry path is '/' 01:41:43.225032 * Request has same path as previous transfer 01:41:43.274213 => Send header, 6 bytes (0x6) 0000: EPSV 01:41:43.289042 * Connect data stream passively 01:41:43.366651 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||33309|) 01:41:43.481308 * Connecting to 127.0.0.1 (127.0.0.1) port 33309 01:41:43.549629 * Trying 127.0.0.1:33309... 01:41:43.635743 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 33309) from 127.0.0.1 port 39330 01:41:43.664977 => Send header, 8 bytes (0x8) 0000: TYPE I 01:41:43.683163 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:41:43.715624 => Send header, 10 bytes (0xa) 0000: SIZE 698 01:41:43.745230 <= Recv header, 8 bytes (0x8) 0000: 213 51 01:41:43.798981 => Send header, 10 bytes (0xa) 0000: RETR 698 01:41:43.818441 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 698 () (51 bytes). 01:41:43.858786 * Maxdownload = -1 01:41:43.868610 * Getting file with size: 51 01:41:44.010312 <= Recv data, 51 bytes (0x33) 0000: data. to. see.that FTP.works. so does it?. 01:41:44.303790 * abort upload 01:41:44.332129 <= Recv data, 0 bytes (0x0) 01:41:44.521006 * Remembering we are in dir "" 01:41:44.698960 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:41:44.981579 * Connection #0 to host 127.0.0.1:39881 left intact 01:41:46.036654 * Reusing existing ftp: connection with host 127.0.0.1 01:41:46.126841 * Request has same path as previous transfer 01:41:46.134047 => Send header, 6 bytes (0x6) 0000: EPSV 01:41:46.136682 * Connect data stream passively 01:41:46.183051 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||46021|) 01:41:46.196783 * Connecting to 127.0.0.1 (127.0.0.1) port 46021 01:41:46.201383 * Trying 127.0.0.1:46021... 01:41:46.219071 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 46021) from 127.0.0.1 port 45672 01:41:46.229725 => Send header, 10 bytes (0xa) 0000: SIZE 698 01:41:46.234574 <= Recv header, 8 bytes (0x8) 0000: 213 51 01:41:46.239221 => Send header, 10 bytes (0xa) 0000: RETR 698 01:41:46.245574 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 698 () (51 bytes). 01:41:46.255999 * Maxdownload = -1 01:41:46.257595 * Getting file with size: 51 01:41:46.265987 <= Recv data, 51 bytes (0x33) 0000: data. to. see.that FTP.works. so does it?. 01:41:46.288478 * abort upload 01:41:46.290505 <= Recv data, 0 bytes (0x0) 01:41:46.303414 * Remembering we are in dir "" 01:41:46.314402 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:41:46.345724 * Connection #0 to host 127.0.0.1:39881 left intact === End of file trace698 === Start of file valgrind698 ==281664== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind698 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 699 in state 4 Runner 2 (id 185908) running test 706 in state 4 Runner 3 (id 185910) running test 701 in state 4 Runner 4 (id 185912) running test 703 in state 4 Runner 5 (id 185914) running test 704 in state 4 Runner 6 (id 185916) running test 700 in state 4 Runner 7 (id 185918) running test 705 in state 4 Runner 8 (id 185920) running test 702 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 699 in state 4 Runner 2 (id 185908) running test 706 in state 4 Runner 3 (id 185910) running test 701 in state 4 Runner 4 (id 185912) running test 703 in state 4 Runner 5 (id 185914) running test 704 in state 4 Runner 6 (id 185916) running test 700 in state 4 Runner 7 (id 185918) running test 705 in state 4 Runner 8 (id 185920) running test 702 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 699 in state 4 Runner 2 (id 185908) running test 706 in state 4 Runner 3 (id 185910) running test 701 in state 4 Runner 4 (id 185912) running test 703 in state 4 Runner 5 (id 185914) running test 704 in state 4 Runner 6 (id 185916) running test 700 in state 4 Runner 7 (id 185918) running test 705 in state 4 Runner 8 (id 185920) running test 702 in state 4 test 0699...[--config with single-letter options plus one that is cleared] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind699 ../src/curl -q --output log/1/curl699.out --include --trace-ascii log/1/trace699 --trace-time http://127.0.0.1:40641/699 -K log/1/cmd > log/1/stdout699 2> log/1/stderr699 valgrind ERROR ==281898== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 699 === Start of file cmd -Lfuhej:you === End of file cmd === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind699 ../src/curl -q --output log/1/curl699.out --include --trace-ascii log/1/trace699 --trace-time http://127.0.0.1:40641/699 -K log/1/cmd > log/1/stdout699 2> log/1/stderr699 === End of file commands.log === Start of file curl699.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl699.out === Start of file http_server.log 01:41:27.784529 ====> Client connect 01:41:27.784717 accept_connection 3 returned 4 01:41:27.784795 accept_connection 3 returned 0 01:41:27.792288 Read 93 bytes 01:41:27.792447 Process 93 bytes request 01:41:27.792549 Got request: GET /verifiedserver HTTP/1.1 01:41:27.792618 Are-we-friendly question received 01:41:27.792754 Wrote request (93 bytes) input to log/1/server.input 01:41:27.792856 Identifying ourselves as friends 01:41:27.793030 Response sent (57 bytes) and written to log/1/server.response 01:41:27.793097 special request received, no persistency 01:41:27.793156 ====> Client disconnect 0 01:42:15.098503 ====> Client connect 01:42:15.098653 accept_connection 3 returned 4 01:42:15.098737 accept_connection 3 returned 0 01:42:16.200434 Read 117 bytes 01:42:16.200646 Process 117 bytes request 01:42:16.200740 Got request: GET /699 HTTP/1.1 01:42:16.200813 Serve test number 699 part 0 01:42:16.200980 - request found to be complete (699) 01:42:16.201244 Wrote request (117 bytes) input to log/1/server.input 01:42:16.201354 Send response test699 section 01:42:16.201773 Response sent (267 bytes) and written to log/1/server.response 01:42:16.201841 => persistent connection request ended, awaits new request 01:42:18.192984 Connection closed by client 01:42:18.200630 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 60964 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-LengthCMD (24832): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind702 ../src/curl -q --output log/8/curl702.out --include --trace-ascii log/8/trace702 --trace-time --socks4 127.0.0.1:43595 http://127.0.0.1:47 > log/8/stdout702 2> log/8/stderr702 CMD (24832): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind703 ../src/curl -q --output log/4/curl703.out --include --trace-ascii log/4/trace703 --trace-time --socks5 127.0.0.1:37029 http://127.0.0.1:47 > log/4/stdout703 2> log/4/stderr703 : 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 699 === End of file server.cmd === Start of file server.input GET /699 HTTP/1.1 Host: 127.0.0.1:40641 Authorization: Basic aGVqOnlvdQ== User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr699 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 === End of file stderr699 === Start of file trace699 01:42:14.159859 * Trying 127.0.0.1:40641... 01:42:15.063525 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 40870 01:42:15.188604 * using HTTP/1.x 01:42:15.329352 * Server auth using Basic with user 'hej' 01:42:15.627682 => Send header, 117 bytes (0x75) 0000: GET /699 HTTP/1.1 0013: Host: 127.0.0.1:40641 002a: Authorization: Basic aGVqOnlvdQ== 004d: User-Agent: curl/8.17.0 0066: Accept: */* 0073: 01:42:15.989140 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:42:16.307747 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:42:16.411754 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:42:16.439603 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:42:16.447923 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 01:42:16.455329 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:42:16.487185 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:42:16.546896 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:42:16.583816 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:42:16.588985 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:42:16.675131 <= Recv header, 2 bytes (0x2) 0000: 01:42:16.734147 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:42:16.846332 * we are done reading and this is set to close, stop send 01:42:16.877243 * abort upload 01:42:17.381690 * shutting down connection #0 === End of file trace699 === Start of file valgrind699 ==281898== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind699 startnew: ./server/servers socksd --port 0 --pidfile log/8/server/socks_server.pid --portfile log/8/server/socks_server.port --reqfile log/8/socksd-request.log --logfile log/8/socks_server.log --backend 127.0.0.1 --config log/8/server.cmd RUN: SOCKS server is now running PID 282075 * pid socks => 282075 282075 test 0702...[Attempt connect to non-listening HTTP server via SOCKS4 proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind702 ../src/curl -q --output log/8/curl702.out --include --trace-ascii log/8/trace702 --trace-time --socks4 127.0.0.1:43595 http://127.0.0.1:47 > log/8/stdout702 2> log/8/stderr702 valgrind ERROR ==282118== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 702 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind702 ../src/curl -q --output log/8/curl702.out --include --trace-ascii log/8/trace702 --trace-time --socks4 127.0.0.1:43595 http://127.0.0.1:47 > log/8/stdout702 2> log/8/stderr702 === End of file commands.log === Start of file server.cmd response 91 Testnum 702 === End of file server.cmd === Start of file socks_server.log 01:41:29.996294 Running IPv4 version 01:41:30.004269 Listening on port 43595 01:41:30.004792 Wrote pid 282075 to log/8/server/socks_server.pid 01:41:30.005082 Wrote port 43595 to log/8/server/socks_server.port 01:42:18.618035 ====> Client connect, Read config from log/8/server.cmd 01:42:18.618340 Reset to defaults 01:42:18.618539 parse config file 01:42:18.620700 response [91] set 01:42:19.274843 READ 9 bytes 01:42:19.275410 '0401002f7f00000100' 01:42:19.277218 Failed connecting to 127.0.0.1:47 (111) Connection refused 01:42:19.277446 Sent 8 bytes 01:42:19.277538 '005b002f7f000001' 01:42:19.277619 ====> Client disconnect === End of file socks_server.log === Start of file stderr702 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 curl: (97) [SOCKS] cannot complete SOCKS4 connection to 127.0.0.1:47. (91), request rejected or failed. === End of file stderr702 === Start of file trace702 01:42:17.682720 * Trying 127.0.0.1:43595... 01:42:18.819434 * [SOCKS] cannot complete SOCKS4 connection to 127.0.0.1:47. (91), request rejected or failed. 01:42:19.220572 * closing connection #0 === End of file trace702 === Start of file valgrind702 ==282118== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind702 startnew: ./server/servers socksd --port 0 --pidfile log/4/server/socks_server.pid --portfile log/4/server/socks_server.port --reqfile log/4/socksd-request.log --logfile log/4/socks_server.log --backend 127.0.0.1 --config log/4/server.cmd RUN: SOCKS server is now running PID 282110 * pid socks => 282110 282110 test 0703...[Attempt connect to non-listening HTTP server via SOCKS5 proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind703 ../src/curl -q --output log/4/curl703.out --include --trace-ascii log/4/trace703 --trace-time --socks5 127.0.0.1:37029 http://127.0.0.1:47 > log/4/stdout703 2> log/4/stderr703 valgrind ERROR ==282188== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 703 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind703 ../src/curl -q --output log/4/curl703.out --include --trace-ascii log/4/trace703 --trace-time --socks5 127.0.0.1:37029 http://127.0.0.1:47 > log/4/stdout703 2> log/4/stderr703 === End of file commands.log === Start of file server.cmd response 1 Testnum 703 === End of file server.cmd === Start of file socks_server.log 01:41:29.585653 Running IPv4 version 01:41:29.593370 Listening on port 37029 01:41:29.593834 Wrote pid 282110 to log/4/server/socks_server.pid 01:41:29.594099 Wrote port 37029 to log/4/server/socks_server.port 01:42:17.898038 ====> Client connect, Read config from log/4/server.cmd 01:42:17.898341 Reset to defaults 01:42:17.898536 parse config file 01:42:17.900717 response [1] set 01:42:18.477731 READ 4 bytes 01:42:18.478276 '05020001' 01:42:18.478458 Incoming request deemed fine 01:42:18.478624 Sent 2 bytes 01:42:18.478716 '0500' 01:42:18.704515 READ 10 bytes 01:42:18.704755 '050100017f000001002f' 01:42:18CMD (1792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind704 ../src/curl -q --output log/5/curl704.out --include --trace-ascii log/5/trace704 --trace-time --socks4 127.0.0.1:47 http://127.0.0.1:46263/704 > log/5/stdout704 2> log/5/stderr704 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind700 ../src/curl -q --output log/6/curl700.out --include --trace-ascii log/6/trace700 --trace-time --socks4 127.0.0.1:40477 http://127.0.0.1:38277/700 > log/6/stdout700 2> log/6/stderr700 .704937 Received ATYP 1 01:42:18.705435 Sent 10 bytes 01:42:18.705528 '050100017f000001002f' 01:42:18.705617 ====> Client disconnect === End of file socks_server.log === Start of file socksd-request.log atyp 1 => 127.0.0.1 === End of file socksd-request.log === Start of file stderr703 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 curl: (97) cannot complete SOCKS5 connection to 127.0.0.1. (1) === End of file stderr703 === Start of file trace703 01:42:17.952002 * Trying 127.0.0.1:37029... 01:42:19.155211 * cannot complete SOCKS5 connection to 127.0.0.1. (1) 01:42:19.557505 * closing connection #0 === End of file trace703 === Start of file valgrind703 ==282188== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind703 test 0704...[Attempt connect to non-listening SOCKS4 proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind704 ../src/curl -q --output log/5/curl704.out --include --trace-ascii log/5/trace704 --trace-time --socks4 127.0.0.1:47 http://127.0.0.1:46263/704 > log/5/stdout704 2> log/5/stderr704 valgrind ERROR ==282597== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 704 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind704 ../src/curl -q --output log/5/curl704.out --include --trace-ascii log/5/trace704 --trace-time --socks4 127.0.0.1:47 http://127.0.0.1:46263/704 > log/5/stdout704 2> log/5/stderr704 === End of file commands.log === Start of file http_server.log 01:41:32.074931 ====> Client connect 01:41:32.075122 accept_connection 3 returned 4 01:41:32.075210 accept_connection 3 returned 0 01:41:32.082397 Read 93 bytes 01:41:32.082649 Process 93 bytes request 01:41:32.082744 Got request: GET /verifiedserver HTTP/1.1 01:41:32.082815 Are-we-friendly question received 01:41:32.082965 Wrote request (93 bytes) input to log/5/server.input 01:41:32.083072 Identifying ourselves as friends 01:41:32.083291 Response sent (57 bytes) and written to log/5/server.response 01:41:32.083384 special request received, no persistency 01:41:32.083449 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 54796 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 704 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 === End of file server.response === Start of file stderr704 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 curl: (7) Failed to connect to 127.0.0.1 port 46263 via 127.0.0.1 after 3000 ms: Could not connect to server === End of file stderr704 === Start of file trace704 01:42:19.233141 * Trying 127.0.0.1:47... 01:42:20.158496 * connect to 127.0.0.1 port 47 from 127.0.0.1 port 54342 failed: Connection refused 01:42:20.290266 * Failed to connect to 127.0.0.1 port 46263 via 127.0.0.1 after 3000 ms: Could not connect to server 01:42:20.690542 * closing connection #0 === End of file trace704 === Start of file valgrind704 ==282597== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind704 startnew: ./server/servers socksd --port 0 --pidfile log/6/server/socks_server.pid --portfile log/6/server/socks_server.port --reqfile log/6/socksd-request.log --logfile log/6/socks_server.log --backend 127.0.0.1 --config log/6/server.cmd RUN: SOCKS server is now running PID 282099 * pid socks => 282099 282099 test 0700...[HTTP GET via SOCKS4 proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind700 ../src/curl -q --output log/6/curl700.out --include --trace-ascii log/6/trace700 --trace-time --socks4 127.0.0.1:40477 http://127.0.0.1:38277/700 > log/6/stdout700 2> log/6/stderr700 valgrind ERROR ==282142== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 700 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind700 ../src/curl -q --output log/6/curl700.out --include --trace-ascii log/6/trace700 --trace-time --socks4 127.0.0.1:40477 http://127.0.0.1:38277/700 > log/6/stdout700 2> log/6/stderr700 === End of file commands.log === Start of file curl700.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl700.out === Start of file http_server.log 01:41:29.095060 ====> Client connect 01:41:29.095238 accept_connection 3 returned 4 01:41:29.095312 accept_connection 3 returned 0 01:41:29.102448 Read 93 bytes 01:41:29.102593 Process 93 bytes request 01:41:29.102693 Got request: GET /verifiedserver HTTP/1.1 01:41:29.102762 Are-we-friendly question received 01:41:29.102895 Wrote request (93 bytes) input to log/6/server.input 01:41:29.103000 Identifying ourselves as friends 01:41:29.103190 Response sent (57 bytes) and written to log/6/server.response 01:41:29.103255 special request received, no persistency 01:41:29.103313 ====> Client disconnect 0 01:42:18.795863 ====> Client connect 01:42:18.796001 accept_connection 3 returned 4 01:42:18.796086 accept_connection 3 returned 0 01:42:19.514549 Read 82 bytes 01:42:19.514775 Process 82 bytes request 01:42:19.514883 Got request: GET /700 HTTP/1.1 01:42:19.514963 Serve test number 700 part 0 01:42:19.515163 - request found to be complete (700) 01:42:19.515430 Wrote request (82 bytes) input to log/6/server.input 01:42:19.515548 Send response test700 section 01:42:19.515983 Response sent (256 bytes) and written to log/6/server.response 01:42:19.516052 => persistent connection request ended, awaits new request 01:42:21.408551 Connection closed by client 01:42:21.408725 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 57486 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 700 === End of file server.cmd === Start of file server.input GET /700 HTTP/1.1 Host: 127.0.0.1:38277 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind701 ../src/curl -q --output log/3/curl701.out --include --trace-ascii log/3/trace701 --trace-time --socks5 127.0.0.1:41047 http://127.0.0.1:46853/701 > log/3/stdout701 2> log/3/stderr701 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file socks_server.log 01:41:29.266641 Running IPv4 version 01:41:29.274593 Listening on port 40477 01:41:29.275069 Wrote pid 282099 to log/6/server/socks_server.pid 01:41:29.275351 Wrote port 40477 to log/6/server/socks_server.port 01:42:18.131350 ====> Client connect, Read config from log/6/server.cmd 01:42:18.131627 Reset to defaults 01:42:18.131831 parse config file 01:42:18.794533 READ 9 bytes 01:42:18.795110 '040195857f00000100' 01:42:18.795731 Connected fine to 127.0.0.1:38277 01:42:18.795937 Sent 8 bytes 01:42:18.796039 '005a95857f000001' 01:42:18.796125 ====> Tunnel transfer 01:42:21.408182 SOCKS transfer completed. Bytes: < 256 > 82 === End of file socks_server.log === Start of file stderr700 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr700 === Start of file trace700 01:42:18.188608 * Trying 127.0.0.1:40477... 01:42:19.344454 * Opened SOCKS connection from 127.0.0.1 port 41212 to 127.0.0.1 port 38277 (via 127.0.0.1 port 40477) 01:42:19.489800 * Established connection to 127.0.0.1 (127.0.0.1 port 40477) from 127.0.0.1 port 41212 01:42:19.611786 * using HTTP/1.x 01:42:19.938082 => Send header, 82 bytes (0x52) 0000: GET /700 HTTP/1.1 0013: Host: 127.0.0.1:38277 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:42:20.243219 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:42:20.561261 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:42:20.660623 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:42:20.684537 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:42:20.692111 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:42:20.699255 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:42:20.730411 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:42:20.789669 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:42:20.826558 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:42:20.831365 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:42:20.912757 <= Recv header, 1 bytes (0x1) 0000: . 01:42:20.972706 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:42:21.080109 * we are done reading and this is set to close, stop send 01:42:21.111585 * abort upload 01:42:21.600386 * shutting down connection #0 === End of file trace700 === Start of file valgrind700 ==282142== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind700 startnew: ./server/servers socksd --port 0 --pidfile log/3/server/socks_server.pid --portfile log/3/server/socks_server.port --reqfile log/3/socksd-request.log --logfile log/3/socks_server.log --backend 127.0.0.1 --config log/3/server.cmd RUN: SOCKS server is now running PID 282107 * pid socks => 282107 282107 test 0701...[HTTP GET via SOCKS5 proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind701 ../src/curl -q --output log/3/curl701.out --include --trace-ascii log/3/trace701 --trace-time --socks5 127.0.0.1:41047 http://127.0.0.1:46853/701 > log/3/stdout701 2> log/3/stderr701 valgrind ERROR ==282196== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 701 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind701 ../src/curl -q --output log/3/curl701.out --include --trace-ascii log/3/trace701 --trace-time --socks5 127.0.0.1:41047 http://127.0.0.1:46853/701 > log/3/stdout701 2> log/3/stderr701 === End of file commands.log === Start of file curl701.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl701.out === Start of file http_server.log 01:41:29.370926 ====> Client connect 01:41:29.371089 accept_connection 3 returned 4 01:41:29.371167 accept_connection 3 returned 0 01:41:29.381178 Read 93 bytes 01:41:29.381296 Process 93 bytes request 01:41:29.381385 Got request: GET /verifiedserver HTTP/1.1 01:41:29.381450 Are-we-friendly question received 01:41:29.381564 Wrote request (93 bytes) input to log/3/server.input 01:41:29.381655 Identifying ourselves as friends 01:41:29.381831 Response sent (57 bytes) and written to log/3/server.response 01:41:29.381892 special request received, no persistency 01:41:29.381948 ====> Client disconnect 0 01:42:19.327488 ====> Client connect 01:42:19.327617 accept_connection 3 returned 4 01:42:19.327702 accept_connection 3 returned 0 01:42:19.980868 Read 82 bytes 01:42:19.981085 Process 82 bytes request 01:42:19.981198 Got request: GET /701 HTTP/1.1 01:42:19.981272 Serve test number 701 part 0 01:42:19.981450 - request found to be complete (701) 01:42:19.981702 Wrote request (82 bytes) input to log/3/server.input 01:42:19.981812 Send response test701 section 01:42:19.982161 Response sent (256 bytes) and written to log/3/server.response 01:42:19.982228 => persistent connection request ended, awaits new request 01:42:21.941207 Connection closed by client 01:42:21.941350 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 57440 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 701 === End of file server.cmd === Start of file server.input GET /701 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file socks_server.log 01:41:29.568465 Running IPv4 version 01:41:29.577997 Listening on port 41047 01:41:29.578545 Wrote pid 282107 to log/3/server/socks_server.pid 01:41:29.578853 Wrote port 41047 to log/3/server/socks_server.port 01:42:18.511351 ====> Client connect, Read config from log/3/server.cmd 01:42:18.511630 Reset to defaults 01:42:18.511829 parse config file 01:42:19.107851 READ 4 bytes 01:42:19.108414 '05020001' 01:42:19.108593 Incoming request deemed fine 01:42:19.108777 Sent 2 bytes 01:42:19.108862 '0500' 01:42CMD (1792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind705 ../src/curl -q --output log/7/curl705.out --include --trace-ascii log/7/trace705 --trace-time --socks5 127.0.0.1:47 http://127.0.0.1:34897/705 > log/7/stdout705 2> log/7/stderr705 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind706 ../src/curl -q --output log/2/curl706.out --include --trace-ascii log/2/trace706 --trace-time --socks4 127.0.0.1:41943 ftp://127.0.0.1:39881/ > log/2/stdout706 2> log/2/stderr706 :19.326054 READ 10 bytes 01:42:19.326277 '050100017f000001b705' 01:42:19.326483 Received ATYP 1 01:42:19.327372 Connected fine to 127.0.0.1:46853 01:42:19.327573 Sent 10 bytes 01:42:19.327670 '050000017f000001b705' 01:42:19.327759 ====> Tunnel transfer 01:42:21.940787 SOCKS transfer completed. Bytes: < 256 > 82 === End of file socks_server.log === Start of file socksd-request.log atyp 1 => 127.0.0.1 === End of file socksd-request.log === Start of file stderr701 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr701 === Start of file trace701 01:42:18.571326 * Trying 127.0.0.1:41047... 01:42:19.802061 * Opened SOCKS connection from 127.0.0.1 port 55572 to 127.0.0.1 port 46853 (via 127.0.0.1 port 41047) 01:42:19.947726 * Established connection to 127.0.0.1 (127.0.0.1 port 41047) from 127.0.0.1 port 55572 01:42:20.074609 * using HTTP/1.x 01:42:20.396509 => Send header, 82 bytes (0x52) 0000: GET /701 HTTP/1.1 0013: Host: 127.0.0.1:46853 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:42:20.740677 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:42:21.054796 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:42:21.161923 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:42:21.186514 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:42:21.194605 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:42:21.202136 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:42:21.233782 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:42:21.298697 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:42:21.334899 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:42:21.340121 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:42:21.449018 <= Recv header, 1 bytes (0x1) 0000: . 01:42:21.507389 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:42:21.620537 * we are done reading and this is set to close, stop send 01:42:21.650729 * abort upload 01:42:22.129495 * shutting down connection #0 === End of file trace701 === Start of file valgrind701 ==282196== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind701 test 0705...[Attempt connect to non-listening SOCKS5 proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind705 ../src/curl -q --output log/7/curl705.out --include --trace-ascii log/7/trace705 --trace-time --socks5 127.0.0.1:47 http://127.0.0.1:34897/705 > log/7/stdout705 2> log/7/stderr705 valgrind ERROR ==282778== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 705 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind705 ../src/curl -q --output log/7/curl705.out --include --trace-ascii log/7/trace705 --trace-time --socks5 127.0.0.1:47 http://127.0.0.1:34897/705 > log/7/stdout705 2> log/7/stderr705 === End of file commands.log === Start of file http_server.log 01:41:37.035704 ====> Client connect 01:41:37.035887 accept_connection 3 returned 4 01:41:37.035963 accept_connection 3 returned 0 01:41:37.043437 Read 93 bytes 01:41:37.043545 Process 93 bytes request 01:41:37.043634 Got request: GET /verifiedserver HTTP/1.1 01:41:37.043699 Are-we-friendly question received 01:41:37.043810 Wrote request (93 bytes) input to log/7/server.input 01:41:37.043907 Identifying ourselves as friends 01:41:37.044063 Response sent (57 bytes) and written to log/7/server.response 01:41:37.044124 special request received, no persistency 01:41:37.044177 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 45336 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 705 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 === End of file server.response === Start of file stderr705 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 curl: (7) Failed to connect to 127.0.0.1 port 34897 via 127.0.0.1 after 3206 ms: Could not connect to server === End of file stderr705 === Start of file trace705 01:42:24.226236 * Trying 127.0.0.1:47... 01:42:25.263956 * connect to 127.0.0.1 port 47 from 127.0.0.1 port 47670 failed: Connection refused 01:42:25.423691 * Failed to connect to 127.0.0.1 port 34897 via 127.0.0.1 after 3206 ms: Could not connect to server 01:42:25.870723 * closing connection #0 === End of file trace705 === Start of file valgrind705 ==282778== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind705 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 707 in state 4 Runner 2 (id 185908) running test 706 in state 4 Runner 3 (id 185910) running test 712 in state 4 Runner 4 (id 185912) running test 709 in state 4 Runner 5 (id 185914) running test 710 in state 4 Runner 6 (id 185916) running test 711 in state 4 Runner 7 (id 185918) running test 713 in state 4 Runner 8 (id 185920) running test 708 in state 4 startnew: ./server/servers socksd --port 0 --pidfile log/2/server/socks_server.pid --portfile log/2/server/socks_server.port --reqfile log/2/socksd-request.log --logfile log/2/socks_server.log --backend 127.0.0.1 --config log/2/server.cmd RUN: SOCKS server is now running PID 282946 * pid socks => 282946 282946 test 0706...[FTP dir list PASV via SOCKS4] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind706 ../src/curl -q --output log/2/curl706.out --include --trace-ascii log/2/trace706 --trace-time --socks4 127.0.0.1:41943 ftp://127.0.0.1:39881/ > log/2/stdout706 2> log/2/stderr706 valgrind ERROR ==282956== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 706 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind706 ../src/curl -q --output log/2/curl706.out --include --trace-ascii log/2/trace706 --trace-time --socks4 127.0.0.1:41943 ftp://127.0.0.1:39881/ > log/2/stdout706 2> log/2/stderr706 === End of file commands.log === Start of file curl706.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl706.out === Start of file ftp_server.log 01:41:49.680751 ====> Client connect 01:41:49.681770 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:41:49.689691 < "USER anonymous" 01:41:49.690565 > "331 We are happy you popped in![CR][LF]" 01:41:49.691073 < "PASS ftp@example.com" 01:41:49.691727 > "230 Welcome you silly person[CR][LF]" 01:41:49.692352 < "PWD" 01:41:49.692741 > "257 "/" is current directory[CR][LF]" 01:41:49.695087 < "EPSV" 01:41:49.695283 ====> Passive DATA channel requested by client 01:41:49.695422 DATA sockfilt for passive data channel starting... 01:41:49.732667 DATA sockfilt for passive data channel started (pid 282943) 01:41:49.733624 DATA sockfilt for passive data channel listens on port 44803 01:41:49.734364 > "229 Entering Passive Mode (|||44803|)[CR][LF]" 01:41:49.734530 Client has been notified that DATA conn will be accepted on port 44803 01:41:49.738842 Client connects to port 44803 01:41:49.739031 ====> Client established passive DATA connection on port 44803 01:41:49.739894 < "TYPE I" 01:41:49.740384 > "200 I modify TYPE as you wanted[CR][LF]" 01:41:49.741041 < "SIZE verifiedserver" 01:41:49.741468 > "213 18[CR][LF]" 01:41:49.742479 < "RETR verifiedserver" 01:41:49.742985 > "150 Binary junk (18 bytes).[CR][LF]" 01:41:49.743463 =====> Closing passive DATA connection... 01:41:49.743612 Server disconnects passive DATA connection 01:41:49.744701 Server disconnected passive DATA connection 01:41:49.744861 DATA sockfilt for passive data channel quits (pid 282943) 01:41:49.747870 DATA sockfilt for passive data channel quit (pid 282943) 01:41:49.748025 =====> Closed passive DATA connection 01:41:49.748495 > "226 File transfer complete[CR][LF]" 01:41:49.791143 < "QUIT" 01:41:49.794035 > "221 bye bye baby[CR][LF]" 01:41:49.794326 MAIN sockfilt said DISC 01:41:49.794497 ====> Client disconnected 01:41:49.794727 Awaiting input 01:42:39.556110 ====> Client connect 01:42:39.556851 FTPD: Getting commands from log/2/server.cmd 01:42:39.557166 FTPD: run test case number: 706 01:42:39.564102 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:42:40.454727 < "USER anonymous" 01:42:40.455134 > "331 We are happy you popped in![CR][LF]" 01:42:40.547359 < "PASS ftp@example.com" 01:42:40.547752 > "230 Welcome you silly person[CR][LF]" 01:42:40.639871 < "PWD" 01:42:40.644048 > "257 "/" is current directory[CR][LF]" 01:42:40.815988 < "EPSV" 01:42:40.816308 ====> Passive DATA channel requested by client 01:42:40.816457 DATA sockfilt for passive data channel starting... 01:42:40.898548 DATA sockfilt for passive data channel started (pid 284241) 01:42:40.899778 DATA sockfilt for passive data channel listens on port 33223 01:42:40.900152 > "229 Entering Passive Mode (|||33223|)[CR][LF]" 01:42:40.900387 Client has been notified that DATA conn will be accepted on port 33223 01:42:41.200210 Client connects to port 33223 01:42:41.200861 ====> Client established passive DATA connection on port 33223 01:42:41.262731 < "TYPE A" 01:42:41.263184 > "200 I modify TYPE as you wanted[CR][LF]" 01:42:41.311165 < "LIST" 01:42:41.311521 > "150 here comes a directory[CR][LF]" 01:42:41.311717 pass LIST data on data connection 01:42:41.312881 send total 20 as data 01:42:41.313126 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 01:42:41.313337 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 01:42:41.313569 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 01:42:41.313789 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 01:42:41.320690 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 01:42:41.320934 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 01:42:41.321153 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 01:42:41.321399 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 01:42:41.321604 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 01:42:41.321806 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 01:42:41.322279 =====> Closing passive DATA connection... 01:42:41.322434 Server disconnects passive DATA connection 01:42:41.324664 Server disconnected passive DATA connection 01:42:41.324837 DATA sockfilt for passive data channel quits (pid 284241) 01:42:41.331823 DATA sockfilt for passive data channel quit (pid 284241) 01:42:41.331997 =====> Closed passive DATA connection 01:42:41.332254 > "226 ASCII transfer complete[CR][LF]" 01:42:43.272929 < "QUIT" 01:42:43.273351 > "221 bye bye baby[CR][LF]" 01:42:43.400753 MAIN sockfilt said DISC 01:42:43.401271 ====> Client disconnected 01:42:43.401591 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:41:50.290914 ====> Client connect 01:41:50.292548 Received DATA (on stdin) 01:41:50.292634 > 160 bytes data, server => client 01:41:50.292753 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:41:50.292863 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:41:50.292961 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:41:50.299502 < 16 bytes data, client => server 01:41:50.299589 'USER anonymous\r\n' 01:41:50.300465 Received DATA (on stdin) 01:41:50.300530 > 33 bytes data, server => client 01:41:50.300627 '331 We are happy you popped in!\r\n' 01:41:50.300867 < 22 bytes data, client => server 01:41:50.300938 'PASS ftp@example.com\r\n' 01:41:50.301817 Received DATA (on stdin) 01:41:50.301883 > 30 bytes data, server => client 01:41:50.301978 '230 Welcome you silly person\r\n' 01:41:50.302465 < 5 bytes data, client => server 01:41:50.302527 'PWD\r\n' 01:41:50.303110 Received DATA (on stdin) 01:41:50.303172 > 30 bytes data, server => client 01:41:50.303481 '257 "/" is current directory\r\n' 01:41:50.305186 < 6 bytes data, client => server 01:41:50.305255 'EPSV\r\n' 01:41:50.344422 Received DATA (on stdin) 01:41:50.344574 > 39 bytes data, server => client 01:41:50.344700 '229 Entering Passive Mode (|||44803|)\r\n' 01:41:50.349926 < 8 bytes data, client => server 01:41:50.349996 'TYPE I\r\n' 01:41:50.350646 Received DATA (on stdin) 01:41:50.350708 > 33 bytes data, server => client 01:41:50.350803 '200 I modify TYPE as you wanted\r\n' 01:41:50.351124 < 21 bytes data, client => server 01:41:50.351200 'SIZE verifiedserver\r\n' 01:41:50.351841 Received DATA (on stdin) 01:41:50.351903 > 8 bytes data, server => client 01:41:50.352192 '213 18\r\n' 01:41:50.352582 < 21 bytes data, client => server 01:41:50.352652 'RETR verifiedserver\r\n' 01:41:50.353256 Received DATA (on stdin) 01:41:50.353318 > 29 bytes data, server => client 01:41:50.353410 '150 Binary junk (18 bytes).\r\n' 01:41:50.358761 Received DATA (on stdin) 01:41:50.358829 > 28 bytes data, server => client 01:41:50.358923 '226 File transfer complete\r\n' 01:41:50.400976 < 6 bytes data, client => server 01:41:50.401055 'QUIT\r\n' 01:41:50.401906 Received DATA (on stdin) 01:41:50.401972 > 18 bytes data, server => client 01:41:50.402061 '221 bye bye baby\r\n' 01:41:50.404773 ====> Client disconnect 01:41:50.405428 Received ACKD (on stdin) 01:42:40.166278 ====> Client connect 01:42:40.168553 Received DATA (on stdin) 01:42:40.168631 > 160 bytes data, server => client 01:42:40.174807 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:42:40.174914 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:42:40.175002 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:42:41.063932 < 16 bytes data, client => server 01:42:41.064113 'USER anonymous\r\n' 01:42:41.065785 Received DATA (on stdin) 01:42:41.065860 > 33 bytes data, server => client 01:42:41.065951 '331 We are happy you popped in!\r\n' 01:42:41.156743 < 22 bytes data, client => server 01:42:41.156897 'PASS ftp@example.com\r\n' 01:42:41.158400 Received DATA (on stdin) 01:42:41.158474 > 30 bytes data, server => client 01:42:41.158558 '230 Welcome you silly person\r\n' 01:42:41.249248 < 5 bytes data, client => server 01:42:41.249402 'PWD\r\n' 01:42:41.250681 Received DATA (on stdin) 01:42:41.250752 > 30 bytes data, server => client 01:42:41.254713 '257 "/" is current directory\r\n' 01:42:41.425341 < 6 bytes data, client => server 01:42:41.425511 'EPSV\r\n' 01:42:41.510515 Received DATA (on stdin) 01:42:41.510665 > 39 bytes data, server => client 01:42:41.510765 '229 Entering Passive Mode (|||33223|)\r\n' 01:42:41.871224 < 8 bytes data, client => server 01:42:41.871415 'TYPE A\r\n' 01:42:41.873549 Received DATA (on stdin) 01:42:41.873635 > 33 bytes data, server => client 01:42:41.873740 '200 I modify TYPE as you wanted\r\n' 01:42:41.918026 < 6 bytes data, client => server 01:42:41.918126 'LIST\r\n' 01:42:41.921894 Received DATA (on stdin) 01:42:41.921985 > 28 bytes data, server => client 01:42:41.922084 '150 here comes a directory\r\n' 01:42:41.942653 Received DATA (on stdin) 01:42:41.942764 > 29 bytes data, server => client 01:42:41.942860 '226 ASCII transfer complete\r\n' 01:42:43.882379 < 6 bytes data, client => server 01:42:43.882577 'QUIT\r\n' 01:42:43.883718 Received DATA (on stdin) 01:42:43.883799 > 18 bytes data, server => client 01:42:43.883887 '221 bye bye baby\r\n' 01:42:44.009115 ====> Client disconnect 01:42:44.011699 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:41:49.334888 Running IPv4 version 01:41:49.341685 Listening on port 44803 01:41:49.342097 Wrote pid 282943 to log/2/server/ftp_sockdata.pid 01:41:49.342777 Received PING (on stdin) 01:41:49.343573 Received PORT (on stdin) 01:41:49.349248 ====> Client connect 01:41:49.354318 Received DATA (on stdin) 01:41:49.354582 > 18 bytes data, server => client 01:41:49.354915 'WE ROOLZ: 202189\r\n' 01:41:49.355129 Received DISC (on stdin) 01:41:49.355615 ====> Client forcibly disconnected 01:41:49.355764 Received QUIT (on stdin) 01:41:49.355831 quits 01:41:49.356266 ============> sockfilt quits 01:42:40.489275 Running IPv4 version 01:42:40.503950 Listening on port 33223 01:42:40.507803 Wrote pid 284241 to log/2/server/ftp_sockdata.pid 01:42:40.508621 Received PING (on stdin) 01:42:40.509488 Received PORT (on stdin) 01:42:40.810319 ====> Client connect 01:42:40.924438 Received DATA (on stdin) 01:42:40.924816 > 10 bytes data, server => client 01:42:40.925185 'total 20\r\n' 01:42:40.925441 Received DATA (on stdin) 01:42:40.925511 > 57 bytes data, server => client 01:42:40.925613 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 01:42:40.925717 Received DATA (on stdin) 01:42:40.925785 > 58 bytes data, server => client 01:42:40.925884 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 01:42:40.925972 Received DATA (on stdin) 01:42:40.926040 > 61 bytes data, server => client 01:42:40.926153 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 01:42:40.926225 '\n' 01:42:40.926314 Received DATA (on stdin) 01:42:40.926382 > 62 bytes data, server => client 01:42:40.933092 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 01:42:40.933167 '\n' 01:42:40.933266 Received DATA (on stdin) 01:42:40.933338 > 70 bytes data, server => client 01:42:40.933446 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 01:42:40.933514 'usr/bin\r\n' 01:42:40.933601 Received DATA (on stdin) 01:42:40.933667 > 59 bytes data, server => client 01:42:40.933769 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 01:42:40.933858 Received DATA (on stdin) 01:42:40.933924 > 69 bytes data, server => client 01:42:40.934024 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 01:42:40.934090 'd.html\r\n' 01:42:40.934192 Received DATA (on stdin) 01:42:40.934259 > 59 bytes data, server => client 01:42:40.934359 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 01:42:40.934459 Received DATA (on stdin) 01:42:40.934525 > 59 bytes data, server => client 01:42:40.934625 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 01:42:40.934718 Received DATA (on stdin) 01:42:40.934785 > 59 bytes data, server => client 01:42:40.934887 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 01:42:40.934975 Received DISC (on stdin) 01:42:40.935498 ====> Client forcibly disconnected 01:42:40.935667 Received QUIT (on stdin) 01:42:40.935745 quits 01:42:40.936278 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 706 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE A LIST QUIT === End of file server.input === Start of file socks_server.log 01:41:49.535661 Running IPv4 version 01:41:49.542471 Listening on port 41943 01:41:49.542871 Wrote pid 282946 to log/2/server/socks_server.pid 01:41:49.543110 Wrote port 41943 to log/2/server/socks_server.port 01:42:38.574632 ====> Client connect, Read config from log/2/server.cmd 01:42:38.574901 Reset to defaults 01:42:38.575082 parse config file 01:42:39.164470 READ 9 bytes 01:42:39.165012 '04019bc97f00000100' 01:42:39.165621 Connected fine to 127.0.0.1:39881 01:42:39.165807 Sent 8 bytes 01:42:39.165895 '005a9bc97f000001' 01:42:39.165972 ====> Tunnel transfer 01:42:40.731114 ====> Client connect, Read config from log/2/server.cmd 01:42:40.731301 Reset to defaults 01:42:40.731364 parse config file 01:42:40.809842 READ 9 bytes 01:42:40.810024 '040181c77f00000100' 01:42:40.810176 Connected fine to 127.0.0.1:33223 01:42:40.810257 Sent 8 bytes 01:42:40.810339 '005a81c77f000001' 01:42:40.810404 ====> Tunnel transfer 01:42:40.935644 SOCKS transfer completed. Bytes: < 623 > 0 01:42:43.008826 SOCKS transfer completed. Bytes: < 400 > 69 === End of file socks_server.log === Start of file stderr706 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 623 0 623 0 0 113 0 --:--:-- 0:00:05 --:--:-- 147 === End of file stderr706 === Start of file trace706 01:42:38.671357 * Trying 127.0.0.1:41943... 01:42:39.692405 * Opened SOCKS connection from 127.0.0.1 port 58190 to 127.0.0.1 port 39881 (via 127.0.0.1 port 41943) 01:42:39.819934 * Established connection to 127.0.0.1 (127.0.0.1 port 41943) from 127.0.0.1 port 58190 01:42:40.016019 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:42:40.348542 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:42:40.374042 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:42:40.380439 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:42:40.385369 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:42:40.462660 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:42:40.527654 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:42:40.546786 => Send header, 22 byCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind708 ../src/curl -q --output log/8/curl708.out --include --trace-ascii log/8/trace708 --trace-time http://127.0.0.1:39461/708 > log/8/stdout708 2> log/8/stderr708 tes (0x16) 0000: PASS ftp@example.com 01:42:40.620223 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:42:40.638796 => Send header, 5 bytes (0x5) 0000: PWD 01:42:40.654756 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:42:40.688799 * Entry path is '/' 01:42:40.768231 * Request has same path as previous transfer 01:42:40.814899 => Send header, 6 bytes (0x6) 0000: EPSV 01:42:40.829393 * Connect data stream passively 01:42:40.903438 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||33223|) 01:42:41.017344 * Hostname 127.0.0.1 was found in DNS cache 01:42:41.052324 * Connecting to 127.0.0.1 (127.0.0.1) port 41943 01:42:41.114550 * Trying 127.0.0.1:41943... 01:42:41.212212 * Opened 2nd SOCKS connection from 127.0.0.1 port 58202 to 127.0.0.1 port 33223 (via 127.0.0.1 port 41943) 01:42:41.229408 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 41943) from 127.0.0.1 port 58202 01:42:41.259074 => Send header, 8 bytes (0x8) 0000: TYPE A 01:42:41.277540 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:42:41.307852 => Send header, 6 bytes (0x6) 0000: LIST 01:42:41.337022 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 01:42:41.370144 * Maxdownload = -1 01:42:41.530733 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 01:42:41.929285 * abort upload 01:42:41.952649 <= Recv data, 0 bytes (0x0) 01:42:42.114230 * Remembering we are in dir "" 01:42:42.306453 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 01:42:42.580065 * Connection #0 to host 127.0.0.1:39881 left intact === End of file trace706 === Start of file valgrind706 ==282956== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind706 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 707 in state 4 Runner 2 (id 185908) running test 714 in state 4 Runner 3 (id 185910) running test 712 in state 4 Runner 4 (id 185912) running test 709 in state 4 Runner 5 (id 185914) running test 710 in state 4 Runner 6 (id 185916) running test 711 in state 4 Runner 7 (id 185918) running test 713 in state 4 Runner 8 (id 185920) running test 708 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 707 in state 4 Runner 2 (id 185908) running test 714 in state 4 Runner 3 (id 185910) running test 712 in state 4 Runner 4 (id 185912) running test 709 in state 4 Runner 5 (id 185914) running test 710 in state 4 Runner 6 (id 185916) running test 711 in state 4 Runner 7 (id 185918) running test 713 in state 4 Runner 8 (id 185920) running test 708 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 707 in state 4 Runner 2 (id 185908) running test 714 in state 4 Runner 3 (id 185910) running test 712 in state 4 Runner 4 (id 185912) running test 709 in state 4 Runner 5 (id 185914) running test 710 in state 4 Runner 6 (id 185916) running test 711 in state 4 Runner 7 (id 185918) running test 713 in state 4 Runner 8 (id 185920) running test 708 in state 4 setenv all_proxy = socks4://127.0.0.1:43595 test 0708...[HTTP GET via SOCKS4 proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind708 ../src/curl -q --output log/8/curl708.out --include --trace-ascii log/8/trace708 --trace-time http://127.0.0.1:39461/708 > log/8/stdout708 2> log/8/stderr708 valgrind ERROR ==283316== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 708 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind708 ../src/curl -q --output log/8/curl708.out --include --trace-ascii log/8/trace708 --trace-time http://127.0.0.1:39461/708 > log/8/stdout708 2> log/8/stderr708 === End of file commands.log === Start of file curl708.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl708.out === Start of file http_server.log 01:42:22.914624 ====> Client connect 01:42:22.914802 accept_connection 3 returned 4 01:42:22.914890 accept_connection 3 returned 0 01:42:22.920300 Read 93 bytes 01:42:22.920413 Process 93 bytes request 01:42:22.920506 Got request: GET /verifiedserver HTTP/1.1 01:42:22.920576 Are-we-friendly question received 01:42:22.920700 Wrote request (93 bytes) input to log/8/server.input 01:42:22.920805 Identifying ourselves as friends 01:42:22.920979 Response sent (57 bytes) and written to log/8/server.response 01:42:22.921043 special request received, no persistency 01:42:22.921098 ====> Client disconnect 0 01:43:11.294896 ====> Client connect 01:43:11.295027 accept_connection 3 returned 4 01:43:11.295110 accept_connection 3 returned 0 01:43:12.028268 Read 82 bytes 01:43:12.028465 Process 82 bytes request 01:43:12.028562 Got request: GET /708 HTTP/1.1 01:43:12.028634 Serve test number 708 part 0 01:43:12.028815 - request found to be complete (708) 01:43:12.029071 Wrote request (82 bytes) input to log/8/server.input 01:43:12.029189 Send response test708 section 01:43:12.029636 Response sent (256 bytes) and written to log/8/server.response 01:43:12.029704 => persistent connection request ended, awaits new request 01:43:13.975757 Connection closed by client 01:43:13.975911 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 58022 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 708 === End of file server.cmd === Start of file server.input GET /708 HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file socks_server.log 01:43:11.667511 ====> Client connect, Read config from log/8/server.cmd 01:43:11.667790 Reset to defaults 01:43:11.667845 parse config file 01:43:12.294379 READ 9 bytes 01:43:12.294578 '04019a257f00000100' 01:43:12.294758 Connected fine to 127.0.0.1:39461 01:43:12.294894 Sent 8 bytes 01:43:12.294971 '005CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind707 ../src/curl -q --output log/1/curl707.out --include --trace-ascii log/1/trace707 --trace-time --socks5 127.0.0.1:45495 ftp://127.0.0.1:37481/ > log/1/stdout707 2> log/1/stderr707 a9a257f000001' 01:43:12.295038 ====> Tunnel transfer 01:43:14.975441 SOCKS transfer completed. Bytes: < 256 > 82 === End of file socks_server.log === Start of file stderr708 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr708 === Start of file trace708 01:43:09.119542 * Uses proxy env variable all_proxy == 'socks4://127.0.0.1:43595' 01:43:10.946197 * Trying 127.0.0.1:43595... 01:43:11.840527 * Opened SOCKS connection from 127.0.0.1 port 60304 to 127.0.0.1 port 39461 (via 127.0.0.1 port 43595) 01:43:11.971452 * Established connection to 127.0.0.1 (127.0.0.1 port 43595) from 127.0.0.1 port 60304 01:43:12.115623 * using HTTP/1.x 01:43:12.448203 => Send header, 82 bytes (0x52) 0000: GET /708 HTTP/1.1 0013: Host: 127.0.0.1:39461 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:43:12.782600 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:43:13.105692 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:43:13.211723 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:43:13.238282 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:43:13.246508 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:43:13.254501 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:43:13.287199 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:43:13.347337 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:43:13.384006 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:43:13.389147 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:43:13.471928 <= Recv header, 1 bytes (0x1) 0000: . 01:43:13.530485 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:43:13.641800 * we are done reading and this is set to close, stop send 01:43:13.671919 * abort upload 01:43:14.154504 * shutting down connection #0 === End of file trace708 === Start of file valgrind708 ==283316== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind708 startnew: ./server/servers socksd --port 0 --pidfile log/1/server/socks_server.pid --portfile log/1/server/socks_server.port --reqfile log/1/socksd-request.log --logfile log/1/socks_server.log --backend 127.0.0.1 --config log/1/server.cmd RUN: SOCKS server is now running PID 283178 * pid socks => 283178 283178 test 0707...[FTP dir list PASV via SOCKS5] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind707 ../src/curl -q --output log/1/curl707.out --include --trace-ascii log/1/trace707 --trace-time --socks5 127.0.0.1:45495 ftp://127.0.0.1:37481/ > log/1/stdout707 2> log/1/stderr707 valgrind ERROR ==283240== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 707 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind707 ../src/curl -q --output log/1/curl707.out --include --trace-ascii log/1/trace707 --trace-time --socks5 127.0.0.1:45495 ftp://127.0.0.1:37481/ > log/1/stdout707 2> log/1/stderr707 === End of file commands.log === Start of file curl707.out total 20 drwxr-xr-x 8 98 98 512 Oct 22 13:06 . drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT -r--r--r-- 1 0 1 35 Jul 16 1996 README lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev drwxrwxrwx 2 98 98 512 May 29 16:04 download.html dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr === End of file curl707.out === Start of file ftp_server.log 01:42:21.533299 ====> Client connect 01:42:21.534354 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:42:21.539914 < "USER anonymous" 01:42:21.541118 > "331 We are happy you popped in![CR][LF]" 01:42:21.542148 < "PASS ftp@example.com" 01:42:21.543106 > "230 Welcome you silly person[CR][LF]" 01:42:21.543626 < "PWD" 01:42:21.546059 > "257 "/" is current directory[CR][LF]" 01:42:21.546813 < "EPSV" 01:42:21.547017 ====> Passive DATA channel requested by client 01:42:21.547161 DATA sockfilt for passive data channel starting... 01:42:21.589971 DATA sockfilt for passive data channel started (pid 283175) 01:42:21.591443 DATA sockfilt for passive data channel listens on port 40645 01:42:21.591872 > "229 Entering Passive Mode (|||40645|)[CR][LF]" 01:42:21.592055 Client has been notified that DATA conn will be accepted on port 40645 01:42:21.595426 Client connects to port 40645 01:42:21.595698 ====> Client established passive DATA connection on port 40645 01:42:21.596389 < "TYPE I" 01:42:21.596688 > "200 I modify TYPE as you wanted[CR][LF]" 01:42:21.598032 < "SIZE verifiedserver" 01:42:21.599117 > "213 18[CR][LF]" 01:42:21.599801 < "RETR verifiedserver" 01:42:21.602406 > "150 Binary junk (18 bytes).[CR][LF]" 01:42:21.602971 =====> Closing passive DATA connection... 01:42:21.603132 Server disconnects passive DATA connection 01:42:21.607351 Server disconnected passive DATA connection 01:42:21.607582 DATA sockfilt for passive data channel quits (pid 283175) 01:42:21.610895 DATA sockfilt for passive data channel quit (pid 283175) 01:42:21.611107 =====> Closed passive DATA connection 01:42:21.611397 > "226 File transfer complete[CR][LF]" 01:42:21.652539 < "QUIT" 01:42:21.653245 > "221 bye bye baby[CR][LF]" 01:42:21.657455 MAIN sockfilt said DISC 01:42:21.657845 ====> Client disconnected 01:42:21.658132 Awaiting input 01:43:11.201758 ====> Client connect 01:43:11.202499 FTPD: Getting commands from log/1/server.cmd 01:43:11.202830 FTPD: run test case number: 707 01:43:11.204431 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:43:12.113140 < "USER anonymous" 01:43:12.117440 > "331 We are happy you popped in![CR][LF]" 01:43:12.206737 < "PASS ftp@example.com" 01:43:12.207185 > "230 Welcome you silly person[CR][LF]" 01:43:12.307637 < "PWD" 01:43:12.308093 > "257 "/" is current directory[CR][LF]" 01:43:12.508218 < "EPSV" 01:43:12.508581 ====> Passive DATA channel requested by client 01:43:12.508749 DATA sockfilt for passive data channel starting... 01:43:12.586319 DATA sockfilt for passive data channel started (pid 284481) 01:43:12.587767 DATA sockfilt for passive data channel listens on port 33679 01:43:12.588593 > "229 Entering Passive Mode (|||33679|)[CR][LF]" 01:43:12.588769 Client has been notified that DATA conn will be accepted on port 33679 01:43:12.927847 Client connects to port 33679 01:43:12.928424 ====> Client established passive DATA connection on port 33679 01:43:12.991951 < "TYPE A" 01:43:12.992393 > "200 I modify TYPE as you wanted[CR][LF]" 01:43:13.051596 < "LIST" 01:43:13.052343 > "150 here comes a directory[CR][LF]" 01:43:13.052538 pass LIST data on data connection 01:43:13.053691 send total 20 as data 01:43:13.053950 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 . as data 01:43:13.057782 send drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. as data 01:43:13.058007 send drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT as data 01:43:13.058233 send -r--r--r-- 1 0 1 35 Jul 16 1996 README as data 01:43:13.058456 send lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin as data 01:43:13.058671 send dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev as data 01:43:13.058886 send drwxrwxrwx 2 98 98 512 May 29 16:04 download.html as data 01:43:13.059115 send dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc as data 01:43:13.059336 send drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub as data 01:43:13.059545 send dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr as data 01:43:13.060053 =====> Closing passive DATA connection... 01:43:13.060211 Server disconnects passive DATA connection 01:43:13.063867 Server disconnected passive DATA connection 01:43:13.064140 DATA sockfilt for passive data channel quits (pid 284481) 01:43:13.067574 DATA sockfilt for passive data channel quit (pid 284481) 01:43:13.067823 =====> Closed passive DATA connection 01:43:13.068140 > "226 ASCII transfer complete[CR][LF]" 01:43:15.276568 < "QUIT" 01:43:15.277263 > "221 bye bye baby[CR][LF]" 01:43:15.444662 MAIN sockfilt said DISC 01:43:15.445292 ====> Client disconnected 01:43:15.445592 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:42:22.141173 ====> Client connect 01:42:22.145094 Received DATA (on stdin) 01:42:22.145213 > 160 bytes data, server => client 01:42:22.145318 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:42:22.145416 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:42:22.145502 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:42:22.149398 < 16 bytes data, client => server 01:42:22.149513 'USER anonymous\r\n' 01:42:22.150726 Received DATA (on stdin) 01:42:22.150798 > 33 bytes data, server => client 01:42:22.151404 '331 We are happy you popped in!\r\n' 01:42:22.152041 < 22 bytes data, client => server 01:42:22.152122 'PASS ftp@example.com\r\n' 01:42:22.152857 Received DATA (on stdin) 01:42:22.152922 > 30 bytes data, server => client 01:42:22.153096 '230 Welcome you silly person\r\n' 01:42:22.153398 < 5 bytes data, client => server 01:42:22.153465 'PWD\r\n' 01:42:22.154335 Received DATA (on stdin) 01:42:22.154408 > 30 bytes data, server => client 01:42:22.154539 '257 "/" is current directory\r\n' 01:42:22.156773 < 6 bytes data, client => server 01:42:22.156844 'EPSV\r\n' 01:42:22.202771 Received DATA (on stdin) 01:42:22.202920 > 39 bytes data, server => client 01:42:22.203013 '229 Entering Passive Mode (|||40645|)\r\n' 01:42:22.205442 < 8 bytes data, client => server 01:42:22.205532 'TYPE I\r\n' 01:42:22.207371 Received DATA (on stdin) 01:42:22.207443 > 33 bytes data, server => client 01:42:22.207531 '200 I modify TYPE as you wanted\r\n' 01:42:22.207994 < 21 bytes data, client => server 01:42:22.208076 'SIZE verifiedserver\r\n' 01:42:22.208795 Received DATA (on stdin) 01:42:22.208860 > 8 bytes data, server => client 01:42:22.209103 '213 18\r\n' 01:42:22.209802 < 21 bytes data, client => server 01:42:22.209879 'RETR verifiedserver\r\n' 01:42:22.210538 Received DATA (on stdin) 01:42:22.210605 > 29 bytes data, server => client 01:42:22.210807 '150 Binary junk (18 bytes).\r\n' 01:42:22.222095 Received DATA (on stdin) 01:42:22.222214 > 28 bytes data, server => client 01:42:22.222296 '226 File transfer complete\r\n' 01:42:22.261976 < 6 bytes data, client => server 01:42:22.262146 'QUIT\r\n' 01:42:22.263379 Received DATA (on stdin) 01:42:22.263455 > 18 bytes data, server => client 01:42:22.263556 '221 bye bye baby\r\n' 01:42:22.267801 ====> Client disconnect 01:42:22.268176 Received ACKD (on stdin) 01:43:11.811857 ====> Client connect 01:43:11.814159 Received DATA (on stdin) 01:43:11.814254 > 160 bytes data, server => client 01:43:11.814391 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:43:11.814495 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:43:11.814591 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:43:12.722267 < 16 bytes data, client => server 01:43:12.722466 'USER anonymous\r\n' 01:43:12.723884 Received DATA (on stdin) 01:43:12.723964 > 33 bytes data, server => client 01:43:12.728216 '331 We are happy you popped in!\r\n' 01:43:12.816244 < 22 bytes data, client => server 01:43:12.816441 'PASS ftp@example.com\r\n' 01:43:12.817509 Received DATA (on stdin) 01:43:12.817584 > 30 bytes data, server => client 01:43:12.817670 '230 Welcome you silly person\r\n' 01:43:12.917036 < 5 bytes data, client => server 01:43:12.917269 'PWD\r\n' 01:43:12.918415 Received DATA (on stdin) 01:43:12.918497 > 30 bytes data, server => client 01:43:12.918593 '257 "/" is current directory\r\n' 01:43:13.114967 < 6 bytes data, client => server 01:43:13.115171 'EPSV\r\n' 01:43:13.198428 Received DATA (on stdin) 01:43:13.198569 > 39 bytes data, server => client 01:43:13.198688 '229 Entering Passive Mode (|||33679|)\r\n' 01:43:13.601132 < 8 bytes data, client => server 01:43:13.601315 'TYPE A\r\n' 01:43:13.607701 Received DATA (on stdin) 01:43:13.607835 > 33 bytes data, server => client 01:43:13.607925 '200 I modify TYPE as you wanted\r\n' 01:43:13.660800 < 6 bytes data, client => server 01:43:13.660982 'LIST\r\n' 01:43:13.662343 Received DATA (on stdin) 01:43:13.662420 > 28 bytes data, server => client 01:43:13.662540 '150 here comes a directory\r\n' 01:43:13.678748 Received DATA (on stdin) 01:43:13.678902 > 29 bytes data, server => client 01:43:13.678988 '226 ASCII transfer complete\r\n' 01:43:15.885836 < 6 bytes data, client => server 01:43:15.886001 'QUIT\r\n' 01:43:15.887301 Received DATA (on stdin) 01:43:15.887371 > 18 bytes data, server => client 01:43:15.887466 '221 bye bye baby\r\n' 01:43:16.054759 ====> Client disconnect 01:43:16.055523 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:42:21.190885 Running IPv4 version 01:42:21.198719 Listening on port 40645 01:42:21.199278 Wrote pid 283175 to log/1/server/ftp_sockdata.pid 01:42:21.200077 Received PING (on stdin) 01:42:21.201202 Received PORT (on stdin) 01:42:21.205713 ====> Client connect 01:42:21.213814 Received DATA (on stdin) 01:42:21.214152 > 18 bytes data, server => client 01:42:21.214550 'WE ROOLZ: 202066\r\n' 01:42:21.214812 Received DISC (on stdin) 01:42:21.214930 ====> Client forcibly disconnected 01:42:21.218308 Received QUIT (on stdin) 01:42:21.218401 quits 01:42:21.218945 ============> sockfilt quits 01:43:12.183840 Running IPv4 version 01:43:12.194972 Listening on port 33679 01:43:12.195504 Wrote pid 284481 to log/1/server/ftp_sockdata.pid 01:43:12.196313 Received PING (on stdin) 01:43:12.197440 Received PORT (on stdin) 01:43:12.537212 ====> Client connect 01:43:12.664313 Received DATA (on stdin) 01:43:12.664714 > 10 bytes data, server => client 01:43:12.665096 'total 20\r\n' 01:43:12.671072 Received DATA (on stdin) 01:43:12.671199 > 57 bytes data, server => client 01:43:12.671306 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n' 01:43:12.671449 Received DATA (on stdin) 01:43:12.671525 > 58 bytes data, server => client 01:43:12.671638 'drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n' 01:43:12.671728 Received DATA (on stdin) 01:43:12.671796 > 61 bytes data, server => client 01:43:12.671919 'drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r' 01:43:12.671998 '\n' 01:43:12.672087 Received DATA (on stdin) 01:43:12.672155 > 62 bytes data, server => client 01:43:12.672263 '-r--r--r-- 1 0 1 35 Jul 16 1996 README\r' 01:43:12.672330 '\n' 01:43:12.672415 Received DATA (on stdin) 01:43:12.672483 > 70 bytes data, server => client 01:43:12.672586 'lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> ' 01:43:12.672665 'usr/bin\r\n' 01:43:12.672756 Received DATA (on stdin) 01:43:12.672821 > 59 bytes data, server => client 01:43:CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind709 ../src/curl -q --output log/4/curl709.out --include --trace-ascii log/4/trace709 --trace-time http://127.0.0.1:42621/709 > log/4/stdout709 2> log/4/stderr709 12.672925 'dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n' 01:43:12.673009 Received DATA (on stdin) 01:43:12.673074 > 69 bytes data, server => client 01:43:12.673177 'drwxrwxrwx 2 98 98 512 May 29 16:04 downloa' 01:43:12.673246 'd.html\r\n' 01:43:12.673347 Received DATA (on stdin) 01:43:12.673415 > 59 bytes data, server => client 01:43:12.673518 'dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n' 01:43:12.673602 Received DATA (on stdin) 01:43:12.673666 > 59 bytes data, server => client 01:43:12.673767 'drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n' 01:43:12.673850 Received DATA (on stdin) 01:43:12.673916 > 59 bytes data, server => client 01:43:12.674016 'dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n' 01:43:12.674099 Received DISC (on stdin) 01:43:12.674221 ====> Client forcibly disconnected 01:43:12.674852 Received QUIT (on stdin) 01:43:12.674939 quits 01:43:12.675472 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 707 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE A LIST QUIT === End of file server.input === Start of file socks_server.log 01:42:21.426064 Running IPv4 version 01:42:21.434009 Listening on port 45495 01:42:21.434520 Wrote pid 283178 to log/1/server/socks_server.pid 01:42:21.434780 Wrote port 45495 to log/1/server/socks_server.port 01:43:10.004593 ====> Client connect, Read config from log/1/server.cmd 01:43:10.004899 Reset to defaults 01:43:10.005093 parse config file 01:43:10.587746 READ 4 bytes 01:43:10.588293 '05020001' 01:43:10.588466 Incoming request deemed fine 01:43:10.588641 Sent 2 bytes 01:43:10.588726 '0500' 01:43:10.810518 READ 10 bytes 01:43:10.810746 '050100017f0000019269' 01:43:10.810932 Received ATYP 1 01:43:10.811835 Connected fine to 127.0.0.1:37481 01:43:10.812038 Sent 10 bytes 01:43:10.812131 '050000017f0000019269' 01:43:10.812221 ====> Tunnel transfer 01:43:12.441928 ====> Client connect, Read config from log/1/server.cmd 01:43:12.442143 Reset to defaults 01:43:12.442209 parse config file 01:43:12.524685 READ 4 bytes 01:43:12.524908 '05020001' 01:43:12.524985 Incoming request deemed fine 01:43:12.525066 Sent 2 bytes 01:43:12.525142 '0500' 01:43:12.536618 READ 10 bytes 01:43:12.536799 '050100017f000001838f' 01:43:12.536870 Received ATYP 1 01:43:12.537708 Connected fine to 127.0.0.1:33679 01:43:12.537824 Sent 10 bytes 01:43:12.537919 '050000017f000001838f' 01:43:12.537987 ====> Tunnel transfer 01:43:12.674456 SOCKS transfer completed. Bytes: < 623 > 0 01:43:15.054497 SOCKS transfer completed. Bytes: < 400 > 69 === End of file socks_server.log === Start of file socksd-request.log atyp 1 => 127.0.0.1 atyp 1 => 127.0.0.1 === End of file socksd-request.log === Start of file stderr707 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 623 0 623 0 0 107 0 --:--:-- 0:00:05 --:--:-- 141 100 623 0 623 0 0 100 0 --:--:-- 0:00:06 --:--:-- 128 === End of file stderr707 === Start of file trace707 01:43:10.054410 * Trying 127.0.0.1:45495... 01:43:11.286799 * Opened SOCKS connection from 127.0.0.1 port 44558 to 127.0.0.1 port 37481 (via 127.0.0.1 port 45495) 01:43:11.431321 * Established connection to 127.0.0.1 (127.0.0.1 port 45495) from 127.0.0.1 port 44558 01:43:11.645713 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:43:12.001298 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:43:12.030681 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:43:12.036611 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:43:12.041604 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:43:12.121330 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:43:12.184938 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:43:12.206861 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:43:12.285883 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:43:12.307138 => Send header, 5 bytes (0x5) 0000: PWD 01:43:12.324354 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:43:12.362450 * Entry path is '/' 01:43:12.451065 * Request has same path as previous transfer 01:43:12.505052 => Send header, 6 bytes (0x6) 0000: EPSV 01:43:12.522513 * Connect data stream passively 01:43:12.599283 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||33679|) 01:43:12.721776 * Hostname 127.0.0.1 was found in DNS cache 01:43:12.754659 * Connecting to 127.0.0.1 (127.0.0.1) port 45495 01:43:12.825867 * Trying 127.0.0.1:45495... 01:43:12.939301 * Opened 2nd SOCKS connection from 127.0.0.1 port 40064 to 127.0.0.1 port 33679 (via 127.0.0.1 port 45495) 01:43:12.957987 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 45495) from 127.0.0.1 port 40064 01:43:12.989767 => Send header, 8 bytes (0x8) 0000: TYPE A 01:43:13.012907 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:43:13.054087 => Send header, 6 bytes (0x6) 0000: LIST 01:43:13.090712 <= Recv header, 28 bytes (0x1c) 0000: 150 here comes a directory 01:43:13.126657 * Maxdownload = -1 01:43:13.294875 <= Recv data, 623 bytes (0x26f) 0000: total 20 000a: drwxr-xr-x 8 98 98 512 Oct 22 13:06 . 0043: drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. 007d: drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT 00ba: -r--r--r-- 1 0 1 35 Jul 16 1996 README 00f8: lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr 0138: /bin 013e: dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev 0179: drwxrwxrwx 2 98 98 512 May 29 16:04 download.h 01b9: tml 01be: dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc 01f9: drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub 0234: dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr 01:43:13.749982 * abort upload 01:43:13.775438 <= Recv data, 0 bytes (0x0) 01:43:13.973243 * Remembering we are in dir "" 01:43:14.189517 <= Recv header, 29 bytes (0x1d) 0000: 226 ASCII transfer complete 01:43:14.505884 * Connection #0 to host 127.0.0.1:37481 left intact === End of file trace707 === Start of file valgrind707 ==283240== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind707 setenv http_proxy = socks5://127.0.0.1:37029 test 0709...[HTTP GET via SOCKS5 set in http_proxy environment variable] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind709 ../src/curl -q --output log/4/curl709.out --include --trace-ascii log/4/trace709 --trace-time http://127.0.0.1:42621/709 > log/4/stdout709 2> log/4/stderr709 valgrind ERROR ==283392== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 709 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind709 ../src/curl -q --output log/4/curl709.out --include --trace-ascii log/4/trace709 --trace-time http://127.0.0.1:42621/709 > log/4/stdout709 2> log/4/stderr709 === End of file commands.log === Start of file curl709.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind710 ../src/curl -q --output log/5/curl710.out --include --trace-ascii log/5/trace710 --trace-time http://127.0.0.1:46263/710 --proxy socks5://127.0.0.1:43635 > log/5/stdout710 2> log/5/stderr710 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl709.out === Start of file http_server.log 01:42:24.350230 ====> Client connect 01:42:24.350383 accept_connection 3 returned 4 01:42:24.350460 accept_connection 3 returned 0 01:42:24.357616 Read 93 bytes 01:42:24.357771 Process 93 bytes request 01:42:24.357883 Got request: GET /verifiedserver HTTP/1.1 01:42:24.357950 Are-we-friendly question received 01:42:24.358090 Wrote request (93 bytes) input to log/4/server.input 01:42:24.358198 Identifying ourselves as friends 01:42:24.358391 Response sent (57 bytes) and written to log/4/server.response 01:42:24.358456 special request received, no persistency 01:42:24.358515 ====> Client disconnect 0 01:43:13.038803 ====> Client connect 01:43:13.038947 accept_connection 3 returned 4 01:43:13.039034 accept_connection 3 returned 0 01:43:13.743809 Read 82 bytes 01:43:13.744013 Process 82 bytes request 01:43:13.744110 Got request: GET /709 HTTP/1.1 01:43:13.744184 Serve test number 709 part 0 01:43:13.744375 - request found to be complete (709) 01:43:13.744629 Wrote request (82 bytes) input to log/4/server.input 01:43:13.744741 Send response test709 section 01:43:13.745168 Response sent (256 bytes) and written to log/4/server.response 01:43:13.745240 => persistent connection request ended, awaits new request 01:43:15.690712 Connection closed by client 01:43:15.690874 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 50722 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 709 === End of file server.cmd === Start of file server.input GET /709 HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file socks_server.log 01:43:11.224387 ====> Client connect, Read config from log/4/server.cmd 01:43:11.224674 Reset to defaults 01:43:11.224737 parse config file 01:43:11.802193 READ 4 bytes 01:43:11.802381 '05020001' 01:43:11.802442 Incoming request deemed fine 01:43:11.802524 Sent 2 bytes 01:43:11.802590 '0500' 01:43:12.037723 READ 10 bytes 01:43:12.037915 '050100017f000001a67d' 01:43:12.037982 Received ATYP 1 01:43:12.038687 Connected fine to 127.0.0.1:42621 01:43:12.038830 Sent 10 bytes 01:43:12.038915 '050000017f000001a67d' 01:43:12.038998 ====> Tunnel transfer 01:43:14.690330 SOCKS transfer completed. Bytes: < 256 > 82 === End of file socks_server.log === Start of file socksd-request.log atyp 1 => 127.0.0.1 === End of file socksd-request.log === Start of file stderr709 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr709 === Start of file trace709 01:43:09.677224 * Uses proxy env variable http_proxy == 'socks5://127.0.0.1:37029' 01:43:11.510337 * Trying 127.0.0.1:37029... 01:43:12.504337 * Opened SOCKS connection from 127.0.0.1 port 48940 to 127.0.0.1 port 42621 (via 127.0.0.1 port 37029) 01:43:12.684213 * Established connection to 127.0.0.1 (127.0.0.1 port 37029) from 127.0.0.1 port 48940 01:43:12.808293 * using HTTP/1.x 01:43:13.160332 => Send header, 82 bytes (0x52) 0000: GET /709 HTTP/1.1 0013: Host: 127.0.0.1:42621 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:43:13.480642 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:43:13.802146 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:43:13.906792 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:43:13.933084 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:43:13.941506 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:43:13.949273 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:43:13.981450 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:43:14.043261 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:43:14.081284 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:43:14.086381 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:43:14.168795 <= Recv header, 1 bytes (0x1) 0000: . 01:43:14.230705 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:43:14.347388 * we are done reading and this is set to close, stop send 01:43:14.378115 * abort upload 01:43:14.869438 * shutting down connection #0 === End of file trace709 === Start of file valgrind709 ==283392== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind709 test 0710...[HTTP GET via SOCKS5 set with --proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind710 ../src/curl -q --output log/5/curl710.out --include --trace-ascii log/5/trace710 --trace-time http://127.0.0.1:46263/710 --proxy socks5://127.0.0.1:43635 > log/5/stdout710 2> log/5/stderr710 valgrind ERROR ==283627== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 710 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind710 ../src/curl -q --output log/5/curl710.out --include --trace-ascii log/5/trace710 --trace-time http://127.0.0.1:46263/710 --proxy socks5://127.0.0.1:43635 > log/5/stdout710 2> log/5/stderr710 === End of file commands.log === Start of file curl710.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl710.out === Start of file http_server.log 01:42:24.506118 ====> Client connect 01:42:24.506386 accept_connection 3 returned 4 01:42:24.506507 accept_connection 3 returned 0 01:42:24.514024 Read 93 bytes 01:42:24.514167 Process 93 bytes request 01:42:24.514271 Got request: GET /verifiedserver HTTP/1.1 01:42:24.514347 Are-we-friendly question received 01:42:24.514504 Wrote request (93 bytes) input to log/5/server.input 01:42:24.514625 Identifying ourselves as friends 01:42:24.514864 Response sent (57 bytes) and written to log/5/server.response 01:42:24.514934 special request received, no persistency 01:42:24.514998 ====> Client disconnect 0 01:43:12.809375 ====> Client connect 01:43:12.809512 accept_connection 3 returned 4 01:43:12.809595 accept_connection 3 returned 0 01:43:13.467772 Read 82 bytes 01:43:13.467972 Process 82 bytes request 01:43:13.468069 Got request: GET /710 HTTP/1.1 01:43:13.468142 Serve test number 710 part 0 01:43:13.468337 - request found to be complete (710) 01:43:13.468586 Wrote request (82 bytes) input to log/5/CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind711 ../src/curl -q --output log/6/curl711.out --include --trace-ascii log/6/trace711 --trace-time ftp://127.0.0.1:39413/711 > log/6/stdout711 2> log/6/stderr711 server.input 01:43:13.468693 Send response test710 section 01:43:13.469111 Response sent (256 bytes) and written to log/5/server.response 01:43:13.469188 => persistent connection request ended, awaits new request 01:43:15.420239 Connection closed by client 01:43:15.420405 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 58430 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 710 === End of file server.cmd === Start of file server.input GET /710 HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file socks_server.log 01:43:11.995847 ====> Client connect, Read config from log/5/server.cmd 01:43:11.996118 Reset to defaults 01:43:11.996179 parse config file 01:43:12.584293 READ 4 bytes 01:43:12.584496 '05020001' 01:43:12.584639 Incoming request deemed fine 01:43:12.584770 Sent 2 bytes 01:43:12.584853 '0500' 01:43:12.808302 READ 10 bytes 01:43:12.808534 '050100017f000001b4b7' 01:43:12.808721 Received ATYP 1 01:43:12.809222 Connected fine to 127.0.0.1:46263 01:43:12.809405 Sent 10 bytes 01:43:12.809497 '050000017f000001b4b7' 01:43:12.809573 ====> Tunnel transfer 01:43:15.419946 SOCKS transfer completed. Bytes: < 256 > 82 === End of file socks_server.log === Start of file socksd-request.log atyp 1 => 127.0.0.1 === End of file socksd-request.log === Start of file stderr710 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr710 === Start of file trace710 01:43:12.051839 * Trying 127.0.0.1:43635... 01:43:13.286933 * Opened SOCKS connection from 127.0.0.1 port 55046 to 127.0.0.1 port 46263 (via 127.0.0.1 port 43635) 01:43:13.434882 * Established connection to 127.0.0.1 (127.0.0.1 port 43635) from 127.0.0.1 port 55046 01:43:13.559226 * using HTTP/1.x 01:43:13.882755 => Send header, 82 bytes (0x52) 0000: GET /710 HTTP/1.1 0013: Host: 127.0.0.1:46263 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:43:14.196109 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:43:14.526982 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:43:14.630816 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:43:14.656192 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:43:14.664979 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:43:14.672460 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:43:14.703861 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:43:14.762570 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:43:14.799588 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:43:14.804758 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:43:14.887304 <= Recv header, 1 bytes (0x1) 0000: . 01:43:14.946479 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:43:15.063452 * we are done reading and this is set to close, stop send 01:43:15.096119 * abort upload 01:43:15.594250 * shutting down connection #0 === End of file trace710 === Start of file valgrind710 ==283627== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind710 setenv all_proxy = socks5://127.0.0.1:40477 test 0711...[FTP fetch with all_proxy set to socks5] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind711 ../src/curl -q --output log/6/curl711.out --include --trace-ascii log/6/trace711 --trace-time ftp://127.0.0.1:39413/711 > log/6/stdout711 2> log/6/stderr711 valgrind ERROR ==283790== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 711 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind711 ../src/curl -q --output log/6/curl711.out --include --trace-ascii log/6/trace711 --trace-time ftp://127.0.0.1:39413/711 > log/6/stdout711 2> log/6/stderr711 === End of file commands.log === Start of file curl711.out silly content === End of file curl711.out === Start of file ftp_server.log 01:42:25.904632 ====> Client connect 01:42:25.905664 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:42:25.917463 < "USER anonymous" 01:42:25.918167 > "331 We are happy you popped in![CR][LF]" 01:42:25.919747 < "PASS ftp@example.com" 01:42:25.920311 > "230 Welcome you silly person[CR][LF]" 01:42:25.921606 < "PWD" 01:42:25.921900 > "257 "/" is current directory[CR][LF]" 01:42:25.924376 < "EPSV" 01:42:25.924583 ====> Passive DATA channel requested by client 01:42:25.924728 DATA sockfilt for passive data channel starting... 01:42:25.986054 DATA sockfilt for passive data channel started (pid 283710) 01:42:25.987724 DATA sockfilt for passive data channel listens on port 38779 01:42:25.988724 > "229 Entering Passive Mode (|||38779|)[CR][LF]" 01:42:25.988934 Client has been notified that DATA conn will be accepted on port 38779 01:42:25.990398 Client connects to port 38779 01:42:25.990608 ====> Client established passive DATA connection on port 38779 01:42:25.991706 < "TYPE I" 01:42:25.992292 > "200 I modify TYPE as you wanted[CR][LF]" 01:42:25.994803 < "SIZE verifiedserver" 01:42:25.995454 > "213 18[CR][LF]" 01:42:25.998299 < "RETR verifiedserver" 01:42:25.998626 > "150 Binary junk (18 bytes).[CR][LF]" 01:42:25.999163 =====> Closing passive DATA connection... 01:42:25.999331 Server disconnects passive DATA connection 01:42:26.004029 Server disconnected passive DATA connection 01:42:26.004330 DATA sockfilt for passive data channel quits (pid 283710) 01:42:26.008011 DATA sockfilt for passive data channel quit (pid 283710) 01:42:26.008269 =====> Closed passive DATA connection 01:42:26.009058 > "226 File transfer complete[CR][LF]" 01:42:26.051806 < "QUIT" 01:42:26.052210 > "221 bye bye baby[CR][LF]" 01:42:26.052959 MAIN sockfilt said DISC 01:42:26.053172 ====> Client disconnected 01:42:26.053478 Awaiting input 01:43:14.318857 ====> Client connect 01:43:14.319605 FTPD: Getting commands from log/6/server.cmd 01:43:14.319934 FTPD: run test case number: 711 01:43:14.321010 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:43:15.233851 < "USER anonymous" 01:43:15.234290 > "331 We are happy you popped in![CR][LF]" 01:43:15.329521 < "PASS ftp@example.com" 01:43:15.330288 > "230 Welcome you silly person[CR][LF]" 01:43:15.430754 < "PWD" 01:43:15.434096 > "257 "/" is current directory[CR][LF]" 01:43:15.638027 < "EPSV" 01:43:15.638362 ====> Passive DATA channel requested by client 01:43:15.638519 DATA sockfilt for passive data channel starting... 01:43:15.728020 DATA sockfilt for passive data channel started (pid 284484) 01:43:15.729291 DATA sockfilt for passive data channel listens on port 34877 01:43:15.729644 > "229 Entering Passive Mode (|||34877|)[CR][LF]" 01:43:15.729817 Client has been notified that DATA conn will be accepted on port 34877 01:43:16.054129 Client connects to port 34877 01:43:16.054691 ====> Client established passive DATA connection on port 34877 01:43:16.118383 < "TYPE I" 01:43:16.118813 > "200 I modify TYPE as you wanted[CR][LF]" 01:43:16.171373 < "SIZE 711" 01:43:16.173424 > "213 14[CR][LF]" 01:43:16.258229 < "RETR 711" 01:43:16.259325 > "150 Binary data connection for 711 () (14 bytes).[CR][LF]" 01:43:16.262826 =====> Closing passive DATA connection... 01:43:16.263040 Server disconnects passive DATA connection 01:43:16.267411 Server disconnected passive DATA connection 01:43:16.267745 DATA sockfilt for passive data channel quits (pid 284484) 01:43:16.271095 DATA sockfilt for passive data channel quit (pid 284484) 01:43:16.271329 =====> Closed passive DATA connection 01:43:16.271628 > "226 File transfer complete[CR][LF]" 01:43:18.365783 < "QUIT" 01:43:18.366238 > "221 bye bye baby[CR][LF]" 01:43:18.517634 MAIN sockfilt said DISC 01:43:18.518207 ====> Client disconnected 01:43:18.518543 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:42:25.514712 ====> Client connect 01:42:25.521133 Received DATA (on stdin) 01:42:25.521251 > 160 bytes data, server => client 01:42:25.521374 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:42:25.521487 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:42:25.521585 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:42:25.526868 < 16 bytes data, client => server 01:42:25.526984 'USER anonymous\r\n' 01:42:25.528272 Received DATA (on stdin) 01:42:25.528353 > 33 bytes data, server => client 01:42:25.528472 '331 We are happy you popped in!\r\n' 01:42:25.529651 < 22 bytes data, client => server 01:42:25.529740 'PASS ftp@example.com\r\n' 01:42:25.530451 Received DATA (on stdin) 01:42:25.530525 > 30 bytes data, server => client 01:42:25.530638 '230 Welcome you silly person\r\n' 01:42:25.531560 < 5 bytes data, client => server 01:42:25.531639 'PWD\r\n' 01:42:25.532569 Received DATA (on stdin) 01:42:25.532641 > 30 bytes data, server => client 01:42:25.532731 '257 "/" is current directory\r\n' 01:42:25.534350 < 6 bytes data, client => server 01:42:25.534422 'EPSV\r\n' 01:42:25.598630 Received DATA (on stdin) 01:42:25.598788 > 39 bytes data, server => client 01:42:25.598943 '229 Entering Passive Mode (|||38779|)\r\n' 01:42:25.601502 < 8 bytes data, client => server 01:42:25.601580 'TYPE I\r\n' 01:42:25.602420 Received DATA (on stdin) 01:42:25.602491 > 33 bytes data, server => client 01:42:25.602599 '200 I modify TYPE as you wanted\r\n' 01:42:25.604662 < 21 bytes data, client => server 01:42:25.604743 'SIZE verifiedserver\r\n' 01:42:25.605605 Received DATA (on stdin) 01:42:25.605682 > 8 bytes data, server => client 01:42:25.605779 '213 18\r\n' 01:42:25.608200 < 21 bytes data, client => server 01:42:25.608295 'RETR verifiedserver\r\n' 01:42:25.611014 Received DATA (on stdin) 01:42:25.611096 > 29 bytes data, server => client 01:42:25.611196 '150 Binary junk (18 bytes).\r\n' 01:42:25.619045 Received DATA (on stdin) 01:42:25.619210 > 28 bytes data, server => client 01:42:25.619331 '226 File transfer complete\r\n' 01:42:25.661314 < 6 bytes data, client => server 01:42:25.661509 'QUIT\r\n' 01:42:25.662630 Received DATA (on stdin) 01:42:25.662705 > 18 bytes data, server => client 01:42:25.662780 '221 bye bye baby\r\n' 01:42:25.663327 ====> Client disconnect 01:42:25.663638 Received ACKD (on stdin) 01:43:13.928744 ====> Client connect 01:43:13.934393 Received DATA (on stdin) 01:43:13.934530 > 160 bytes data, server => client 01:43:13.934642 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:43:13.934745 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:43:13.934839 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:43:14.842994 < 16 bytes data, client => server 01:43:14.843178 'USER anonymous\r\n' 01:43:14.847724 Received DATA (on stdin) 01:43:14.847855 > 33 bytes data, server => client 01:43:14.847946 '331 We are happy you popped in!\r\n' 01:43:14.938525 < 22 bytes data, client => server 01:43:14.938766 'PASS ftp@example.com\r\n' 01:43:14.940269 Received DATA (on stdin) 01:43:14.940351 > 30 bytes data, server => client 01:43:14.940461 '230 Welcome you silly person\r\n' 01:43:15.039892 < 5 bytes data, client => server 01:43:15.040095 'PWD\r\n' 01:43:15.041553 Received DATA (on stdin) 01:43:15.041633 > 30 bytes data, server => client 01:43:15.044823 '257 "/" is current directory\r\n' 01:43:15.247192 < 6 bytes data, client => server 01:43:15.247403 'EPSV\r\n' 01:43:15.339950 Received DATA (on stdin) 01:43:15.340105 > 39 bytes data, server => client 01:43:15.340206 '229 Entering Passive Mode (|||34877|)\r\n' 01:43:15.727814 < 8 bytes data, client => server 01:43:15.728000 'TYPE I\r\n' 01:43:15.729122 Received DATA (on stdin) 01:43:15.729199 > 33 bytes data, server => client 01:43:15.729286 '200 I modify TYPE as you wanted\r\n' 01:43:15.780864 < 10 bytes data, client => server 01:43:15.781077 'SIZE 711\r\n' 01:43:15.783759 Received DATA (on stdin) 01:43:15.783851 > 8 bytes data, server => client 01:43:15.783928 '213 14\r\n' 01:43:15.866888 < 10 bytes data, client => server 01:43:15.867118 'RETR 711\r\n' 01:43:15.869655 Received DATA (on stdin) 01:43:15.869761 > 51 bytes data, server => client 01:43:15.869859 '150 Binary data connection for 711 () (14 bytes).\r\n' 01:43:15.881943 Received DATA (on stdin) 01:43:15.882079 > 28 bytes data, server => client 01:43:15.882168 '226 File transfer complete\r\n' 01:43:17.975189 < 6 bytes data, client => server 01:43:17.975395 'QUIT\r\n' 01:43:17.976539 Received DATA (on stdin) 01:43:17.976627 > 18 bytes data, server => client 01:43:17.976720 '221 bye bye baby\r\n' 01:43:18.127691 ====> Client disconnect 01:43:18.129116 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:42:25.585043 Running IPv4 version 01:42:25.594784 Listening on port 38779 01:42:25.595257 Wrote pid 283710 to log/6/server/ftp_sockdata.pid 01:42:25.596089 Received PING (on stdin) 01:42:25.597379 Received PORT (on stdin) 01:42:25.600702 ====> Client connect 01:42:25.611306 Received DATA (on stdin) 01:42:25.611666 > 18 bytes data, server => client 01:42:25.612046 'WE ROOLZ: 201819\r\n' 01:42:25.612314 Received DISC (on stdin) 01:42:25.612432 ====> Client forcibly disconnected 01:42:25.615170 Received QUIT (on stdin) 01:42:25.615268 quits 01:42:25.615814 ============> sockfilt quits 01:43:15.317569 Running IPv4 version 01:43:15.335793 Listening on port 34877 01:43:15.336348 Wrote pid 284484 to log/6/server/ftp_sockdata.pid 01:43:15.337163 Received PING (on stdin) 01:43:15.338953 Received PORT (on stdin) 01:43:15.661141 ====> Client connect 01:43:15.869970 Received DATA (on stdin) 01:43:15.870362 > 14 bytes data, server => client 01:43:15.873861 'silly content\n' 01:43:15.874172 Received DISC (on stdin) 01:43:15.874297 ====> Client forcibly disconnected 01:43:15.878378 Received QUIT (on stdin) 01:43:15.878497 quits 01:43:15.879042 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 711 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE 711 RETR 711 QUIT === End of file server.input === Start of file socks_server.log 01:43:13.128105 ====> Client connect, Read config from log/6/server.cmd 01:43:13.128367 Reset to defaults 01:43:13.128430 parse config file 01:43:13CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind712 ../src/curl -q --output log/3/curl712.out --include --trace-ascii log/3/trace712 --trace-time ftp://127.0.0.1:37331/712 --proxy socks5://127.0.0.1:41047 > log/3/stdout712 2> log/3/stderr712 .704404 READ 4 bytes 01:43:13.704588 '05020001' 01:43:13.704728 Incoming request deemed fine 01:43:13.704875 Sent 2 bytes 01:43:13.704955 '0500' 01:43:13.927744 READ 10 bytes 01:43:13.927983 '050100017f00000199f5' 01:43:13.928165 Received ATYP 1 01:43:13.928699 Connected fine to 127.0.0.1:39413 01:43:13.928881 Sent 10 bytes 01:43:13.928976 '050000017f00000199f5' 01:43:13.929053 ====> Tunnel transfer 01:43:15.566821 ====> Client connect, Read config from log/6/server.cmd 01:43:15.567027 Reset to defaults 01:43:15.567086 parse config file 01:43:15.646895 READ 4 bytes 01:43:15.647105 '05020001' 01:43:15.647172 Incoming request deemed fine 01:43:15.647257 Sent 2 bytes 01:43:15.647323 '0500' 01:43:15.660506 READ 10 bytes 01:43:15.660714 '050100017f000001883d' 01:43:15.660778 Received ATYP 1 01:43:15.660980 Connected fine to 127.0.0.1:34877 01:43:15.661092 Sent 10 bytes 01:43:15.661171 '050000017f000001883d' 01:43:15.661230 ====> Tunnel transfer 01:43:15.874455 SOCKS transfer completed. Bytes: < 14 > 0 01:43:18.127398 SOCKS transfer completed. Bytes: < 430 > 83 === End of file socks_server.log === Start of file socksd-request.log atyp 1 => 127.0.0.1 atyp 1 => 127.0.0.1 === End of file socksd-request.log === Start of file stderr711 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 14 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 14 100 14 0 0 2 0 0:00:07 0:00:06 0:00:01 3 === End of file stderr711 === Start of file trace711 01:43:11.614908 * Uses proxy env variable all_proxy == 'socks5://127.0.0.1:40477' 01:43:13.410995 * Trying 127.0.0.1:40477... 01:43:14.402673 * Opened SOCKS connection from 127.0.0.1 port 42784 to 127.0.0.1 port 39413 (via 127.0.0.1 port 40477) 01:43:14.541338 * Established connection to 127.0.0.1 (127.0.0.1 port 40477) from 127.0.0.1 port 42784 01:43:14.755165 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:43:15.116906 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:43:15.145757 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:43:15.153811 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:43:15.159492 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:43:15.241749 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:43:15.306958 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:43:15.328780 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:43:15.408407 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:43:15.429630 => Send header, 5 bytes (0x5) 0000: PWD 01:43:15.458675 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:43:15.496376 * Entry path is '/' 01:43:15.584651 * Request has same path as previous transfer 01:43:15.636922 => Send header, 6 bytes (0x6) 0000: EPSV 01:43:15.653730 * Connect data stream passively 01:43:15.733885 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||34877|) 01:43:15.854934 * Hostname 127.0.0.1 was found in DNS cache 01:43:15.887758 * Connecting to 127.0.0.1 (127.0.0.1) port 40477 01:43:15.950409 * Trying 127.0.0.1:40477... 01:43:16.063126 * Opened 2nd SOCKS connection from 127.0.0.1 port 42790 to 127.0.0.1 port 34877 (via 127.0.0.1 port 40477) 01:43:16.082706 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 40477) from 127.0.0.1 port 42790 01:43:16.114413 => Send header, 8 bytes (0x8) 0000: TYPE I 01:43:16.135601 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:43:16.173716 => Send header, 10 bytes (0xa) 0000: SIZE 711 01:43:16.204245 <= Recv header, 8 bytes (0x8) 0000: 213 14 01:43:16.256559 => Send header, 10 bytes (0xa) 0000: RETR 711 01:43:16.281891 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 711 () (14 bytes). 01:43:16.326897 * Maxdownload = -1 01:43:16.338227 * Getting file with size: 14 01:43:16.520306 <= Recv data, 14 bytes (0xe) 0000: silly content. 01:43:16.843565 * abort upload 01:43:16.868094 <= Recv data, 0 bytes (0x0) 01:43:17.042972 * Remembering we are in dir "" 01:43:17.256066 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:43:17.560509 * Connection #0 to host 127.0.0.1:39413 left intact === End of file trace711 === Start of file valgrind711 ==283790== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind711 test 0712...[FTP fetch with --proxy set to socks5://] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind712 ../src/curl -q --output log/3/curl712.out --include --trace-ascii log/3/trace712 --trace-time ftp://127.0.0.1:37331/712 --proxy socks5://127.0.0.1:41047 > log/3/stdout712 2> log/3/stderr712 valgrind ERROR ==283907== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 712 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind712 ../src/curl -q --output log/3/curl712.out --include --trace-ascii log/3/trace712 --trace-time ftp://127.0.0.1:37331/712 --proxy socks5://127.0.0.1:41047 > log/3/stdout712 2> log/3/stderr712 === End of file commands.log === Start of file curl712.out silly content === End of file curl712.out === Start of file ftp_server.log 01:42:26.857435 ====> Client connect 01:42:26.858546 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:42:26.866411 < "USER anonymous" 01:42:26.866813 > "331 We are happy you popped in![CR][LF]" 01:42:26.868383 < "PASS ftp@example.com" 01:42:26.868692 > "230 Welcome you silly person[CR][LF]" 01:42:26.869944 < "PWD" 01:42:26.872667 > "257 "/" is current directory[CR][LF]" 01:42:26.873474 < "EPSV" 01:42:26.873687 ====> Passive DATA channel requested by client 01:42:26.873840 DATA sockfilt for passive data channel starting... 01:42:26.918773 DATA sockfilt for passive data channel started (pid 283851) 01:42:26.920215 DATA sockfilt for passive data channel listens on port 34303 01:42:26.920613 > "229 Entering Passive Mode (|||34303|)[CR][LF]" 01:42:26.920808 Client has been notified that DATA conn will be accepted on port 34303 01:42:26.924118 Client connects to port 34303 01:42:26.924383 ====> Client established passive DATA connection on port 34303 01:42:26.925283 < "TYPE I" 01:42:26.925584 > "200 I modify TYPE as you wanted[CR][LF]" 01:42:26.926835 < "SIZE verifiedserver" 01:42:26.927553 > "213 18[CR][LF]" 01:42:26.928607 < "RETR verifiedserver" 01:42:26.931226 > "150 Binary junk (18 bytes).[CR][LF]" 01:42:26.931777 =====> Closing passive DATA connection... 01:42:26.931938 Server disconnects passive DATA connection 01:42:26.937355 Server disconnected passive DATA connection 01:42:26.937593 DATA sockfilt for passive data channel quits (pid 283851) 01:42:26.941093 DATA sockfilt for passive data channel quit (pid 283851) 01:42:26.941381 =====> Closed passive DATA connection 01:42:26.941701 > "226 File transfer complete[CR][LF]" 01:42:26.989508 < "QUIT" 01:42:26.989919 > "221 bye bye baby[CR][LF]" 01:42:26.994136 MAIN sockfilt said DISC 01:42:26.994530 ====> Client disconnected 01:42:26.994816 Awaiting input 01:43:15.177443 ====> Client connect 01:43:15.178146 FTPD: Getting commands from log/3/server.cmd 01:43:15.178459 FTPD: run test case number: 712 01:43:15.180011 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:43:16.099010 < "USER anonymous" 01:43:16.100760 > "331 We are happy you popped in![CR][LF]" 01:43:16.195585 < "PASS ftp@example.com" 01:43:16.196020 > "230 Welcome you silly person[CR][LF]" 01:43:16.301521 < "PWD" 01:43:16.301979 > "257 "/" is current directory[CR][LF]" 01:43:16.501513 < "EPSV" 01:43:16.501846 ====> Passive DATA channel requested by client 01:43:16.502004 DATA sockfilt for passive data channel starting... 01:43:16.587961 DATA sockfilt for passive data channel started (pid 284487) 01:43:16.589161 DATA sockfilt for passive data channel listens on port 40739 01:43:16.589552 > "229 Entering Passive Mode (|||40739|)[CR][LF]" 01:43:16.589740 Client has been notified that DATA conn will be accepted on port 40739 01:43:16.945603 Client connects to port 40739 01:43:16.946182 ====> Client established passive DATA connection on port 40739 01:43:17.011618 < "TYPE I" 01:43:17.012057 > "200 I modify TYPE as you wanted[CR][LF]" 01:43:17.074892 < "SIZE 712" 01:43:17.076853 > "213 14[CR][LF]" 01:43:17.154893 < "RETR 712" 01:43:17.156023 > "150 Binary data connection for 712 () (14 bytes).[CR][LF]" 01:43:17.156629 =====> Closing passive DATA connection... 01:43:17.156802 Server disconnects passive DATA connection 01:43:17.160693 Server disconnected passive DATA connection 01:43:17.160990 DATA sockfilt for passive data channel quits (pid 284487) 01:43:17.167469 DATA sockfilt for passive data channel quit (pid 284487) 01:43:17.167880 =====> Closed passive DATA connection 01:43:17.168238 > "226 File transfer complete[CR][LF]" 01:43:19.350260 < "QUIT" 01:43:19.350793 > "221 bye bye baby[CR][LF]" 01:43:19.511677 MAIN sockfilt said DISC 01:43:19.516134 ====> Client disconnected 01:43:19.516545 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:42:26.464336 ====> Client connect 01:42:26.469269 Received DATA (on stdin) 01:42:26.469399 > 160 bytes data, server => client 01:42:26.469519 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:42:26.469627 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:42:26.469727 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:42:26.477502 < 16 bytes data, client => server 01:42:26.477626 'USER anonymous\r\n' 01:42:26.477710 Received DATA (on stdin) 01:42:26.477787 > 33 bytes data, server => client 01:42:26.477878 '331 We are happy you popped in!\r\n' 01:42:26.478206 < 22 bytes data, client => server 01:42:26.478282 'PASS ftp@example.com\r\n' 01:42:26.479379 Received DATA (on stdin) 01:42:26.479458 > 30 bytes data, server => client 01:42:26.479550 '230 Welcome you silly person\r\n' 01:42:26.479821 < 5 bytes data, client => server 01:42:26.479891 'PWD\r\n' 01:42:26.480669 Received DATA (on stdin) 01:42:26.480743 > 30 bytes data, server => client 01:42:26.480852 '257 "/" is current directory\r\n' 01:42:26.483415 < 6 bytes data, client => server 01:42:26.483492 'EPSV\r\n' 01:42:26.531516 Received DATA (on stdin) 01:42:26.531660 > 39 bytes data, server => client 01:42:26.531752 '229 Entering Passive Mode (|||34303|)\r\n' 01:42:26.535100 < 8 bytes data, client => server 01:42:26.535189 'TYPE I\r\n' 01:42:26.536261 Received DATA (on stdin) 01:42:26.536334 > 33 bytes data, server => client 01:42:26.536416 '200 I modify TYPE as you wanted\r\n' 01:42:26.536811 < 21 bytes data, client => server 01:42:26.536885 'SIZE verifiedserver\r\n' 01:42:26.537578 Received DATA (on stdin) 01:42:26.537644 > 8 bytes data, server => client 01:42:26.537872 '213 18\r\n' 01:42:26.538586 < 21 bytes data, client => server 01:42:26.538665 'RETR verifiedserver\r\n' 01:42:26.539344 Received DATA (on stdin) 01:42:26.539411 > 29 bytes data, server => client 01:42:26.539602 '150 Binary junk (18 bytes).\r\n' 01:42:26.552408 Received DATA (on stdin) 01:42:26.552546 > 28 bytes data, server => client 01:42:26.552629 '226 File transfer complete\r\n' 01:42:26.598853 < 6 bytes data, client => server 01:42:26.599032 'QUIT\r\n' 01:42:26.600606 Received DATA (on stdin) 01:42:26.600681 > 18 bytes data, server => client 01:42:26.600761 '221 bye bye baby\r\n' 01:42:26.604456 ====> Client disconnect 01:42:26.604854 Received ACKD (on stdin) 01:43:14.787534 ====> Client connect 01:43:14.789749 Received DATA (on stdin) 01:43:14.789841 > 160 bytes data, server => client 01:43:14.789978 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:43:14.790083 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:43:14.790173 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:43:15.708137 < 16 bytes data, client => server 01:43:15.708333 'USER anonymous\r\n' 01:43:15.709743 Received DATA (on stdin) 01:43:15.709826 > 33 bytes data, server => client 01:43:15.711075 '331 We are happy you popped in!\r\n' 01:43:15.805054 < 22 bytes data, client => server 01:43:15.805277 'PASS ftp@example.com\r\n' 01:43:15.806325 Received DATA (on stdin) 01:43:15.806410 > 30 bytes data, server => client 01:43:15.806514 '230 Welcome you silly person\r\n' 01:43:15.909685 < 5 bytes data, client => server 01:43:15.909877 'PWD\r\n' 01:43:15.914364 Received DATA (on stdin) 01:43:15.914488 > 30 bytes data, server => client 01:43:15.914580 '257 "/" is current directory\r\n' 01:43:16.108693 < 6 bytes data, client => server 01:43:16.108900 'EPSV\r\n' 01:43:16.199853 Received DATA (on stdin) 01:43:16.200011 > 39 bytes data, server => client 01:43:16.200121 '229 Entering Passive Mode (|||40739|)\r\n' 01:43:16.621068 < 8 bytes data, client => server 01:43:16.621272 'TYPE I\r\n' 01:43:16.622355 Received DATA (on stdin) 01:43:16.622441 > 33 bytes data, server => client 01:43:16.622546 '200 I modify TYPE as you wanted\r\n' 01:43:16.684258 < 10 bytes data, client => server 01:43:16.684523 'SIZE 712\r\n' 01:43:16.687174 Received DATA (on stdin) 01:43:16.687280 > 8 bytes data, server => client 01:43:16.687366 '213 14\r\n' 01:43:16.764286 < 10 bytes data, client => server 01:43:16.764512 'RETR 712\r\n' 01:43:16.766345 Received DATA (on stdin) 01:43:16.766425 > 51 bytes data, server => client 01:43:16.766523 '150 Binary data connection for 712 () (14 bytes).\r\n' 01:43:16.778526 Received DATA (on stdin) 01:43:16.778690 > 28 bytes data, server => client 01:43:16.778780 '226 File transfer complete\r\n' 01:43:18.958072 < 6 bytes data, client => server 01:43:18.958240 'QUIT\r\n' 01:43:18.961525 Received DATA (on stdin) 01:43:18.961670 > 18 bytes data, server => client 01:43:18.961761 '221 bye bye baby\r\n' 01:43:19.121740 ====> Client disconnect 01:43:19.122608 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:42:26.519275 Running IPv4 version 01:42:26.527492 Listening on port 34303 01:42:26.528010 Wrote pid 283851 to log/3/server/ftp_sockdata.pid 01:42:26.528822 Received PING (on stdin) 01:42:26.529986 Received PORT (on stdin) 01:42:26.534385 ====> Client connect 01:42:26.542606 Received DATA (on stdin) 01:42:26.542927 > 18 bytes data, server => client 01:42:26.543282 'WE ROOLZ: 202504\r\n' 01:42:26.543543 Received DISC (on stdin) 01:42:26.543670 ====> Client forcibly disconnected 01:42:26.548298 Received QUIT (on stdin) 01:42:26.548401 quits 01:42:26.548961 ============> sockfilt quits 01:43:16.178697 Running IPv4 version 01:43:16.193208 Listening on port 40739 01:43:16.193744 Wrote pid 284487 to log/3/server/ftp_sockdata.pid 01:43:16.197903 Received PING (on stdin) 01:43:16.198855 Received PORT (on stdin) 01:43:16.555687 ====> Client connect 01:43:16.766687 Received DATA (on stdin) 01:43:16.767088 > 14 bytes data, server => client 01:43:16.767449 'silly content\n' 01:43:16.767748 Received DISC (on stdin) 01:43:16.767888 ====> Client forcibly disconnected 01:43:16.774363 Received QUIT (on stdin) 01:43:16.774519 quits 01:43:16.775090 ============> sockfilt quits === End of file ftp_sockdata.log === Start CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind713 ../src/curl -q --output log/7/curl713.out --include --trace-ascii log/7/trace713 --trace-time ftp://ftp.example.com/713 --connect-to ::127.0.0.1:45353 --proxy socks5://127.0.0.1:45351 > log/7/stdout713 2> log/7/stderr713 of file server.cmd Testnum 712 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE 712 RETR 712 QUIT === End of file server.input === Start of file socks_server.log 01:43:13.982905 ====> Client connect, Read config from log/3/server.cmd 01:43:13.983149 Reset to defaults 01:43:13.983208 parse config file 01:43:14.559063 READ 4 bytes 01:43:14.559292 '05020001' 01:43:14.559364 Incoming request deemed fine 01:43:14.559453 Sent 2 bytes 01:43:14.559526 '0500' 01:43:14.786954 READ 10 bytes 01:43:14.787149 '050100017f00000191d3' 01:43:14.787213 Received ATYP 1 01:43:14.787485 Connected fine to 127.0.0.1:37331 01:43:14.787569 Sent 10 bytes 01:43:14.787641 '050000017f00000191d3' 01:43:14.787726 ====> Tunnel transfer 01:43:16.460635 ====> Client connect, Read config from log/3/server.cmd 01:43:16.460850 Reset to defaults 01:43:16.460921 parse config file 01:43:16.541162 READ 4 bytes 01:43:16.541367 '05020001' 01:43:16.541431 Incoming request deemed fine 01:43:16.541500 Sent 2 bytes 01:43:16.541565 '0500' 01:43:16.555048 READ 10 bytes 01:43:16.555268 '050100017f0000019f23' 01:43:16.555332 Received ATYP 1 01:43:16.555542 Connected fine to 127.0.0.1:40739 01:43:16.555625 Sent 10 bytes 01:43:16.555705 '050000017f0000019f23' 01:43:16.555766 ====> Tunnel transfer 01:43:16.768020 SOCKS transfer completed. Bytes: < 14 > 0 01:43:19.121407 SOCKS transfer completed. Bytes: < 430 > 83 === End of file socks_server.log === Start of file socksd-request.log atyp 1 => 127.0.0.1 atyp 1 => 127.0.0.1 === End of file socksd-request.log === Start of file stderr712 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 14 100 14 0 0 2 0 0:00:07 0:00:05 0:00:02 3 100 14 100 14 0 0 2 0 0:00:07 0:00:06 0:00:01 2 === End of file stderr712 === Start of file trace712 01:43:14.042590 * Trying 127.0.0.1:41047... 01:43:15.264969 * Opened SOCKS connection from 127.0.0.1 port 54738 to 127.0.0.1 port 37331 (via 127.0.0.1 port 41047) 01:43:15.412153 * Established connection to 127.0.0.1 (127.0.0.1 port 41047) from 127.0.0.1 port 54738 01:43:15.625151 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:43:15.982305 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:43:16.009952 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:43:16.018772 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:43:16.023841 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:43:16.107750 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:43:16.173091 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:43:16.196895 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:43:16.278665 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:43:16.299442 => Send header, 5 bytes (0x5) 0000: PWD 01:43:16.318154 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:43:16.356030 * Entry path is '/' 01:43:16.445810 * Request has same path as previous transfer 01:43:16.498465 => Send header, 6 bytes (0x6) 0000: EPSV 01:43:16.520748 * Connect data stream passively 01:43:16.615375 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||40739|) 01:43:16.744807 * Hostname 127.0.0.1 was found in DNS cache 01:43:16.780709 * Connecting to 127.0.0.1 (127.0.0.1) port 41047 01:43:16.844221 * Trying 127.0.0.1:41047... 01:43:16.957626 * Opened 2nd SOCKS connection from 127.0.0.1 port 54752 to 127.0.0.1 port 40739 (via 127.0.0.1 port 41047) 01:43:16.975283 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 41047) from 127.0.0.1 port 54752 01:43:17.009658 => Send header, 8 bytes (0x8) 0000: TYPE I 01:43:17.038204 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:43:17.074401 => Send header, 10 bytes (0xa) 0000: SIZE 712 01:43:17.104965 <= Recv header, 8 bytes (0x8) 0000: 213 14 01:43:17.154351 => Send header, 10 bytes (0xa) 0000: RETR 712 01:43:17.177370 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 712 () (14 bytes). 01:43:17.221431 * Maxdownload = -1 01:43:17.233292 * Getting file with size: 14 01:43:17.387295 <= Recv data, 14 bytes (0xe) 0000: silly content. 01:43:17.719496 * abort upload 01:43:17.744767 <= Recv data, 0 bytes (0x0) 01:43:17.953139 * Remembering we are in dir "" 01:43:18.198020 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:43:18.519182 * Connection #0 to host 127.0.0.1:37331 left intact === End of file trace712 === Start of file valgrind712 ==283907== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind712 startnew: ./server/servers socksd --port 0 --pidfile log/7/server/socks_server.pid --portfile log/7/server/socks_server.port --reqfile log/7/socksd-request.log --logfile log/7/socks_server.log --backend 127.0.0.1 --config log/7/server.cmd RUN: SOCKS server is now running PID 284109 * pid socks => 284109 284109 test 0713...[FTP fetch with --proxy set to socks5:// and with --connect-to] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind713 ../src/curl -q --output log/7/curl713.out --include --trace-ascii log/7/trace713 --trace-time ftp://ftp.example.com/713 --connect-to ::127.0.0.1:45353 --proxy socks5://127.0.0.1:45351 > log/7/stdout713 2> log/7/stderr713 valgrind ERROR ==284119== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 713 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind713 ../src/curl -q --output log/7/curl713.out --include --trace-ascii log/7/trace713 --trace-time ftp://ftp.example.com/713 --connect-to ::127.0.0.1:45353 --proxy socks5://127.0.0.1:45351 > log/7/stdout713 2> log/7/stderr713 === End of file commands.log === Start of file curl713.out silly content === End of file curl713.out === Start of file ftp_server.log 01:42:30.060743 ====> Client connect 01:42:30.061730 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:42:30.067674 < "USER anonymous" 01:42:30.068017 > "331 We are happy you popped in![CR][LF]" 01:42:30.068845 < "PASS ftp@example.com" 01:42:30.069102 > "230 Welcome you silly person[CR][LF]" 01:42:30.071063 < "PWD" 01:42:30.071356 > "257 "/" is current directory[CR][LF]" 01:42:30.073618 < "EPSV" 01:42:30.073826 ====> Passive DATA channel requested by client 01:42:30.073982 DATA sockfilt for passive data channel starting... 01:42:30.120337 DATA sockfilt for passive data channel started (pid 284106) 01:42:30.121692 DATA sockfilt for passive data channel listens on port 45655 01:42:30.122032 > "229 Entering Passive Mode (|||45655|)[CR][LF]" 01:42:30.122195 Client has been notified that DATA conn will be accepted on port 45655 01:42:30.125292 Client connects to port 45655 01:42:30.125532 ====> Client established passive DATA connection on port 45655 01:42:30.126148 < "TYPE I" 01:42:30.126434 > "200 I modify TYPE as you wanted[CR][LF]" 01:42:30.127969 < "SIZE verifiedserver" 01:42:30.128931 > "213 18[CR][LF]" 01:42:30.129610 < "RETR verifiedserver" 01:42:30.130044 > "150 Binary junk (18 bytes).[CR][LF]" 01:42:30.133033 =====> Closing passive DATA connection... 01:42:30.133209 Server disconnects passive DATA connection 01:42:30.134006 Server disconnected passive DATA connection 01:42:30.134172 DATA sockfilt for passive data channel quits (pid 284106) 01:42:30.137553 DATA sockfilt for passive data channel quit (pid 284106) 01:42:30.137778 =====> Closed passive DATA connection 01:42:30.138088 > "226 File transfer complete[CR][LF]" 01:42:30.182276 < "QUIT" 01:42:30.187408 > "221 bye bye baby[CR][LF]" 01:42:30.187674 MAIN sockfilt said DISC 01:42:30.187854 ====> Client disconnected 01:42:30.188117 Awaiting input 01:43:19.159601 ====> Client connect 01:43:19.160341 FTPD: Getting commands from log/7/server.cmd 01:43:19.160697 FTPD: run test case number: 713 01:43:19.167490 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:43:20.219025 < "USER anonymous" 01:43:20.219482 > "331 We are happy you popped in![CR][LF]" 01:43:20.335442 < "PASS ftp@example.com" 01:43:20.337645 > "230 Welcome you silly person[CR][LF]" 01:43:20.449807 < "PWD" 01:43:20.450287 > "257 "/" is current directory[CR][LF]" 01:43:20.678237 < "EPSV" 01:43:20.678594 ====> Passive DATA channel requested by client 01:43:20.678754 DATA sockfilt for passive data channel starting... 01:43:20.745615 DATA sockfilt for passive data channel started (pid 284872) 01:43:20.746864 DATA sockfilt for passive data channel listens on port 38187 01:43:20.747230 > "229 Entering Passive Mode (|||38187|)[CR][LF]" 01:43:20.747450 Client has been notified that DATA conn will be accepted on port 38187 01:43:21.144792 Client connects to port 38187 01:43:21.145421 ====> Client established passive DATA connection on port 38187 01:43:21.288194 < "TYPE I" 01:43:21.288651 > "200 I modify TYPE as you wanted[CR][LF]" 01:43:21.348337 < "SIZE 713" 01:43:21.354068 > "213 14[CR][LF]" 01:43:21.436156 < "RETR 713" 01:43:21.440748 > "150 Binary data connection for 713 () (14 bytes).[CR][LF]" 01:43:21.441457 =====> Closing passive DATA connection... 01:43:21.441636 Server disconnects passive DATA connection 01:43:21.444068 Server disconnected passive DATA connection 01:43:21.444372 DATA sockfilt for passive data channel quits (pid 284872) 01:43:21.451237 DATA sockfilt for passive data channel quit (pid 284872) 01:43:21.451751 =====> Closed passive DATA connection 01:43:21.452134 > "226 File transfer complete[CR][LF]" 01:43:23.674872 < "QUIT" 01:43:23.675338 > "221 bye bye baby[CR][LF]" 01:43:23.814173 MAIN sockfilt said DISC 01:43:23.814815 ====> Client disconnected 01:43:23.815184 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:42:29.668455 ====> Client connect 01:42:29.672063 Received DATA (on stdin) 01:42:29.672146 > 160 bytes data, server => client 01:42:29.672252 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:42:29.672351 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:42:29.672439 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:42:29.677359 < 16 bytes data, client => server 01:42:29.677474 'USER anonymous\r\n' 01:42:29.678487 Received DATA (on stdin) 01:42:29.678562 > 33 bytes data, server => client 01:42:29.678646 '331 We are happy you popped in!\r\n' 01:42:29.678957 < 22 bytes data, client => server 01:42:29.679034 'PASS ftp@example.com\r\n' 01:42:29.679529 Received DATA (on stdin) 01:42:29.679593 > 30 bytes data, server => client 01:42:29.679673 '230 Welcome you silly person\r\n' 01:42:29.679901 < 5 bytes data, client => server 01:42:29.679964 'PWD\r\n' 01:42:29.682005 Received DATA (on stdin) 01:42:29.682084 > 30 bytes data, server => client 01:42:29.682165 '257 "/" is current directory\r\n' 01:42:29.683607 < 6 bytes data, client => server 01:42:29.683674 'EPSV\r\n' 01:42:29.732892 Received DATA (on stdin) 01:42:29.733036 > 39 bytes data, server => client 01:42:29.733131 '229 Entering Passive Mode (|||45655|)\r\n' 01:42:29.735371 < 8 bytes data, client => server 01:42:29.735450 'TYPE I\r\n' 01:42:29.737296 Received DATA (on stdin) 01:42:29.737370 > 33 bytes data, server => client 01:42:29.737450 '200 I modify TYPE as you wanted\r\n' 01:42:29.737834 < 21 bytes data, client => server 01:42:29.737916 'SIZE verifiedserver\r\n' 01:42:29.738715 Received DATA (on stdin) 01:42:29.738781 > 8 bytes data, server => client 01:42:29.738868 '213 18\r\n' 01:42:29.739601 < 21 bytes data, client => server 01:42:29.739678 'RETR verifiedserver\r\n' 01:42:29.740325 Received DATA (on stdin) 01:42:29.740390 > 29 bytes data, server => client 01:42:29.741197 '150 Binary junk (18 bytes).\r\n' 01:42:29.751147 Received DATA (on stdin) 01:42:29.751270 > 28 bytes data, server => client 01:42:29.751354 '226 File transfer complete\r\n' 01:42:29.791602 < 6 bytes data, client => server 01:42:29.791773 'QUIT\r\n' 01:42:29.793084 Received DATA (on stdin) 01:42:29.793154 > 18 bytes data, server => client 01:42:29.793427 '221 bye bye baby\r\n' 01:42:29.793974 ====> Client disconnect 01:42:29.798746 Received ACKD (on stdin) 01:43:18.769689 ====> Client connect 01:43:18.772866 Received DATA (on stdin) 01:43:18.772967 > 160 bytes data, server => client 01:43:18.778255 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:43:18.778401 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:43:18.778507 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:43:19.830066 < 16 bytes data, client => server 01:43:19.830220 'USER anonymous\r\n' 01:43:19.830309 Received DATA (on stdin) 01:43:19.830376 > 33 bytes data, server => client 01:43:19.830463 '331 We are happy you popped in!\r\n' 01:43:19.944486 < 22 bytes data, client => server 01:43:19.944707 'PASS ftp@example.com\r\n' 01:43:19.946220 Received DATA (on stdin) 01:43:19.946303 > 30 bytes data, server => client 01:43:19.947753 '230 Welcome you silly person\r\n' 01:43:20.058841 < 5 bytes data, client => server 01:43:20.059024 'PWD\r\n' 01:43:20.061690 Received DATA (on stdin) 01:43:20.061776 > 30 bytes data, server => client 01:43:20.061866 '257 "/" is current directory\r\n' 01:43:20.282687 < 6 bytes data, client => server 01:43:20.282877 'EPSV\r\n' 01:43:20.357531 Received DATA (on stdin) 01:43:20.357737 > 39 bytes data, server => client 01:43:20.357860 '229 Entering Passive Mode (|||38187|)\r\n' 01:43:20.896967 < 8 bytes data, client => server 01:43:20.897139 'TYPE I\r\n' 01:43:20.904351 Received DATA (on stdin) 01:43:20.904488 > 33 bytes data, server => client 01:43:20.904601 '200 I modify TYPE as you wanted\r\n' 01:43:20.957404 < 10 bytes data, client => server 01:43:20.957611 'SIZE 713\r\n' 01:43:20.960739 Received DATA (on stdin) 01:43:20.960855 > 8 bytes data, server => client 01:43:20.964808 '213 14\r\n' 01:43:21.045292 < 10 bytes data, client => server 01:43:21.045495 'RETR 713\r\n' 01:43:21.047628 Received DATA (on stdin) 01:43:21.047724 > 51 bytes data, server => client 01:43:21.052236 '150 Binary data connection for 713 () (14 bytes).\r\n' 01:43:21.062795 Received DATA (on stdin) 01:43:21.062959 > 28 bytes data, server => client 01:43:21.063058 '226 File transfer complete\r\n' 01:43:23.284215 < 6 bytes data, client => server 01:43:23.284445 'QUIT\r\n' 01:43:23.285622 Received DATA (on stdin) 01:43:23.285709 > 18 bytes data, server => client 01:43:23.285799 '221 bye bye baby\r\n' 01:43:23.421329 ====> Client disconnect 01:43:23.425172 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:42:30.721603 Running IPv4 version 01:42:30.729236 Listening on port 45655 01:42:30.729686 Wrote pid 284106 to log/7/server/ftp_sockdata.pid 01:42:30.730451 Received PING (on stdin) 01:42:30.731489 Received PORT (on stdin) 01:42:30.735625 ====> Client connect 01:42:30.740726 Received DATA (on stdin) 01:42:30.741028 > 18 bytes data, server => client 01:42:30.744091 'WE ROOLZ: 202639\r\n' 01:42:30.744340 Received DISC (on stdin) 01:42:30.744852 ====> Client forcibly disconnected 01:42:30.745024 Received QUIT (on stdin) 01:42:30.7CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind714 ../src/curl -q --output log/2/curl714.out --include --trace-ascii log/2/trace714 --trace-time ftp://ftp.example.com.714/714 --connect-to ::connect.example.com.714:39881 --proxytunnel --proxy http://127.0.0.1:46411 > log/2/stdout714 2> log/2/stderr714 45094 quits 01:42:30.745594 ============> sockfilt quits 01:43:20.332546 Running IPv4 version 01:43:20.347250 Listening on port 38187 01:43:20.354527 Wrote pid 284872 to log/7/server/ftp_sockdata.pid 01:43:20.355399 Received PING (on stdin) 01:43:20.356507 Received PORT (on stdin) 01:43:20.754703 ====> Client connect 01:43:21.052423 Received DATA (on stdin) 01:43:21.052866 > 14 bytes data, server => client 01:43:21.053291 'silly content\n' 01:43:21.053593 Received DISC (on stdin) 01:43:21.053741 ====> Client forcibly disconnected 01:43:21.054928 Received QUIT (on stdin) 01:43:21.055018 quits 01:43:21.055587 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 713 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE 713 RETR 713 QUIT === End of file server.input === Start of file socks_server.log 01:42:30.939130 Running IPv4 version 01:42:30.946562 Listening on port 45351 01:42:30.946992 Wrote pid 284109 to log/7/server/socks_server.pid 01:42:30.947250 Wrote port 45351 to log/7/server/socks_server.port 01:43:18.891258 ====> Client connect, Read config from log/7/server.cmd 01:43:18.891541 Reset to defaults 01:43:18.891785 parse config file 01:43:19.514076 READ 4 bytes 01:43:19.514598 '05020001' 01:43:19.514769 Incoming request deemed fine 01:43:19.514916 Sent 2 bytes 01:43:19.514992 '0500' 01:43:19.768281 READ 10 bytes 01:43:19.768521 '050100017f000001b129' 01:43:19.768725 Received ATYP 1 01:43:19.772090 Connected fine to 127.0.0.1:45353 01:43:19.772333 Sent 10 bytes 01:43:19.772441 '050000017f000001b129' 01:43:19.772536 ====> Tunnel transfer 01:43:21.655727 ====> Client connect, Read config from log/7/server.cmd 01:43:21.655956 Reset to defaults 01:43:21.656030 parse config file 01:43:21.740301 READ 4 bytes 01:43:21.740525 '05020001' 01:43:21.740601 Incoming request deemed fine 01:43:21.740698 Sent 2 bytes 01:43:21.740776 '0500' 01:43:21.753961 READ 10 bytes 01:43:21.754201 '050100017f000001952b' 01:43:21.754282 Received ATYP 1 01:43:21.754629 Connected fine to 127.0.0.1:38187 01:43:21.754727 Sent 10 bytes 01:43:21.754821 '050000017f000001952b' 01:43:21.754897 ====> Tunnel transfer 01:43:22.054006 SOCKS transfer completed. Bytes: < 14 > 0 01:43:24.421027 SOCKS transfer completed. Bytes: < 430 > 83 === End of file socks_server.log === Start of file socksd-request.log atyp 1 => 127.0.0.1 atyp 1 => 127.0.0.1 === End of file socksd-request.log === Start of file stderr713 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 14 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 100 14 100 14 0 0 2 0 0:00:07 0:00:06 0:00:01 2 === End of file stderr713 === Start of file trace713 01:43:16.573381 * Connecting to hostname: 127.0.0.1 01:43:16.898364 * Connecting to port: 45353 01:43:18.177877 * Trying 127.0.0.1:45351... 01:43:19.260887 * Opened SOCKS connection from 127.0.0.1 port 56304 to 127.0.0.1 port 45353 (via 127.0.0.1 port 45351) 01:43:19.427148 * Established connection to 127.0.0.1 (127.0.0.1 port 45351) from 127.0.0.1 port 56304 01:43:19.689166 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:43:20.091275 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:43:20.125235 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:43:20.132831 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:43:20.139039 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:43:20.227389 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:43:20.307005 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:43:20.332391 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:43:20.426564 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:43:20.448526 => Send header, 5 bytes (0x5) 0000: PWD 01:43:20.478208 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:43:20.519638 * Entry path is '/' 01:43:20.617111 * Request has same path as previous transfer 01:43:20.672381 => Send header, 6 bytes (0x6) 0000: EPSV 01:43:20.691329 * Connect data stream passively 01:43:20.756896 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||38187|) 01:43:20.900130 * Hostname 127.0.0.1 was found in DNS cache 01:43:20.938644 * Connecting to ftp.example.com (127.0.0.1) port 45351 01:43:21.036787 * Trying 127.0.0.1:45351... 01:43:21.236039 * Opened 2nd SOCKS connection from 127.0.0.1 port 56312 to 127.0.0.1 port 38187 (via 127.0.0.1 port 45351) 01:43:21.256374 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 45351) from 127.0.0.1 port 56312 01:43:21.286665 => Send header, 8 bytes (0x8) 0000: TYPE I 01:43:21.305387 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:43:21.347069 => Send header, 10 bytes (0xa) 0000: SIZE 713 01:43:21.379323 <= Recv header, 8 bytes (0x8) 0000: 213 14 01:43:21.430458 => Send header, 10 bytes (0xa) 0000: RETR 713 01:43:21.469958 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 713 () (14 bytes). 01:43:21.513846 * Maxdownload = -1 01:43:21.524444 * Getting file with size: 14 01:43:21.694148 <= Recv data, 14 bytes (0xe) 0000: silly content. 01:43:22.061718 * abort upload 01:43:22.089389 <= Recv data, 0 bytes (0x0) 01:43:22.282393 * Remembering we are in dir "" 01:43:22.501048 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:43:22.879840 * Connection #0 to host 127.0.0.1:45353 left intact === End of file trace713 === Start of file valgrind713 ==284119== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind713 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 716 in state 4 Runner 2 (id 185908) running test 714 in state 4 Runner 3 (id 185910) running test 720 in state 4 Runner 4 (id 185912) running test 717 in state 4 Runner 5 (id 185914) running test 718 in state 4 Runner 6 (id 185916) running test 719 in state 4 Runner 7 (id 185918) running test 721 in state 4 Runner 8 (id 185920) running test 715 in state 4 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/2/server/http2_server.pid" --logfile "log/2/http2_server.log" --logdir "log/2" --portfile log/2/server/http2_server.port --config log/2/server.cmd --id 2 --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP2 server is on PID 284302 port 46411 * pid http-proxy => 284302 284302 test 0714...[FTP fetch with --proxy set to http:// and with --connect-to] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind714 ../src/curl -q --output log/2/curl714.out --include --trace-ascii log/2/trace714 --trace-time ftp://ftp.example.com.714/714 --connect-to ::connect.example.com.714:39881 --proxytunnel --proxy http://127.0.0.1:46411 > log/2/stdout714 2> log/2/stderr714 valgrind ERROR ==284323== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 714 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind714 ../src/curl -q --output log/2/curl714.out --include --trace-ascii log/2/trace714 --trace-time ftp://ftp.example.com.714/714 --connect-to ::connect.example.com.714:39881 --proxytunnel --proxy http://127.0.0.1:46411 > log/2/stdout714 2> log/2/stderr714 === End of file commands.log === Start of file curl714.out silly content === End of file curl714.out === Start of file ftp_server.log 01:42:46.691222 ====> Client connect 01:42:46.692275 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:42:46.701119 < "USER anonymous" 01:42:46.701804 > "331 We are happy you popped in![CR][LF]" 01:42:46.702720 < "PASS ftp@example.com" 01:42:46.703236 > "230 Welcome you silly person[CR][LF]" 01:42:46.704118 < "PWD" 01:42:46.704651 > "257 "/" is current directory[CR][LF]" 01:42:46.707285 < "EPSV" 01:42:46.707512 ====> Passive DATA channel requested by client 01:42:46.707657 DATA sockfilt for passive data channel starting... 01:42:46.750073 DATA sockfilt for passive data channel started (pid 284296) 01:42:46.751373 DATA sockfilt for passive data channel listens on port 38479 01:42:46.754456 > "229 Entering Passive Mode (|||38479|)[CR][LF]" 01:42:46.754675 Client has been notified that DATA conn will be accepted on port 38479 01:42:46.755346 Client connects to port 38479 01:42:46.755551 ====> Client established passive DATA connection on port 38479 01:42:46.756186 < "TYPE I" 01:42:46.757268 > "200 I modify TYPE as you wanted[CR][LF]" 01:42:46.757807 < "SIZE verifiedserver" 01:42:46.758862 > "213 18[CR][LF]" 01:42:46.759370 < "RETR verifiedserver" 01:42:46.759664 > "150 Binary junk (18 bytes).[CR][LF]" 01:42:46.762881 =====> Closing passive DATA connection... 01:42:46.763052 Server disconnects passive DATA connection 01:42:46.764076 Server disconnected passive DATA connection 01:42:46.764272 DATA sockfilt for passive data channel quits (pid 284296) 01:42:46.771933 DATA sockfilt for passive data channel quit (pid 284296) 01:42:46.772180 =====> Closed passive DATA connection 01:42:46.772471 > "226 File transfer complete[CR][LF]" 01:42:46.811886 < "QUIT" 01:42:46.817389 > "221 bye bye baby[CR][LF]" 01:42:46.817737 MAIN sockfilt said DISC 01:42:46.817919 ====> Client disconnected 01:42:46.818190 Awaiting input 01:43:37.090328 ====> Client connect 01:43:37.091061 FTPD: Getting commands from log/2/server.cmd 01:43:37.091378 FTPD: run test case number: 714 01:43:37.093034 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:43:37.665812 < "USER anonymous" 01:43:37.666541 > "331 We are happy you popped in![CR][LF]" 01:43:37.755139 < "PASS ftp@example.com" 01:43:37.760717 > "230 Welcome you silly person[CR][LF]" 01:43:37.845429 < "PWD" 01:43:37.845855 > "257 "/" is current directory[CR][LF]" 01:43:38.019464 < "EPSV" 01:43:38.019806 ====> Passive DATA channel requested by client 01:43:38.019959 DATA sockfilt for passive data channel starting... 01:43:38.101509 DATA sockfilt for passive data channel started (pid 285566) 01:43:38.102901 DATA sockfilt for passive data channel listens on port 43903 01:43:38.103251 > "229 Entering Passive Mode (|||43903|)[CR][LF]" 01:43:38.103428 Client has been notified that DATA conn will be accepted on port 43903 01:43:38.927447 Client connects to port 43903 01:43:38.928008 ====> Client established passive DATA connection on port 43903 01:43:38.928749 < "TYPE I" 01:43:38.929052 > "200 I modify TYPE as you wanted[CR][LF]" 01:43:38.975752 < "SIZE 714" 01:43:38.978180 > "213 14[CR][LF]" 01:43:39.038717 < "RETR 714" 01:43:39.040239 > "150 Binary data connection for 714 () (14 bytes).[CR][LF]" 01:43:39.040750 =====> Closing passive DATA connection... 01:43:39.040911 Server disconnects passive DATA connection 01:43:39.044417 Server disconnected passive DATA connection 01:43:39.044641 DATA sockfilt for passive data channel quits (pid 285566) 01:43:39.047937 DATA sockfilt for passive data channel quit (pid 285566) 01:43:39.048118 =====> Closed passive DATA connection 01:43:39.048420 > "226 File transfer complete[CR][LF]" 01:43:40.971566 < "QUIT" 01:43:40.971993 > "221 bye bye baby[CR][LF]" 01:43:41.098079 MAIN sockfilt said DISC 01:43:41.098593 ====> Client disconnected 01:43:41.098916 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:42:47.301277 ====> Client connect 01:42:47.302548 Received DATA (on stdin) 01:42:47.302631 > 160 bytes data, server => client 01:42:47.302756 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:42:47.302872 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:42:47.302968 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:42:47.310668 < 16 bytes data, client => server 01:42:47.310801 'USER anonymous\r\n' 01:42:47.311886 Received DATA (on stdin) 01:42:47.311965 > 33 bytes data, server => client 01:42:47.312074 '331 We are happy you popped in!\r\n' 01:42:47.312647 < 22 bytes data, client => server 01:42:47.312728 'PASS ftp@example.com\r\n' 01:42:47.313369 Received DATA (on stdin) 01:42:47.313436 > 30 bytes data, server => client 01:42:47.313537 '230 Welcome you silly person\r\n' 01:42:47.314064 < 5 bytes data, client => server 01:42:47.314134 'PWD\r\n' 01:42:47.314783 Received DATA (on stdin) 01:42:47.314853 > 30 bytes data, server => client 01:42:47.314955 '257 "/" is current directory\r\n' 01:42:47.317217 < 6 bytes data, client => server 01:42:47.317289 'EPSV\r\n' 01:42:47.362090 Received DATA (on stdin) 01:42:47.362231 > 39 bytes data, server => client 01:42:47.362345 '229 Entering Passive Mode (|||38479|)\r\n' 01:42:47.365362 < 8 bytes data, client => server 01:42:47.365444 'TYPE I\r\n' 01:42:47.366848 Received DATA (on stdin) 01:42:47.366917 > 33 bytes data, server => client 01:42:47.367022 '200 I modify TYPE as you wanted\r\n' 01:42:47.367399 < 21 bytes data, client => server 01:42:47.367476 'SIZE verifiedserver\r\n' 01:42:47.368513 Received DATA (on stdin) 01:42:47.368582 > 8 bytes data, server => client 01:42:47.368671 '213 18\r\n' 01:42:47.369105 < 21 bytes data, client => server 01:42:47.369179 'RETR verifiedserver\r\n' 01:42:47.370834 Received DATA (on stdin) 01:42:47.370901 > 29 bytes data, server => client 01:42:47.370982 '150 Binary junk (18 bytes).\r\n' 01:42:47.383118 Received DATA (on stdin) 01:42:47.383225 > 28 bytes data, server => client 01:42:47.383307 '226 File transfer complete\r\n' 01:42:47.421280 < 6 bytes data, client => server 01:42:47.421427 'QUIT\r\n' 01:42:47.422646 Received DATA (on stdin) 01:42:47.422713 > 18 bytes data, server => client 01:42:47.422978 '221 bye bye baby\r\n' 01:42:47.428064 ====> Client disconnect 01:42:47.428782 Received ACKD (on stdin) 01:43:37.700377 ====> Client connect 01:43:37.702726 Received DATA (on stdin) 01:43:37.702815 > 160 bytes data, server => client 01:43:37.702946 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:43:37.703050 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:43:37.703142 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:43:38.274902 < 16 bytes data, client => server 01:43:38.275053 'USER anonymous\r\n' 01:43:38.276509 Received DATA (on stdin) 01:43:38.276587 > 33 bytes data, server => client 01:43:38.276702 '331 We are happy you popped in!\r\n' 01:43:38.364529 < 22 bytes data, client => server 01:43:38.364658 'PASS ftp@example.com\r\n' 01:43:38.365781 Received DATA (on stdin) 01:43:38.365855 > 30 bytes data, server => client 01:43:38.371292 '230 Welcome you silly person\r\n' 01:43:38.454726 < 5 bytes data, client => server 01:43:38.454858 'PWD\r\n' 01:43:38.456387 Received DATA (on stdin) 01:43:38.456462 > 30 bytes data, server => client 01:43:38.456546 '257 "/" is current directory\r\n' 01:43:38.628713 < 6 bytes data, client => server 01:43:38.628853 'EPSV\r\n' 01:43:38.713507 Received DATA (on stdin) 01:43:38.713664 > 39 bytes data, server => client 01:43:38.713765 '229 Entering Passive Mode (|||43903|)\r\n' 01:43:39.537264 < 8 bytes data, client => server 01:43:39.537412 'TYPE I\r\n' 01:43:39.539321 Received DATA (on stdin) 01:43:39.539397 > 33 bytes data, server => client 01:43:39.539484 '200 I modify TYPE as you wanted\r\n' 01:43:39.585186 < 10 bytes data, client => server 01:43:39.585323 'SIZE 714\r\n' 01:43:39.588468 Received DATA (on stdin) 01:43:39.588541 > 8 bytes data, server => client 01:43:39.588610 '213 14\r\n' 01:43:39.648208 < 10 bytes data, client => server 01:43:39.648370 'RETR 714\r\n' 01:43:39.650520 Received DATA (on stdin) 01:43:39.650591 > 51 bytes data, server => client 01:43:39.650682 '150 Binary data connection for 714 () (14 bytes).\r\n' 01:43:39.658683 Received DATA (on stdin) 01:43:39.658790 > 28 bytes data, server => client 01:43:39.658870 '226 File transfer complete\r\n' 01:43:41.577683 < 6 bytes data, client => server 01:43:41.577826 'QUIT\r\n' 01:43:41.582254 Received DATA (on stdin) 01:43:41.582323 > 18 bytes data, server => client 01:43:41.582393 '221 bye bye baby\r\n' 01:43:41.708152 ====> Client disconnect 01:43:41.708907 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:42:46.351014 Running IPv4 version 01:42:46.358792 Listening on port 38479 01:42:46.359205 Wrote pid 284296 to log/2/server/ftp_sockdata.pid 01:42:46.359890 Received PING (on stdin) 01:42:46.361085 Received PORT (on stdin) 01:42:46.365608 ====> Client connect 01:42:46.370384 Received DATA (on stdin) 01:42:46.370693 > 18 bytes data, server => client 01:42:46.373904 'WE ROOLZ: 202189\r\n' 01:42:46.374168 Received DISC (on stdin) 01:42:46.374287 ====> Client forcibly disconnected 01:42:46.377743 Received QUIT (on stdin) 01:42:46.377826 quits 01:42:46.378348 ============> sockfilt quits 01:43:38.692421 Running IPv4 version 01:43:38.706813 Listening on port 43903 01:43:38.707310 Wrote pid 285566 to log/2/server/ftp_sockdata.pid 01:43:38.711441 Received PING (on stdin) 01:43:38.712552 Received PORT (on stdin) 01:43:39.537463 ====> Client connect 01:43:39.651796 Received DATA (on stdin) 01:43:39.652147 > 14 bytes data, server => client 01:43:39.652477 'silly content\n' 01:43:39.654350 Received DISC (on stdin) 01:43:39.654502 ====> Client forcibly disconnected 01:43:39.655150 Received QUIT (on stdin) 01:43:39.655233 quits 01:43:39.655767 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file http2_server.log 01:42:47.239189 Run as proxy, CONNECT to host 127.0.0.1 01:42:47.248932 Running HTTP IPv4 version on port 46411 01:42:47.249336 Wrote pid 284302 to log/2/server/http2_server.pid 01:42:47.249597 Wrote port 46411 to log/2/server/http2_server.port 01:43:35.351392 ====> Client connect 01:43:35.351574 accept_connection 3 returned 4 01:43:35.351745 accept_connection 3 returned 0 01:43:36.179149 Read 142 bytes 01:43:36.179880 Process 142 bytes request 01:43:36.181746 Received a CONNECT connect.example.com.714:39881 HTTP/1.1 request 01:43:36.181904 Port number: 39881, test case number: -7 01:43:36.183046 [log/2/server.cmd] cmdfile says testnum 714 01:43:36.192226 - request found to be complete (714) 01:43:36.193671 Wrote request (142 bytes) input to log/2/proxy.input 01:43:36.194122 Send response test714 section 01:43:36.198643 Response sent (37 bytes) and written to log/2/proxy.response 01:43:36.699654 about to connect to 127.0.0.1:39881 01:43:36.700539 connected fine to 127.0.0.1:39881, now tunnel 01:43:36.703477 [CTRL] READ 160 bytes from server 01:43:36.703820 [CTRL] READ "220- _ _ ____ _ %0d%0a220- ___| | | | _ \| | %0d%0a220- / __| | | | |_) | | %0d%0a220- | (__| |_| | _ {| |___ %0d%0a220 \___|\___/|_| \_\_____|%0d%0a" 01:43:36.704531 [CTRL] SENT 160 bytes to client 01:43:36.704640 [CTRL] SENT "220- _ _ ____ _ %0d%0a220- ___| | | | _ \| | %0d%0a220- / __| | | | |_) | | %0d%0a220- | (__| |_| | _ {| |___ %0d%0a220 \___|\___/|_| \_\_____|%0d%0a" 01:43:37.274420 [CTRL] READ 16 bytes from client 01:43:37.274624 [CTRL] READ "USER anonymous%0d%0a" 01:43:37.274881 [CTRL] SENT 16 bytes to server 01:43:37.274976 [CTRL] SENT "USER anonymous%0d%0a" 01:43:37.276802 [CTRL] READ 33 bytes from server 01:43:37.276880 [CTRL] READ "331 We are happy you popped in!%0d%0a" 01:43:37.276969 [CTRL] SENT 33 bytes to client 01:43:37.277041 [CTRL] SENT "331 We are happy you popped in!%0d%0a" 01:43:37.364255 [CTRL] READ 22 bytes from client 01:43:37.364390 [CTRL] READ "PASS ftp@example.com%0d%0a" 01:43:37.364478 [CTRL] SENT 22 bytes to server 01:43:37.364549 [CTRL] SENT "PASS ftp@example.com%0d%0a" 01:43:37.374312 [CTRL] READ 30 bytes from server 01:43:37.374421 [CTRL] READ "230 Welcome you silly person%0d%0a" 01:43:37.374517 [CTRL] SENT 30 bytes to client 01:43:37.374591 [CTRL] SENT "230 Welcome you silly person%0d%0a" 01:43:37.454403 [CTRL] READ 5 bytes from client 01:43:37.454567 [CTRL] READ "PWD%0d%0a" 01:43:37.454669 [CTRL] SENT 5 bytes to server 01:43:37.454744 [CTRL] SENT "PWD%0d%0a" 01:43:37.456643 [CTRL] READ 30 bytes from server 01:43:37.456723 [CTRL] READ "257 "/" is current directory%0d%0a" 01:43:37.456815 [CTRL] SENT 30 bytes to client 01:43:37.456888 [CTRL] SENT "257 "/" is current directory%0d%0a" 01:43:37.628361 [CTRL] READ 6 bytes from client 01:43:37.628547 [CTRL] READ "EPSV%0d%0a" 01:43:37.628656 [CTRL] SENT 6 bytes to server 01:43:37.628736 [CTRL] SENT "EPSV%0d%0a" 01:43:37.713906 [CTRL] READ 39 bytes from server 01:43:37.714062 [CTRL] READ "229 Entering Passive Mode (|||43903|)%0d%0a" 01:43:37.714172 [CTRL] SENT 39 bytes to client 01:43:37.714245 [CTRL] SENT "229 Entering Passive Mode (|||43903|)%0d%0a" 01:43:37.931532 ====> Client connect DATA 01:43:38.034327 Read 142 bytes 01:43:38.034545 Process 142 bytes request 01:43:38.034661 Received a CONNECT connect.example.com.714:43903 HTTP/1.1 request 01:43:38.034735 Port number: 43903, test case number: -7 01:43:38.034847 [log/2/server.cmd] cmdfile says testnum 714 01:43:38.035064 - request found to be complete (714) 01:43:38.035302 Wrote request (142 bytes) input to log/2/proxy.input 01:43:38.035434 Send response test714 section 01:43:38.035776 Response sent (37 bytes) and written to log/2/proxy.response 01:43:38.536533 about to connect to 127.0.0.1:43903 01:43:38.536842 connected fine to 127.0.0.1:43903, now tunnel 01:43:38.537046 [CTRL] READ 8 bytes from client 01:43:38.537121 [CTRL] READ "TYPE I%0d%0a" 01:43:38.537213 [CTRL] SENT 8 bytes to server 01:43:38.537279 [CTRL] SENT "TYPE I%0d%0a" 01:43:38.539581 [CTRL] READ 33 bytes from server 01:43:38.539674 [CTRL] READ "200 I modify TYPE as you wanted%0d%0a" 01:43:38.539760 [CTRL] SENT 33 bytes to client 01:43:38.539822 [CTRL] SENT "200 I modify TYPE as you wanted%0d%0a" 01:43:38.584889 [CTRL] READ 10 bytes from client 01:43:38.585047 [CTRL] READ "SIZE 714%0d%0a" 01:43:38.585134 [CTRL] SENT 10 bytes to server 01:43:38.585202 [CTRL] SENT "SIZE 714%0d%0a" 01:43:38.590973 [CTRL] READ 8 bytes from server 01:43:38.591058 [CTRL] READ "213 14%0d%0a" 01:43:38.591139 [CTRL] SENT 8 bytes to client 01:43:38.591202 [CTRL] SENT "213 14%0d%0a" 01:43:38.647900 [CTRL] READ 10 bytes from client 01:43:38.648064 [CTRL] READ "RETR 714%0d%0a" 01:43:38.648151 [CTRL] SENT 10 bytes to server 01:43:38.651423 [CTRL] SENT "RETR 714%0d%0a" 01:43:38.651502 [CTRL] READ 51 bytes from server 01:43:38.651566 [CTRL] READ "150 Binary data connection for 714 () (14 bytes).%0d%0a" 01:43:38.651645 [CTRL] SENT 51 bytes to client 01:43:38.651708 [CTRL] SENT "150 Binary data connection for 714 () (14 bytes).%0d%0a" 01:43:38.652727 [DATA] READ 14 bytes from server 01:43:38.652790 [DATA] READ "silly content%0a" 01:43:38.652881 [DATA] SENT 14 bytes to client 01:43:38.652941 [DATA] SENT "silly content%0a" 01:43:38.654664 [DATA] got 0, STOP READING server 01:43:38.654846 [DATA] DISABLED WRITING client 01:43:38.905340 [CTRL] READ 28 bytes from server 01:43:38.905493 [CTRL] READ "226 File transfer complete%0d%0a" 01:43:38.905609 [CTRL] SENT 28 bytes to client 01:43:38.905669 [CTRL] SENT "226 File transfer completeCMD (24832): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind716 ../src/curl -q --output log/1/curl716.out --include --trace-ascii log/1/trace716 --trace-time http://hohoho.example.com:99/716 -x socks5://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:b@127.0.0.1:45495 > log/1/stdout716 2> log/1/stderr716 %0d%0a" 01:43:39.452835 [DATA] got 0, STOP READING client 01:43:39.453087 [DATA] DISABLED WRITING server 01:43:39.704344 [DATA] CLOSING client socket 01:43:39.704614 [DATA] CLOSING server socket 01:43:39.704715 [DATA] ENDING 01:43:40.575724 [CTRL] READ 6 bytes from client 01:43:40.575920 [CTRL] READ "QUIT%0d%0a" 01:43:40.576017 [CTRL] SENT 6 bytes to server 01:43:40.576085 [CTRL] SENT "QUIT%0d%0a" 01:43:40.582499 [CTRL] READ 18 bytes from server 01:43:40.582577 [CTRL] READ "221 bye bye baby%0d%0a" 01:43:40.582657 [CTRL] SENT 18 bytes to client 01:43:40.582719 [CTRL] SENT "221 bye bye baby%0d%0a" 01:43:40.707847 [CTRL] got 0, STOP READING client 01:43:40.708047 [CTRL] DISABLED WRITING server 01:43:40.959383 [CTRL] got 0, STOP READING server 01:43:40.959576 [CTRL] DISABLED WRITING client 01:43:41.209999 [CTRL] CLOSING client socket 01:43:41.210247 [CTRL] CLOSING server socket 01:43:41.210350 [CTRL] ENDING 01:43:41.210519 ====> Client disconnect 0 === End of file http2_server.log === Start of file proxy.input CONNECT connect.example.com.714:39881 HTTP/1.1 Host: connect.example.com.714:39881 User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive CONNECT connect.example.com.714:43903 HTTP/1.1 Host: connect.example.com.714:43903 User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive === End of file proxy.input === Start of file proxy.response HTTP/1.1 200 Connection established HTTP/1.1 200 Connection established === End of file proxy.response === Start of file server.cmd Testnum 714 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE 714 RETR 714 QUIT === End of file server.input === Start of file stderr714 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 14 100 14 0 0 2 0 0:00:07 0:00:06 0:00:01 3 100 14 100 14 0 0 2 0 0:00:07 0:00:06 0:00:01 3 === End of file stderr714 === Start of file trace714 01:43:34.175175 * Connecting to hostname: connect.example.com.714 01:43:34.481773 * Connecting to port: 39881 01:43:35.653282 * Trying 127.0.0.1:46411... 01:43:36.209495 * CONNECT: no ALPN negotiated 01:43:36.252251 * allocate connect buffer 01:43:36.442821 * Establish HTTP proxy tunnel to connect.example.com.714:39881 01:43:36.605611 => Send header, 142 bytes (0x8e) 0000: CONNECT connect.example.com.714:39881 HTTP/1.1 0030: Host: connect.example.com.714:39881 0055: User-Agent: curl/8.17.0 006e: Proxy-Connection: Keep-Alive 008c: 01:43:36.794731 <= Recv header, 36 bytes (0x24) 0000: HTTP/1.1 200 Connection established. 01:43:37.060076 <= Recv header, 1 bytes (0x1) 0000: . 01:43:37.116168 * CONNECT phase completed 01:43:37.133346 * CONNECT tunnel established, response 200 01:43:37.318997 * Established connection to 127.0.0.1 (127.0.0.1 port 46411) from 127.0.0.1 port 37008 01:43:37.507460 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:43:37.579219 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:43:37.589071 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:43:37.593924 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:43:37.598458 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:43:37.672994 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:43:37.736464 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:43:37.754927 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:43:37.826149 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:43:37.844176 => Send header, 5 bytes (0x5) 0000: PWD 01:43:37.857261 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:43:37.890442 * Entry path is '/' 01:43:37.969384 * Request has same path as previous transfer 01:43:38.018133 => Send header, 6 bytes (0x6) 0000: EPSV 01:43:38.036015 * Connect data stream passively 01:43:38.109917 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||43903|) 01:43:38.222149 * Hostname 127.0.0.1 was found in DNS cache 01:43:38.254809 * Connecting to ftp.example.com.714 (127.0.0.1) port 46411 01:43:38.311627 * Trying 127.0.0.1:46411... 01:43:38.387032 * CONNECT: no ALPN negotiated 01:43:38.390671 * allocate connect buffer 01:43:38.403284 * Establish HTTP proxy tunnel to connect.example.com.714:43903 01:43:38.417678 => Send header, 142 bytes (0x8e) 0000: CONNECT connect.example.com.714:43903 HTTP/1.1 0030: Host: connect.example.com.714:43903 0055: User-Agent: curl/8.17.0 006e: Proxy-Connection: Keep-Alive 008c: 01:43:38.455671 <= Recv header, 36 bytes (0x24) 0000: HTTP/1.1 200 Connection established. 01:43:38.467775 <= Recv header, 1 bytes (0x1) 0000: . 01:43:38.471959 * CONNECT phase completed 01:43:38.474065 * CONNECT tunnel established, response 200 01:43:38.495059 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 46411) from 127.0.0.1 port 37024 01:43:38.523475 => Send header, 8 bytes (0x8) 0000: TYPE I 01:43:38.938728 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:43:38.978512 => Send header, 10 bytes (0xa) 0000: SIZE 714 01:43:38.992708 <= Recv header, 8 bytes (0x8) 0000: 213 14 01:43:39.042837 => Send header, 10 bytes (0xa) 0000: RETR 714 01:43:39.054909 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 714 () (14 bytes). 01:43:39.090104 * Maxdownload = -1 01:43:39.099612 * Getting file with size: 14 01:43:39.239407 <= Recv data, 14 bytes (0xe) 0000: silly content. 01:43:39.538963 * abort upload 01:43:39.560275 <= Recv data, 0 bytes (0x0) 01:43:39.751045 * Remembering we are in dir "" 01:43:39.955987 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:43:40.213339 * Connection #0 to host 127.0.0.1:46411 left intact === End of file trace714 === Start of file valgrind714 ==284323== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind714 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 716 in state 4 Runner 2 (id 185908) running test 722 in state 4 Runner 3 (id 185910) running test 720 in state 4 Runner 4 (id 185912) running test 717 in state 4 Runner 5 (id 185914) running test 718 in state 4 Runner 6 (id 185916) running test 719 in state 4 Runner 7 (id 185918) running test 721 in state 4 Runner 8 (id 185920) running test 715 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 716 in state 4 Runner 2 (id 185908) running test 722 in state 4 Runner 3 (id 185910) running test 720 in state 4 Runner 4 (id 185912) running test 717 in state 4 Runner 5 (id 185914) running test 718 in state 4 Runner 6 (id 185916) running test 719 in state 4 Runner 7 (id 185918) running test 721 in state 4 Runner 8 (id 185920) running test 715 in state 4 test 0716...[SOCKS5 proxy with too long user name] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind716 ../src/curl -q --output log/1/curl716.out --include --trace-ascii log/1/trace716 --trace-time http://hohoho.example.com:99/716 -x socks5://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind717 ../src/curl -q --output log/4/curl717.out --include --trace-ascii log/4/trace717 --trace-time http://127.0.0.1:1/717 -x socks5://uz3r:p4ssworm@127.0.0.1:37029 > log/4/stdout717 2> log/4/stderr717 AAAAAAAAAAAAAAAAAAAAAAAAAAAA:b@127.0.0.1:45495 > log/1/stdout716 2> log/1/stderr716 valgrind ERROR ==284548== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 716 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind716 ../src/curl -q --output log/1/curl716.out --include --trace-ascii log/1/trace716 --trace-time http://hohoho.example.com:99/716 -x socks5://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:b@127.0.0.1:45495 > log/1/stdout716 2> log/1/stderr716 === End of file commands.log === Start of file server.cmd method 2 Testnum 716 === End of file server.cmd === Start of file socks_server.log 01:44:05.384062 ====> Client connect, Read config from log/1/server.cmd 01:44:05.384343 Reset to defaults 01:44:05.384412 parse config file 01:44:05.384671 method [2] set 01:44:05.970263 READ 5 bytes 01:44:05.970469 '0503000102' 01:44:05.970531 Incoming request deemed fine 01:44:05.970599 Sent 2 bytes 01:44:05.970663 '0502' 01:44:06.663740 SOCKS5 request or auth message missing, recv returned 0 01:44:06.663967 ====> Client disconnect === End of file socks_server.log === Start of file stderr716 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 curl: (97) Excessive username length for proxy auth === End of file stderr716 === Start of file trace716 01:44:05.447538 * Trying 127.0.0.1:45495... 01:44:06.521452 * Excessive username length for proxy auth 01:44:06.933435 * closing connection #0 === End of file trace716 === Start of file valgrind716 ==284548== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind716 test 0717...[SOCKS5 proxy auth] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind717 ../src/curl -q --output log/4/curl717.out --include --trace-ascii log/4/trace717 --trace-time http://127.0.0.1:1/717 -x socks5://uz3r:p4ssworm@127.0.0.1:37029 > log/4/stdout717 2> log/4/stderr717 valgrind ERROR ==284714== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 717 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind717 ../src/curl -q --output log/4/curl717.out --include --trace-ascii log/4/trace717 --trace-time http://127.0.0.1:1/717 -x socks5://uz3r:p4ssworm@127.0.0.1:37029 > log/4/stdout717 2> log/4/stderr717 === End of file commands.log === Start of file curl717.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl717.out === Start of file http_server.log 01:43:19.784855 ====> Client connect 01:43:19.785023 accept_connection 3 returned 4 01:43:19.785113 accept_connection 3 returned 0 01:43:19.792160 Read 93 bytes 01:43:19.792347 Process 93 bytes request 01:43:19.792453 Got request: GET /verifiedserver HTTP/1.1 01:43:19.792529 Are-we-friendly question received 01:43:19.792687 Wrote request (93 bytes) input to log/4/server.input 01:43:19.792808 Identifying ourselves as friends 01:43:19.793017 Response sent (57 bytes) and written to log/4/server.response 01:43:19.793087 special request received, no persistency 01:43:19.793152 ====> Client disconnect 0 01:44:08.253639 ====> Client connect 01:44:08.253779 accept_connection 3 returned 4 01:44:08.253861 accept_connection 3 returned 0 01:44:08.880975 Read 78 bytes 01:44:08.881180 Process 78 bytes request 01:44:08.881276 Got request: GET /717 HTTP/1.1 01:44:08.881350 Serve test number 717 part 0 01:44:08.881666 Unknown instruction found: method 2 user uz3r password p4ssworm backendport 42621 01:44:08.881761 Unknown instruction found: user uz3r password p4ssworm backendport 42621 01:44:08.881831 Unknown instruction found: password p4ssworm backendport 42621 01:44:08.881901 Unknown instruction found: backendport 42621 01:44:08.881964 - request found to be complete (717) 01:44:08.882095 Unknown instruction found: method 2 user uz3r password p4ssworm backendport 42621 01:44:08.882162 Unknown instruction found: user uz3r password p4ssworm backendport 42621 01:44:08.882234 Unknown instruction found: password p4ssworm backendport 42621 01:44:08.882309 Unknown instruction found: backendport 42621 01:44:08.882488 Wrote request (78 bytes) input to log/4/server.input 01:44:08.882616 Send response test717 section 01:44:08.883079 Response sent (256 bytes) and written to log/4/server.response 01:44:08.883157 => persistent connection request ended, awaits new request 01:44:10.792916 Connection closed by client 01:44:10.793074 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 56590 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd method 2 user uz3r password p4ssworm backendport 42621 Testnum 717 === End of file server.cmd === Start of file server.input GET /717 HTTP/1.1 Host: 127.0.0.1:1 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file socks_server.log 01:44:06.407612 ====> Client connect, Read config from log/4/server.cmd 01:44:06.407913 Reset to defaults 01:44:06.407977 parse config file 01:44:06.408138 method [2] set 01:44:06.408257 user [uz3r] set 01:44:06.408407 password [p4ssworm] set 01:44:06.408561 backendport [42621] set 01:44:06.994254 READ 5 bytes 01:44:06.994467 '0503000102' 01:44:06.994530 Incoming request deemed fine 01:44:06.994617 Sent 2 bytes 01:44:06.994684 '0502' 01:44:07.140131 READ 15 bytes 01:44:07.140349 '0104757a33720870347373776f726d' 01:44:07.140730 Sent 2 bytes 01:44:07.140815 '0100' 01:44:07.252834 READ 10 bytes 01:44:07.253065 '050100017f0000010001' 01:44:07.253143 Received ATYP 1 01:44:07.253449 Connected fine to 127.0.0.1:42621 01:44:07.253535 Sent 10 bytes 01:44:07.253610 '050000017f0000010001' 01:44:07.253669 ====> Tunnel transfer 01:44:09.792617 SOCKS transfer completed. Bytes: < 256 > 78 === End of file socks_server.log === Start of file socksd-request.log atyp 1 => 127.0.0.1 === End of file socksd-request.log === Start of file stderr717 % Total % Received % Xferd Average Speed Time Time Time Current DloaCMD (14336): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind718 ../src/curl -q --output log/5/curl718.out --include --trace-ascii log/5/trace718 --trace-time http://test.remote.haxx.se.718:8990/path/7180002 --proxy http://127.0.0.1:46263 --proxytunnel > log/5/stdout718 2> log/5/stderr718 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind715 ../src/curl -q --output log/8/curl715.out --include --trace-ascii log/8/trace715 --trace-time ftp://ftp.example.com.715/715 --connect-to ::connect.example.com.715:33545 --proxytunnel --proxy 127.0.0.1:32793 --preproxy socks5://127.0.0.1:43595 > log/8/stdout715 2> log/8/stderr715 d Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr717 === Start of file trace717 01:44:06.459789 * Trying 127.0.0.1:37029... 01:44:07.719388 * Opened SOCKS connection from 127.0.0.1 port 53018 to 127.0.0.1 port 1 (via 127.0.0.1 port 37029) 01:44:07.857780 * Established connection to 127.0.0.1 (127.0.0.1 port 37029) from 127.0.0.1 port 53018 01:44:07.976368 * using HTTP/1.x 01:44:08.298234 => Send header, 78 bytes (0x4e) 0000: GET /717 HTTP/1.1 0013: Host: 127.0.0.1:1 0026: User-Agent: curl/8.17.0 003f: Accept: */* 004c: 01:44:08.622691 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:44:08.932535 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:44:09.036106 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:44:09.063077 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:44:09.070813 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:44:09.078182 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:44:09.117040 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:44:09.176307 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:44:09.211093 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:44:09.215920 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:44:09.302151 <= Recv header, 1 bytes (0x1) 0000: . 01:44:09.360972 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:44:09.468344 * we are done reading and this is set to close, stop send 01:44:09.499170 * abort upload 01:44:09.975595 * shutting down connection #0 === End of file trace717 === Start of file valgrind717 ==284714== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind717 test 0718...[HTTP proxy CONNECT (no auth) with proxy returning 407 and closing] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind718 ../src/curl -q --output log/5/curl718.out --include --trace-ascii log/5/trace718 --trace-time http://test.remote.haxx.se.718:8990/path/7180002 --proxy http://127.0.0.1:46263 --proxytunnel > log/5/stdout718 2> log/5/stderr718 valgrind ERROR ==284823== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 718 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind718 ../src/curl -q --output log/5/curl718.out --include --trace-ascii log/5/trace718 --trace-time http://test.remote.haxx.se.718:8990/path/7180002 --proxy http://127.0.0.1:46263 --proxytunnel > log/5/stdout718 2> log/5/stderr718 === End of file commands.log === Start of file curl718.out HTTP/1.1 407 Authorization Required to proxy me swsclose Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345" === End of file curl718.out === Start of file http_server.log 01:43:19.572960 ====> Client connect 01:43:19.573141 accept_connection 3 returned 4 01:43:19.573223 accept_connection 3 returned 0 01:43:19.580508 Read 93 bytes 01:43:19.580635 Process 93 bytes request 01:43:19.580727 Got request: GET /verifiedserver HTTP/1.1 01:43:19.580796 Are-we-friendly question received 01:43:19.580923 Wrote request (93 bytes) input to log/5/server.input 01:43:19.581036 Identifying ourselves as friends 01:43:19.581224 Response sent (57 bytes) and written to log/5/server.response 01:43:19.581288 special request received, no persistency 01:43:19.581346 ====> Client disconnect 0 01:44:07.446989 ====> Client connect 01:44:07.447138 accept_connection 3 returned 4 01:44:07.447224 accept_connection 3 returned 0 01:44:08.352757 Read 140 bytes 01:44:08.352984 Process 140 bytes request 01:44:08.353093 Received a CONNECT test.remote.haxx.se.718:8990 HTTP/1.1 request 01:44:08.353165 Port number: 8990, test case number: -7 01:44:08.353280 [log/5/server.cmd] cmdfile says testnum 718 01:44:08.353491 - request found to be complete (718) 01:44:08.353766 Wrote request (140 bytes) input to log/5/server.input 01:44:08.353885 Send response test718 section 01:44:08.354104 connection close instruction "swsclose" found in response 01:44:08.354332 Response sent (123 bytes) and written to log/5/server.response 01:44:08.354411 instructed to close connection after server-reply 01:44:08.354474 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 37996 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 718 === End of file server.cmd === Start of file server.input CONNECT test.remote.haxx.se.718:8990 HTTP/1.1 Host: test.remote.haxx.se.718:8990 User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 407 Authorization Required to proxy me swsclose Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345" === End of file server.response === Start of file stderr718 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 curl: (56) CONNECT tunnel failed, response 407 === End of file stderr718 === Start of file trace718 01:44:07.508171 * Trying 127.0.0.1:46263... 01:44:08.372362 * CONNECT: no ALPN negotiated 01:44:08.430633 * allocate connect buffer 01:44:08.608657 * Establish HTTP proxy tunnel to test.remote.haxx.se.718:8990 01:44:08.770987 => Send header, 140 bytes (0x8c) 0000: CONNECT test.remote.haxx.se.718:8990 HTTP/1.1 002f: Host: test.remote.haxx.se.718:8990 0053: User-Agent: curl/8.17.0 006c: Proxy-Connection: Keep-Alive 008a: 01:44:08.982602 <= Recv header, 58 bytes (0x3a) 0000: HTTP/1.1 407 Authorization Required to proxy me swsclose 01:44:09.317072 <= Recv header, 63 bytes (0x3f) 0000: Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345" 01:44:09.602226 <= Recv header, 2 bytes (0x2) 0000: 01:44:09.713686 * CONNECT tunnel failed, response 407 01:44:10.091663 * closing connection #0 === End of file trace718 === Start of file valgrind718 ==284823== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind718 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/8/server/http2_server.pid" --logfile "log/8/http2_server.log" --logdir "log/8" --portfile log/8/server/http2_server.port --config log/8/server.cmd --id 2 --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP2 server is on PID 284574 port 32793 * pid http-proxy => 284574 284574 test 0715...[FTP fetch with --preproxy, --proxy and --connect-to] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind715 ../src/curl -q --output log/8/curl715.out --include --trace-ascii log/8/trace715 --trace-time ftp://ftp.example.com.715/715 --connect-to ::connect.example.com.715:33545 --proxytunnel --proxy 127.0.0.1:32793 --preproxy socks5://127.0.0.1:43595 > log/8/stdout715 2> log/8/stderr715 valgrind ERROR ==284764== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 715 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind715 ../src/curl -q --output log/8/curl715.out --include --trace-ascii log/8/trace715 --trace-time ftp://ftp.example.com.715/715 --connect-to ::connect.example.com.715:33545 --proxytunnel --proxy 127.0.0.1:32793 --preproxy socks5://127.0.0.1:43595 > log/8/stdout715 2> log/8/stderr715 === End of file commands.log === Start of file curl715.out silly content === End of file curl715.out === Start of file ftp_server.log 01:43:18.463863 ====> Client connect 01:43:18.466669 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:43:18.473793 < "USER anonymous" 01:43:18.474370 > "331 We are happy you popped in![CR][LF]" 01:43:18.475472 < "PASS ftp@example.com" 01:43:18.475724 > "230 Welcome you silly person[CR][LF]" 01:43:18.476832 < "PWD" 01:43:18.479251 > "257 "/" is current directory[CR][LF]" 01:43:18.479965 < "EPSV" 01:43:18.480183 ====> Passive DATA channel requested by client 01:43:18.480329 DATA sockfilt for passive data channel starting... 01:43:18.525579 DATA sockfilt for passive data channel started (pid 284551) 01:43:18.526871 DATA sockfilt for passive data channel listens on port 42121 01:43:18.527307 > "229 Entering Passive Mode (|||42121|)[CR][LF]" 01:43:18.527506 Client has been notified that DATA conn will be accepted on port 42121 01:43:18.530022 Client connects to port 42121 01:43:18.530302 ====> Client established passive DATA connection on port 42121 01:43:18.531271 < "TYPE I" 01:43:18.531882 > "200 I modify TYPE as you wanted[CR][LF]" 01:43:18.532622 < "SIZE verifiedserver" 01:43:18.533171 > "213 18[CR][LF]" 01:43:18.538541 < "RETR verifiedserver" 01:43:18.538937 > "150 Binary junk (18 bytes).[CR][LF]" 01:43:18.539448 =====> Closing passive DATA connection... 01:43:18.539617 Server disconnects passive DATA connection 01:43:18.541629 Server disconnected passive DATA connection 01:43:18.541856 DATA sockfilt for passive data channel quits (pid 284551) 01:43:18.545194 DATA sockfilt for passive data channel quit (pid 284551) 01:43:18.545413 =====> Closed passive DATA connection 01:43:18.545715 > "226 File transfer complete[CR][LF]" 01:43:18.590075 < "QUIT" 01:43:18.590489 > "221 bye bye baby[CR][LF]" 01:43:18.597445 MAIN sockfilt said DISC 01:43:18.598059 ====> Client disconnected 01:43:18.598383 Awaiting input 01:44:09.604277 ====> Client connect 01:44:09.605024 FTPD: Getting commands from log/8/server.cmd 01:44:09.605363 FTPD: run test case number: 715 01:44:09.606578 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 01:44:10.218299 < "USER anonymous" 01:44:10.218722 > "331 We are happy you popped in![CR][LF]" 01:44:10.308196 < "PASS ftp@example.com" 01:44:10.308614 > "230 Welcome you silly person[CR][LF]" 01:44:10.414963 < "PWD" 01:44:10.415423 > "257 "/" is current directory[CR][LF]" 01:44:10.624551 < "EPSV" 01:44:10.624893 ====> Passive DATA channel requested by client 01:44:10.625042 DATA sockfilt for passive data channel starting... 01:44:10.710645 DATA sockfilt for passive data channel started (pid 285824) 01:44:10.711858 DATA sockfilt for passive data channel listens on port 34149 01:44:10.712243 > "229 Entering Passive Mode (|||34149|)[CR][LF]" 01:44:10.712417 Client has been notified that DATA conn will be accepted on port 34149 01:44:11.609793 Client connects to port 34149 01:44:11.610362 ====> Client established passive DATA connection on port 34149 01:44:11.611472 < "TYPE I" 01:44:11.612425 > "200 I modify TYPE as you wanted[CR][LF]" 01:44:11.675636 < "SIZE 715" 01:44:11.684370 > "213 14[CR][LF]" 01:44:11.764906 < "RETR 715" 01:44:11.770743 > "150 Binary data connection for 715 () (14 bytes).[CR][LF]" 01:44:11.771431 =====> Closing passive DATA connection... 01:44:11.771607 Server disconnects passive DATA connection 01:44:11.774468 Server disconnected passive DATA connection 01:44:11.774681 DATA sockfilt for passive data channel quits (pid 285824) 01:44:11.778218 DATA sockfilt for passive data channel quit (pid 285824) 01:44:11.778492 =====> Closed passive DATA connection 01:44:11.778809 > "226 File transfer complete[CR][LF]" 01:44:13.912151 < "QUIT" 01:44:13.912611 > "221 bye bye baby[CR][LF]" 01:44:14.047439 MAIN sockfilt said DISC 01:44:14.047968 ====> Client disconnected 01:44:14.048261 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 01:43:19.073863 ====> Client connect 01:43:19.076385 Received DATA (on stdin) 01:43:19.076469 > 160 bytes data, server => client 01:43:19.076597 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:43:19.076699 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:43:19.076791 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:43:19.083167 < 16 bytes data, client => server 01:43:19.083333 'USER anonymous\r\n' 01:43:19.084512 Received DATA (on stdin) 01:43:19.084593 > 33 bytes data, server => client 01:43:19.084961 '331 We are happy you popped in!\r\n' 01:43:19.085318 < 22 bytes data, client => server 01:43:19.085395 'PASS ftp@example.com\r\n' 01:43:19.086282 Received DATA (on stdin) 01:43:19.086352 > 30 bytes data, server => client 01:43:19.086438 '230 Welcome you silly person\r\n' 01:43:19.086676 < 5 bytes data, client => server 01:43:19.086741 'PWD\r\n' 01:43:19.087415 Received DATA (on stdin) 01:43:19.087481 > 30 bytes data, server => client 01:43:19.087579 '257 "/" is current directory\r\n' 01:43:19.089844 < 6 bytes data, client => server 01:43:19.089923 'EPSV\r\n' 01:43:19.138147 Received DATA (on stdin) 01:43:19.138327 > 39 bytes data, server => client 01:43:19.138429 '229 Entering Passive Mode (|||42121|)\r\n' 01:43:19.140935 < 8 bytes data, client => server 01:43:19.141038 'TYPE I\r\n' 01:43:19.141915 Received DATA (on stdin) 01:43:19.141990 > 33 bytes data, server => client 01:43:19.142098 '200 I modify TYPE as you wanted\r\n' 01:43:19.142462 < 21 bytes data, client => server 01:43:19.142540 'SIZE verifiedserver\r\n' 01:43:19.143324 Received DATA (on stdin) 01:43:19.143399 > 8 bytes data, server => client 01:43:19.143748 '213 18\r\n' 01:43:19.148148 < 21 bytes data, client => server 01:43:19.150274 'RETR verifiedserver\r\n' 01:43:19.150353 Received DATA (on stdin) 01:43:19.150420 > 29 bytes data, server => client 01:43:19.150504 '150 Binary junk (18 bytes).\r\n' 01:43:19.156318 Received DATA (on stdin) 01:43:19.156432 > 28 bytes data, server => client 01:43:19.156517 '226 File transfer complete\r\n' 01:43:19.199524 < 6 bytes data, client => server 01:43:19.199724 'QUIT\r\n' 01:43:19.200800 Received DATA (on stdin) 01:43:19.200879 > 18 bytes data, server => client 01:43:19.200957 '221 bye bye baby\r\n' 01:43:19.204349 ====> Client disconnect 01:43:19.208435 Received ACKD (on stdin) 01:44:10.214262 ====> Client connect 01:44:10.216742 Received DATA (on stdin) 01:44:10.216836 > 160 bytes data, server => client 01:44:10.216947 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 01:44:10.217052 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 01:44:10.217148 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 01:44:10.826732 < 16 bytes data, client => server 01:44:10.826888 'USER anonymous\r\n' 01:44:10.829002 Received DATA (on stdin) 01:44:10.829085 > 33 bytes data, server => client 01:44:10.829173 '331 We are happy you popped in!\r\n' 01:44:10.914842 < 22 bytes data, client => server 01:44:10.914981 'PASS ftp@example.com\r\n' 01:44:10.918830 Received DATA (on stdin) 01:44:10.918927 > 30 bytes data, server => client 01:44:10.919017 '230 Welcome you silly person\r\n' 01:44:11.024296 < 5 bytes data, client => server 01:44:11.024461 'PWD\r\n' 01:44:11.025635 Received DATA (on stdin) 01:44:11.025719 > 30 bytes data, server => client 01:44:11.025805 '257 "/" is current directory\r\n' 01:44:11.230763 < 6 bytes data, client => server 01:44:11.230929 'EPSV\r\n' 01:44:11.322446 Received DATA (on stdin) 01:44:11.322613 > 39 bytes data, server => client 01:44:11.322709 '229 Entering Passive Mode (|||34149|)\r\n' 01:44:12.220949 < 8 bytes data, client => server 01:44:12.221092 'TYPE I\r\n' 01:44:12.221983 Received DATA (on stdin) 01:44:12.222054 > 33 bytes data, server => client 01:44:12.222163 '200 I modify TYPE as you wanted\r\n' 01:44:12.284772 < 10 bytes data, client => server 01:44:12.284925 'SIZE 715\r\n' 01:44:12.294262 Received DATA (on stdin) 01:44:12.294423 > 8 bytes data, server => client 01:44:12.295023 '213 14\r\n' 01:44:12.373848 < 10 bytes data, client => server 01:44:12.374019 'RETR 715\r\n' 01:44:12.376951 Received DATA (on stdin) 01:44:12.377054 > 51 bytes data, server => client 01:44:12.382099 '150 Binary data connection for 715 () (14 bytes).\r\n' 01:44:12.389008 Received DATA (on stdin) 01:44:12.389138 > 28 bytes data, server => client 01:44:12.389227 '226 File transfer complete\r\n' 01:44:14.521373 < 6 bytes data, client => server 01:44:14.521540 'QUIT\r\n' 01:44:14.522807 Received DATA (on stdin) 01:44:14.522884 > 18 bytes data, server => client 01:44:14.522962 '221 bye bye baby\r\n' 01:44:14.656605 ====> Client disconnect 01:44:14.658224 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 01:43:18.125622 Running IPv4 version 01:43:18.134102 Listening on port 42121 01:43:18.134601 Wrote pid 284551 to log/8/server/ftp_sockdata.pid 01:43:18.135382 Received PING (on stdin) 01:43:18.136455 Received PORT (on stdin) 01:43:18.140161 ====> Client connect 01:43:18.150624 Received DATA (on stdin) 01:43:18.150988 > 18 bytes data, server => client 01:43:18.151383 'WE ROOLZ: 220580\r\n' 01:43:18.151649 Received DISC (on stdin) 01:43:18.151775 ====> Client forcibly disconnected 01:43:18.152393 Received QUIT (on stdin) 01:43:18.152466 quits 01:43:18.152978 ============> sockfilt quits 01:44:10.300453 Running IPv4 version 01:44:10.319036 Listening on port 34149 01:44:10.319652 Wrote pid 285824 to log/8/server/ftp_sockdata.pid 01:44:10.320499 Received PING (on stdin) 01:44:10.321448 Received PORT (on stdin) 01:44:11.219724 ====> Client connect 01:44:11.382688 Received DATA (on stdin) 01:44:11.383076 > 14 bytes data, server => client 01:44:11.383453 'silly content\n' 01:44:11.383711 Received DISC (on stdin) 01:44:11.383835 ====> Client forcibly disconnected 01:44:11.385166 Received QUIT (on stdin) 01:44:11.385248 quits 01:44:11.385773 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file http2_server.log 01:43:19.122003 Run as proxy, CONNECT to host 127.0.0.1 01:43:19.133321 Running HTTP IPv4 version on port 32793 01:43:19.133831 Wrote pid 284574 to log/8/server/http2_server.pid 01:43:19.134101 Wrote port 32793 to log/8/server/http2_server.port 01:44:08.189442 ====> Client connect 01:44:08.189633 accept_connection 3 returned 4 01:44:08.189821 accept_connection 3 returned 0 01:44:08.692563 Read 142 bytes 01:44:08.693346 Process 142 bytes request 01:44:08.695436 Received a CONNECT connect.example.com.715:33545 HTTP/1.1 request 01:44:08.695610 Port number: 33545, test case number: -7 01:44:08.696675 [log/8/server.cmd] cmdfile says testnum 715 01:44:08.706062 - request found to be complete (715) 01:44:08.707424 Wrote request (142 bytes) input to log/8/proxy.input 01:44:08.711205 Send response test715 section 01:44:08.712470 Response sent (37 bytes) and written to log/8/proxy.response 01:44:09.213464 about to connect to 127.0.0.1:33545 01:44:09.217788 connected fine to 127.0.0.1:33545, now tunnel 01:44:09.218595 [CTRL] READ 160 bytes from server 01:44:09.218962 [CTRL] READ "220- _ _ ____ _ %0d%0a220- ___| | | | _ \| | %0d%0a220- / __| | | | |_) | | %0d%0a220- | (__| |_| | _ {| |___ %0d%0a220 \___|\___/|_| \_\_____|%0d%0a" 01:44:09.219757 [CTRL] SENT 160 bytes to client 01:44:09.219866 [CTRL] SENT "220- _ _ ____ _ %0d%0a220- ___| | | | _ \| | %0d%0a220- / __| | | | |_) | | %0d%0a220- | (__| |_| | _ {| |___ %0d%0a220 \___|\___/|_| \_\_____|%0d%0a" 01:44:09.826205 [CTRL] READ 16 bytes from client 01:44:09.826432 [CTRL] READ "USER anonymous%0d%0a" 01:44:09.827008 [CTRL] SENT 16 bytes to server 01:44:09.827106 [CTRL] SENT "USER anonymous%0d%0a" 01:44:09.829282 [CTRL] READ 33 bytes from server 01:44:09.829367 [CTRL] READ "331 We are happy you popped in!%0d%0a" 01:44:09.829492 [CTRL] SENT 33 bytes to client 01:44:09.829562 [CTRL] SENT "331 We are happy you popped in!%0d%0a" 01:44:09.914480 [CTRL] READ 22 bytes from client 01:44:09.914679 [CTRL] READ "PASS ftp@example.com%0d%0a" 01:44:09.915062 [CTRL] SENT 22 bytes to server 01:44:09.915137 [CTRL] SENT "PASS ftp@example.com%0d%0a" 01:44:09.923318 [CTRL] READ 30 bytes from server 01:44:09.923442 [CTRL] READ "230 Welcome you silly person%0d%0a" 01:44:09.923548 [CTRL] SENT 30 bytes to client 01:44:09.923618 [CTRL] SENT "230 Welcome you silly person%0d%0a" 01:44:10.020912 [CTRL] READ 5 bytes from client 01:44:10.021110 [CTRL] READ "PWD%0d%0a" 01:44:10.021218 [CTRL] SENT 5 bytes to server 01:44:10.021292 [CTRL] SENT "PWD%0d%0a" 01:44:10.025926 [CTRL] READ 30 bytes from server 01:44:10.026040 [CTRL] READ "257 "/" is current directory%0d%0a" 01:44:10.026141 [CTRL] SENT 30 bytes to client 01:44:10.026214 [CTRL] SENT "257 "/" is current directory%0d%0a" 01:44:10.230259 [CTRL] READ 6 bytes from client 01:44:10.230453 [CTRL] READ "EPSV%0d%0a" 01:44:10.230562 [CTRL] SENT 6 bytes to server 01:44:10.230634 [CTRL] SENT "EPSV%0d%0a" 01:44:10.322872 [CTRL] READ 39 bytes from server 01:44:10.323024 [CTRL] READ "229 Entering Passive Mode (|||34149|)%0d%0a" 01:44:10.323182 [CTRL] SENT 39 bytes to client 01:44:10.323257 [CTRL] SENT "229 Entering Passive Mode (|||34149|)%0d%0a" 01:44:10.664657 ====> Client connect DATA 01:44:10.714831 Read 142 bytes 01:44:10.715045 Process 142 bytes request 01:44:10.715155 Received a CONNECT connect.example.com.715:34149 HTTP/1.1 request 01:44:10.715224 Port number: 34149, test case number: -7 01:44:10.715327 [log/8/server.cmd] cmdfile says testnum 715 01:44:10.715534 - request found to be complete (715) 01:44:10.715754 Wrote request (142 bytes) input to log/8/proxy.input 01:44:10.715885 Send response test715 section 01:44:10.716205 Response sent (37 bytes) and written to log/8/proxy.response 01:44:11.218001 about to connect to 127.0.0.1:34149 01:44:11.219035 connected fine to 127.0.0.1:34149, now tunnel 01:44:11.219268 [CTRL] READ 8 bytes from client 01:44:11.219353 [CTRL] READ "TYPE I%0d%0a" 01:44:11.219459 [CTRL] SENT 8 bytes to server 01:44:11.219532 [CTRL] SENT "TYPE I%0d%0a" 01:44:11.222272 [CTRL] READ 33 bytes from server 01:44:11.222387 [CTRL] READ "200 I modify TYPE as you wanted%0d%0a" 01:44:11.222469 [CTRL] SENT 33 bytes to client 01:44:11.222535 [CTRL] SENT "200 I modify TYPE as you wanted%0d%0a" 01:44:11.284266 [CTRL] READ 10 bytes from client 01:44:11.284457 [CTRL] READ "SIZE 715%0d%0a" 01:44:11.284568 [CTRL] SENT 10 bytes to server 01:44:11.284638 [CTRL] SENT "SIZE 715%0d%0a" 01:44:11.295175 [CTRL] READ 8 bytes from server 01:44:11.295296 [CTRL] READ "213 14%0d%0a" 01:44:11.295392 [CTRL] SENT 8 bytes to client 01:44:11.295462 [CTRL] SENT "213 14%0d%0a" 01:44:11.373337 [CTRL] READ 10 bytes from client 01:44:11.373554 [CTRL] READ "RETR 715%0d%0a" 01:44:11.373655 [CTRL] SENT 10 bytes to server 01:44:11.373722 [CTRL] SENT "RETR 715%0d%0a" 01:44:11.382298 [CTRL] READ 51 bytes from server 01:44:11.382434 [CTRL] READ "150 Binary data connection for 715 () (14 bytes).%0d%0a" 01:44:11.382526 [CTRL] SENT 51 bytes to client 01:44:11.382593 [CTRL] SENT "150 Binary data connection for 715 () (14 bytes).%0d%0a" 01:44:11.384054 [DATA] READ 14 bytes from server 01:44:11.384125 [DATA] READ "silly content%0a" 01:44:11.384212 [DATA] got 0, STOP READING server 01:44:11.384387 [DATA] SENT 14 bytes to client 01:44:11.384456 [DATA] SENT "silly content%0a" 01:44:11.384550 [DATA] DISABLED WRITING client 01:44:11.637668 [CTRL] READ 28 bytes from server 01:44:11.637863 [CTRL] READ "226 File transfer complete%0d%0a" 01:44:11.637964 [DATA] got 0, STOP READING client 01:44:11.638112 [DATA] DISABLED WRITING server 01:44:11.888580 [DATA] CLOSING client socket 01:44:11.888860 [DATA] CLOSING server socket 01:44:11.888968 [DATA] ENDING 01:44:11.889118 [CTRL] SENT 28 bytes to client 01:44:11.889192 [CTRL] SENT "226 File transfer complete%0d%0a" 01:44:13.520977 [CTRL] READ 6 bytes from client 01:44:13.521204 [CTRL] READ "QUIT%0d%0a" 01:44:13.521623 [CTRL] SENT 6 bytes to server 01:44:13.521694 [CTRL] SENT "QUIT%0d%0a" 01:44:13.523074 [CTRL] READ 18 bytes from server 01:44:13.523143 [CTRL] READ "221 bye bye baby%0d%0a" 01:44:13.523228 [CTRL] SENT 18 bytes to client 01:44:13.523291 [CTRL] SENT "221 bye bye baby%0d%0a" 01:44:13.656293 [CTRL] got 0, STOP READING client 01:44:13.656486 [CTRL] DISABLED WRITING server 01:44:13.907028 [CTRL] got 0, STOP READING server 01:44:13.907258 [CTRL] DISABLED WRITING client 01:44:14.160938 [CTRL] CLOSING client socket 01:44:14.161194 [CTRL] CLOSING server socket 01:44:14.161299 [CTRL] ENDING 01:44:14.161491 ====> Client disconnect 0 === End of file http2_server.log === Start of file proxy.input CONNECT connect.example.com.715:33545 HTTP/1.1 Host: connect.example.com.715:33545 User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive CONNECT connect.example.com.715:34149 HTTP/1.1 Host: connect.example.com.715:34149 User-Agent: curl/8.17.0 Proxy-Connection: Keep-Alive === End of file proxy.input === Start of file proxy.response HTTP/1.1 200 Connection established HTTP/1.1 200 Connection established === End of file proxy.response === Start of file server.cmd Testnum 715 === End of file server.cmd === Start of file server.input USER anonymous PASS ftp@example.com PWD EPSV TYPE I SIZE 715 RETR 715 QUIT === End of file server.input === Start of file socks_server.log 01:44:08.378345 ====> Client connect, Read config from log/8/server.cmd 01:44:08.378614 Reset to defaults 01:44:08.378669 parse config file 01:44:08.967607 READ 4 bytes 01:44:08.967856 '05020001' 01:44:08.967990 Incoming request deemed fine 01:44:08.968117 Sent 2 bytes 01:44:08.968190 '0500' 01:44:09.188014 READ 10 bytes 01:44:09.188233 '050100017f0000018019' 01:44:09.188418 Received ATYP 1 01:44:09.188930 Connected fine to 127.0.0.1:32793 01:44:09.189105 Sent 10 bytes 01:44:09.189195 '050000017f0000018019' 01:44:09.189272 ====> Tunnel transfer 01:44:11.568092 ====> Client connect, Read config from log/8/server.cmd 01:44:11.568283 Reset to defaults 01:44:11.568341 parse config file 01:44:11.646390 READ 4 bytes 01:44:11.646569 '05020001' 01:44:11.646643 Incoming request deemed fine 01:44:11.646719 Sent 2 bytes 01:44:11.646784 '0500' 01:44:11.661754 READ 10 bytes 01:44:11.661916 '050100017f0000018019' 01:44:11.661982 Received ATYP 1 01:44:11.662184 Connected fine to 127.0.0.1:32793 01:44:11.662263 Sent 10 bytes 01:44:11.662337 '050000017f0000018019' 01:44:11.662395 ====> Tunnel transfer 01:44:12.384651 SOCKS transfer completed. Bytes: < 51 > 142 01:44:14.655904 SOCKS transfer completed. Bytes: < 467 > 225 === End of file socks_server.log === Start of file socksd-request.log atyp 1 => 127.0.0.1 atyp 1 => 127.0.0.1 === End of file socksd-request.log === Start of file stderr715 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 100 14 100 14 0 0 1 0 0:00:14 0:00:07 0:00:07 3 100 14 100 14 0 0 1 0 0:00:14 0:00:07 0:00:07 3 === End of file stderr715 === Start of file trace715 01:44:06.017253 * Connecting to hostname: connect.example.com.715 01:44:06.354554 * Connecting to port: 33545 01:44:07.668627 * Trying 127.0.0.1:43595... 01:44:08.660856 * Opened SOCKS connection from 127.0.0.1 port 41982 to 127.0.0.1 port 32793 (via 127.0.0.1 port 43595) 01:44:08.741551 * CONNECT: no ALPN negotiated 01:44:08.783589 * allocate connect buffer 01:44:08.962384 * Establish HTTP proxy tunnel to connect.example.com.715:33545 01:44:09.099357 => Send header, 142 bytes (0x8e) 0000: CONNECT connect.example.com.715:33545 HTTP/1.1 0030: Host: connect.example.com.715:33545 0055: User-Agent: curl/8.17.0 006e: Proxy-Connection: Keep-Alive 008c: 01:44:09.277672 <= Recv header, 36 bytes (0x24) 0000: HTTP/1.1 200 Connection established. 01:44:09.576260 <= Recv header, 1 bytes (0x1) 0000: . 01:44:09.635414 * CONNECT phase completed 01:44:09.654886 * CONNECT tunnel established, response 200 01:44:09.856871 * Established connection to 127.0.0.1 (127.0.0.1 port 43595) from 127.0.0.1 port 41982 01:44:10.036829 <= Recv header, 32 bytes (0x20) 0000: 220- _ _ ____ _ 01:44:10.120538 <= Recv header, 32 bytes (0x20) 0000: 220- ___| | | | _ \| | 01:44:10.132341 <= Recv header, 32 bytes (0x20) 0000: 220- / __| | | | |_) | | 01:44:10.138703 <= Recv header, 32 bytes (0x20) 0000: 220- | (__| |_| | _ {| |___ 01:44:10.143640 <= Recv header, 32 bytes (0x20) 0000: 220 \___|\___/|_| \_\_____| 01:44:10.225359 => Send header, 16 bytes (0x10) 0000: USER anonymous 01:44:10.284907 <= Recv header, 33 bytes (0x21) 0000: 331 We are happy you popped in 01:44:10.304989 => Send header, 22 bytes (0x16) 0000: PASS ftp@example.com 01:44:10.388257 <= Recv header, 30 bytes (0x1e) 0000: 230 Welcome you silly person 01:44:10.410780 => Send header, 5 bytes (0x5) 0000: PWD 01:44:10.437167 <= Recv header, 30 bytes (0x1e) 0000: 257 "/" is current directory 01:44:10.477693 * Entry path is '/' 01:44:10.567550 * Request has same path as previous transfer 01:44:10.620128 => Send header, 6 bytes (0x6) 0000: EPSV 01:44:10.636302 * Connect data stream passively 01:44:10.716748 <= Recv header, 39 bytes (0x27) 0000: 229 Entering Passive Mode (|||34149|) 01:44:10.855826 * Hostname 127.0.0.1 was found in DNS cache 01:44:10.888588 * Connecting to ftp.example.com.715 (127.0.0.1) port 43595 01:44:10.952008 * Trying 127.0.0.1:43595... 01:44:11.044725 * Hostname 127.0.0.1 was found in DNS cache 01:44:11.066318 * Opened 2nd SOCKS connection from 127.0.0.1 port 41990 to 127.0.0.1 port 32793 (via 127.0.0.1 port 43595) 01:44:11.073184 * CONNECT: no ALPN negotiated 01:44:11.076865 * allocate connect buffer 01:44:11.092090 * Establish HTTP proxy tunnel to connect.example.com.715:34149 01:44:11.106580 => Send header, 142 bytes (0x8e) 0000: CONNECT connect.example.com.715:34149 HTTP/1.1 0030: Host: connect.example.com.715:34149 0055: User-Agent: curl/8.17.0 006e: Proxy-Connection: Keep-Alive 008c: 01:44:11.131192 <= Recv header, 36 bytes (0x24) 0000: HTTP/1.1 200 Connection established. 01:44:11.143515 <= Recv header, 1 bytes (0x1) 0000: . 01:44:11.148485 * CONNECT phase completed 01:44:11.150741 * CONNECT CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind719 ../src/curl -q --output log/6/curl719.out --include --trace-ascii log/6/trace719 --trace-time http://[2200::33]:38277/719 --proxy socks5h://127.0.0.1:40477 > log/6/stdout719 2> log/6/stderr719 tunnel established, response 200 01:44:11.173407 * Established 2nd connection to 127.0.0.1 (127.0.0.1 port 43595) from 127.0.0.1 port 41990 01:44:11.205251 => Send header, 8 bytes (0x8) 0000: TYPE I 01:44:11.622882 <= Recv header, 33 bytes (0x21) 0000: 200 I modify TYPE as you wanted 01:44:11.671120 => Send header, 10 bytes (0xa) 0000: SIZE 715 01:44:11.703878 <= Recv header, 8 bytes (0x8) 0000: 213 14 01:44:11.763241 => Send header, 10 bytes (0xa) 0000: RETR 715 01:44:11.776358 <= Recv header, 51 bytes (0x33) 0000: 150 Binary data connection for 715 () (14 bytes). 01:44:11.821917 * Maxdownload = -1 01:44:11.833103 * Getting file with size: 14 01:44:11.995446 <= Recv data, 14 bytes (0xe) 0000: silly content. 01:44:12.346075 * abort upload 01:44:12.368628 <= Recv data, 0 bytes (0x0) 01:44:12.577137 * Remembering we are in dir "" 01:44:12.820941 <= Recv header, 28 bytes (0x1c) 0000: 226 File transfer complete 01:44:13.091326 * Connection #0 to host 127.0.0.1:32793 left intact === End of file trace715 === Start of file valgrind715 ==284764== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind715 test 0719...[HTTP GET with IPv6 numerical via SOCKS5h] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind719 ../src/curl -q --output log/6/curl719.out --include --trace-ascii log/6/trace719 --trace-time http://[2200::33]:38277/719 --proxy socks5h://127.0.0.1:40477 > log/6/stdout719 2> log/6/stderr719 valgrind ERROR ==285159== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 719 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind719 ../src/curl -q --output log/6/curl719.out --include --trace-ascii log/6/trace719 --trace-time http://[2200::33]:38277/719 --proxy socks5h://127.0.0.1:40477 > log/6/stdout719 2> log/6/stderr719 === End of file commands.log === Start of file curl719.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl719.out === Start of file http_server.log 01:43:21.889137 ====> Client connect 01:43:21.889338 accept_connection 3 returned 4 01:43:21.889409 accept_connection 3 returned 0 01:43:21.896187 Read 93 bytes 01:43:21.896360 Process 93 bytes request 01:43:21.896447 Got request: GET /verifiedserver HTTP/1.1 01:43:21.896507 Are-we-friendly question received 01:43:21.896638 Wrote request (93 bytes) input to log/6/server.input 01:43:21.896738 Identifying ourselves as friends 01:43:21.896887 Response sent (57 bytes) and written to log/6/server.response 01:43:21.896944 special request received, no persistency 01:43:21.896994 ====> Client disconnect 0 01:44:10.641301 ====> Client connect 01:44:10.641429 accept_connection 3 returned 4 01:44:10.641504 accept_connection 3 returned 0 01:44:11.307647 Read 83 bytes 01:44:11.307822 Process 83 bytes request 01:44:11.307917 Got request: GET /719 HTTP/1.1 01:44:11.307992 Serve test number 719 part 0 01:44:11.308212 - request found to be complete (719) 01:44:11.308460 Wrote request (83 bytes) input to log/6/server.input 01:44:11.308582 Send response test719 section 01:44:11.308967 Response sent (256 bytes) and written to log/6/server.response 01:44:11.309036 => persistent connection request ended, awaits new request 01:44:13.323102 Connection closed by client 01:44:13.323260 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 35532 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 719 === End of file server.cmd === Start of file server.input GET /719 HTTP/1.1 Host: [2200::33]:38277 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file socks_server.log 01:44:09.800940 ====> Client connect, Read config from log/6/server.cmd 01:44:09.801207 Reset to defaults 01:44:09.801268 parse config file 01:44:10.469403 READ 4 bytes 01:44:10.469596 '05020001' 01:44:10.469657 Incoming request deemed fine 01:44:10.469725 Sent 2 bytes 01:44:10.469786 '0500' 01:44:10.640435 READ 22 bytes 01:44:10.640649 '05010004220000000000000000000000000000339585' 01:44:10.640759 Received ATYP 4 01:44:10.641583 Connected fine to 127.0.0.1:38277 01:44:10.641671 Sent 22 bytes 01:44:10.641759 '05000004220000000000000000000000000000339585' 01:44:10.641814 ====> Tunnel transfer 01:44:13.322808 SOCKS transfer completed. Bytes: < 256 > 83 === End of file socks_server.log === Start of file socksd-request.log atyp 4 => 22 00 00 00 00 00 00 00 00 00 00 00 00 00 00 33 === End of file socksd-request.log === Start of file stderr719 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr719 === Start of file trace719 01:44:09.857795 * Trying 127.0.0.1:40477... 01:44:11.114633 * Opened SOCKS connection from 127.0.0.1 port 39550 to 2200::33 port 38277 (via 127.0.0.1 port 40477) 01:44:11.259583 * Established connection to 127.0.0.1 (127.0.0.1 port 40477) from 127.0.0.1 port 39550 01:44:11.379592 * using HTTP/1.x 01:44:11.726304 => Send header, 83 bytes (0x53) 0000: GET /719 HTTP/1.1 0013: Host: [2200::33]:38277 002b: User-Agent: curl/8.17.0 0044: Accept: */* 0051: 01:44:12.061720 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:44:12.401479 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:44:12.508637 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:44:12.536794 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:44:12.545698 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:44:12.553272 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:44:12.586678 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:44:12.647155 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:44:12.683923 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:44:12.689138 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:44:12.772495 <= Recv header, 1 bytes (0x1) 0000: . 01:44:12.832210 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:44:12.940751 * we are done reading and this is set to close, stop send 01:44:12.973442 * abort upload 01:44:13.509791 * shutting down connection #0 === End of file trace719 === Start of file valgrind719 ==2851CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind720 ../src/curl -q --output log/3/curl720.out --include --trace-ascii log/3/trace720 --trace-time http://12.34.56.78:46853/720 --proxy socks5h://127.0.0.1:41047 > log/3/stdout720 2> log/3/stderr720 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind721 ../src/curl -q --output log/7/curl721.out --include --trace-ascii log/7/trace721 --trace-time http://this.is.a.host.name:34897/721 --proxy socks5h://127.0.0.1:45351 > log/7/stdout721 2> log/7/stderr721 59== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind719 test 0720...[HTTP GET with IPv4 numerical via SOCKS5h] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind720 ../src/curl -q --output log/3/curl720.out --include --trace-ascii log/3/trace720 --trace-time http://12.34.56.78:46853/720 --proxy socks5h://127.0.0.1:41047 > log/3/stdout720 2> log/3/stderr720 valgrind ERROR ==285235== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 720 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind720 ../src/curl -q --output log/3/curl720.out --include --trace-ascii log/3/trace720 --trace-time http://12.34.56.78:46853/720 --proxy socks5h://127.0.0.1:41047 > log/3/stdout720 2> log/3/stderr720 === End of file commands.log === Start of file curl720.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl720.out === Start of file http_server.log 01:43:22.800491 ====> Client connect 01:43:22.800646 accept_connection 3 returned 4 01:43:22.800719 accept_connection 3 returned 0 01:43:22.808169 Read 93 bytes 01:43:22.808307 Process 93 bytes request 01:43:22.808393 Got request: GET /verifiedserver HTTP/1.1 01:43:22.808457 Are-we-friendly question received 01:43:22.808576 Wrote request (93 bytes) input to log/3/server.input 01:43:22.808666 Identifying ourselves as friends 01:43:22.808823 Response sent (57 bytes) and written to log/3/server.response 01:43:22.808884 special request received, no persistency 01:43:22.808937 ====> Client disconnect 0 01:44:10.997343 ====> Client connect 01:44:10.997477 accept_connection 3 returned 4 01:44:10.997574 accept_connection 3 returned 0 01:44:11.650956 Read 84 bytes 01:44:11.651144 Process 84 bytes request 01:44:11.651241 Got request: GET /720 HTTP/1.1 01:44:11.651317 Serve test number 720 part 0 01:44:11.651497 - request found to be complete (720) 01:44:11.651739 Wrote request (84 bytes) input to log/3/server.input 01:44:11.651852 Send response test720 section 01:44:11.652198 Response sent (256 bytes) and written to log/3/server.response 01:44:11.652264 => persistent connection request ended, awaits new request 01:44:13.711067 Connection closed by client 01:44:13.711261 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 47768 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 720 === End of file server.cmd === Start of file server.input GET /720 HTTP/1.1 Host: 12.34.56.78:46853 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file socks_server.log 01:44:10.234105 ====> Client connect, Read config from log/3/server.cmd 01:44:10.234370 Reset to defaults 01:44:10.234438 parse config file 01:44:10.844741 READ 4 bytes 01:44:10.844942 '05020001' 01:44:10.845013 Incoming request deemed fine 01:44:10.845092 Sent 2 bytes 01:44:10.845164 '0500' 01:44:10.996632 READ 10 bytes 01:44:10.996839 '050100010c22384eb705' 01:44:10.996911 Received ATYP 1 01:44:10.997667 Connected fine to 127.0.0.1:46853 01:44:10.997769 Sent 10 bytes 01:44:10.997849 '050000010c22384eb705' 01:44:10.997913 ====> Tunnel transfer 01:44:13.710712 SOCKS transfer completed. Bytes: < 256 > 84 === End of file socks_server.log === Start of file socksd-request.log atyp 1 => 12.34.56.78 === End of file socksd-request.log === Start of file stderr720 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr720 === Start of file trace720 01:44:10.275831 * Trying 127.0.0.1:41047... 01:44:11.464238 * Opened SOCKS connection from 127.0.0.1 port 58184 to 12.34.56.78 port 46853 (via 127.0.0.1 port 41047) 01:44:11.609722 * Established connection to 127.0.0.1 (127.0.0.1 port 41047) from 127.0.0.1 port 58184 01:44:11.737805 * using HTTP/1.x 01:44:12.069909 => Send header, 84 bytes (0x54) 0000: GET /720 HTTP/1.1 0013: Host: 12.34.56.78:46853 002c: User-Agent: curl/8.17.0 0045: Accept: */* 0052: 01:44:12.394468 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:44:12.724475 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:44:12.828420 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:44:12.853159 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:44:12.861387 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:44:12.868706 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:44:12.899124 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:44:12.957559 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:44:12.994433 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:44:12.999754 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:44:13.090483 <= Recv header, 1 bytes (0x1) 0000: . 01:44:13.152595 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:44:13.261595 * we are done reading and this is set to close, stop send 01:44:13.294157 * abort upload 01:44:13.845612 * shutting down connection #0 === End of file trace720 === Start of file valgrind720 ==285235== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind720 test 0721...[HTTP GET with host name using SOCKS5h] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind721 ../src/curl -q --output log/7/curl721.out --include --trace-ascii log/7/trace721 --trace-time http://this.is.a.host.name:34897/721 --proxy socks5h://127.0.0.1:45351 > log/7/stdout721 2> log/7/stderr721 valgrind ERROR ==285447== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 721 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind721 ../src/curl -q --output log/7/curl721.out --include --trace-ascii log/7/trace721 --trace-time http://this.is.a.host.name:34897/721 --proxy socks5h://127.0.0.1:45351 > log/7/stdout721 2> log/7/stderr721 === End of file commands.log === Start of file curl721.out HTTP/1.1 200 OK DatCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind722 ../src/curl -q --output log/2/curl722.out --include --trace-ascii log/2/trace722 --trace-time --ipfs-gateway http://127.0.0.1:39863 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout722 2> log/2/stderr722 e: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl721.out === Start of file http_server.log 01:43:26.780784 ====> Client connect 01:43:26.780938 accept_connection 3 returned 4 01:43:26.781025 accept_connection 3 returned 0 01:43:26.787970 Read 93 bytes 01:43:26.788062 Process 93 bytes request 01:43:26.788150 Got request: GET /verifiedserver HTTP/1.1 01:43:26.788210 Are-we-friendly question received 01:43:26.788314 Wrote request (93 bytes) input to log/7/server.input 01:43:26.788403 Identifying ourselves as friends 01:43:26.788561 Response sent (57 bytes) and written to log/7/server.response 01:43:26.788623 special request received, no persistency 01:43:26.788677 ====> Client disconnect 0 01:44:15.144946 ====> Client connect 01:44:15.145088 accept_connection 3 returned 4 01:44:15.145181 accept_connection 3 returned 0 01:44:15.839367 Read 92 bytes 01:44:15.839562 Process 92 bytes request 01:44:15.839659 Got request: GET /721 HTTP/1.1 01:44:15.839730 Serve test number 721 part 0 01:44:15.839932 - request found to be complete (721) 01:44:15.840216 Wrote request (92 bytes) input to log/7/server.input 01:44:15.840335 Send response test721 section 01:44:15.840797 Response sent (256 bytes) and written to log/7/server.response 01:44:15.840871 => persistent connection request ended, awaits new request 01:44:17.884051 Connection closed by client 01:44:17.884244 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 51084 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 721 === End of file server.cmd === Start of file server.input GET /721 HTTP/1.1 Host: this.is.a.host.name:34897 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file socks_server.log 01:44:15.320536 ====> Client connect, Read config from log/7/server.cmd 01:44:15.320784 Reset to defaults 01:44:15.320855 parse config file 01:44:15.966273 READ 4 bytes 01:44:15.966496 '05020001' 01:44:15.966571 Incoming request deemed fine 01:44:15.966648 Sent 2 bytes 01:44:15.966719 '0500' 01:44:16.143870 READ 26 bytes 01:44:16.144113 '0501000313746869732e69732e612e686f73742e6e616d658851' 01:44:16.144248 Received ATYP 3 01:44:16.150897 Connected fine to 127.0.0.1:34897 01:44:16.151049 Sent 26 bytes 01:44:16.151166 '0500000313746869732e69732e612e686f73742e6e616d658851' 01:44:16.151241 ====> Tunnel transfer 01:44:18.883682 SOCKS transfer completed. Bytes: < 256 > 92 === End of file socks_server.log === Start of file socksd-request.log atyp 3 => this.is.a.host.name === End of file socksd-request.log === Start of file stderr721 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr721 === Start of file trace721 01:44:14.352445 * Trying 127.0.0.1:45351... 01:44:15.634457 * Opened SOCKS connection from 127.0.0.1 port 33110 to this.is.a.host.name port 34897 (via 127.0.0.1 port 45351) 01:44:15.789688 * Established connection to 127.0.0.1 (127.0.0.1 port 45351) from 127.0.0.1 port 33110 01:44:15.921085 * using HTTP/1.x 01:44:16.259469 => Send header, 92 bytes (0x5c) 0000: GET /721 HTTP/1.1 0013: Host: this.is.a.host.name:34897 0034: User-Agent: curl/8.17.0 004d: Accept: */* 005a: 01:44:16.597211 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:44:16.930584 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:44:17.043097 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:44:17.071665 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:44:17.080646 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:44:17.088458 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:44:17.122525 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:44:17.186385 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:44:17.228040 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:44:17.233778 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:44:17.327565 <= Recv header, 1 bytes (0x1) 0000: . 01:44:17.391666 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:44:17.505106 * we are done reading and this is set to close, stop send 01:44:17.550562 * abort upload 01:44:18.083781 * shutting down connection #0 === End of file trace721 === Start of file valgrind721 ==285447== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind721 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 723 in state 4 Runner 2 (id 185908) running test 722 in state 4 Runner 3 (id 185910) running test 728 in state 4 Runner 4 (id 185912) running test 724 in state 4 Runner 5 (id 185914) running test 725 in state 4 Runner 6 (id 185916) running test 727 in state 4 Runner 7 (id 185918) running test 729 in state 4 Runner 8 (id 185920) running test 726 in state 4 test 0722...[IPFS] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind722 ../src/curl -q --output log/2/curl722.out --include --trace-ascii log/2/trace722 --trace-time --ipfs-gateway http://127.0.0.1:39863 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout722 2> log/2/stderr722 valgrind ERROR ==285639== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 722 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind722 ../src/curl -q --output log/2/curl722.out --include --trace-ascii log/2/trace722 --trace-time --ipfs-gateway http://127.0.0.1:39863 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout722 2> log/2/stderr722 === End of file commands.log === Start of file curl722.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file curl722.out === Start of file http_server.log 01:43:44.899309 ====> Client connect 01:43:44.899466 accept_connection 3 returned 4 01:43:44.899539 accept_connection 3 returned 0 01:43:44.906004 Read 93 byCMD (11008): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind723 ../src/curl -q --output log/1/curl723.out --include --trace-ascii log/1/trace723 --trace-time --ipfs-gateway http://nonexisting,local:8080 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/1/stdout723 2> log/1/stderr723 CMD (9472): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind726 ../src/curl -q --output log/8/curl726.out --include --trace-ascii log/8/trace726 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/8/stdout726 2> log/8/stderr726 tes 01:43:44.906105 Process 93 bytes request 01:43:44.906191 Got request: GET /verifiedserver HTTP/1.1 01:43:44.906250 Are-we-friendly question received 01:43:44.906357 Wrote request (93 bytes) input to log/2/server.input 01:43:44.906441 Identifying ourselves as friends 01:43:44.906612 Response sent (57 bytes) and written to log/2/server.response 01:43:44.906671 special request received, no persistency 01:43:44.906725 ====> Client disconnect 0 01:44:32.453736 ====> Client connect 01:44:32.453877 accept_connection 3 returned 4 01:44:32.453952 accept_connection 3 returned 0 01:44:33.423288 Read 143 bytes 01:44:33.423488 Process 143 bytes request 01:44:33.423577 Got request: GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 01:44:33.423644 No test number in path 01:44:33.423743 [log/2/server.cmd] cmdfile says testnum 722 01:44:33.423911 - request found to be complete (722) 01:44:33.424143 Wrote request (143 bytes) input to log/2/server.input 01:44:33.424257 Send response test722 section 01:44:33.424949 Response sent (273 bytes) and written to log/2/server.response 01:44:33.425018 => persistent connection request ended, awaits new request 01:44:35.285912 Connection closed by client 01:44:35.286114 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 48642 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 722 === End of file server.cmd === Start of file server.input GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file server.response === Start of file stderr722 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 === End of file stderr722 === Start of file trace722 01:44:31.539035 * Trying 127.0.0.1:39863... 01:44:32.388218 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 43946 01:44:32.514224 * using HTTP/1.x 01:44:32.849856 => Send header, 143 bytes (0x8f) 0000: GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzq 0040: vjg7u HTTP/1.1 0050: Host: 127.0.0.1:39863 0067: User-Agent: curl/8.17.0 0080: Accept: */* 008d: 01:44:33.177218 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:44:33.481434 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:44:33.578405 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:44:33.602579 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:44:33.610931 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:44:33.617530 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:44:33.646720 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 21. 01:44:33.696060 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:44:33.729056 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/plain. 01:44:33.733711 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:44:33.811258 <= Recv header, 1 bytes (0x1) 0000: . 01:44:33.867100 <= Recv data, 21 bytes (0x15) 0000: Hello curl from IPFS. 01:44:33.973771 * we are done reading and this is set to close, stop send 01:44:34.004185 * abort upload 01:44:34.477102 * shutting down connection #0 === End of file trace722 === Start of file valgrind722 ==285639== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind722 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 723 in state 4 Runner 2 (id 185908) running test 730 in state 4 Runner 3 (id 185910) running test 728 in state 4 Runner 4 (id 185912) running test 724 in state 4 Runner 5 (id 185914) running test 725 in state 4 Runner 6 (id 185916) running test 727 in state 4 Runner 7 (id 185918) running test 729 in state 4 Runner 8 (id 185920) running test 726 in state 4 test 0723...[IPFS with malformed gateway URL (bad function argument error)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind723 ../src/curl -q --output log/1/curl723.out --include --trace-ascii log/1/trace723 --trace-time --ipfs-gateway http://nonexisting,local:8080 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/1/stdout723 2> log/1/stderr723 valgrind ERROR ==285840== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 723 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind723 ../src/curl -q --output log/1/curl723.out --include --trace-ascii log/1/trace723 --trace-time --ipfs-gateway http://nonexisting,local:8080 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/1/stdout723 2> log/1/stderr723 === End of file commands.log === Start of file http_server.log 01:44:11.597725 ====> Client connect 01:44:11.597896 accept_connection 3 returned 4 01:44:11.597973 accept_connection 3 returned 0 01:44:11.607608 Read 93 bytes 01:44:11.607791 Process 93 bytes request 01:44:11.607892 Got request: GET /verifiedserver HTTP/1.1 01:44:11.607966 Are-we-friendly question received 01:44:11.608122 Wrote request (93 bytes) input to log/1/server.input 01:44:11.608246 Identifying ourselves as friends 01:44:11.608445 Response sent (57 bytes) and written to log/1/server.response 01:44:11.608508 special request received, no persistency 01:44:11.608566 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 56950 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 723 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 === End of file server.response === Start of file stderr723 curl: --ipfs-gateway was given a malformed URL curl: try 'curl --help' for more information === End of file stderr723 === Start of file valgrind723 ==285840== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind723 setenv HOME = /build/curl/src/build-curl/tests test 0726...CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind727 ../src/curl -q --output log/6/curl727.out --include --trace-ascii log/6/trace727 --trace-time --ipfs-gateway http://127.0.0.1:38277 ipns://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/6/stdout727 2> log/6/stderr727 [IPFS with no gateway URL (no environment or home file either)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind726 ../src/curl -q --output log/8/curl726.out --include --trace-ascii log/8/trace726 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/8/stdout726 2> log/8/stderr726 valgrind ERROR ==286381== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 726 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind726 ../src/curl -q --output log/8/curl726.out --include --trace-ascii log/8/trace726 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/8/stdout726 2> log/8/stderr726 === End of file commands.log === Start of file http_server.log 01:44:17.255928 ====> Client connect 01:44:17.256114 accept_connection 3 returned 4 01:44:17.256191 accept_connection 3 returned 0 01:44:17.262633 Read 93 bytes 01:44:17.262842 Process 93 bytes request 01:44:17.262940 Got request: GET /verifiedserver HTTP/1.1 01:44:17.263011 Are-we-friendly question received 01:44:17.263151 Wrote request (93 bytes) input to log/8/server.input 01:44:17.263260 Identifying ourselves as friends 01:44:17.263458 Response sent (57 bytes) and written to log/8/server.response 01:44:17.263522 special request received, no persistency 01:44:17.263579 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 38416 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 726 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 === End of file server.response === Start of file stderr726 curl: IPFS automatic gateway detection failed curl: try 'curl --help' for more information === End of file stderr726 === Start of file valgrind726 ==286381== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind726 test 0727...[IPNS] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind727 ../src/curl -q --output log/6/curl727.out --include --trace-ascii log/6/trace727 --trace-time --ipfs-gateway http://127.0.0.1:38277 ipns://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/6/stdout727 2> log/6/stderr727 valgrind ERROR ==286395== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 727 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind727 ../src/curl -q --output log/6/curl727.out --include --trace-ascii log/6/trace727 --trace-time --ipfs-gateway http://127.0.0.1:38277 ipns://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/6/stdout727 2> log/6/stderr727 === End of file commands.log === Start of file curl727.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPNS === End of file curl727.out === Start of file http_server.log 01:44:17.513052 ====> Client connect 01:44:17.513220 accept_connection 3 returned 4 01:44:17.513294 accept_connection 3 returned 0 01:44:17.520014 Read 93 bytes 01:44:17.520158 Process 93 bytes request 01:44:17.520253 Got request: GET /verifiedserver HTTP/1.1 01:44:17.520322 Are-we-friendly question received 01:44:17.520443 Wrote request (93 bytes) input to log/6/server.input 01:44:17.520549 Identifying ourselves as friends 01:44:17.520745 Response sent (57 bytes) and written to log/6/server.response 01:44:17.520812 special request received, no persistency 01:44:17.520869 ====> Client disconnect 0 01:45:04.354089 ====> Client connect 01:45:04.354245 accept_connection 3 returned 4 01:45:04.354327 accept_connection 3 returned 0 01:45:05.346059 Read 143 bytes 01:45:05.346263 Process 143 bytes request 01:45:05.346358 Got request: GET /ipns/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 01:45:05.346430 No test number in path 01:45:05.346558 [log/6/server.cmd] cmdfile says testnum 727 01:45:05.346756 - request found to be complete (727) 01:45:05.346991 Wrote request (143 bytes) input to log/6/server.input 01:45:05.347086 Send response test727 section 01:45:05.347499 Response sent (273 bytes) and written to log/6/server.response 01:45:05.347567 => persistent connection request ended, awaits new request 01:45:07.291997 Connection closed by client 01:45:07.292214 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 49324 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 727 === End of file server.cmd === Start of file server.input GET /ipns/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPNS === End of file server.response === Start of file stderr727 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 === End of file stderr727 === Start of file trace727 01:45:04.413643 * Trying 127.0.0.1:38277... 01:45:05.308350 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 44332 01:45:05.429070 * using HTTP/1.x 01:45:05.776278 => Send header, 143 bytes (0x8f) 0000: GET /ipns/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzq 0040: vjg7u HTTP/1.1 0050: Host: 127.0.0.1:38277 0067: User-Agent: curl/8.17.0 0080: Accept: */* 008d: 01:45:06.120550 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:45:06.438417 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:45:06.544071 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:45:06.570719 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:45:06.578929 <= RecCMD (24832): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind728 ../src/curl -q --output log/3/curl728.out --include --trace-ascii log/3/trace728 --trace-time --no-progress-meter --location --proxy socks5h://127.0.0.1:41047 http://127.0.0.1:46853/728 > log/3/stdout728 2> log/3/stderr728 CMD (24832): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind729 ../src/curl -q --output log/7/curl729.out --include --trace-ascii log/7/trace729 --trace-time http://fake --limit-rate 1 -x socks4a://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@127.0.0.1:45351 > log/7/stdout729 2> log/7/stderr729 v header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:45:06.586417 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:45:06.619235 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 21. 01:45:06.671962 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:45:06.707696 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/plain. 01:45:06.712990 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:45:06.794604 <= Recv header, 1 bytes (0x1) 0000: . 01:45:06.852555 <= Recv data, 21 bytes (0x15) 0000: Hello curl from IPNS. 01:45:06.962600 * we are done reading and this is set to close, stop send 01:45:06.993240 * abort upload 01:45:07.483083 * shutting down connection #0 === End of file trace727 === Start of file valgrind727 ==286395== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind727 test 0728...[SOCKS5h with HTTP redirect to hostname too long] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind728 ../src/curl -q --output log/3/curl728.out --include --trace-ascii log/3/trace728 --trace-time --no-progress-meter --location --proxy socks5h://127.0.0.1:41047 http://127.0.0.1:46853/728 > log/3/stdout728 2> log/3/stderr728 valgrind ERROR ==286446== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 728 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind728 ../src/curl -q --output log/3/curl728.out --include --trace-ascii log/3/trace728 --trace-time --no-progress-meter --location --proxy socks5h://127.0.0.1:41047 http://127.0.0.1:46853/728 > log/3/stdout728 2> log/3/stderr728 === End of file commands.log === Start of file curl728.out HTTP/1.1 301 Moved Permanently Location: http://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/ Content-Length: 0 Connection: close === End of file curl728.out === Start of file http_server.log 01:44:17.731018 ====> Client connect 01:44:17.731178 accept_connection 3 returned 4 01:44:17.731255 accept_connection 3 returned 0 01:44:17.736398 Read 93 bytes 01:44:17.736482 Process 93 bytes request 01:44:17.736567 Got request: GET /verifiedserver HTTP/1.1 01:44:17.736630 Are-we-friendly question received 01:44:17.736733 Wrote request (93 bytes) input to log/3/server.input 01:44:17.736820 Identifying ourselves as friends 01:44:17.736975 Response sent (57 bytes) and written to log/3/server.response 01:44:17.737036 special request received, no persistency 01:44:17.737089 ====> Client disconnect 0 01:45:05.168541 ====> Client connect 01:45:05.168664 accept_connection 3 returned 4 01:45:05.168741 accept_connection 3 returned 0 01:45:05.792261 Read 82 bytes 01:45:05.792478 Process 82 bytes request 01:45:05.792576 Got request: GET /728 HTTP/1.1 01:45:05.792648 Serve test number 728 part 0 01:45:05.792861 - request found to be complete (728) 01:45:05.793192 Wrote request (82 bytes) input to log/3/server.input 01:45:05.793325 Send response test728 section 01:45:05.794365 Response sent (343 bytes) and written to log/3/server.response 01:45:05.794437 => persistent connection request ended, awaits new request 01:45:07.556535 Connection closed by client 01:45:07.556689 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 33594 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 728 === End of file server.cmd === Start of file server.input GET /728 HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 301 Moved Permanently Location: http://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/ Content-Length: 0 Connection: close === End of file server.response === Start of file socks_server.log 01:45:04.441941 ====> Client connect, Read config from log/3/server.cmd 01:45:04.442237 Reset to defaults 01:45:04.442297 parse config file 01:45:04.987750 READ 4 bytes 01:45:04.987957 '05020001' 01:45:04.988028 Incoming request deemed fine 01:45:04.988105 Sent 2 bytes 01:45:04.988171 '0500' 01:45:05.167468 READ 10 bytes 01:45:05.167696 '050100017f000001b705' 01:45:05.167769 Received ATYP 1 01:45:05.168128 Connected fine to 127.0.0.1:46853 01:45:05.168224 Sent 10 bytes 01:45:05.168297 '050000017f000001b705' 01:45:05.168353 ====> Tunnel transfer 01:45:07.556261 SOCKS transfer completed. Bytes: < 343 > 82 01:45:08.093539 ====> Client connect, Read config from log/3/server.cmd 01:45:08.093703 Reset to defaults 01:45:08.093762 parse config file 01:45:08.250855 SOCKS identifier message missing, recv returned 0 01:45:08.251051 ====> Client disconnect === End of file socks_server.log === Start of file socksd-request.log atyp 1 => 127.0.0.1 === End of file socksd-request.log === Start of file stderr728 curl: (97) SOCKS5: the destination hostname is too long to be resolved remotely by the proxy. === End of file stderr728 === Start of file trace728 01:45:04.439233 * Trying 127.0.0.1:41047... 01:45:05.641802 * Opened SOCKS connection from 127.0.0.1 port 37396 to 127.0.0.1 port 46853 (via 127.0.0.1 port 41047) 01:45:05.783845 * Established connection to 127.0.0.1 (127.0.0.1 port 41047) from 127.0.0.1 port 37396 01:45:05.892575 * using HTTP/1.x 01:45:06.210937 => Send header, 82 bytes (0x52) 0000: GET /728 HTTP/1.1 0013: Host: 127.0.0.1:46853 002a: User-Agent: curl/8.17.0 0043: Accept: */* 0050: 01:45:06.594211 <= Recv header, 31 bytes (0x1f) 0000: HTTP/1.1 301 Moved Permanently. 01:45:06.984337 <= Recv header, 275 bytes (0x113) 0000: Location: http://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0040: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0080: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 00c0: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0100: AAAAAAAAAAAAAAAAA/. 01:45:07.132536 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 0. 01:45:07.194237 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:45:07.282632 <= Recv header, 1 bytes (0x1) 0000: . 01:45:07.746689 * shutting down connection #0 01:45:08.214365 * Clear auth, redirects to port from 46853 to 80 01:45:08.250655 * Issue another request to this URL: 'http://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/' 01:45:08.446559 * Hostname 127.0.0.1 was found in DNS cache 01:45:08.477386 * Trying 127.0.0.1:41047... 01:45:08.543814 * SOCKS5: the destination hostname is too long to be resolved remotely by the proxy. 01:45:08.618264 * closing connection #1 === End of file trace728 === Start of file valgrind728 ==286446== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind728 test 0729...[SOCKS4 with very long proxy user name] ../libtool --mode=execute /uCMD (768): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind725 ../src/curl -q --output log/5/curl725.out --include --trace-ascii log/5/trace725 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/5/stdout725 2> log/5/stderr725 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind724 ../src/curl -q --output log/4/curl724.out --include --trace-ascii log/4/trace724 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/4/stdout724 2> log/4/stderr724 sr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind729 ../src/curl -q --output log/7/curl729.out --include --trace-ascii log/7/trace729 --trace-time http://fake --limit-rate 1 -x socks4a://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@127.0.0.1:45351 > log/7/stdout729 2> log/7/stderr729 valgrind ERROR ==286757== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 729 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind729 ../src/curl -q --output log/7/curl729.out --include --trace-ascii log/7/trace729 --trace-time http://fake --limit-rate 1 -x socks4a://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@127.0.0.1:45351 > log/7/stdout729 2> log/7/stderr729 === End of file commands.log === Start of file http_server.log 01:44:21.815838 ====> Client connect 01:44:21.815985 accept_connection 3 returned 4 01:44:21.816057 accept_connection 3 returned 0 01:44:21.822997 Read 93 bytes 01:44:21.823101 Process 93 bytes request 01:44:21.823186 Got request: GET /verifiedserver HTTP/1.1 01:44:21.823248 Are-we-friendly question received 01:44:21.823364 Wrote request (93 bytes) input to log/7/server.input 01:44:21.823452 Identifying ourselves as friends 01:44:21.823602 Response sent (57 bytes) and written to log/7/server.response 01:44:21.823662 special request received, no persistency 01:44:21.823715 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 34530 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 729 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 === End of file server.response === Start of file socks_server.log 01:45:09.717513 ====> Client connect, Read config from log/7/server.cmd 01:45:09.717770 Reset to defaults 01:45:09.717829 parse config file 01:45:10.829528 SOCKS identifier message missing, recv returned 0 01:45:10.829727 ====> Client disconnect === End of file socks_server.log === Start of file stderr729 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 curl: (97) Too long SOCKS proxy username === End of file stderr729 === Start of file trace729 01:45:08.779308 * Trying 127.0.0.1:45351... 01:45:09.693687 * Too long SOCKS proxy username 01:45:10.106723 * closing connection #0 === End of file trace729 === Start of file valgrind729 ==286757== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind729 setenv HOME = /build/curl/src/build-curl/tests/log/5 test 0725...[IPFS with malformed gateway URL from gateway file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind725 ../src/curl -q --output log/5/curl725.out --include --trace-ascii log/5/trace725 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/5/stdout725 2> log/5/stderr725 valgrind ERROR ==286036== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 725 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind725 ../src/curl -q --output log/5/curl725.out --include --trace-ascii log/5/trace725 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/5/stdout725 2> log/5/stderr725 === End of file commands.log === Start of file http_server.log 01:44:13.974440 ====> Client connect 01:44:13.974621 accept_connection 3 returned 4 01:44:13.974705 accept_connection 3 returned 0 01:44:13.981861 Read 93 bytes 01:44:13.982027 Process 93 bytes request 01:44:13.982125 Got request: GET /verifiedserver HTTP/1.1 01:44:13.982194 Are-we-friendly question received 01:44:13.982325 Wrote request (93 bytes) input to log/5/server.input 01:44:13.982427 Identifying ourselves as friends 01:44:13.982614 Response sent (57 bytes) and written to log/5/server.response 01:44:13.982676 special request received, no persistency 01:44:13.982733 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 55788 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 725 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 === End of file server.response === Start of file stderr725 curl: malformed target URL curl: try 'curl --help' for more information === End of file stderr725 === Start of file valgrind725 ==286036== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind725 setenv HOME = /build/curl/src/build-curl/tests/logCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind730 ../src/curl -q --output log/2/curl730.out --include --trace-ascii log/2/trace730 --trace-time --ipfs-gateway http://127.0.0.1:39863/foo/bar ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout730 2> log/2/stderr730 /4 test 0724...[IPFS with gateway URL from gateway file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind724 ../src/curl -q --output log/4/curl724.out --include --trace-ascii log/4/trace724 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/4/stdout724 2> log/4/stderr724 valgrind ERROR ==286039== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 724 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind724 ../src/curl -q --output log/4/curl724.out --include --trace-ascii log/4/trace724 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/4/stdout724 2> log/4/stderr724 === End of file commands.log === Start of file curl724.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file curl724.out === Start of file http_server.log 01:44:14.977346 ====> Client connect 01:44:14.977498 accept_connection 3 returned 4 01:44:14.977581 accept_connection 3 returned 0 01:44:14.984732 Read 93 bytes 01:44:14.984879 Process 93 bytes request 01:44:14.984962 Got request: GET /verifiedserver HTTP/1.1 01:44:14.985023 Are-we-friendly question received 01:44:14.985129 Wrote request (93 bytes) input to log/4/server.input 01:44:14.985217 Identifying ourselves as friends 01:44:14.985382 Response sent (57 bytes) and written to log/4/server.response 01:44:14.985440 special request received, no persistency 01:44:14.985490 ====> Client disconnect 0 01:45:20.634048 ====> Client connect 01:45:20.634236 accept_connection 3 returned 4 01:45:20.634314 accept_connection 3 returned 0 01:45:21.644154 Read 143 bytes 01:45:21.644349 Process 143 bytes request 01:45:21.644459 Got request: GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 01:45:21.644533 No test number in path 01:45:21.644937 [log/4/server.cmd] cmdfile says testnum 724 01:45:21.645134 - request found to be complete (724) 01:45:21.645378 Wrote request (143 bytes) input to log/4/server.input 01:45:21.645483 Send response test724 section 01:45:21.645909 Response sent (273 bytes) and written to log/4/server.response 01:45:21.645977 => persistent connection request ended, awaits new request 01:45:23.606041 Connection closed by client 01:45:23.606234 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 33584 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 724 === End of file server.cmd === Start of file server.input GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file server.response === Start of file stderr724 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 === End of file stderr724 === Start of file trace724 01:45:19.723741 * Trying 127.0.0.1:42621... 01:45:20.596581 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 33166 01:45:20.726805 * using HTTP/1.x 01:45:21.070714 => Send header, 143 bytes (0x8f) 0000: GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzq 0040: vjg7u HTTP/1.1 0050: Host: 127.0.0.1:42621 0067: User-Agent: curl/8.17.0 0080: Accept: */* 008d: 01:45:21.402079 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:45:21.703504 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:45:21.811898 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:45:21.837176 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:45:21.845408 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:45:21.857022 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:45:21.891882 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 21. 01:45:21.945288 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:45:21.985184 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/plain. 01:45:21.990710 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:45:22.085101 <= Recv header, 1 bytes (0x1) 0000: . 01:45:22.154011 <= Recv data, 21 bytes (0x15) 0000: Hello curl from IPFS. 01:45:22.271433 * we are done reading and this is set to close, stop send 01:45:22.302686 * abort upload 01:45:22.805392 * shutting down connection #0 === End of file trace724 === Start of file valgrind724 ==286039== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind724 test 0730...[IPFS arg gateway with path] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind730 ../src/curl -q --output log/2/curl730.out --include --trace-ascii log/2/trace730 --trace-time --ipfs-gateway http://127.0.0.1:39863/foo/bar ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout730 2> log/2/stderr730 valgrind ERROR ==286939== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 730 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind730 ../src/curl -q --output log/2/curl730.out --include --trace-ascii log/2/trace730 --trace-time --ipfs-gateway http://127.0.0.1:39863/foo/bar ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout730 2> log/2/stderr730 === End of file commands.log === Start of file curl730.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file curl730.out === Start of file http_server.log 01:44:38.886403 ====> Client connect 01:44:38.886572 accept_connection 3 returned 4 01:44:38.886651 accept_connection 3 returned 0 01:44:38.893133 Read 93 bytes 01:44:38.893246 Process 93 bytes request 01:44:38.893335 Got request: GET /verifiedserver HTTP/1.1 01:44:38.893401 AreCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind732 ../src/curl -q --output log/8/curl732.out --include --trace-ascii log/8/trace732 --trace-time --ipfs-gateway http://127.0.0.1:39461 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b" > log/8/stdout732 2> log/8/stderr732 -we-friendly question received 01:44:38.893516 Wrote request (93 bytes) input to log/2/server.input 01:44:38.893606 Identifying ourselves as friends 01:44:38.893797 Response sent (57 bytes) and written to log/2/server.response 01:44:38.893867 special request received, no persistency 01:44:38.893926 ====> Client disconnect 0 01:45:25.835350 ====> Client connect 01:45:25.835487 accept_connection 3 returned 4 01:45:25.835562 accept_connection 3 returned 0 01:45:26.829908 Read 151 bytes 01:45:26.830114 Process 151 bytes request 01:45:26.830223 Got request: GET /foo/bar/ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 01:45:26.830303 No test number in path 01:45:26.830415 [log/2/server.cmd] cmdfile says testnum 730 01:45:26.830593 - request found to be complete (730) 01:45:26.830867 Wrote request (151 bytes) input to log/2/server.input 01:45:26.830975 Send response test730 section 01:45:26.831393 Response sent (273 bytes) and written to log/2/server.response 01:45:26.831469 => persistent connection request ended, awaits new request 01:45:28.806215 Connection closed by client 01:45:28.806425 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 53896 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 730 === End of file server.cmd === Start of file server.input GET /foo/bar/ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 Host: 127.0.0.1:39863 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file server.response === Start of file stderr730 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 === End of file stderr730 === Start of file trace730 01:45:24.906890 * Trying 127.0.0.1:39863... 01:45:25.789555 * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 38582 01:45:25.915599 * using HTTP/1.x 01:45:26.257715 => Send header, 151 bytes (0x97) 0000: GET /foo/bar/ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kops 0040: eiod6pzqvjg7u HTTP/1.1 0058: Host: 127.0.0.1:39863 006f: User-Agent: curl/8.17.0 0088: Accept: */* 0095: 01:45:26.607997 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:45:26.913420 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:45:27.013158 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:45:27.043863 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:45:27.052993 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:45:27.059977 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:45:27.094944 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 21. 01:45:27.149306 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:45:27.186512 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/plain. 01:45:27.191738 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:45:27.269901 <= Recv header, 1 bytes (0x1) 0000: . 01:45:27.327918 <= Recv data, 21 bytes (0x15) 0000: Hello curl from IPFS. 01:45:27.442919 * we are done reading and this is set to close, stop send 01:45:27.474349 * abort upload 01:45:27.975534 * shutting down connection #0 === End of file trace730 === Start of file valgrind730 ==286939== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind730 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 731 in state 4 Runner 2 (id 185908) running test 738 in state 4 Runner 3 (id 185910) running test 734 in state 4 Runner 4 (id 185912) running test 737 in state 4 Runner 5 (id 185914) running test 736 in state 4 Runner 6 (id 185916) running test 733 in state 4 Runner 7 (id 185918) running test 735 in state 4 Runner 8 (id 185920) running test 732 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 731 in state 4 Runner 2 (id 185908) running test 738 in state 4 Runner 3 (id 185910) running test 734 in state 4 Runner 4 (id 185912) running test 737 in state 4 Runner 5 (id 185914) running test 736 in state 4 Runner 6 (id 185916) running test 733 in state 4 Runner 7 (id 185918) running test 735 in state 4 Runner 8 (id 185920) running test 732 in state 4 test 0732...[IPFS with path] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind732 ../src/curl -q --output log/8/curl732.out --include --trace-ascii log/8/trace732 --trace-time --ipfs-gateway http://127.0.0.1:39461 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b" > log/8/stdout732 2> log/8/stderr732 valgrind ERROR ==287315== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 732 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind732 ../src/curl -q --output log/8/curl732.out --include --trace-ascii log/8/trace732 --trace-time --ipfs-gateway http://127.0.0.1:39461 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b" > log/8/stdout732 2> log/8/stderr732 === End of file commands.log === Start of file curl732.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file curl732.out === Start of file http_server.log 01:45:03.306807 ====> Client connect 01:45:03.306978 accept_connection 3 returned 4 01:45:03.307064 accept_connection 3 returned 0 01:45:03.313682 Read 93 bytes 01:45:03.313786 Process 93 bytes request 01:45:03.313872 Got request: GET /verifiedserver HTTP/1.1 01:45:03.313935 Are-we-friendly question received 01:45:03.314046 Wrote request (93 bytes) input to log/8/server.input 01:45:03.314146 Identifying ourselves as friends 01:45:03.314325 Response sent (57 bytes) and written to log/8/server.response 01:45:03.314389 special request received, no persistency 01:45:03.314444 ====> Client disconnect 0 01:45:50.603280 ====> Client connect 01:45:50.603423 accept_connection 3 returned 4 01:45:50.603500 accept_connection 3 returned 0 01:45:51.634936 Read 147 bytes 01:45:51.635133 Process 147 bytes request 01:45:51.635230 Got request: GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind733 ../src/curl -q --output log/6/curl733.out --include --trace-ascii log/6/trace733 --trace-time --ipfs-gateway http://127.0.0.1:38277 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/6/stdout733 2> log/6/stderr733 seiod6pzqvjg7u/a/b HTTP/1.1 01:45:51.635302 No test number in path 01:45:51.635415 [log/8/server.cmd] cmdfile says testnum 732 01:45:51.635597 - request found to be complete (732) 01:45:51.635850 Wrote request (147 bytes) input to log/8/server.input 01:45:51.635957 Send response test732 section 01:45:51.636375 Response sent (273 bytes) and written to log/8/server.response 01:45:51.636442 => persistent connection request ended, awaits new request 01:45:53.564705 Connection closed by client 01:45:53.564895 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 49946 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 732 === End of file server.cmd === Start of file server.input GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b HTTP/1.1 Host: 127.0.0.1:39461 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file server.response === Start of file stderr732 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 === End of file stderr732 === Start of file trace732 01:45:50.670758 * Trying 127.0.0.1:39461... 01:45:51.574811 * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 33692 01:45:51.706542 * using HTTP/1.x 01:45:52.063947 => Send header, 147 bytes (0x93) 0000: GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzq 0040: vjg7u/a/b HTTP/1.1 0054: Host: 127.0.0.1:39461 006b: User-Agent: curl/8.17.0 0084: Accept: */* 0091: 01:45:52.406748 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:45:52.718763 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:45:52.819470 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:45:52.845120 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:45:52.853880 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:45:52.861084 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:45:52.891432 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 21. 01:45:52.943222 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:45:52.978568 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/plain. 01:45:52.983648 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:45:53.065548 <= Recv header, 1 bytes (0x1) 0000: . 01:45:53.123917 <= Recv data, 21 bytes (0x15) 0000: Hello curl from IPFS. 01:45:53.233629 * we are done reading and this is set to close, stop send 01:45:53.266446 * abort upload 01:45:53.753315 * shutting down connection #0 === End of file trace732 === Start of file valgrind732 ==287315== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind732 test 0733...[IPFS with path and query args] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind733 ../src/curl -q --output log/6/curl733.out --include --trace-ascii log/6/trace733 --trace-time --ipfs-gateway http://127.0.0.1:38277 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/6/stdout733 2> log/6/stderr733 valgrind ERROR ==287500== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 733 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind733 ../src/curl -q --output log/6/curl733.out --include --trace-ascii log/6/trace733 --trace-time --ipfs-gateway http://127.0.0.1:38277 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/6/stdout733 2> log/6/stderr733 === End of file commands.log === Start of file curl733.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file curl733.out === Start of file http_server.log 01:45:11.182182 ====> Client connect 01:45:11.182352 accept_connection 3 returned 4 01:45:11.182430 accept_connection 3 returned 0 01:45:11.190796 Read 93 bytes 01:45:11.190907 Process 93 bytes request 01:45:11.191000 Got request: GET /verifiedserver HTTP/1.1 01:45:11.191066 Are-we-friendly question received 01:45:11.191192 Wrote request (93 bytes) input to log/6/server.input 01:45:11.191292 Identifying ourselves as friends 01:45:11.191481 Response sent (57 bytes) and written to log/6/server.response 01:45:11.191546 special request received, no persistency 01:45:11.191606 ====> Client disconnect 0 01:45:58.556126 ====> Client connect 01:45:58.556284 accept_connection 3 returned 4 01:45:58.556369 accept_connection 3 returned 0 01:45:59.628410 Read 163 bytes 01:45:59.628600 Process 163 bytes request 01:45:59.628694 Got request: GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb HTTP/1.1 01:45:59.628794 No test number in path 01:45:59.628911 [log/6/server.cmd] cmdfile says testnum 733 01:45:59.629103 - request found to be complete (733) 01:45:59.629354 Wrote request (163 bytes) input to log/6/server.input 01:45:59.629465 Send response test733 section 01:45:59.629887 Response sent (273 bytes) and written to log/6/server.response 01:45:59.629953 => persistent connection request ended, awaits new request 01:46:01.571214 Connection closed by client 01:46:01.571393 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 44348 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 733 === End of file server.cmd === Start of file server.input GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-TyCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind734 ../src/curl -q --output log/3/curl734.out --include --trace-ascii log/3/trace734 --trace-time --ipfs-gateway http://127.0.0.1:46853/some/path "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/3/stdout734 2> log/3/stderr734 pe: text/plain Funny-head: yesyes Hello curl from IPFS === End of file server.response === Start of file stderr733 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 === End of file stderr733 === Start of file trace733 01:45:58.614330 * Trying 127.0.0.1:38277... 01:45:59.557264 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 46186 01:45:59.690911 * using HTTP/1.x 01:46:00.060824 => Send header, 163 bytes (0xa3) 0000: GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzq 0040: vjg7u/a/b?foo=bar&aaa=bbb HTTP/1.1 0064: Host: 127.0.0.1:38277 007b: User-Agent: curl/8.17.0 0094: Accept: */* 00a1: 01:46:00.403447 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:46:00.718585 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:46:00.821526 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:46:00.847752 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:46:00.856033 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:46:00.863446 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:46:00.895115 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 21. 01:46:00.946982 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:46:00.982451 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/plain. 01:46:00.987746 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:46:01.071900 <= Recv header, 1 bytes (0x1) 0000: . 01:46:01.130793 <= Recv data, 21 bytes (0x15) 0000: Hello curl from IPFS. 01:46:01.241667 * we are done reading and this is set to close, stop send 01:46:01.273750 * abort upload 01:46:01.761361 * shutting down connection #0 === End of file trace733 === Start of file valgrind733 ==287500== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind733 test 0734...[IPFS with path, query args and gateway with path] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind734 ../src/curl -q --output log/3/curl734.out --include --trace-ascii log/3/trace734 --trace-time --ipfs-gateway http://127.0.0.1:46853/some/path "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/3/stdout734 2> log/3/stderr734 valgrind ERROR ==287587== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 734 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind734 ../src/curl -q --output log/3/curl734.out --include --trace-ascii log/3/trace734 --trace-time --ipfs-gateway http://127.0.0.1:46853/some/path "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/3/stdout734 2> log/3/stderr734 === End of file commands.log === Start of file curl734.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file curl734.out === Start of file http_server.log 01:45:12.032336 ====> Client connect 01:45:12.032539 accept_connection 3 returned 4 01:45:12.032616 accept_connection 3 returned 0 01:45:12.040808 Read 93 bytes 01:45:12.040967 Process 93 bytes request 01:45:12.041059 Got request: GET /verifiedserver HTTP/1.1 01:45:12.041125 Are-we-friendly question received 01:45:12.041263 Wrote request (93 bytes) input to log/3/server.input 01:45:12.041378 Identifying ourselves as friends 01:45:12.041581 Response sent (57 bytes) and written to log/3/server.response 01:45:12.041647 special request received, no persistency 01:45:12.041705 ====> Client disconnect 0 01:45:59.620270 ====> Client connect 01:45:59.620412 accept_connection 3 returned 4 01:45:59.620485 accept_connection 3 returned 0 01:46:00.637723 Read 173 bytes 01:46:00.637905 Process 173 bytes request 01:46:00.637999 Got request: GET /some/path/ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb HTTP/1.1 01:46:00.638237 No test number in path 01:46:00.638345 [log/3/server.cmd] cmdfile says testnum 734 01:46:00.638537 - request found to be complete (734) 01:46:00.638789 Wrote request (173 bytes) input to log/3/server.input 01:46:00.638898 Send response test734 section 01:46:00.639246 Response sent (273 bytes) and written to log/3/server.response 01:46:00.639313 => persistent connection request ended, awaits new request 01:46:02.616438 Connection closed by client 01:46:02.616643 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 44854 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 734 === End of file server.cmd === Start of file server.input GET /some/path/ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb HTTP/1.1 Host: 127.0.0.1:46853 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file server.response === Start of file stderr734 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 === End of file stderr734 === Start of file trace734 01:45:59.673326 * Trying 127.0.0.1:46853... 01:46:00.568621 * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 55476 01:46:00.700300 * using HTTP/1.x 01:46:01.066528 => Send header, 173 bytes (0xad) 0000: GET /some/path/ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7ko 0040: pseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb HTTP/1.1 006e: Host: 127.0.0.1:46853 0085: User-Agent: curl/8.17.0 009e: Accept: */* 00ab: 01:46:01.405267 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:46:01.723159 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:46:01.824533 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:46:01.850134 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:46:01.85847CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind735 ../src/curl -q --output log/7/curl735.out --include --trace-ascii log/7/trace735 --trace-time --ipfs-gateway http://127.0.0.1:34897/some/path "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/7/stdout735 2> log/7/stderr735 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind731 ../src/curl -q --output log/1/curl731.out --include --trace-ascii log/1/trace731 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/1/stdout731 2> log/1/stderr731 1 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:46:01.866107 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:46:01.898703 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 21. 01:46:01.952064 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:46:01.989330 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/plain. 01:46:01.994582 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:46:02.077870 <= Recv header, 1 bytes (0x1) 0000: . 01:46:02.138286 <= Recv data, 21 bytes (0x15) 0000: Hello curl from IPFS. 01:46:02.252129 * we are done reading and this is set to close, stop send 01:46:02.284373 * abort upload 01:46:02.804523 * shutting down connection #0 === End of file trace734 === Start of file valgrind734 ==287587== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind734 test 0735...[IPNS with path, query args and gateway with path] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind735 ../src/curl -q --output log/7/curl735.out --include --trace-ascii log/7/trace735 --trace-time --ipfs-gateway http://127.0.0.1:34897/some/path "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/7/stdout735 2> log/7/stderr735 valgrind ERROR ==287784== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 735 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind735 ../src/curl -q --output log/7/curl735.out --include --trace-ascii log/7/trace735 --trace-time --ipfs-gateway http://127.0.0.1:34897/some/path "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/7/stdout735 2> log/7/stderr735 === End of file commands.log === Start of file curl735.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file curl735.out === Start of file http_server.log 01:45:14.003729 ====> Client connect 01:45:14.003888 accept_connection 3 returned 4 01:45:14.003967 accept_connection 3 returned 0 01:45:14.012165 Read 93 bytes 01:45:14.012285 Process 93 bytes request 01:45:14.012374 Got request: GET /verifiedserver HTTP/1.1 01:45:14.012441 Are-we-friendly question received 01:45:14.012562 Wrote request (93 bytes) input to log/7/server.input 01:45:14.012657 Identifying ourselves as friends 01:45:14.012817 Response sent (57 bytes) and written to log/7/server.response 01:45:14.012881 special request received, no persistency 01:45:14.012935 ====> Client disconnect 0 01:46:01.554644 ====> Client connect 01:46:01.554788 accept_connection 3 returned 4 01:46:01.554869 accept_connection 3 returned 0 01:46:02.560677 Read 123 bytes 01:46:02.560879 Process 123 bytes request 01:46:02.560977 Got request: GET /some/path/ipns/fancy.tld/a/b?foo=bar&aaa=bbb HTTP/1.1 01:46:02.561053 No test number in path 01:46:02.561164 [log/7/server.cmd] cmdfile says testnum 735 01:46:02.561353 - request found to be complete (735) 01:46:02.561602 Wrote request (123 bytes) input to log/7/server.input 01:46:02.561710 Send response test735 section 01:46:02.562072 Response sent (273 bytes) and written to log/7/server.response 01:46:02.562142 => persistent connection request ended, awaits new request 01:46:04.451960 Connection closed by client 01:46:04.452176 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 41736 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd Testnum 735 === End of file server.cmd === Start of file server.input GET /some/path/ipns/fancy.tld/a/b?foo=bar&aaa=bbb HTTP/1.1 Host: 127.0.0.1:34897 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file server.response === Start of file stderr735 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 === End of file stderr735 === Start of file trace735 01:46:01.618526 * Trying 127.0.0.1:34897... 01:46:02.505496 * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 33478 01:46:02.634957 * using HTTP/1.x 01:46:02.989057 => Send header, 123 bytes (0x7b) 0000: GET /some/path/ipns/fancy.tld/a/b?foo=bar&aaa=bbb HTTP/1.1 003c: Host: 127.0.0.1:34897 0053: User-Agent: curl/8.17.0 006c: Accept: */* 0079: 01:46:03.311893 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:46:03.630792 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:46:03.730017 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:46:03.754375 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:46:03.761825 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:46:03.768873 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:46:03.797969 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 21. 01:46:03.847850 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:46:03.881252 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/plain. 01:46:03.886139 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:46:03.963307 <= Recv header, 1 bytes (0x1) 0000: . 01:46:04.019723 <= Recv data, 21 bytes (0x15) 0000: Hello curl from IPFS. 01:46:04.129311 * we are done reading and this is set to close, stop send 01:46:04.159448 * abort upload 01:46:04.646405 * shutting down connection #0 === End of file trace735 === Start of file valgrind735 ==287784== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind735 setenv HOME = /build/curl/src/build-curl/tests/log/1 test 0731...[IPFS with gateway URL and path from gateway file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind731 ../src/curl -q --output log/1/curl731.out --include --trace-ascii log/1/trace731 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/1/stdout731 2> log/1/stderr731 valgrind ERROR ==287150== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 731 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind731 ../src/curl -q --output log/1/curl731.out --include --trace-ascii log/1/trace731 --trace-time ipfs://bafybeidecnvkrygux6CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind736 ../src/curl -q --output log/5/curl736.out --include --trace-ascii log/5/trace736 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/5/stdout736 2> log/5/stderr736 uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/1/stdout731 2> log/1/stderr731 === End of file commands.log === Start of file curl731.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file curl731.out === Start of file http_server.log 01:44:57.448448 ====> Client connect 01:44:57.448608 accept_connection 3 returned 4 01:44:57.448685 accept_connection 3 returned 0 01:44:57.455954 Read 93 bytes 01:44:57.456072 Process 93 bytes request 01:44:57.456164 Got request: GET /verifiedserver HTTP/1.1 01:44:57.456233 Are-we-friendly question received 01:44:57.456361 Wrote request (93 bytes) input to log/1/server.input 01:44:57.456459 Identifying ourselves as friends 01:44:57.456623 Response sent (57 bytes) and written to log/1/server.response 01:44:57.456685 special request received, no persistency 01:44:57.456742 ====> Client disconnect 0 01:46:03.391401 ====> Client connect 01:46:03.391542 accept_connection 3 returned 4 01:46:03.391620 accept_connection 3 returned 0 01:46:04.433611 Read 147 bytes 01:46:04.433799 Process 147 bytes request 01:46:04.433892 Got request: GET /731/ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 01:46:04.433961 No test number in path 01:46:04.434079 [log/1/server.cmd] cmdfile says testnum 731 01:46:04.434254 - request found to be complete (731) 01:46:04.434492 Wrote request (147 bytes) input to log/1/server.input 01:46:04.434596 Send response test731 section 01:46:04.435027 Response sent (273 bytes) and written to log/1/server.response 01:46:04.435091 => persistent connection request ended, awaits new request 01:46:06.415210 Connection closed by client 01:46:06.415437 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 55750 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 731 === End of file server.cmd === Start of file server.input GET /731/ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file server.response === Start of file stderr731 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 === End of file stderr731 === Start of file trace731 01:46:02.468229 * Trying 127.0.0.1:40641... 01:46:03.352041 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 53694 01:46:03.506007 * using HTTP/1.x 01:46:03.862946 => Send header, 147 bytes (0x93) 0000: GET /731/ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod 0040: 6pzqvjg7u HTTP/1.1 0054: Host: 127.0.0.1:40641 006b: User-Agent: curl/8.17.0 0084: Accept: */* 0091: 01:46:04.196308 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:46:04.526373 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:46:04.626008 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:46:04.652281 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:46:04.660351 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:46:04.667584 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:46:04.698008 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 21. 01:46:04.749133 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:46:04.784238 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/plain. 01:46:04.789279 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:46:04.869028 <= Recv header, 1 bytes (0x1) 0000: . 01:46:04.934185 <= Recv data, 21 bytes (0x15) 0000: Hello curl from IPFS. 01:46:05.045846 * we are done reading and this is set to close, stop send 01:46:05.077109 * abort upload 01:46:05.596285 * shutting down connection #0 === End of file trace731 === Start of file valgrind731 ==287150== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind731 setenv IPFS_PATH = log/5/.ipfs test 0736...[IPFS with IPFS_PATH set, no trailing slash] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind736 ../src/curl -q --output log/5/curl736.out --include --trace-ascii log/5/trace736 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/5/stdout736 2> log/5/stderr736 valgrind ERROR ==287947== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 736 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind736 ../src/curl -q --output log/5/curl736.out --include --trace-ascii log/5/trace736 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/5/stdout736 2> log/5/stderr736 === End of file commands.log === Start of file curl736.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file curl736.out === Start of file http_server.log 01:45:20.675487 ====> Client connect 01:45:20.675646 accept_connection 3 returned 4 01:45:20.675717 accept_connection 3 returned 0 01:45:20.684101 Read 93 bytes 01:45:20.684212 Process 93 bytes request 01:45:20.684297 Got request: GET /verifiedserver HTTP/1.1 01:45:20.684363 Are-we-friendly question received 01:45:20.684477 Wrote request (93 bytes) input to log/5/server.input 01:45:20.684562 Identifying ourselves as friends 01:45:20.684736 Response sent (57 bytes) and written to log/5/server.response 01:45:20.684797 special request received, no persistency 01:45:20.684850 ====> Client disconnect 0 01:46:08.212844 ====> Client connect 01:46:08.212995 accept_connection 3 returned 4 01:46:08.213075 accept_connection 3 returned 0 01:46:09.293797 Read 143 bytes 01:46:09.294041 Process 143 bytes request 01:46:09.294153 Got request: GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 01:46:09.294231 No test number in path 01:46:09.294358 [log/5/server.cmd] cmdfile says testnum 736 01:46:09.294571 - request found to be complete (736) 01:46:09.294839 Wrote request (143 bytes) input to log/5/server.input 01:46:09.294949 Send response test736 section 01:46:09.295395 Response sent (273 bytes) and written to log/5/server.response 01:46:09.29CMD (9472): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind738 ../src/curl -q --output log/2/curl738.out --include --trace-ascii log/2/trace738 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout738 2> log/2/stderr738 CMD (0): /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/test745.pl /build/curl/src/curl/tests/.. > log/2/stdout745 2> log/2/stderr745 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind737 ../src/curl -q --output log/4/curl737.out --include --trace-ascii log/4/trace737 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/4/stdout737 2> log/4/stderr737 5465 => persistent connection request ended, awaits new request 01:46:11.194033 Connection closed by client 01:46:11.194212 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 56808 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file server.cmd Testnum 736 === End of file server.cmd === Start of file server.input GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 Host: 127.0.0.1:46263 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file server.response === Start of file stderr736 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 5 === End of file stderr736 === Start of file trace736 01:46:08.206489 * Trying 127.0.0.1:46263... 01:46:09.200700 * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 54618 01:46:09.351101 * using HTTP/1.x 01:46:09.719534 => Send header, 143 bytes (0x8f) 0000: GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzq 0040: vjg7u HTTP/1.1 0050: Host: 127.0.0.1:46263 0067: User-Agent: curl/8.17.0 0080: Accept: */* 008d: 01:46:10.066159 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:46:10.389081 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:46:10.484132 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:46:10.504128 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:46:10.511985 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:46:10.518890 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:46:10.544138 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 21. 01:46:10.587287 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:46:10.614489 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/plain. 01:46:10.618382 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:46:10.684066 <= Recv header, 1 bytes (0x1) 0000: . 01:46:10.743723 <= Recv data, 21 bytes (0x15) 0000: Hello curl from IPFS. 01:46:10.861939 * we are done reading and this is set to close, stop send 01:46:10.898208 * abort upload 01:46:11.401208 * shutting down connection #0 === End of file trace736 === Start of file valgrind736 ==287947== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind736 setenv IPFS_PATH = log/2/.ipfs/ test 0738...[IPFS with IPFS_PATH, no gateway file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind738 ../src/curl -q --output log/2/curl738.out --include --trace-ascii log/2/trace738 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout738 2> log/2/stderr738 valgrind ERROR ==288265== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 738 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind738 ../src/curl -q --output log/2/curl738.out --include --trace-ascii log/2/trace738 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout738 2> log/2/stderr738 === End of file commands.log === Start of file http_server.log 01:45:32.416869 ====> Client connect 01:45:32.417042 accept_connection 3 returned 4 01:45:32.417127 accept_connection 3 returned 0 01:45:32.422097 Read 93 bytes 01:45:32.422191 Process 93 bytes request 01:45:32.422291 Got request: GET /verifiedserver HTTP/1.1 01:45:32.422363 Are-we-friendly question received 01:45:32.422484 Wrote request (93 bytes) input to log/2/server.input 01:45:32.422595 Identifying ourselves as friends 01:45:32.422804 Response sent (57 bytes) and written to log/2/server.response 01:45:32.422874 special request received, no persistency 01:45:32.422937 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39863... * Established connection to 127.0.0.1 (127.0.0.1 port 39863) from 127.0.0.1 port 38584 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39863 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39863 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185946 === End of file http_verify.out === Start of file server.cmd Testnum 738 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185946 === End of file server.response === Start of file stderr738 curl: IPFS automatic gateway detection failed curl: try 'curl --help' for more information === End of file stderr738 === Start of file valgrind738 ==288265== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind738 test 0745...[Verify that typecheck-gcc and curl.h are in sync] /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/test745.pl /build/curl/src/curl/tests/.. > log/2/stdout745 2> log/2/stderr745 valgrind SKIPPED s------e--- OK (715 out of 1746, remaining: 105:28, took 0.637s, duration: 73:08) setenv IPFS_PATH = log/4/.ipfs/ test 0737...[IPFS with IPFS_PATH set, with trailing slash] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind737 ../src/curl -q --output log/4/curl737.out --include --trace-ascii log/4/trace737 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/4/stdout737 2> log/4/stderr737 valgrind ERROR ==288111== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/4/ dir after test 737 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind737 ../src/curl -q --output log/4/curl737.out --include --trace-ascii log/4/trace737 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/4/stdout737 2> log/4/stderr737 === End of file commands.log === Start of file curl737.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file curl737.out === Start of file http_server.log 01:45:28.940922 ====> Client connect 01:45:28.941077 accept_connectiCMD (768): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind739 ../src/curl -q --output log/8/curl739.out --include --trace-ascii log/8/trace739 --trace-time --ipfs-gateway "http://127.0.0.1:39461/some/path?biz=baz" "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/8/stdout739 2> log/8/stderr739 on 3 returned 4 01:45:28.941150 accept_connection 3 returned 0 01:45:28.947191 Read 93 bytes 01:45:28.947269 Process 93 bytes request 01:45:28.947356 Got request: GET /verifiedserver HTTP/1.1 01:45:28.947429 Are-we-friendly question received 01:45:28.947533 Wrote request (93 bytes) input to log/4/server.input 01:45:28.947620 Identifying ourselves as friends 01:45:28.947789 Response sent (57 bytes) and written to log/4/server.response 01:45:28.947850 special request received, no persistency 01:45:28.947904 ====> Client disconnect 0 01:46:16.248903 ====> Client connect 01:46:16.249052 accept_connection 3 returned 4 01:46:16.249142 accept_connection 3 returned 0 01:46:17.246330 Read 143 bytes 01:46:17.246547 Process 143 bytes request 01:46:17.246662 Got request: GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 01:46:17.246749 No test number in path 01:46:17.246884 [log/4/server.cmd] cmdfile says testnum 737 01:46:17.247109 - request found to be complete (737) 01:46:17.247422 Wrote request (143 bytes) input to log/4/server.input 01:46:17.247553 Send response test737 section 01:46:17.248076 Response sent (273 bytes) and written to log/4/server.response 01:46:17.248163 => persistent connection request ended, awaits new request 01:46:19.085677 Connection closed by client 01:46:19.085847 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42621... * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 48824 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42621 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:42621 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185938 === End of file http_verify.out === Start of file server.cmd Testnum 737 === End of file server.cmd === Start of file server.input GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 Host: 127.0.0.1:42621 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185938 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file server.response === Start of file stderr737 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 === End of file stderr737 === Start of file trace737 01:46:15.311314 * Trying 127.0.0.1:42621... 01:46:16.213093 * Established connection to 127.0.0.1 (127.0.0.1 port 42621) from 127.0.0.1 port 47334 01:46:16.332592 * using HTTP/1.x 01:46:16.673217 => Send header, 143 bytes (0x8f) 0000: GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzq 0040: vjg7u HTTP/1.1 0050: Host: 127.0.0.1:42621 0067: User-Agent: curl/8.17.0 0080: Accept: */* 008d: 01:46:17.017266 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:46:17.301461 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:46:17.387858 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:46:17.411066 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:46:17.419504 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:46:17.427689 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:46:17.455277 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 21. 01:46:17.501450 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:46:17.530253 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/plain. 01:46:17.534799 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:46:17.606250 <= Recv header, 1 bytes (0x1) 0000: . 01:46:17.659693 <= Recv data, 21 bytes (0x15) 0000: Hello curl from IPFS. 01:46:17.766801 * we are done reading and this is set to close, stop send 01:46:17.795945 * abort upload 01:46:18.288133 * shutting down connection #0 === End of file trace737 === Start of file valgrind737 ==288111== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind737 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 743 in state 4 Runner 2 (id 185908) running test 746 in state 4 Runner 3 (id 185910) running test 741 in state 4 Runner 4 (id 185912) running test 747 in state 4 Runner 5 (id 185914) running test 744 in state 4 Runner 6 (id 185916) running test 740 in state 4 Runner 7 (id 185918) running test 742 in state 4 Runner 8 (id 185920) running test 739 in state 4 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 743 in state 4 Runner 2 (id 185908) running test 746 in state 4 Runner 3 (id 185910) running test 741 in state 4 Runner 4 (id 185912) running test 747 in state 4 Runner 5 (id 185914) running test 744 in state 4 Runner 6 (id 185916) running test 740 in state 4 Runner 7 (id 185918) running test 742 in state 4 Runner 8 (id 185920) running test 739 in state 4 test 0739...[IPNS path and query args for gateway and IPFS url (malformed gateway url)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind739 ../src/curl -q --output log/8/curl739.out --include --trace-ascii log/8/trace739 --trace-time --ipfs-gateway "http://127.0.0.1:39461/some/path?biz=baz" "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/8/stdout739 2> log/8/stderr739 valgrind ERROR ==288479== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 739 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind739 ../src/curl -q --output log/8/curl739.out --include --trace-ascii log/8/trace739 --trace-time --ipfs-gateway "http://127.0.0.1:39461/some/path?biz=baz" "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/8/stdout739 2> log/8/stderr739 === End of file commands.log === Start of file http_server.log 01:45:57.477715 ====> Client connect 01:45:57.477879 accept_connection 3 returned 4 01:45:57.477953 accept_connection 3 returned 0 01:45:57.484655 Read 93 bytes 01:45:57.484789 Process 93 bytes request 01:45:57.484879 Got request: GET /verifiedserver HTTP/1.1 01:45:57.484949 Are-we-friendly question received 01:45:57.485081 Wrote request (93 bytes) input to log/8/server.input 01:45:57.485182 Identifying ourselves as friends 01:45:57.485381 Response sent (57 bytes) and written to log/8/server.response 01:45:57.485451 special request received, no persistency 01:45:57.485511 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39461... * Established connection to 127.0.0.1 (127.0.0.1 port 39461) from 127.0.0.1 port 50092 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39461 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:39461 left intact === End of file http_verify.log === Start of file http_verify.outCMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind742 ../src/curl -q --output log/7/curl742.out --include --trace-ascii log/7/trace742 --trace-time http://cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:34897 -x socks5h://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@127.0.0.1:45351 > log/7/stdout742 2> log/7/stderr742 WE ROOLZ: 185922 === End of file http_verify.out === Start of file server.cmd Testnum 739 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185922 === End of file server.response === Start of file stderr739 curl: malformed target URL curl: try 'curl --help' for more information === End of file stderr739 === Start of file valgrind739 ==288479== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind739 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 743 in state 4 Runner 2 (id 185908) running test 746 in state 4 Runner 3 (id 185910) running test 741 in state 4 Runner 4 (id 185912) running test 747 in state 4 Runner 5 (id 185914) running test 744 in state 4 Runner 6 (id 185916) running test 740 in state 4 Runner 7 (id 185918) running test 742 in state 4 Runner 8 (id 185920) running test 748 in state 4 test 0742...[SOCKS5-hostname with max length credentials and max host name length] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind742 ../src/curl -q --output log/7/curl742.out --include --trace-ascii log/7/trace742 --trace-time http://cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:34897 -x socks5h://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@127.0.0.1:45351 > log/7/stdout742 2> log/7/stderr742 valgrind ERROR ==288944== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/7/ dir after test 742 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind742 ../src/curl -q --output log/7/curl742.out --include --trace-ascii log/7/trace742 --trace-time http://cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:34897 -x socks5h://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@127.0.0.1:45351 > log/7/stdout742 2> log/7/stderr742 === End of file commands.log === Start of file curl742.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl742.out === Start of file http_server.log 01:46:08.530954 ====> Client connect 01:46:08.531115 accept_connection 3 returned 4 01:46:08.531192 accept_connection 3 returned 0 01:46:08.538335 Read 93 bytes 01:46:08.538460 Process 93 bytes request 01:46:08.538551 Got request: GET /verifiedserver HTTP/1.1 01:46:08.538616 Are-we-friendly question received 01:46:08.538741 Wrote request (93 bytes) input to log/7/server.input 01:46:08.538836 Identifying ourselves as friends 01:46:08.538997 Response sent (57 bytes) and written to log/7/server.response 01:46:08.539062 special request received, no persistency 01:46:08.539118 ====> Client disconnect 0 01:46:55.591589 ====> Client connect 01:46:55.591718 accept_connection 3 returned 4 01:46:55.591797 accept_connection 3 returned 0 01:46:56.238377 Read 324 bytes 01:46:56.238591 Process 324 bytes request 01:46:56.238682 Got request: GET / HTTP/1.1 01:46:56.238746 No test number in path 01:46:56.238854 [log/7/server.cmd] cmdfile says testnum 742 01:46:56.239111 Unknown instruction found: method 2 user aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa password bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb backendport 34897 01:46:56.239344 Unknown instruction found: user aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa password bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb backendport 34897 01:46:56.239411 Unknown instruction found: password bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb backendport 34897 01:46:56.239475 Unknown instruction found: backendport 34897 01:46:56.239533 - request found to be complete (742) 01:46:56.239759 Unknown instruction found: method 2 user aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa password bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb backendport 34897 01:46:56.239827 Unknown instruction found: user aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa password bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb backendport 34897 01:46:56.239893 Unknown instruction found: password bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb backendport 34897 01:46:56.239977 Unknown instruction found: backendport 34897 01:46:56.240125 Wrote request (324 bytes) input to log/7/server.input 01:46:56.240211 Send response test742 section 01:46:56.243987 Response sent (256 bytes) and written to log/7/server.response 01:46:56.244054 => persistent connection request ended, awaits new request 01:46:58.173269 Connection closed by client 01:46:58.173415 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34897... * Established connection to 127.0.0.1 (127.0.0.1 port 34897) from 127.0.0.1 port 56872 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34897 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:34897 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185925 === End of file http_verify.out === Start of file server.cmd method 2 user aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa password bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb backendport 34897 Testnum 742 === End of file server.cmd === Start of file server.input GET / HTTP/1.1 Host: cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:34897 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185925 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file socks_server.log 01:46:55.810404 ====> Client connect, Read config from log/7/server.cmd 01:46:55.810705 Reset to defaults 01:46:55.810770 parse config file 01:46:55.811050 method [2] set 01:46:55.811358 user [aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa] set 01:46:55.811709 password [bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb] set 01:46:55.811831 backendport [34897] set 01:46:56.383186 READ 5 bytes 01:46:56.383387 '0503000102' 01:46:56.383443 Incoming request deemed fine 01:46:56.383512 Sent 2 bytes 01:46:56.383570 '0502' 01:46:56.529940 READ 513 bytes 01:46:56.530663 '01ff616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161ff626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262' 01:46:56.531146 Sent 2 bytes 01:46:56.531224 '0100' 01:46:56.590611 READ 261 bytes 01:46:56.591082 '05010003fe63636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363638851' 01:46:56.591160 Received ATYP 3 01:46:56.591447 Connected fine to 127.0.0.1:34897 01:46:56.591529 Sent 261 bytes 01:46:56.591873 '05000003fe63636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363638851' 01:46:56.591930 ====> Tunnel transfer 01:46:59.172957 SOCKS transfer completed. Bytes: < 256 > 324 === End of file socks_server.log === Start of file socksd-request.log atyp 3 => cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc === End of file socksd-request.log === Start of file stderr742 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 6 100 6 0 0 1 0 0:00:06 0:00:04 0:00:02 1 100 6 100 6 0 0 1 0 0:00:06 0:00:05 0:00:01 1 === End of file stderr742 === Start of file trace742 01:46:54.884140 * Trying 127.0.0.1:45351... 01:46:56.057887 * Opened SOCKS connection from 127.0.0.1 port 57468 to cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc port 34897 (via 127.0.0.1 port 45351) 01:46:56.193364 * Established connection to 127.0.0.1 (127.0.0.1 port 45351) from 127.0.0.1 port 57468 01:46:56.314329 * using HTTP/1.x 01:46:56.653852 => Send header, 324 bytes (0x144) 0000: GET / HTTP/1.1 0010: Host: cccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 0050: cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 0090: cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 00d0: cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 0110: cccc:34897 011c: User-Agent: curl/8.17.0 0135: Accept: */* 0142: 01:46:56.992786 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:46:57.294152 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:46:57.394915 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:46:57.438335 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:46:57.445822 <= Recv header, 27 bytesCMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind746 ../src/curl -q --output log/2/curl746.out --include --trace-ascii log/2/trace746 --trace-time http://neverused.example/ -m 22222242222222222 > log/2/stdout746 2> log/2/stderr746 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind743 ../src/curl -q --output log/1/curl743.out --include --trace-ascii log/1/trace743 --trace-time http://127.0.0.1:40641/743 -K log/1/config > log/1/stdout743 2> log/1/stderr743 (0x1b) 0000: ETag: "21025-dc7-39462498". 01:46:57.452841 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:46:57.482490 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 6. 01:46:57.540238 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:46:57.573437 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:46:57.578035 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:46:57.659720 <= Recv header, 1 bytes (0x1) 0000: . 01:46:57.714814 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:46:57.821126 * we are done reading and this is set to close, stop send 01:46:57.850882 * abort upload 01:46:58.337478 * shutting down connection #0 === End of file trace742 === Start of file valgrind742 ==288944== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind742 test 0746...[too large numerical value passed to -m] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind746 ../src/curl -q --output log/2/curl746.out --include --trace-ascii log/2/trace746 --trace-time http://neverused.example/ -m 22222242222222222 > log/2/stdout746 2> log/2/stderr746 valgrind ERROR ==289439== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/2/ dir after test 746 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind746 ../src/curl -q --output log/2/curl746.out --include --trace-ascii log/2/trace746 --trace-time http://neverused.example/ -m 22222242222222222 > log/2/stdout746 2> log/2/stderr746 === End of file commands.log === Start of file server.cmd Testnum 746 === End of file server.cmd === Start of file stderr746 curl: option -m: expected a proper numerical parameter curl: try 'curl --help' for more information === End of file stderr746 === Start of file valgrind746 ==289439== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind746 test 0743...[--config with a 127 byte line] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind743 ../src/curl -q --output log/1/curl743.out --include --trace-ascii log/1/trace743 --trace-time http://127.0.0.1:40641/743 -K log/1/config > log/1/stdout743 2> log/1/stderr743 valgrind ERROR ==289094== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/1/ dir after test 743 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind743 ../src/curl -q --output log/1/curl743.out --include --trace-ascii log/1/trace743 --trace-time http://127.0.0.1:40641/743 -K log/1/config > log/1/stdout743 2> log/1/stderr743 === End of file commands.log === Start of file config -A pointless data = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" === End of file config === Start of file curl743.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file curl743.out === Start of file http_server.log 01:46:12.309522 ====> Client connect 01:46:12.309691 accept_connection 3 returned 4 01:46:12.309771 accept_connection 3 returned 0 01:46:12.316975 Read 93 bytes 01:46:12.317095 Process 93 bytes request 01:46:12.317182 Got request: GET /verifiedserver HTTP/1.1 01:46:12.317249 Are-we-friendly question received 01:46:12.317384 Wrote request (93 bytes) input to log/1/server.input 01:46:12.317489 Identifying ourselves as friends 01:46:12.317647 Response sent (57 bytes) and written to log/1/server.response 01:46:12.317709 special request received, no persistency 01:46:12.317764 ====> Client disconnect 0 01:46:58.696261 ====> Client connect 01:46:58.696410 accept_connection 3 returned 4 01:46:58.696489 accept_connection 3 returned 0 01:46:59.852208 Read 269 bytes 01:46:59.852412 Process 269 bytes request 01:46:59.852508 Got request: POST /743 HTTP/1.1 01:46:59.852579 Serve test number 743 part 0 01:46:59.852777 - request found to be complete (743) 01:46:59.852966 Found Content-Length: 118 in the request 01:46:59.853146 Wrote request (269 bytes) input to log/1/server.input 01:46:59.853265 Send response test743 section 01:46:59.853637 Response sent (267 bytes) and written to log/1/server.response 01:46:59.853705 => persistent connection request ended, awaits new request 01:47:01.896212 Connection closed by client 01:47:01.896419 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40641... * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 53696 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40641 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40641 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185951 === End of file http_verify.out === Start of file server.cmd Testnum 743 === End of file server.cmd === Start of file server.input POST /743 HTTP/1.1 Host: 127.0.0.1:40641 User-Agent: pointless Accept: */* Content-Length: 118 Content-Type: application/x-www-form-urlencoded xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185951 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 6 Connection: close Content-Type: text/html Funny-head: yesyes -foo- === End of file server.response === Start of file stderr743 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 118 0 0 100 118 0 32 0:00:03 0:00:03 --:--:-- 49 100 124 100 6 100 118 1 24 0:00:06 0:00:04 0:00:02 35 100 124 100 6 100 118 1 24 0:00:06 0:00:04 0:00:02 34 === End of file stderr743 === Start of file trace743 01:46:57.762415 * Trying 127.0.0.1:40641... 01:46:58.655970 * Established connection to 127.0.0.1 (127.0.0.1 port 40641) from 127.0.0.1 port 50296 01:46:58.785184 * using HTTP/1.x 01:46:59.284490 => Send header, 151 bytes (0x97) 0000: POST /743 HTTP/1.1 0014: Host: 127.0.0.1:40641 002b: User-Agent: pointless 0042: Accept: */* 004f: Content-Length: 118 0064: Content-Type: application/x-www-form-urlencoded 0095: 01:46:59.392389 => Send data, 118 bytes (0x76) 0000: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0040: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 01:46:59.482415 * upload completely sent off: 118 bytes 01:46:59.771639 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK 01:47:00.085613 <= Recv header, 37 bytes (0x25) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT 01:47:00.185842 <= Recv header, 26 bytes (0x1a) 0000: Server: test-server/fake 01:47:00.211811 <= Recv header, 46 bytes (0x2e) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT 01:47:00.219751 <= Recv header, 28 bytes (0x1c) 0000: ETag: "21025-dc7-39462498" 0CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind744 ../src/curl -q --output log/5/curl744.out --include --trace-ascii log/5/trace744 --trace-time http://foo.host:46263/744 -p --proxy1.0 127.0.0.1:40841 -A "" --netrc-file log/5/netrc744 > log/5/stdout744 2> log/5/stderr744 1:47:00.227238 <= Recv header, 22 bytes (0x16) 0000: Accept-Ranges: bytes 01:47:00.259761 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 6 01:47:00.318772 <= Recv header, 19 bytes (0x13) 0000: Connection: close 01:47:00.354336 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/html 01:47:00.359371 <= Recv header, 20 bytes (0x14) 0000: Funny-head: yesyes 01:47:00.443197 <= Recv header, 2 bytes (0x2) 0000: 01:47:00.502267 <= Recv data, 6 bytes (0x6) 0000: -foo-. 01:47:01.080543 * shutting down connection #0 === End of file trace743 === Start of file valgrind743 ==289094== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind743 test 0744...[--netrc-file with a 127 byte line] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind744 ../src/curl -q --output log/5/curl744.out --include --trace-ascii log/5/trace744 --trace-time http://foo.host:46263/744 -p --proxy1.0 127.0.0.1:40841 -A "" --netrc-file log/5/netrc744 > log/5/stdout744 2> log/5/stderr744 valgrind ERROR ==289303== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/5/ dir after test 744 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind744 ../src/curl -q --output log/5/curl744.out --include --trace-ascii log/5/trace744 --trace-time http://foo.host:46263/744 -p --proxy1.0 127.0.0.1:40841 -A "" --netrc-file log/5/netrc744 > log/5/stdout744 2> log/5/stderr744 === End of file commands.log === Start of file curl744.out HTTP/1.1 200 Mighty fine indeed HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file curl744.out === Start of file http2_server.log 01:46:17.028214 ====> Client connect 01:46:17.028378 accept_connection 3 returned 4 01:46:17.028458 accept_connection 3 returned 0 01:46:17.036019 Read 93 bytes 01:46:17.036199 Process 93 bytes request 01:46:17.036353 Got request: GET /verifiedserver HTTP/1.1 01:46:17.036703 Are-we-friendly question received 01:46:17.036870 Wrote request (93 bytes) input to log/5/proxy.input 01:46:17.036997 Identifying ourselves as friends 01:46:17.037290 Response sent (57 bytes) and written to log/5/proxy.response 01:46:17.037395 special request received, no persistency 01:46:17.037479 ====> Client disconnect 0 01:47:04.350733 ====> Client connect 01:47:04.350891 accept_connection 3 returned 4 01:47:04.350985 accept_connection 3 returned 0 01:47:05.430575 Read 87 bytes 01:47:05.430786 Process 87 bytes request 01:47:05.431018 Received a CONNECT foo.host:46263 HTTP/1.0 request 01:47:05.431110 Port number: 46263, test case number: -7 01:47:05.431249 [log/5/server.cmd] cmdfile says testnum 744 01:47:05.432116 - request found to be complete (744) 01:47:05.432561 Wrote request (87 bytes) input to log/5/proxy.input 01:47:05.432684 Send response test744 section 01:47:05.433083 Response sent (35 bytes) and written to log/5/proxy.response 01:47:05.933722 about to connect to 127.0.0.1:46263 01:47:05.940569 connected fine to 127.0.0.1:46263, now tunnel 01:47:06.870829 [CTRL] READ 207 bytes from client 01:47:06.871110 [CTRL] READ "GET /744 HTTP/1.1%0d%0aHost: foo.host:46263%0d%0aAuthorization: Basic Zm9vOmJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYXI=%0d%0aAccept: */*%0d%0a%0d%0a" 01:47:06.871247 [CTRL] SENT 207 bytes to server 01:47:06.871342 [CTRL] SENT "GET /744 HTTP/1.1%0d%0aHost: foo.host:46263%0d%0aAuthorization: Basic Zm9vOmJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYXI=%0d%0aAccept: */*%0d%0a%0d%0a" 01:47:06.872723 [CTRL] READ 20 bytes from server 01:47:06.872821 [CTRL] READ "HTTP/1.1 200 OK%0aDate" 01:47:06.872908 [CTRL] READ 137 bytes from server 01:47:06.872996 [CTRL] READ ": Tue, 09 Nov 2010 14:49:00 GMT%0aServer: test-server/fake swsclose%0aContent-Type: text/html%0aFunny-head: yesyes%0aContent-Length: 9%0a%0acontents%0a" 01:47:06.873086 [CTRL] SENT 157 bytes to client 01:47:06.873167 [CTRL] SENT "HTTP/1.1 200 OK%0aDate: Tue, 09 Nov 2010 14:49:00 GMT%0aServer: test-server/fake swsclose%0aContent-Type: text/html%0aFunny-head: yesyes%0aContent-Length: 9%0a%0acontents%0a" 01:47:06.923310 [CTRL] got 0, STOP READING server 01:47:06.923478 [CTRL] DISABLED WRITING client 01:47:08.903786 [CTRL] got 0, STOP READING client 01:47:08.904019 [CTRL] DISABLED WRITING server 01:47:09.154403 [CTRL] CLOSING client socket 01:47:09.154631 [CTRL] CLOSING server socket 01:47:09.154709 [CTRL] ENDING 01:47:09.154776 ====> Client disconnect 0 === End of file http2_server.log === Start of file http2_verify.log * Trying 127.0.0.1:40841... * Established connection to 127.0.0.1 (127.0.0.1 port 40841) from 127.0.0.1 port 41372 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40841 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:40841 left intact === End of file http2_verify.log === Start of file http2_verify.out WE ROOLZ: 201090 === End of file http2_verify.out === Start of file http_server.log 01:46:15.108732 ====> Client connect 01:46:15.108910 accept_connection 3 returned 4 01:46:15.108993 accept_connection 3 returned 0 01:46:15.115829 Read 93 bytes 01:46:15.115962 Process 93 bytes request 01:46:15.116052 Got request: GET /verifiedserver HTTP/1.1 01:46:15.116115 Are-we-friendly question received 01:46:15.116234 Wrote request (93 bytes) input to log/5/server.input 01:46:15.116325 Identifying ourselves as friends 01:46:15.116503 Response sent (57 bytes) and written to log/5/server.response 01:46:15.116570 special request received, no persistency 01:46:15.116634 ====> Client disconnect 0 01:47:04.934199 ====> Client connect 01:47:04.934342 accept_connection 3 returned 4 01:47:04.934424 accept_connection 3 returned 0 01:47:05.871271 Read 207 bytes 01:47:05.871466 Process 207 bytes request 01:47:05.871572 Got request: GET /744 HTTP/1.1 01:47:05.871651 Serve test number 744 part 0 01:47:05.871899 - request found to be complete (744) 01:47:05.872217 Wrote request (207 bytes) input to log/5/server.input 01:47:05.872346 Send response test744 section 01:47:05.872584 connection close instruction "swsclose" found in response 01:47:05.872827 Response sent (157 bytes) and written to log/5/server.response 01:47:05.872897 instructed to close connection after server-reply 01:47:05.872970 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46263... * Established connection to 127.0.0.1 (127.0.0.1 port 46263) from 127.0.0.1 port 36398 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46263 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46263 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185934 === End of file http_verify.out === Start of file netrc744 machine foo.host login foo password baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar === End of file netrc744 === Start of file proxy.input CONNECT foo.host:46263 HTTP/1.0 Host: foo.host:46263 Proxy-Connection: Keep-Alive === End of file proxy.input === Start of file proxy.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 201090 HTTP/1.1 200 Mighty fine indeed === End of file proxy.response === Start of file server.cmd Testnum 744 === End of file server.cmd === Start of file server.input GET /744 HTTP/1.1 Host: foo.host:46263 Authorization: Basic Zm9vOmJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhCMD (768): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind741 ../src/curl -q --output log/3/curl741.out --include --trace-ascii log/3/trace741 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/3/stdout741 2> log/3/stderr741 CMD (0): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind740 ../src/curl -q --output log/6/curl740.out --include --trace-ascii log/6/trace740 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/6/stdout740 2> log/6/stderr740 YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYXI= Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185934 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Content-Type: text/html Funny-head: yesyes Content-Length: 9 contents === End of file server.response === Start of file stderr744 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 100 9 100 9 0 0 1 0 0:00:09 0:00:06 0:00:03 2 100 9 100 9 0 0 1 0 0:00:09 0:00:06 0:00:03 2 === End of file stderr744 === Start of file trace744 01:47:03.396897 * Trying 127.0.0.1:40841... 01:47:04.310517 * CONNECT: no ALPN negotiated 01:47:04.371114 * allocate connect buffer 01:47:04.577125 * Server auth using Basic with user 'foo' 01:47:04.675465 * Establish HTTP proxy tunnel to foo.host:46263 01:47:04.857805 => Send header, 87 bytes (0x57) 0000: CONNECT foo.host:46263 HTTP/1.0 0021: Host: foo.host:46263 0037: Proxy-Connection: Keep-Alive 0055: 01:47:05.081688 <= Recv header, 33 bytes (0x21) 0000: HTTP/1.1 200 Mighty fine indeed 01:47:05.467040 <= Recv header, 2 bytes (0x2) 0000: 01:47:05.574011 * CONNECT phase completed 01:47:05.597220 * CONNECT tunnel established, response 200 01:47:05.818967 * Established connection to 127.0.0.1 (127.0.0.1 port 40841) from 127.0.0.1 port 45776 01:47:05.932962 * using HTTP/1.x 01:47:06.013018 * Server auth using Basic with user 'foo' 01:47:06.282060 => Send header, 207 bytes (0xcf) 0000: GET /744 HTTP/1.1 0013: Host: foo.host:46263 0029: Authorization: Basic Zm9vOmJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF 0069: hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF 00a9: hYWFhYWFhYWFhYWFhYXI= 00c0: Accept: */* 00cd: 01:47:06.550255 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:47:06.613042 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:47:06.678987 <= Recv header, 34 bytes (0x22) 0000: Server: test-server/fake swsclose. 01:47:06.741068 <= Recv header, 24 bytes (0x18) 0000: Content-Type: text/html. 01:47:06.747392 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:47:06.772409 <= Recv header, 18 bytes (0x12) 0000: Content-Length: 9. 01:47:06.859751 <= Recv header, 1 bytes (0x1) 0000: . 01:47:06.916851 <= Recv data, 9 bytes (0x9) 0000: contents. 01:47:07.474125 * Connection #0 to host 127.0.0.1:40841 left intact === End of file trace744 === Start of file valgrind744 ==289303== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind744 setenv HOME = /build/curl/src/build-curl/tests/log/3 test 0741...[IPFS malformed gw URL from multiline gateway file, first line no url] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind741 ../src/curl -q --output log/3/curl741.out --include --trace-ascii log/3/trace741 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/3/stdout741 2> log/3/stderr741 valgrind ERROR ==288760== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/3/ dir after test 741 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind741 ../src/curl -q --output log/3/curl741.out --include --trace-ascii log/3/trace741 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/3/stdout741 2> log/3/stderr741 === End of file commands.log === Start of file http_server.log 01:46:06.627543 ====> Client connect 01:46:06.627726 accept_connection 3 returned 4 01:46:06.627807 accept_connection 3 returned 0 01:46:06.635411 Read 93 bytes 01:46:06.635581 Process 93 bytes request 01:46:06.635670 Got request: GET /verifiedserver HTTP/1.1 01:46:06.635733 Are-we-friendly question received 01:46:06.635861 Wrote request (93 bytes) input to log/3/server.input 01:46:06.635958 Identifying ourselves as friends 01:46:06.636115 Response sent (57 bytes) and written to log/3/server.response 01:46:06.636181 special request received, no persistency 01:46:06.636242 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46853... * Established connection to 127.0.0.1 (127.0.0.1 port 46853) from 127.0.0.1 port 38124 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46853 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:46853 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 191163 === End of file http_verify.out === Start of file server.cmd Testnum 741 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 191163 === End of file server.response === Start of file stderr741 curl: malformed target URL curl: try 'curl --help' for more information === End of file stderr741 === Start of file valgrind741 ==288760== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind741 setenv HOME = /build/curl/src/build-curl/tests/log/6 test 0740...[IPFS with gateway URL from multiline gateway file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind740 ../src/curl -q --output log/6/curl740.out --include --trace-ascii log/6/trace740 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/6/stdout740 2> log/6/stderr740 valgrind ERROR ==288651== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/6/ dir after test 740 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind740 ../src/curl -q --output log/6/curl740.out --include --trace-ascii log/6/trace740 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/6/stdout740 2> log/6/stderr740 === End of file commands.log === Start of file curl740.out HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file curl740.out === Start of file http_server.log 01:46:05.537389 ====> Client connect 01:46:05.537577 accept_connection 3 returned 4 01:46:05.537659 accept_connection 3 returned 0 01:46:05.544616 Read 93 bytes 01:46:05.544796 Process 93 bytes request 01:46:05.544888 Got request: GET /verifiedserver HTTP/1.1 01:46:05.544954 Are-we-friendly question received 01:46:05.545087 Wrote request (93 bytes) input to log/6/server.input 01:46:05.545186 Identifying ourselves as friends 01:46:05.545384 Response sent (57 bytes) and written to log/6/server.response 01:46:05.545455 special request received, no persistency 01:46:05.545519 ====> Client disconnect 0 01:47:11.377735 ====> Client connect 01:47:11.377888 accept_connection 3 returned 4 01:47:11.377970 accept_connection 3 returned 0 01:47:12.365381 Read 143 bytes 01:47:12.365560 Process 143 bytes request 01:47:12.365657 Got request: GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 01:47:12.365732 No tesCMD (512): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind748 ../src/curl -q --output log/8/curl748.out --include --trace-ascii log/8/trace748 --trace-time -K log/8/cmd > log/8/stdout748 2> log/8/stderr748 t number in path 01:47:12.365842 [log/6/server.cmd] cmdfile says testnum 740 01:47:12.366032 - request found to be complete (740) 01:47:12.366291 Wrote request (143 bytes) input to log/6/server.input 01:47:12.366399 Send response test740 section 01:47:12.366834 Response sent (273 bytes) and written to log/6/server.response 01:47:12.366900 => persistent connection request ended, awaits new request 01:47:14.350718 Connection closed by client 01:47:14.350888 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38277... * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 53728 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38277 > User-Agent: curl/8.17.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1:38277 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 185930 === End of file http_verify.out === Start of file server.cmd Testnum 740 === End of file server.cmd === Start of file server.input GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 Host: 127.0.0.1:38277 User-Agent: curl/8.17.0 Accept: */* === End of file server.input === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 185930 HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT ETag: "21025-dc7-39462498" Accept-Ranges: bytes Content-Length: 21 Connection: close Content-Type: text/plain Funny-head: yesyes Hello curl from IPFS === End of file server.response === Start of file stderr740 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 100 21 100 21 0 0 4 0 0:00:05 0:00:04 0:00:01 6 === End of file stderr740 === Start of file trace740 01:47:11.458518 * Trying 127.0.0.1:38277... 01:47:12.315445 * Established connection to 127.0.0.1 (127.0.0.1 port 38277) from 127.0.0.1 port 54788 01:47:12.437985 * using HTTP/1.x 01:47:12.793351 => Send header, 143 bytes (0x8f) 0000: GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzq 0040: vjg7u HTTP/1.1 0050: Host: 127.0.0.1:38277 0067: User-Agent: curl/8.17.0 0080: Accept: */* 008d: 01:47:13.161470 <= Recv header, 16 bytes (0x10) 0000: HTTP/1.1 200 OK. 01:47:13.476402 <= Recv header, 36 bytes (0x24) 0000: Date: Tue, 09 Nov 2010 14:49:00 GMT. 01:47:13.575403 <= Recv header, 25 bytes (0x19) 0000: Server: test-server/fake. 01:47:13.599186 <= Recv header, 45 bytes (0x2d) 0000: Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT. 01:47:13.606961 <= Recv header, 27 bytes (0x1b) 0000: ETag: "21025-dc7-39462498". 01:47:13.613615 <= Recv header, 21 bytes (0x15) 0000: Accept-Ranges: bytes. 01:47:13.644768 <= Recv header, 19 bytes (0x13) 0000: Content-Length: 21. 01:47:13.705466 <= Recv header, 18 bytes (0x12) 0000: Connection: close. 01:47:13.744635 <= Recv header, 25 bytes (0x19) 0000: Content-Type: text/plain. 01:47:13.749765 <= Recv header, 19 bytes (0x13) 0000: Funny-head: yesyes. 01:47:13.828929 <= Recv header, 1 bytes (0x1) 0000: . 01:47:13.935844 <= Recv data, 21 bytes (0x15) 0000: Hello curl from IPFS. 01:47:14.046973 * we are done reading and this is set to close, stop send 01:47:14.078016 * abort upload 01:47:14.553428 * shutting down connection #0 === End of file trace740 === Start of file valgrind740 ==288651== error calling PR_SET_PTRACER, vgdb might block === End of file valgrind740 Hmmm, the tests are taking a while to finish. Here is the status: runtests.pl internal state: 8 busy test runner(s) of 8 Runner 1 (id 185906) running test 751 in state 4 Runner 2 (id 185908) running test 750 in state 4 Runner 3 (id 185910) running test 754 in state 4 Runner 4 (id 185912) running test 747 in state 4 Runner 5 (id 185914) running test 752 in state 4 Runner 6 (id 185916) running test 755 in state 4 Runner 7 (id 185918) running test 749 in state 4 Runner 8 (id 185920) running test 748 in state 4 test 0748...[A --config file that uses -h and no URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind748 ../src/curl -q --output log/8/curl748.out --include --trace-ascii log/8/trace748 --trace-time -K log/8/cmd > log/8/stdout748 2> log/8/stderr748 valgrind ERROR ==289772== error calling PR_SET_PTRACER, vgdb might block == Contents of files in the log/8/ dir after test 748 === Start of file cmd -h all === End of file cmd === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind748 ../src/curl -q --output log/8/curl748.out --include --trace-ascii log/8/trace748 --trace-time -K log/8/cmd > log/8/stdout748 2> log/8/stderr748 === End of file commands.log === Start of file server.cmd Testnum 748 === End of file server.cmd === Start of file stderr748 curl: (2) no URL specified curl: try 'curl --help' for more information === End of file stderr748 === Start of file stdout748 --abstract-unix-socket Connect via abstract Unix domain socket --alt-svc Enable alt-svc with this cache file --anyauth Pick any authentication method -a, --append Append to target file when uploading --aws-sigv4 AWS V4 signature auth --basic HTTP Basic Authentication --ca-native Load CA certs from the OS --cacert CA certificate to verify peer against --capath CA directory to verify peer against -E, --cert Client certificate file and password --cert-status Verify server cert status OCSP-staple --cert-type Certificate type (DER/PEM/ENG/PROV/P12) --ciphers TLS 1.2 (1.1, 1.0) ciphers to use --compressed Request compressed response --compressed-ssh Enable SSH compression -K, --config Read config from a file --connect-timeout Maximum time allowed to connect --connect-to Connect to host2 instead of host1 -C, --continue-at Resumed transfer offset -b, --cookie Send cookies from string/load from file -c, --cookie-jar Save cookies to after operation --create-dirs Create necessary local directory hierarchy --create-file-mode File mode for created files --crlf Convert LF to CRLF in upload --crlfile Certificate Revocation list --curves (EC) TLS key exchange algorithms to request -d, --data HTTP POST data --data-ascii HTTP POST ASCII data --data-binary HTTP POST binary data --data-raw HTTP POST data, '@' allowed --data-urlencode HTTP POST data URL encoded --delegation GSS-API delegation permission --digest HTTP Digest Authentication -q, --disable Disable .curlrc --disable-eprt Inhibit using EPRT or LPRT --disable-epsv Inhibit using EPSV --disallow-username-in-url Disallow username in URL --dns-interface Interface to use for DNS requests --dns-ipv4-addr
IPv4 address to use for DNS requests --dns-ipv6-addr
IPv6 address to use for DNS requests --dns-servers DNS server addrs to use --doh-cert-status Verify DoH server cert status OCSP-staple --doh-insecure Allow insecure DoH server connections --doh-url Resolve hostnames over DoH --dump-ca-embed Write the embedded CA bundle to standard output -D, --dump-header Write the received headers to --ech Configure ECH --egd-file EGD socket path for random data --engine Crypto engine to use --etag-compare Load ETag from file --etag-save Parse incoming ETag and save to a file --expect100-timeout How long to wait for 100-continue -f, --fail Fail fast with no output on HTTP errors --fail-early Fail on first transfer error --fail-with-body Fail on HTTP errors but save the body --false-start Enable TLS False Start --follow Follow redirects per spec -F, --form Specify multipart MIME data --form-escape Escape form fields using backslash --form-string Specify multipart MIME data --ftp-account Account data string --ftp-alternative-to-user String to replace USER [name] --ftp-create-dirs Create the remote dirs if not present --ftp-method Control CWD usage --ftp-pasv Send PASV/EPSV instead of PORT -P, --ftp-port
Send PORT instead of PASV --ftp-pret Send PRET before PASV --ftp-skip-pasv-ip Skip the IP address for PASV --ftp-ssl-ccc Send CCC after authenticating --ftp-ssl-ccc-mode Set CCC mode --ftp-ssl-control Require TLS for login, clear for transfer -G, --get Put the post data in the URL and use GET -g, --globoff Disable URL globbing with {} and [] --happy-eyeballs-timeout-ms Time for IPv6 before IPv4 --haproxy-clientip Set address in HAProxy PROXY --haproxy-protocol Send HAProxy PROXY protocol v1 header -I, --head Show document info only -H, --header
Pass custom header(s) to server -h, --help Get help for commands --hostpubmd5 Acceptable MD5 hash of host public key --hostpubsha256 Acceptable SHA256 hash of host public key --hsts Enable HSTS with this cache file --http0.9 Allow HTTP/0.9 responses -0, --http1.0 Use HTTP/1.0 --http1.1 Use HTTP/1.1 --http2 Use HTTP/2 --http2-prior-knowledge Use HTTP/2 without HTTP/1.1 Upgrade --http3 Use HTTP/3 --http3-only Use HTTP/3 only --ignore-content-length Ignore the size of the remote resource -k, --insecure Allow insecure server connections --interface Use network interface --ip-tos Set IP Type of Service or Traffic Class --ipfs-gateway Gateway for IPFS -4, --ipv4 Resolve names to IPv4 addresses -6, --ipv6 Resolve names to IPv6 addresses --json HTTP POST JSON -j, --junk-session-cookies Ignore session cookies read from file --keepalive-cnt Maximum number of keepalive probes --keepalive-time Interval time for keepalive probes --key Private key filename --key-type Private key file type (DER/PEM/ENG) --knownhosts Specify knownhosts path --krb Enable Kerberos with security --libcurl Generate libcurl code for this command line --limit-rate Limit transfer speed to RATE -l, --list-only List only mode --local-port Use a local port number within RANGE -L, --location Follow redirects --location-trusted As --location, but send secrets to other hosts --login-options Server login options --mail-auth
Originator address of the original email --mail-from
Mail from this address --mail-rcpt
Mail to this address --mail-rcpt-allowfails Allow RCPT TO command to fail -M, --manual Display the full manual --max-filesize Maximum file size to download --max-redirs Maximum number of redirects allowed -m, --max-time Maximum time allowed for transfer --metalink Process given URLs as metalink XML file --mptcp Enable Multipath TCP --negotiate Use HTTP Negotiate (SPNEGO) authentication -n, --netrc Must read .netrc for username and password --netrc-file Specify FILE for netrc --netrc-optional Use either .netrc or URL -:, --next Make next URL use separate options --no-alpn Disable the ALPN TLS extension -N, --no-buffer Disable buffering of the output stream --no-clobber Do not overwrite files that already exist --no-keepalive Disable TCP keepalive on the connection --no-npn Disable the NPN TLS extension --no-progress-meter Do not show the progress meter --no-sessionid Disable SSL session-ID reusing --noproxy List of hosts which do not use proxy --ntlm HTTP NTLM authentication --ntlm-wb HTTP NTLM authentication with winbind --oauth2-bearer OAuth 2 Bearer Token --out-null Discard response data into the void -o, --output Write to file instead of stdout --output-dir Directory to save files in -Z, --parallel Perform transfers in parallel --parallel-immediate Do not wait for multiplexing --parallel-max Maximum concurrency for parallel transfers --parallel-max-host Maximum connections to a single host --pass Passphrase for the private key --path-as-is Do not squash .. sequences in URL path --pinnedpubkey Public key to verify peer against --post301 Do not switch to GET after a 301 redirect --post302 Do not switch to GET after a 302 redirect --post303 Do not switch to GET after a 303 redirect --preproxy <[protocol://]host[:port]> Use this proxy first -#, --progress-bar Display transfer progress as a bar --proto Enable/disable PROTOCOLS --proto-default Use PROTOCOL for any URL missing a scheme --proto-redir Enable/disable PROTOCOLS on redirect -x, --proxy <[protocol://]host[:port]> Use this proxy --proxy-anyauth Pick any proxy authentication method --proxy-basic Use Basic authentication on the proxy --proxy-ca-native Load CA certs from the OS to verCMD (25600): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind747 ../src/curl -q --output log/4/curl747.out --include --trace-ascii log/4/trace747 --trace-time http://127.0.0.1:42621/747 > log/4/stdout747 2> log/4/stderr747 ify proxy --proxy-cacert CA certificates to verify proxy against --proxy-capath CA directory to verify proxy against --proxy-cert Set client certificate for proxy --proxy-cert-type Client certificate type for HTTPS proxy --proxy-ciphers TLS 1.2 (1.1, 1.0) ciphers to use for proxy --proxy-crlfile Set a CRL list for proxy --proxy-digest Digest auth with the proxy --proxy-header
Pass custom header(s) to proxy --proxy-http2 Use HTTP/2 with HTTPS proxy --proxy-insecure Skip HTTPS proxy cert verification --proxy-key Private key for HTTPS proxy --proxy-key-type Private key file type for proxy --proxy-negotiate HTTP Negotiate (SPNEGO) auth with the proxy --proxy-ntlm NTLM authentication with the proxy --proxy-pass Passphrase for private key for HTTPS proxy --proxy-pinnedpubkey FILE/HASHES public key to verify proxy with --proxy-service-name SPNEGO proxy service name --proxy-ssl-allow-beast Allow this security flaw for HTTPS proxy --proxy-ssl-auto-client-cert Auto client certificate for proxy --proxy-tls13-ciphers TLS 1.3 proxy cipher suites --proxy-tlsauthtype TLS authentication type for HTTPS proxy --proxy-tlspassword TLS password for HTTPS proxy --proxy-tlsuser TLS username for HTTPS proxy --proxy-tlsv1 TLSv1 for HTTPS proxy -U, --proxy-user Proxy user and password --proxy1.0 Use HTTP/1.0 proxy on given port -p, --proxytunnel HTTP proxy tunnel (using CONNECT) --pubkey SSH Public key filename -Q, --quote Send command(s) to server before transfer --random-file File for reading random data from -r, --range Retrieve only the bytes within RANGE --rate Request rate for serial transfers --raw Do HTTP raw; no transfer decoding -e, --referer Referrer URL -J, --remote-header-name Use the header-provided filename -O, --remote-name Write output to file named as remote file --remote-name-all Use the remote filename for all URLs -R, --remote-time Set remote file's time on local output --remove-on-error Remove output file on errors -X, --request Specify request method to use --request-target Specify the target for this request --resolve <[+]host:port:addr[,addr]...> Resolve host+port to address --retry Retry request if transient problems occur --retry-all-errors Retry all errors (with --retry) --retry-connrefused Retry on connection refused (with --retry) --retry-delay Wait time between retries --retry-max-time Retry only within this period --sasl-authzid Identity for SASL PLAIN authentication --sasl-ir Initial response in SASL authentication --service-name SPNEGO service name -S, --show-error Show error even when -s is used -i, --show-headers Show response headers in output --sigalgs TLS signature algorithms to use -s, --silent Silent mode --skip-existing Skip download if local file already exists --socks4 SOCKS4 proxy on given host + port --socks4a SOCKS4a proxy on given host + port --socks5 SOCKS5 proxy on given host + port --socks5-basic Username/password auth for SOCKS5 proxies --socks5-gssapi Enable GSS-API auth for SOCKS5 proxies --socks5-gssapi-nec Compatibility with NEC SOCKS5 server --socks5-gssapi-service SOCKS5 proxy service name for GSS-API --socks5-hostname SOCKS5 proxy, pass hostname to proxy -Y, --speed-limit Stop transfers slower than this -y, --speed-time Trigger 'speed-limit' abort after this time --ssl Try enabling TLS --ssl-allow-beast Allow security flaw to improve interop --ssl-auto-client-cert Use auto client certificate (Schannel) --ssl-no-revoke Disable cert revocation checks (Schannel) --ssl-reqd Require SSL/TLS --ssl-revoke-best-effort Ignore missing cert CRL dist points --ssl-sessions Load/save SSL session tickets from/to this file -2, --sslv2 SSLv2 -3, --sslv3 SSLv3 --stderr Where to redirect stderr --styled-output Enable styled output for HTTP headers --suppress-connect-headers Suppress proxy CONNECT response headers --tcp-fastopen Use TCP Fast Open --tcp-nodelay Set TCP_NODELAY -t, --telnet-option Set telnet option --tftp-blksize Set TFTP BLKSIZE option --tftp-no-options Do not send any TFTP options -z, --time-cond